First half of per-story contract execution (held on branch per the bundle plan).
- contract-exec.sh: granularity-agnostic engine the caller can invoke per-story
or per-epic
- contract_env_up / contract_env_down: bring the sample env up (setup → start →
poll readiness) and tear it down
- run_backend_cases: for each harness case, call the API (curl), assert status
and response body_contains (jq subset match), then verify persistence by
invoking datastore.verify_command as `<cmd> --table <t> --where <json>`;
failures are collected in CONTRACT_EXEC_FAILURES for the fix loop
- _json_contains: JSON-subset assertion helper
Tested against a local mock API: passing case (status + multi-field body +
persistence), status-mismatch failure, and persistence-miss failure all behave
correctly; env up/down orchestration smoke-tested. UI flow execution and gate
wiring are the next pieces; live end-to-end needs a real app.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>