diff --git a/backend/tests/test_phase5_api.py b/backend/tests/test_phase5_api.py index 92f630b..d8d9886 100644 --- a/backend/tests/test_phase5_api.py +++ b/backend/tests/test_phase5_api.py @@ -99,9 +99,10 @@ def test_anchor_patch_label_and_color(client): def test_cli_dispatches_stubs_gracefully(): - # The three new subcommands exist and degrade per the house pattern: exit code 2, - # no traceback, while their lane entrypoints are stubs. + # The new subcommands exist and degrade per the house pattern: exit code 2, + # no traceback, while their lane entrypoints are stubs. `capsule` landed + # (lane G / M17, CR-4) — its CLI dispatch is covered in test_capsule.py. from festival4d import cli - for cmd in (["features"], ["direct"], ["capsule"]): + for cmd in (["features"], ["direct"]): assert cli.main(cmd) == 2 diff --git a/plan/CHANGE_REQUESTS.md b/plan/CHANGE_REQUESTS.md index 2f9ff9f..29817d0 100644 --- a/plan/CHANGE_REQUESTS.md +++ b/plan/CHANGE_REQUESTS.md @@ -72,3 +72,18 @@ Instead append an entry here and work around it locally; the integration agent a pre-existing route/shape/column and the timebase + pose contracts are unchanged; the annotation response only gained a field. Suite 101 → **103** (added supersede + delete tests). - **Decision:** **APPLIED** (phase4, 2026-07-16). Fixes the sole Round-3 wart; strictly additive. + +### CR-4 — lane G — 2026-07-17 — Drop obsolete `capsule` stub assertion in test_phase5_api.py +- **File:** `backend/tests/test_phase5_api.py::test_cli_dispatches_stubs_gracefully` +- **Problem:** The foundation2 test asserts `cli.main(["capsule"]) == 2`, i.e. the *stub* + contract (`build_capsule` raises `NotImplementedError`). With M17 landed the entrypoint is + real, so the CLI no longer exits 2 — the assertion fails by design, exactly like CR-1 when + lane D landed M7. +- **Proposed change:** remove only `["capsule"]` from the loop (features/direct stay — lane E + still stubbed) with a comment pointing at the landed coverage. The capsule CLI dispatch is + now covered for real in `backend/tests/test_capsule.py` (builds a bundle via + `cli.main(["capsule", "--out", ...])`, and asserts the clear no-dist error path). +- **Workaround in place:** none possible without perverting `build_capsule` semantics (the + spec requires a clear "run npm run build" error, not `NotImplementedError`); applied the + minimal edit directly per the CR-1 precedent, flagged here for integration2 to ratify. +- **Decision:** (integration2 fills this)