Fix dev nodes not recording runner pushes

Task 12538 · Done · Coder · created · updated

Seen in Task 12443: on dev, `task_outcome_heads` holds no `runner_push` row at all (only 26 old `lane_verdict` rows), while main records them normally (29 `runner_push` since release). Coder and benchmark-shadow pushes from a fresh dev cloud node (`gmind-ledger-oracle`, Ubuntu 26.04, jaahd 1.3.1148) open PRs, but the pre-push guard's best-effort `jaah-call outcome.head_pushed` (`apps/jaahd/guards/guard-pre-push.py::report_heads`) records nothing. As a result a self-merge project's gate facts lack per-push verdicts, and a benchmark duel cannot see its shadow's CI pass: it waits the full `benchmark.GATE_WAIT` (6 h) before review. Ask: find why the report never lands on that node (hook env, `jaah-call` on PATH, peer task resolution for a hook grandchild, verb refusal) and fix it; make a failed report observable (a log line or counter) instead of fully silent. Out of scope: changing GATE_WAIT; the merge lane's own head verdicts. Done means: - A runner push on a fresh dev cloud node creates a `runner_push` head row, shown by a test or by a live push on dev. - Required checks: ./dc check quick, changed-area tests, merge lane full gate.

Outcome

Root cause: the pre-push ledger report ran only inside the Guard's hooks redirect, which is installed only for guard-enabled orgs. Unguarded runners now get the redirect, and failed reports print a stderr line. Quick gate green; PR #7730 queued. Not yet confirmed by a live dev push. Memory: none applied.

Pull request

Artifacts

Activity

  • Created
  • Run
  • Runner started
  • Runner ended (done)