feat(harness): agent milestone orchestrator skill, milestone-run profile, rolling canary cadence - #1161
Conversation
…ed outline Run dir + supervisor identity + plan of record for the three #1120 artifacts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq
|
[PHASE: PLAN] Outline locked before body-writing, per the brief. Full plan of record: The line between the artifacts
Shared stories appear once (e.g. the #1086 mid-wave falsification lives in the cadence doc; the Section headingsSkill: When to Use / When Not to Use · Evidence discipline · Reading a milestone into PR Profile: When to use · Run layout (incl. instrumented Cadence: What this owns (+ #1119 disambiguation) · Evidence base · Trigger: the wave boundary CI lane: docs-only diff → |
…ity, note, drift gate The schedule artifact of #1120. Wave boundary as the canary point and content-derived membership are [observed] from the 0.0.4 trace; open questions stay [asserted] and owner-undecided. Wires to the shipped release:canary-label surface (#1121/#1122); publish mechanics remain with netscript-release; #1119's collision is disambiguated, not deepened. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq
|
[PHASE: IMPL] S1 landed — |
…e, cut checklist, DoD The run artifact of #1120. Every gate carries its observed firing evidence and a stated did-not-run signature; the honesty rule (#1092/#1146 precedents) and the #1142 false-red trap are encoded. Role judgement stays in the orchestrator skill; canary schedule in canary-cadence.md; publish mechanics in netscript-release. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq
|
[PHASE: IMPL] S2 landed — |
…de/skills mirror The role artifact of #1120: clustering, wave sequencing, re-planning absorption, delegation judgement, merge authority, canary-point decisions, honesty rules, and supervision pitfalls — every rule marked [observed] (0.0.4 trace) or [asserted]. Gate lists, run artifacts, label mechanism, and routing are referenced, never restated. Mirror regenerated via agentic:sync-claude (incl. aspire and netscript-release mirrors that were stale on main); agentic:check-claude green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq
|
[PHASE: IMPL] S3 landed — |
Acceptance evidence (v1 — superseded by the PR body after Sol eval cycle 1)The corrected mapping lives in the PR body §Acceptance evidence. Kept for the record: the original [PHASE: IMPL] summary said all four slices landed, which remains true; the evidence mapping it carried was revised per Sol findings C8/C9. |
…ecorded Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq
|
[PHASE: REVIEW] [VERDICT: CHANGES_REQUESTED] VERDICT: CHANGES_REQUESTED Findings
|
Evidence-base definition widened with per-claim citations instead of silent promotion; note-accumulation and the #1142 mitigation downgraded to [asserted] with gaps stated; identity derivation re-anchored on the release-canary.yml wiring; drift-gate section reduced to its observable contract; quota/transport gates given a recorded-output proof form; stage-C operability wired to tooling.md/agent-handoff.md and codex-watch turn interception; D2 tension (#1153/#1155 pre-ratification merges) surfaced rather than claimed away. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq
|
[PHASE: REVIEW-TRIAGE] Cycle-1 verdict: CHANGES_REQUESTED (9C/6M). All 15 findings accepted, none declined. Fixes in
Re-review requested on the same Sol thread (eval loop 1 of 2). |
|
[PHASE: REVIEW] [VERDICT: CHANGES_REQUESTED] Findings
Cycle-1 findings C1, C2, C4, C5, C6, C8, M3, M5, and M6 are resolved. Exact-paragraph comparison |
…gates; escalate C9, M1/M2 The two previously undemonstrated gates now carry real negative cases (gate-demos.md): check 3 fires RED on a synthetic new-ignore diff and stays GREEN on excluded-path quotes; the #1142 selection rule recovers PR #1155's true pre-merge verdict from a live rollup containing a post-merge FAILURE. D2 evidence box unticked pending the owner's ruling; the [observed] source-of-record dispute is recorded in drift.md for the owner. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq
|
[PHASE: REVIEW-TRIAGE] (cycle 2 — second CHANGES_REQUESTED → escalated per the two-failure eval rule) Sol confirms C1/C2/C4/C5/C6/C8/M3/M5/M6 resolved, zero duplicate paragraphs, mirror
Escalated to the owner (merge stays blocked):
Per the owner's directive the verdict gate stays: no green, no merge. |
…ng; [observed] definition ratified Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq
|
[PHASE: REVIEW] [VERDICT: CHANGES_REQUESTED] Findings
Cycle-2 findings C3, C7, C9, M1, M2, M4, and M7 are resolved. C7's predicate independently |
…opped, M8 stale acceptance row Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq
|
[PHASE: REVIEW] [VERDICT: PASS] Findings
C10 is resolved: |
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq
|
[PHASE: IMPL-EVAL] [VERDICT: PASS] Eval of record closed green: Sol |
|
@openhands-agent model=openrouter/minimax/minimax-m3 output=pr-comment iterations=400 use harness SKILL
Act as a cheap-and-quick documentation accuracy evaluator. Do not edit source, documentation,
Keep the iteration budget small. Prefer one to three decisive manual checks over broad exploration, |
OpenHands Agent — CompletedOPENHANDS_VERDICT: PASS Model: OPENHANDS_VERDICT: PASS Documentation accuracy — feat(harness): milestone orchestrator + canary cadencePer-file verdict table for the five changed documentation files in PR #1161.
SummaryAll five changed documentation files are accurate against the repository. Every executable claim (deno task verb, CLI flag, file path, GitHub issue number, GH workflow step) resolves to a real artifact. The one quantitative looseness — "~6h40m" vs the actual 6h25m orchestration span — is bounded by an explicit tilde and is not a blocker. Overall verdict: PASS. No fixes required. Run: https://github.com/rickylabs/netscript/actions/runs/30838335823 |
…-merge label present Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq
Summary
The three artifacts of epic #1120, authored against the ratified design doc
(
.llm/harness/design/milestone-orchestrator-and-canary-cadence.md, PR #1150): theagent-milestone-orchestratorskill (the role), themilestone-runharness profile (therun), and the rolling canary cadence (the schedule), wired to the
release:canary-labelsurface shipped by #1121/#1122. Draft PR per D1 — this PR is the ratification instrument.
Adversarial eval of record:
review_claude(Codex · GPT-5.6 Sol · xhigh), owner-directed as themerge gate; cycle 1 (9C/6M) fixed in
d1a3e21c0; cycle 2 fixes + gate demonstrations in thefollow-up slice; two items escalated to the owner per the two-failure eval rule.
Scope
.agents/skills/,.llm/harness/workflow/, generated.claude/skills/mirror. Nopackages//plugins/source.Slices
7e66e6d64workflow/canary-cadence.md— the schedule —1774f6c95workflow/milestone-run.md— the run —04efa4b0eagent-milestone-orchestratorskill + generated mirror + surface validation —5268abe77d1a3e21c0Definition of Done
verify(milestone-run): 0.0.5 runs on the orchestrator skill + milestone-run profile as its first real execution #1163 — see the box note on epic: agent milestone orchestrator + rolling canary release system — skill, harness profile, cadence #1120)
release:canary-label(no reimplementation; canonical derivation is the
release-canary.ymlwiring)[observed]rule cites its recorded source (trace, filed issue, or ratified designrecord); no assertion promoted into an earned rule
two rows initially lacking a demonstrated negative case now have one (run-dir
gate-demos.md: check-3 synthetic RED/GREEN demo; ci(e2e-cli): classify changes corrupts $GITHUB_OUTPUT post-merge — every merged PR shows a false red #1142 selection rule recovering the trueverdict from merged PR ci: scope every expensive job to a classifier capability vector (#1152) #1155's live rollup)
netscript-release; no second routing table.claude/skills/regenerated viadeno task agentic:sync-claude;deno task agentic:check-claudegreenthread
Acceptance evidence
Entry text follows the close-gate mirror's contract: the verbatim first line of each issue
checkbox, with the final em-dash separating the evidence.
agent-milestone-orchestratorskill exists and a fresh orchestrator can run a milestone — the skill exists and encodes the pattern with cited evidence (.agents/skills/agent-milestone-orchestrator/SKILL.md, commits5268abe77+d1a3e21c0); the run-from-it half is observational, relocated to verify(milestone-run): 0.0.5 runs on the orchestrator skill + milestone-run profile as its first real execution #1163 per the verify(wave-five): does the shipped agent surface actually change agent behaviour? #1090 pattern (see the box annotation on epic: agent milestone orchestrator + rolling canary release system — skill, harness profile, cadence #1120).llm/harness/workflow/milestone-run.md(04efa4b0e); Sol cycles 2–3 ran exact-paragraph comparison across the three artifacts: zero duplicates.llm/harness/workflow/canary-cadence.md(1774f6c95): trigger = wave boundary [observed], membership computed from first-parent merge history between canary pointscanary:<version>-canary.<n>— live since feat(release): derive canary labels from published versions #1122:canary:0.0.4-canary.1applied on the payload (e.g. issue feat(release): canary label surface — derive the label from the published version, and make the payload content-derived #1121); canonical derivation passes the publish step's own output (release-canary.yml→release:canary-label), which refuses unpublished versions; live exercise tracked in verify(canary): exercise the canary label + note surface on two real 0.0.4 canaries #1149netscript-release— ownership pointers only; verified by Sol cycles 1–4 after the C1 fix removed the restated doctrine (grep hits only the ownership disclaimers)gate-demos.md(check 3: synthetic RED exit 1 / GREEN exit 0; the ci(e2e-cli): classify changes corrupts $GITHUB_OUTPUT post-merge — every merged PR shows a false red #1142 selection rule recovering PR ci: scope every expensive job to a classifier capability vector (#1152) #1155's true pre-merge SUCCESS from a live rollup), both independently re-verified by Sol cycle 3; the drift gate's negative case is on record from feat(release): canary label surface — derive the label from the published version, and make the payload content-derived #1121; fix(release): canary drift check is not target-scoped, so every historical canary reports as missing a label #1160 is closed (lineage note)Validation
deno task agentic:sync-claude— SYNCED: 18 skills, 22 mirrored filesdeno task agentic:check-claude— all checks OK (re-run green afterd1a3e21c0)review_claudeadversarial pass — cycle 1: CHANGES_REQUESTED (9C/6M → fixed,d1a3e21c0); cycle 2: CHANGES_REQUESTED (5 fixed/demonstrated inbf1f8456f, 2 escalated;owner ruled 2026-08-03, recorded on epic: agent milestone orchestrator + rolling canary release system — skill, harness profile, cadence #1120); cycle 3: CHANGES_REQUESTED on two residues
(fixed,
eb833401d) with all substance resolved and both gate demos independently re-verified;cycle 4: PASS, zero findings. Merging under the owner's standing merge-on-green directive.
ci:skip-e2e+ci:skip-scaffoldapplied intentionallyHarness
.llm/runs/feat-milestone-orchestrator-artifacts--authoring/019fc874-c9b4-7b43-8af7-8abc6d6dae8d; see phase comments.Drift / Debt
drift.md:documentation-authoring exception (CLAUDE.md, 2026-06-18); owner directive routing ratification
through the Sol adversarial pass; D2 tension surfaced (fix(ci): desktop-native-linux honors the classifier it depends on #1153/ci: scope every expensive job to a classifier capability vector (#1152) #1155).
🤖 Generated with Claude Code
https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq