lane G: CR-4 — retire the obsolete capsule stub assertion (M17 landed; CR-1 precedent)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
type-two 2026-07-17 17:42:19 +10:00
parent 547450f5ca
commit 0314daec1a
2 changed files with 19 additions and 3 deletions

View File

@ -99,9 +99,10 @@ def test_anchor_patch_label_and_color(client):
def test_cli_dispatches_stubs_gracefully(): def test_cli_dispatches_stubs_gracefully():
# The three new subcommands exist and degrade per the house pattern: exit code 2, # The new subcommands exist and degrade per the house pattern: exit code 2,
# no traceback, while their lane entrypoints are stubs. # 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 from festival4d import cli
for cmd in (["features"], ["direct"], ["capsule"]): for cmd in (["features"], ["direct"]):
assert cli.main(cmd) == 2 assert cli.main(cmd) == 2

View File

@ -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 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). 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. - **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)