|
24 | 24 | timeline.py observed freezes → validated model → the edited file |
25 | 25 | audio.py audio beds, muxing, and the two-phase artifact publish |
26 | 26 | reuse.py the compiled-sidecar contract as render reads it |
27 | | - _step.py _render_step (opaque; phase 3 decomposes it) |
28 | | - _run.py run_render (opaque; phase 3 decomposes it — still >600 lines, |
29 | | - which is expected and is *not* a sign the cleanup is done) |
| 27 | +
|
| 28 | +Phase 3 added the four that carry ``run_render``'s three lifetimes, plus the two |
| 29 | +that spend them:: |
| 30 | +
|
| 31 | + plan.py _RenderPlan — everything decided before a browser exists |
| 32 | + stage.py _Stage — what is on screen now, and the ONE order the |
| 33 | + role-gated init scripts may be registered in |
| 34 | + clock.py _Clock — the recording axis, and why ``on_sfx`` is a bound |
| 35 | + method rather than a value |
| 36 | + loop.py replaying one flat step; the absence probe is a seam, not a |
| 37 | + comment |
| 38 | + post.py recording -> composed -> virtual -> mastered, in that order |
| 39 | + and no other |
| 40 | + _step.py _render_step — two dispatches on two different keys |
| 41 | + _run.py run_render — nothing but the order the phases run in |
30 | 42 |
|
31 | 43 | It also, on purpose, **withholds every name the tests patch**. Nineteen names plus |
32 | 44 | ``os.replace`` are this package's test seams, and five of them |
|
56 | 68 |
|
57 | 69 | Ten of the nineteen are the second kind, which is why this package's guard cannot |
58 | 70 | be the one ``video.mux`` uses. Two names have consumers in two submodules at once — |
59 | | -``Recorder`` (``visuals`` and ``_run``) and ``probe_frame_count`` (``timeline`` and |
60 | | -``_run``) — and each needs **two** patch lines; one line silently stops covering |
61 | | -the other path. ``tests/unit/recorder/test_render_seams.py`` enforces all of it. |
| 71 | +``Recorder`` (``visuals`` and ``loop``) and ``probe_frame_count`` (``timeline`` and |
| 72 | +``post``) — and each needs **two** patch lines; one line silently stops covering |
| 73 | +the other path. ``_run`` itself holds **no** seam any more: every one of them moved |
| 74 | +to the submodule that constructs or calls it. |
| 75 | +``tests/unit/recorder/test_render_seams.py`` enforces all of it. |
62 | 76 |
|
63 | 77 | The submodules are re-exported as *modules* for exactly that reason, using the |
64 | 78 | redundant-alias form. The private helpers below (``_PopupSession``, |
|
76 | 90 | from . import _run as _run |
77 | 91 | from . import _step as _step |
78 | 92 | from . import audio as audio |
| 93 | +from . import clock as clock |
79 | 94 | from . import constants as constants |
80 | 95 | from . import errors as errors |
| 96 | +from . import loop as loop |
81 | 97 | from . import narration as narration |
82 | 98 | from . import pages as pages |
| 99 | +from . import plan as plan |
83 | 100 | from . import popup_crop as popup_crop |
84 | 101 | from . import popup_detect as popup_detect |
85 | 102 | from . import popup_session as popup_session |
| 103 | +from . import post as post |
86 | 104 | from . import reuse as reuse |
| 105 | +from . import stage as stage |
87 | 106 | from . import tasks as tasks |
88 | 107 | from . import timeline as timeline |
89 | 108 | from . import visuals as visuals |
|
0 commit comments