Repository navigation
Bind ordered worker proofs to their execution context - #641
Conversation
Part of #620. Implemented by an operator-run gpt-6-astra session at the owner's request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Operator: this stays a held draft until RigForge 1.18.1 is tagged (due Fri 2026-11-06, Sat 11-07 at the latest). 1.18.1 is cut from develop, so merging this first would widen that release. After the tag: rebase on develop, run the agent review, and request the owner's approval. |
|
Operator: released to the runner (owner 2026-11-06). New work goes to the local Flash-Next model first; Claude only after three local rounds or for sensitive work. |
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
FAIL What I investigatedFAIL. The checker pins
Reviewed head: What are the gaps
|
) The network phase gained the keyed feed revision assertion (#629), so a green bound run reported 9 passes against a checker pinned at 8. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#620) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#620) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
PASS What I investigatedRound-2 re-review of rigforge PR #641 at head 20c5acc (6ab6ae5 is in this clone). I reviewed the worker's four commits since 6ab6ae5 and the PR's whole diff against develop. Both round-1 return findings are fixed. The checker now expects 9
Reviewed head: |
Owner brief for
|
What's the problem
Issue #620: the worker gate's human summary and
network-summarydiagnostic donot bind completion to a head/ref, immutable input set, attempt, group, row or
platform. A partial or stale summary cannot show that all stateful work and
restoration finished.
Closes #620
How I fixed it
tests/e2e-worker-proof.shadds optional, strictly validatedE2E_PROOF_CONTEXT. When it is set, the harness checks the clean requestedhead/ref and the platform before mutating anything and again after restoration.
It counts phase/pass/fail/skip events, child shells included, and after cleanup
prints one
worker-proof:receipt. With no context it printsworker-proof: {"schema":1,"bound":false}and keeps the existing CLI behaviour.tests/worker-proof.pyvalidates contexts, folds the events into a receipt,and checks the required AND of receipts against an independently supplied plan.
It rejects missing, duplicate, reordered, substituted, stale or truncated rows,
partial counts, unapproved skips, failed cleanup and nonzero exits.
tests/e2e-pithead.shgains the hooks inok/bad/skip/phase,proof_preflightbeforerequire_preflight, and receipt emission after_cleanup. Phase bodies, dispatch, locks and snapshots are unchanged.docs/dev/worker-proof.md): connect 3, worker-api 5,api-impact 3, network 9 (Key the public configuration revision to prevent offline password guessing #629's keyed feed revision included), stratum-auth 4,
dashboard 2, dev-fee 1, control 5, access-tokens 7, each control replay 4.
tests/test-worker-proof.pyderives these counts from theokcalls in thereal
phase_*bodies and every helper they call, across all sourcede2e-*.shfiles, and requires the checker's table to accept them. An assertionadded on develop therefore fails the suite instead of silently invalidating
every receipt.
make test-suiteruns both new suites. This PR wires no runner, requiredstatus or concurrency; those stay with the sibling repositories, as the doc
states.
Here is the proof
Head
20c5acc03b48166ae2eeb688d76aae59fc0222ab(develop merged in;tests/e2e-pithead.shheld at its 563-line ceiling by making the proof hooks no-ops when unbound), basedevelop. Local runs and GitHub CI below were redone at this head; the bench jobs quoted from earlier heads are history until the pending job 3543 on this head completes.shellcheck + shfmt, markdownlint, End-to-end (Docker), Coverage and both
stock-home setups.
python3 tests/test-worker-proof.py:Ran 24 tests ... OK.bash tests/test-worker-proof.sh:worker proof integration: 21 passed.(
WORKER_PROOF_IMPLEMENTATION=<6ab6ae5:tests/worker-proof.py>, network 8) givesFAILED (failures=3):test_pass_counts_follow_harness_phase_bodies,test_receipt_folds_events_and_validatesandtest_receipt_accepts_declared_optional_skip. A mutation test injects anokintophase_networkand intorefresh_profile_finish(a helper in anested source) in a scratch copy. It asserts that network, control and both
replay counts rise by one and that the checker rejects the mutated count.
shellcheck --severity=warningandshfmt -i 4 -dontests/e2e-pithead.sh tests/e2e-worker-proof.sh tests/test-worker-proof.sh: clean.FILE_BUDGET_REQUIRE_BASE=1 bash scripts/lint-file-budget.sh:file budget OK.(
network-sequence; the log showsworker-proof: {"schema":1,"bound":false}).The 20 passes are connect 3, worker-api 5, api-impact 3 and network 9:
bench-ci job 3543@20c5acc03b48166ae2eeb688d76aae59fc0222ab · rigforge · tier4-e2e
options: {"phases": ["network-sequence"]}
status: completed · conclusion: success · exit 0 · 5m 40s
baseline verified: yes · rig restored: yes
node guard: not recorded · no comparison recorded
steps: checkout success · reserve success · preflight success · run success · collect success · restore success · cleanup success
rows: 20 pass · 0 fail · 0 skip
Generated by
bench-ci evidence 3543@20c5acc03b48166ae2eeb688d76aae59fc0222ab; re-run it to check.History on earlier heads. Job 3514 on
506ff7ffailed thenetworkwire-superset row once (
xmrig_unreachable:true); the control ondevelop(3517) and this head (3543) passed, and this PR does not change that assertion.
It is tracked as a flake in network phase: wire-superset assertion failed once with xmrig_unreachable:true #657. Job 3521 was cancelled for a Makefile conflict
with develop.
Evidence for jobs 3514 and 3517
bench-ci job 3514@506ff7fad91a7168f6de7a7aaa60c4a773597cad · rigforge · tier4-e2e
Generated by
bench-ci evidence 3514@506ff7fad91a7168f6de7a7aaa60c4a773597cad; re-run it to check.bench-ci job 3517@b1c25d6c0f74e526597bee538a38ea701afad4ab · rigforge · tier4-e2e
Generated by
bench-ci evidence 3517@b1c25d6c0f74e526597bee538a38ea701afad4ab; re-run it to check.idioms (function headers, command-position
ok,source/.). I cut thehardcoded
network == 9pin because the mutation test covers that drift.E2E_PROOF_CONTEXTyet),required-status wiring, and the paired serial/concurrent rollout measurements.
These remain with the sibling runner/preflight work named in
docs/dev/worker-proof.md.🤖 Generated with Claude Code