Spaces:
Running on Zero
Running on Zero
docs(01-03): record the crash-interrupted state of the transport seam plan
Browse filesSTATE.md still claimed work stopped after 01-01, two tasks behind reality.
Reconstruct the real position from the working tree and git log: 01-03 is
mid-execution with Tasks 1-2 done and Tasks 3-4 untouched.
Carry forward the two corrections found while verifying the recovered work
so the next executor does not rediscover them: a Gradio mention in the
stage core that only passes the seam guard because the check is
case-sensitive, and an emit-ordering gap in boot() where the plan calls
mountStage with an emit that installFacade has not returned yet.
- .planning/STATE.md +26 -7
.planning/STATE.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
| 2 |
gsd_state_version: 1.0
|
| 3 |
milestone: v1.0
|
| 4 |
milestone_name: milestone
|
| 5 |
-
status:
|
| 6 |
-
stopped_at:
|
| 7 |
-
last_updated: "2026-08-
|
| 8 |
progress:
|
| 9 |
total_phases: 6
|
| 10 |
completed_phases: 0
|
|
@@ -24,7 +24,24 @@ See: .planning/PROJECT.md (updated 2026-08-08)
|
|
| 24 |
## Current Position
|
| 25 |
|
| 26 |
Phase: 01 (voice-avatar-loop-skeleton) β EXECUTING
|
| 27 |
-
Plan: 4 of 10 (3 complete)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
|
| 29 |
**Completed:** 01-02 (local foundations β pytest/ruff on Python 3.12.12, Git LFS armed, `--space-url` plumbing, audio fixtures), 01-04 (Japanese voice β VOICEVOX assets via LFS, `synthesize()`, `requirements.txt`, ground-truth fixtures), and 01-01 (hosting + VRM gates β **both human checkpoints are now closed**). **VOIC-01 is Complete.** The plan counter is a count, not a plan ID: "Plan 4 of 10" does not mean 01-03 is done.
|
| 30 |
**Both Phase-1 human gates are cleared.** The Space is live at `WolfDavid/japanese-learning-avatar` on ZeroGPU (`requested: zero-a10g`, public, 48 h sleep); `SPACE_URL` is `https://wolfdavid-japanese-learning-avatar.hf.space` and is recorded in `docs/HOSTING.md`. `avatar/assets/tutor.vrm` is committed through LFS. Nothing is deployed to the Space yet β it serves 503 (`NO_APP_FILE`) until 01-05 pushes an app.
|
|
@@ -102,6 +119,8 @@ None yet.
|
|
| 102 |
|
| 103 |
## Session Continuity
|
| 104 |
|
| 105 |
-
Last session: 2026-08-
|
| 106 |
-
Stopped at:
|
| 107 |
-
Resume file: None
|
|
|
|
|
|
|
|
|
| 2 |
gsd_state_version: 1.0
|
| 3 |
milestone: v1.0
|
| 4 |
milestone_name: milestone
|
| 5 |
+
status: executing
|
| 6 |
+
stopped_at: "Session crashed mid-execution of 01-03 (avatar transport seam). Tasks 1 and 2 are complete and committed (94a5b15, 7146e75); Tasks 3 and 4 have not been started. Resume by executing 01-03 from Task 3."
|
| 7 |
+
last_updated: "2026-08-27T00:00:00.000Z"
|
| 8 |
progress:
|
| 9 |
total_phases: 6
|
| 10 |
completed_phases: 0
|
|
|
|
| 24 |
## Current Position
|
| 25 |
|
| 26 |
Phase: 01 (voice-avatar-loop-skeleton) β EXECUTING
|
| 27 |
+
Plan: 4 of 10 (3 complete, 01-03 in flight at Task 3 of 4)
|
| 28 |
+
|
| 29 |
+
> **01-03 IS MID-EXECUTION β a session crash interrupted it, not a pause.** No `HANDOFF.json` and no `.continue-here` exist because `/gsd:pause-work` never ran; the state below was reconstructed from the working tree and git log on 2026-08-27.
|
| 30 |
+
>
|
| 31 |
+
> | Task | Deliverable | State |
|
| 32 |
+
> |------|-------------|-------|
|
| 33 |
+
> | 1 | `vrm-stage.js`, `lipsync.js`, `audio-queue.js` | Complete, committed `94a5b15` |
|
| 34 |
+
> | 2 | `facade.js`, `turn-loop.js` | Complete, committed `7146e75` (recovered from untracked files at resume) |
|
| 35 |
+
> | 3 | `avatar.js`, `avatar-iframe.js`, `stage.html`, `demo-konnichiwa.wav`, `avatar_component.py`, `app.py` | **Not started β none of these files exist** |
|
| 36 |
+
> | 4 | `tests/test_transport_seam.py`, `tests/e2e/test_stage_standalone.py`, `tests/e2e/test_facade_parity.py` | **Not started** |
|
| 37 |
+
>
|
| 38 |
+
> **Resume at Task 3.** Tasks 1-2 were spot-checked against their acceptance criteria at resume and pass: the `?deps=three@0.185.1` pin appears exactly once, no import map exists anywhere in `avatar/`, `lipsync.js` has no `setTimeout`, and `facade.js` is the only file matching `window.Avatar =`.
|
| 39 |
+
>
|
| 40 |
+
> **Two corrections the Task 3/4 executor needs:**
|
| 41 |
+
> 1. **`avatar/vrm-stage.js:64` contains the word "Gradio" in a comment.** Task 4's `test_stage_core_is_gradio_free` greps the lowercase token `gradio`, so the capitalised word passes today β but it violates the rule's intent and breaks the moment that check is made case-insensitive. Reword it while writing Task 4.
|
| 42 |
+
> 2. **`boot()` has an emit-ordering problem the plan does not call out.** Task 3 step 2 calls `mountStage(canvas, props.vrmUrl, emit)`, but `emit` does not exist until `installFacade` returns it at step 5. The transport needs a deferred emit β a local function that buffers events (or forwards to a mutable reference) until the real bus is installed. This applies to **both** transports.
|
| 43 |
+
>
|
| 44 |
+
> Also note Task 2's acceptance criterion `grep -ci "gradio\|element\|props\|THREE" avatar/facade.js avatar/turn-loop.js` returns 0 is **unsatisfiable as literally written**: `threeInstanceCount` is a mandated `__debug` key and contains the substring `three`. The actual enforced test (`test_shared_modules_are_gradio_free`) checks only `gradio`, `gradio_api`, `server.` and `trigger(`, all of which genuinely are absent. Trust the test, not the prose.
|
| 45 |
|
| 46 |
**Completed:** 01-02 (local foundations β pytest/ruff on Python 3.12.12, Git LFS armed, `--space-url` plumbing, audio fixtures), 01-04 (Japanese voice β VOICEVOX assets via LFS, `synthesize()`, `requirements.txt`, ground-truth fixtures), and 01-01 (hosting + VRM gates β **both human checkpoints are now closed**). **VOIC-01 is Complete.** The plan counter is a count, not a plan ID: "Plan 4 of 10" does not mean 01-03 is done.
|
| 47 |
**Both Phase-1 human gates are cleared.** The Space is live at `WolfDavid/japanese-learning-avatar` on ZeroGPU (`requested: zero-a10g`, public, 48 h sleep); `SPACE_URL` is `https://wolfdavid-japanese-learning-avatar.hf.space` and is recorded in `docs/HOSTING.md`. `avatar/assets/tutor.vrm` is committed through LFS. Nothing is deployed to the Space yet β it serves 503 (`NO_APP_FILE`) until 01-05 pushes an app.
|
|
|
|
| 119 |
|
| 120 |
## Session Continuity
|
| 121 |
|
| 122 |
+
Last session: 2026-08-27 β session resumed via /gsd:resume-work after a crash; Task 2's recovered files committed, proceeding to execute 01-03 from Task 3.
|
| 123 |
+
Stopped at: 01-03 mid-execution. Tasks 1-2 complete and committed; Tasks 3-4 not started. See the table under "Current Position".
|
| 124 |
+
Resume file: None (crash, not a pause β no HANDOFF.json was written)
|
| 125 |
+
|
| 126 |
+
**Do not push to the `space` remote yet.** It is the only remote this repo has, and pushing triggers a Space rebuild. `app.py` does not exist until Task 3, and the Space README front-matter fixes are owned by plan 01-05. The Space correctly serves 503 (`NO_APP_FILE`) until then.
|