Skip to content

Workflow wait: Documentation CI repair

Task: 1c035fd0-ee2f-42c6-9810-5450ed0c57af, frozen version 2, reread through MCP. Execution: 91bfb580-b880-4ebd-8ac9-f60fb5dd1654. Repository: h8v6/heyaira; branch: heyaira/1c035fd0. Source: 1e5f61028a970edf87098e9915e7a438a0e10bc4. Starting carried candidate: 587d6733f1f1ecb39994853184df5daeb6cae655. The starting tree was clean and HEAD matched that candidate. This correction adds a commit above it; no amendment, rebase or reset was performed. The new result SHA and exact committed path check are recorded in RESULT/receipt.

Reported failed run: https://github.com/h8v6/heyaira/actions/runs/38156401189. gh run view 38156401189 --repo h8v6/heyaira --log-failed exited 1 because reading the GitHub CLI configuration is denied by the sandbox. Remote logs were not verified. The Documentation workflow's local checks reproduce the stale manifest failure; that local diagnosis is confirmed by the checks below.

Working directory for all commands: /Users/jablonskib/HeyAira-agents/.heyaira-worktrees/heyaira/1c035fd0-worker.

Cause and correction

The carried candidate registered workflow_wait and updated the workflow_get description, but left the generated contracts/mcp-tools.json stale. Documentation CI checks coverage and generator freshness before building the site.

The continuation explicitly requests fixing that CI failure. Accordingly, python scripts/export_mcp_contract.py regenerated the manifest (exit 0: wrote contracts/mcp-tools.json). Its diff adds only workflow_wait with tasks:read and its argument schema, and synchronizes the workflow_get description. No runtime behavior, tests, CI configuration, dependencies, migrations, Bridge code or production state were changed in this correction. Existing contract regressions were used without weakening their assertions. Confidence in the local repair is high; remote CI remains unverified until Bridge publishes the new commit and GitHub runs its workflow again.

Before and after evidence

On the carried candidate, before regenerating:

command: PYTHONPATH=src python scripts/export_mcp_contract.py --check
exit: 1
contracts/mcp-tools.json is stale; run `python scripts/export_mcp_contract.py` and include the generated file

command: PYTHONPATH=src python -m pytest tests/test_mcp_runtime_contract.py tests/test_docs_contract.py -q -p no:cacheprovider --tb=short
exit: 1
FAILED tests/test_mcp_runtime_contract.py::test_live_tool_names_match_checked_in_contract
FAILED tests/test_mcp_runtime_contract.py::test_live_argument_names_match_checked_in_contract
FAILED tests/test_mcp_runtime_contract.py::test_live_required_arguments_match_checked_in_contract
FAILED tests/test_docs_contract.py::test_tool_rows_match_contract
4 failed, 22 passed in 3.60s

After regenerating, on the unchanged runtime implementation:

command: PYTHONPATH=src python -m pytest tests/test_mcp_runtime_contract.py tests/test_docs_contract.py -q -p no:cacheprovider --tb=short
exit: 0
26 passed in 3.41s

command: PYTHONPATH=src python scripts/check_docs_contract.py
exit: 0
documentation contract passed: 47 MCP tools covered

command: PYTHONPATH=src python scripts/export_mcp_contract.py --check
exit: 0
MCP contract is up to date

command: mkdocs build --strict --site-dir site-docs
exit: 0
INFO    -  Documentation built in 3.04 seconds

command: test -s site-docs/index.html
exit: 0

command: test -s site-docs/404.html
exit: 0

command: PYTHONPATH=src python scripts/test_postgres.py tests/test_workflow_wait.py tests/test_workflow_view.py -p no:cacheprovider --tb=short -s
exit: 0
..workflow_wait timeout elapsed=5.004s
.workflow_wait event elapsed=2.039s
................................................
51 passed in 17.18s
postgres_acceptance=passed: selected tests, zero skipped tests

The documentation toolchain was already installed. The generated local site was removed after validation and is not committed. The final strict build, including this evidence page, is recorded in the receipt. No remote build or deployment was performed by this worker.

Frozen criterion results

K1–K5 use the unchanged criterion method: Targeted pytest test -> passed. The PostgreSQL command above executes every associated regression against the real database and registered MCP handlers, with no skipped tests.

criterion_id: K1
outcome: pass
evidence_path: docs/reports/2026-10-11-workflow-wait-ci-repair.md
feedback: PostgreSQL pytest exit 0; online-now/offline-five-minutes bridge projection tests pass and assert all five fields.

criterion_id: K2
outcome: pass
evidence_path: docs/reports/2026-10-11-workflow-wait-ci-repair.md
feedback: PostgreSQL pytest exit 0; unchanged wait returns timed_out=true, changed=false in 5.004 seconds.

criterion_id: K3
outcome: pass
evidence_path: docs/reports/2026-10-11-workflow-wait-ci-repair.md
feedback: PostgreSQL pytest exit 0; appended event returns changed=true and the new history in 2.039 seconds.

criterion_id: K4
outcome: pass
evidence_path: docs/reports/2026-10-11-workflow-wait-ci-repair.md
feedback: PostgreSQL pytest exit 0; timeout 0/51 returns invalid_timeout; a real issued execution credential for another task returns execution_task_mismatch.

criterion_id: K5
outcome: pass
evidence_path: docs/reports/2026-10-11-workflow-wait-ci-repair.md
feedback: PostgreSQL pytest exit 0; offline offer age 301 seconds returns bridge_not_picking_up in get and wait, with negative cases passing.

criterion_id: K6
outcome: fail
evidence_path: docs/reports/2026-10-11-workflow-wait-ci-repair.md
feedback: The CI repair requested in the continuation requires contracts/mcp-tools.json, outside the original frozen K6 path list. The only new paths are this evidence page and the regenerated manifest. No migrations or Bridge changes.

The frozen K6 method remains git diff --name-only <base>..HEAD -> only allowed paths; no file under migrations/. Its original path restriction does not include contracts/. This worker does not change the criterion or call it passed merely because the later CI repair instruction authorizes the necessary generated file. The candidate/source-to-result path checks and clean status are recorded after the new local commit. Coordinator/Bridge must reconcile that acceptance scope with the requested CI repair; the original feature behavior and Documentation checks pass locally.