Damascus Entry Points P6: E2E verification (merge gate for v1) #20
Reference in New Issue
Block a user
Delete Branch "feat/entry-points-p6-e2e"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
P6 — End-to-End Verification (merge gate for v1)
Closes the P6 deliverable from
wiki/concepts/entry-points-contract.md§8.What's in this PR
1.
tests/e2e/test_entry_points_e2e.py(668 lines) — single Playwright + MCP integration test exercising the full v1 entry-points surface against the live docker-compose stack:mcp.ingest_story(project="e2e-test", story_id="S001", title=..., priority=100)over stdio subprocess → assertWorkItemResponse.phase == "spec"/#/items, poll for the new row within 5s, open the drawer, assert the four P5 widgets (PhaseBar, OpenIssues, BlockedItems, CostSparkline) render with non-zero countsspec → build → review → mergedviastate.set_phase()helpers; reload UI after each transition, assert the phase pill updateshuman_issueviastate.open_human_issue(), answer viamcp.answer_question(), assertstatus == "answered", reload drawer, assert the answer showsOwn cleanup scoped to
project="e2e-test"only — does NOT usetests/conftest.py'sclean_state(which TRUNCATEs) so it doesn't disturb other workers.2.
tests/e2e/conftest.py—state.open_human_issue/state.set_phase/state.get_itemwrappers used by the e2e to drive the cycle directly without the orchestrator loop.3.
scripts/verify.sh— 30-second manual smoke. Hits/healthz,/v1/items,/v1/items?group_by=project(P5),/v1/stats, validates auth 401 path, smoke-ingests a row with token. Exits non-zero on any failure.4.
docs/VERIFICATION.md— One-page recipe: 30-second check + full cycle walkthrough. Runnable by Kay without agent help.5.
.gitignore— adds.hermes/evidence/(e2e screenshots/logs regenerated by the test on every run).Live verification (post-PR-#19 merge, against
main)Process note (recovery from a worker death)
The P6 worker hit the 120-iter budget cap twice while finishing the e2e harness and
verify.shrecipe. Both runs reported=== P6 E2E — all 4 phases PASSED ===before the budget ran out, but the worker died beforegit commit/git push. I recovered the work in-process by:verify.sh+pytestagainst merged main (PR #19 =60ec5f6)test_entry_points_e2e.pythat still referenced "P5 NOT merged" — that comment is now accuratesmoketest/e2e-testrows from the live DB so the PR doesn't ship with test debris.hermes/evidence/to.gitignoreThis is the standard "worker hit 120-iter cap, work is on disk + verified" recovery pattern from the
kanban-workerskill.Acceptance criteria status (per task body)
pytest tests/e2e/test_entry_points_e2e.py -qexits 0 against live stackbash scripts/verify.shexits 0 against live stackdocs/VERIFICATION.mdis < 1 page and runnableOut of scope (deferred)