Repository navigation
feat: supervision surface — waiting_for, attempts in inspect, watch, strict flags - #69
Merged
Merged
Conversation
…-7' into meshloop/supervision-surface-52-57-51-59/integrate
…-11' into meshloop/supervision-surface-52-57-51-59/integrate
Meshloop marked node 3 StaleBaseDetected: it ran in parallel with node 2 and both edited the inspect dispatch arm. Resolved by keeping both arms; its retry (attempt 12) failed clippy and a test, so the reviewed attempt 9 is used. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… tests - set attempts.ended_at on HarnessExited (crash/timeout left open: a live pane may still be harvested, and liveness treats an ended attempt as Dead) - inspect outcome comes from the attempt's last ledger event; the outcome column keeps holding the base revision recovery reads, now shown as base_revision - restore node 2's attempt-8 attempts/summary tests that attempt 11 dropped - regression test drives a real fixture run, not hand-written attempt rows Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
plan has no fixture_only field; the flag was silently ignored and the test already uses a fixture harness config. #59 now rejects it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 8, 2026
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements #52, #57, #51, #59.
Closes #52
Closes #57
Closes #51
Closes #59
What changes
waiting_for:status/inspectreport why each node is blocked (acceptance,dependency+blocked_by,plan_acceptance,retry_budget_exhausted).review-planlistsacceptance_requiredand the R1 rule.docs/start.mdand themeshloop-review-plan/meshloop-acceptskills (+ bundle copies) state that every node stops formeshloop acceptin R1.inspect:inspect --tasklists attempts oldest first (harness, model_ref, started/ended,duration_s, outcome,base_revision, redacted evidence).inspect --attemptsadds them per node.status --jsongainssummary(attempts, retries, worker wall seconds). New store portevidence_for_attempt; no schema change.meshloop watch: blocks until a run needs a human. NDJSON line per node state change, final{"exit": …, "nodes": […]}. Exit 0 forawaiting_review/awaiting_plan_acceptance/completed, 1 forfailed/cancelled(reported before a review stop), 2 unknown graph, 3--timeout. Store-only, works onrun --detach.meshloop-run/meshloop-statusskills point to it.meshloop:<verb> does not accept <flag>, exit 2,ok:falseunder--json.Pre-existing bug fixed along the way
Attempts never recorded
ended_at, and theoutcomecolumn holds the attempt's base revision (base:<sha>, read by recovery). So #57's timing would always have been empty in real runs. Nowended_atis set onHarnessExited(not on crash/timeout, where a live pane may still be harvested and an ended attempt reads Dead), andinspectshows the attempt's last ledger event asoutcomeand the base asbase_revision. Regression test drives a real fixture run.How it was built (provenance)
Meshloop graph
supervision-surface-52-57-51-59(4 nodes) plussupervision-surface-59(1 node); Claude Sonnet workers via a stdin shim (#27 workaround), Claude Opus 5.5 as orchestrator/reviewer. Plans accepted by @smota.claude-opus-5-5-orchestrator(see note)StaleBaseDetected(parallel edit with node 2); 12 failed clippy/testplannever readOrchestrator commits:
61a80e1(merge node 3),803df3c(ended_at/outcome + #57 tests),c244966(watch failure priority),bad9d72(drop deadplan --fixture-onlyfrom a test).Note on node 1: its
meshloop acceptwas recorded by the orchestrator before the harness permission check blocked self-approval; @smota chose to keep it.Checks
cargo run --locked -p xtask -- check(fmt, clippy-D warnings, all workspace tests): pass onbad9d72, built from this checkout's owntarget/.CARGO_TARGET_DIRacross worktrees, andxtaskresolves the repo root from its compile-timeCARGO_MANIFEST_DIR, so a reusedxtask.execan check a different worktree. Passing node logs don't show which tree they checked.watchagainst a real detached run (covered by fixture tests only); Skills Manager library refresh for the changedskills/meshloop-*(pending, perdocs/install.md#skills-manager-development-copies).Known limits / follow-ups
parse_commandby hand; a table-driven test covers every documented verb.docs/product/brief.md:103mentionsmeshloop plan --accept-plan;plannever took that flag (it belongs torun).retry_budget_exhaustedhas no dedicated test.🤖 Generated with Claude Code