docs(orchestrator): thin the skill to deltas + bindings (D-H9) - #1460
Merged
Conversation
Rewrite `.claude/skills/orchestrator/SKILL.md` to the `/arch` model: every slice that an upstream superpowers skill (or this skill's own references/ file) already owns collapses to a binding; only project deltas keep prose. Method: three-way slice classification (DELTA / RE-DESCRIPTION / MIXED) over the 512-line baseline, each RE-DESCRIPTION claim carrying the upstream file:line it re-describes, read from superpowers 6.2.0 rather than recalled. The per-slice disposition is the deliverable's spine and ships as `.claude/orchestrator-prompts/orchestrator-rewrite/report.md`. Measured: 157 deletions / 119 insertions, 512 -> 474 lines. The prep-doc expected "roughly halve"; it did not hold, and the ledger records why — re-description was ~31% of the body, and collapsing a slice costs added binding lines. Deltas were not cut to reach a number (kickoff P-1, T-OR-A). Three T16 divergences from upstream are now stated in the body instead of being silently implied: the model ladder (subscription pool vs per-token pricing), the parallel-batch gate (independent worktrees vs SDD's in-plan ban), and worktree-by-default (vs upstream's consent step). Repairs found while classifying: the Phase 0 pointer routed to `executing-plans`, which itself defers to `subagent-driven-development` when subagents exist; the Phase 4.5 provenance cited a skill name that does not exist; and the body taught a bare `git worktree add` recipe that upstream names as the "#1 mistake" when a native worktree tool is available. All six named deltas survive, including the "Principle-test allowlist probe" heading that CLAUDE.md:134 names by name. Install fingerprints recaptured in the same commit. Prior-art: skipped — doc-only rewrite of an existing skill body plus the snapshot regeneration it forces; no new capability, no new dependency, no new module.
added 5 commits
August 18, 2026 03:23
The previous commit captured baselines, then the pre-commit shipped-format gate reformatted two markdown tables in `.claude/skills/orchestrator/SKILL.md`, and the baselines were never re-taken. They therefore recorded the pre-Prettier delivered hash (9059fd7c…) while the file installs as 76a07b50…, so `install-sh battery (shard C)` went red on 8 of 15 stack/mode pairs while a local compare run before the reformat had been green. Order matters: capture is only valid after the LAST content-changing step. Verified on the host after this commit: `SNAPSHOT_MODE=compare` → 15 pass / 0 fail, and `prettier --check` on the skill is clean, so the two cannot disagree again for this diff. Prior-art: skipped — regenerated snapshot baselines only, no capability, no dependency, no new module.
…ee body defects Two cold seats reviewed the rewrite. The slice-loss seat returned GO with zero BLOCKER/MAJOR (25 consumer surfaces enumerated by grep, 25 CLEAN, all six named deltas and the CLAUDE.md:134 anchor intact). The doc-quality seat returned REVISE, and its MAJORs were defects in the ledger, not in the skill. Ledger (`.claude/orchestrator-prompts/orchestrator-rewrite/report.md`): - ~13 baseline citations were relative to a `sed` window starting at line 12 and therefore read 11 low — row 6 cited `:111`, a decision-matrix row, for the Step-0 restatement that actually sits at `:122`. Every baseline citation is re-measured against `git show origin/staging:…` and rewritten. Rows 9-21 were already correct. - Four `references/` citations pointed at the wrong section of the right file (`glossary.md:37-39` for the depth-2 limit is `## See also`; the real line is `:36`). - Two counts were estimated rather than counted: one Recovery row was removed, not two; two anti-pattern bullets, not four. - The summary counts did not match the rows beneath them; recounted, with the row-vs-slice distinction now stated. - The diff numbers are re-taken at the head under review (168/134). The two earlier readings are recorded rather than quietly replaced, because each was stale for a different reason worth knowing. Skill body (`.claude/skills/orchestrator/SKILL.md`): - The authority header claimed «authoritative for the Mode A/B dispatch vocabulary» while the same header disclaimed «dispatch-channel definitions — glossary.md». It now owns the choice rule; glossary.md owns the definitions. - The Mode B condition list omitted the Opus-pool-under-load case that both the quota zone table and the decision matrix require, so the anti-pattern pointing at that list pointed at an incomplete one. - The model-tier divergence note attributed «prices per token» to upstream; `subagent-driven-development/SKILL.md:181` says the opposite («turn count beats token price»). Reworded to what upstream actually argues. - The slice-loss seat's one falsifier hit: «Batched questions» was carried as a project norm when SDD:151-153 already owns it. Now bound, not claimed. - Restored two normative details the collapse had dropped: that an embedded self-review does not count as one of the two Phase -1 reviewers, and the two project-specific PR-open details upstream does not carry. Snapshots recaptured AFTER the format gate this time, per the previous commit's lesson. Host: compare 15/15, principles 423 pass, `make self-audit` exit 0. Prior-art: skipped — review-round corrections to a doc rewrite plus the snapshot regeneration it forces; no new capability, dependency, or module.
…ed as copies
The scoped re-review of round 1 verdicted 10 of 13 findings ADDRESSED and 3 not,
with zero test, snapshot, anchor or frontmatter breakage. All three misses, and
both MINORs the round-1 fix itself introduced, were in the ledger:
- Row 13 still carried the −11 window-relative numbers as SECOND-HAND COPIES inside
another row's justification («the matrix (94-103)», «the blockquote (82-88)»).
Round 1 corrected the rows those numbers belonged to and never searched for their
mentions elsewhere. Re-measured to 103-114 and 93-99.
- Row 8 claimed consumers cite the whole `-1 … 4.5` ladder; the two citations
evidence «Phase -1» only, and one path lacked its directory. The claim is narrowed
to what the citations support and the paths are complete.
- Three removals had no ledger row at all — the `Agent({…})` JavaScript example, the
mid-batch bash block, and `### Restoring WIP` — while this file's header promises a
classification of every slice. Added as rows 21a/21b/21c; 21a records the one
removal with no surviving verbatim form.
- Narrowing `glossary.md:5-11` to `:5-9` in round 1 silently dropped the Reviewer
role at `:11`. Restored, with each role's own line named.
- One bullet carried both «~355» and «~344» for the same residue; 512 − 168 = 344.
Notes-lane items fixed in passing: the `rationale.md` opusplan citation overran into
the next heading (`:23-24`, not `:20-26`), and the frontmatter key lines were wrong
(`description:` is at `:3`).
The skill body is untouched this round, so the install fingerprints from the previous
commit remain valid — verified rather than assumed: `SNAPSHOT_MODE=compare` 15 pass /
0 fail, principles 423 pass.
Prior-art: skipped — review-round corrections to a documentation ledger; no new
capability, dependency, or module.
… invented The scoped re-review of round 2 resolved 77 citations (57 baseline line numbers, 20 repo-local) with zero baseline failures, and confirmed the header's promise — a classification of every slice — by walking every deletion hunk of `git diff -U0 origin/staging`. One finding stood, and it was introduced by the round-2 fix itself: - Row 21a claimed the JavaScript example was «the ONE removal with no surviving verbatim form». False, and falsifiable in one command: `grep -c 'Batch A'` over the new body returns 0, so the parallel-dispatch sketch (baseline 333-337) has no verbatim survivor either, and neither does the push/PR command block (386-392, `grep -c 'git push -u'` → 0). Both were already recorded under rows 14 and 16 — nothing was missing — but the superlative claimed one notch more than the evidence carried. Corrected to «one of three», with both counter-examples and their probes named. - The same fix left an internal contradiction: the kept-slice row for the `isolation: "worktree"` mandate spanned 130-145, overlapping the 143-154 block 21a declares removed, so 143-145 were at once «kept in substance» and «gone without a trace». The coherent range is 130-141 (`:141` is the «May be skipped» clause; `:143` opens the fence). - Two citations into `references/rationale.md` were off by a line or two. Root cause worth recording: the first reading of that file in this umbrella came from the PRIMARY checkout, which carries an untracked pre-authority-header copy (`git status` there reports `?? …/references/rationale.md`), while the tracked copy that ships is two lines longer. Reading a file from the primary checkout while working in a worktree can hand you different bytes than the ones under review. Re-measured against the worktree copy: `:8-17` and `:4`. - Ledger row order restored (21a-c had been inserted after 22a/22b). Skill body untouched again this round, so the fingerprints stay valid — verified, not assumed: compare 15 pass / 0 fail, principles 423 pass, report.md 219 lines against the 600 ceiling, Prettier clean. Prior-art: skipped — review-round corrections to a documentation ledger; no new capability, dependency, or module.
…ot a reviewer's Round 3 recorded «every other removed block has a verbatim survivor» on the re-review's authority. Re-derived it here instead: all eight fenced blocks in the baseline were tested line-by-line (comments stripped) against the new body. The claim holds — exactly the three named blocks have zero surviving lines — but the wording invited reading «a survivor» as «fully preserved», which is false for three of the remaining five. The per-block counts are now stated (249-260 3/4, 286-292 4/4, 347-350 2/2, 376-380 2/3, 398-401 1/2) so the sentence is checkable rather than trusted. Skill body untouched; fingerprints unaffected. report.md 219 lines, Prettier clean. Prior-art: skipped — precision edit to a documentation ledger; no new capability, dependency, or module.
artyhoo
added a commit
that referenced
this pull request
Aug 18, 2026
) (#1461) The single-stage D-H9 umbrella merged as #1460 (squash ce90c0d) without its closure marker. This writes it per the umbrella closure convention (docs/meta-factory/operational-conventions.md §1), which priority-score.sh Layer C3 reads to tag the umbrella status=DONE done_pr=1460 basis=done-md. Body records the measured result rather than the plan: 512 → 478 lines, not the predicted «roughly halve»; re-description was ~33% of the body. Also carries the two out-of-scope pointers #1460 surfaced (agents/orchestrator-worker-discipline.md and its shipped twin mis-route quota zones + Phase -1 to the pipeline skill) and the worktree-vs-primary-checkout method note. Prior-art: skipped — docs-only closure marker for an already-merged umbrella, no new capability, no dependency, no module. Co-authored-by: Test <test@example.com>
artyhoo
added a commit
that referenced
this pull request
Aug 18, 2026
…ers (#1463) Both twins routed «quota zones, queue-mode anti-collusion, Phase -1 dual-reviewer, cross-umbrella priority» to a single «meta-orchestrator skill (operator-side)». Three of those four live in the `orchestrator` skill, not in `pipeline`: quota zones (.claude/skills/orchestrator/SKILL.md:16,41,55), queue-mode anti-collusion (:423,:427 + references/queue-mode.md), the Phase -1 A/B dual-reviewer split (:241). Only cross-umbrella priority is `pipeline`'s (.claude/skills/pipeline/SKILL.md:21,573) — and `pipeline` explicitly disclaims Queue-mode ownership at :384. The label was also stale: the skill was renamed meta-orchestrator → pipeline. A worker following the old pointer looked for quota zones and the Phase -1 protocol in the skill that does not carry them. Surfaced as an out-of-scope observation by PR #1460 (D-H9 rewrite), which could not edit other owners' artefacts; this is that separate owner commit, invited by the maintainer. Both files edited identically — they are @dual-pair twins (aif-orchestrator-discipline). Prior-art: skipped — doc-only pointer correction in two twin markdown files, no new capability, no dependency, no module. Co-authored-by: Test <test@example.com>
10 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.
Thins
.claude/skills/orchestrator/SKILL.md(512 → 474 lines) to deltas + bindings over the superpowers stack it composes — the/archmodel. Umbrellaorchestrator-rewrite, decision D-H9, single stage, one PR.Rigor label (L0): research-grade — the target ships at env depth to every consumer, so a named cold review is the merge contract, not a courtesy.
The removed-slice ledger
The ledger is the acceptance basis and ships in-repo at
.claude/orchestrator-prompts/orchestrator-rewrite/report.md— one row per removed or collapsed slice,old §/lines → upstream owner → delta re-homed at <file:line> | none. Every slice of the 512-line baseline was classified three ways before anything was cut: 17 DELTA · 10 RE-DESCRIPTION · 9 MIXED.Every
RE-DESCRIPTIONclaim carries the upstreamfile:lineit re-describes, read from the installed superpowers 6.2.0 tree rather than recalled (T3).Measured magnitude — the prep's «roughly halve» did not hold
git diff --numstat origin/staging: 168 deletions, 134 insertions, 512 → 478 lines (−7%). The prep-doc row quoted in the kickoff §1 expected «could roughly halve it».It did not, and the gap is the finding rather than a shortfall to close by cutting further:
DELTAagainst superpowers 6.2.0 — slice by slice, each with the upstream file:line that would have owned it if one existed.DELTAcolumn (quota zones, the decision matrix, Phase 4.5, the token budget), none of which has an upstream owner. That is exactly the hazard the kickoff names as T-OR-A, and P-1 makes the verdict evidence-based rather than a quota.Falsifier, stated so it can be checked: wrong if a reviewer names a
DELTA-classified slice and produces the upstream file:line that already owns it. Each row is independently checkable. It fired once: «Batched questions» was carried as a project norm althoughsubagent-driven-development/SKILL.md:151-153already owns it. The body now binds it rather than claiming it; every other DELTA row survived the challenge.Three T16 divergences, now stated instead of implied
Places where our vocabulary matches upstream but the problem class does not — so the slice stayed a DELTA rather than collapsing to a binding, and the body now says why:
Repairs found while classifying
superpowers:executing-plans, which itself says to usesubagent-driven-developmentwhen subagents are available. Re-pointed, withexecuting-plansnamed as the no-subagent fallback.anthropic-best-practices» as a skill. No such skill exists — it is a bundled file insidewriting-skills. Citation corrected.git worktree addrecipe. Upstream orders native worktree tools first and names bypassing them «the feat: audit fixes Phase 1+2+3 (R2/R11 drift, manifest SSOT, depcruise integration) #1 mistake»; the recipe is removed and the ordering is now followed.Verification (host, not container)
All of kickoff §6.1 ran on this host:
npx vitest run packages/core/principles/{09,14,15}-*.test.ts→ 46/46 pass. Principle 14 caught a defect introduced by this very change (a link to an out-of-repo~/.claude/...path read as a broken internal ref); fixed, then green.SNAPSHOT_MODE=compare→ 15 pass / 0 fail on the current head. This took two commits and the first one was wrong: baselines were captured, then the pre-commit shipped-format gate reformatted two markdown tables in the skill, and the baselines were never re-taken — so they recorded the pre-Prettier delivered hash (9059fd7c…) while the file installs as76a07b50…. CI caught it asinstall-sh battery (shard C)red on 8 of 15 stack/mode pairs. Fixed in5f4d935605; capture is only valid after the last content-changing step, which for a shipped markdown file includes the format gate.grep -n "Principle-test allowlist probe"→ line 239. The anchorCLAUDE.md:134names by heading survives.make self-audit→ EXIT=0, 423 principle tests pass, 1 skipped.Review status — round 1 ran, and it was not a formality
Two cold seats (artifact paths only, no authoring dialogue), each handed the ledger, both bodies, and told to re-derive the consumer list by grep rather than trust the kickoff's snapshot.
Seat 1 — slice loss (the kickoff §3 merge contract):
VERDICT: GO. 0 BLOCKER, 0 MAJOR, 7 MINOR. It enumerated 25 consumer surfaces and verdicted 25 CLEAN, 0 GAP — no live consumer depends on text that existed only in a removed slice. All six named deltas survived, and### Principle-test allowlist probestill resolves fromCLAUDE.md:134.Seat 2 — document quality:
VERDICT: REVISE. 4 MAJOR + 3 MINOR, and its MAJORs were defects in the ledger, not in the skill — which is the outcome that justifies the round:sedwindow starting at line 12. Row 6 cited:111, a decision-matrix row, for a restatement that sits at:122.git show origin/staging:…and rewrittenreferences/citations hit the wrong section of the right file (glossary.md:37-39for the depth-2 limit is## See also)glossary.md:36,:28-32,rationale.md:42-44,:34,:36pipeline/SKILL.md:382is stated explicitlyverification-before-completion; one ledger row's citations supported a narrower claim than the row madeBoth seats also caught that the T16 model-tier note attributed «prices per token» to upstream —
subagent-driven-development/SKILL.md:181argues the opposite («turn count beats token price»). Reworded to upstream's actual argument.Round 2 — the scoped re-review of those fixes:
VERDICT: REVISE, 10 of 13 ADDRESSED. No test, snapshot, anchor or frontmatter breakage; all three misses were again in the ledger, and they are the interesting kind:-1 … 4.5ladder; its two citations evidence «Phase -1» only. Claim narrowed to what the evidence supports.Agent({…})example, the mid-batch bash block,### Restoring WIP) while the ledger's header promises a classification of every slice. Added as rows 21a/21b/21c — and 21a records the one removal in the whole rewrite with no surviving verbatim form.glossary.md:5-11to:5-9dropped the Reviewer role at:11, and one bullet carried two different residue figures.All fixed in
1964985b4e; the skill body is untouched in that commit, so the fingerprints stay valid — verified (compare15/15), not assumed.Round 3 — the re-review of round 2: 4 of 5 ADDRESSED, 77 citations resolved (57 baseline line numbers + 20 repo-local), zero baseline citation failures. The header's promise — a classification of every slice — was confirmed by walking every deletion hunk of
git diff -U0 origin/staging.The single miss is the sharpest finding of the three rounds, because the previous round's fix invented it: new row 21a claimed the JavaScript example was «the ONE removal with no surviving verbatim form». False, and falsifiable in one command —
grep -c 'Batch A'over the new body returns 0, so the parallel-dispatch sketch (baseline333-337) has none either, nor does the push/PR block (386-392,grep -c 'git push -u'→ 0). Both were already recorded under rows 14 and 16, so nothing was missing — the superlative simply claimed one notch more than the evidence carried. The same fix also left130-145and143-154overlapping, so three lines were at once «kept in substance» and «gone without a trace»; the coherent range is130-141. Fixed in187ce0be84.Then I re-derived the corrected claim myself rather than shipping it on the reviewer's authority (
b428b4ac4a). All eight fenced blocks in the baseline were tested line-by-line against the new body: the claim holds — exactly those three have zero surviving lines — but the wording invited reading «a survivor» as «fully preserved», which is false for three of the other five. The per-block counts are now in the ledger (249-2603/4,286-2924/4,347-3502/2,376-3802/3,398-4011/2), so the sentence is checkable instead of trusted.Root cause of the last two stale citations, recorded because it generalises: the first reading of
references/rationale.mdin this umbrella came from the primary checkout, which carries an untracked pre-authority-header copy of that file (git statusthere reports?? …/references/rationale.md) two lines shorter than the tracked one. Reading a file from the primary checkout while working in a worktree can hand you different bytes than the ones under review.Review loop closed here, deliberately. Three rounds ran; each found less than the one before (4 MAJOR → 3 misses → 1), the last finding was a superlative rather than a substantive error, and the merge-contract seat (slice loss, kickoff §3) returned GO in round 1 with the skill body unchanged in every commit since. A fourth cold round would re-check numbers that were just swept mechanically — effort without goal progress (effort-worthiness.md §1).
Merge gate. Green CI is not sufficient by the kickoff's own terms: this needs a live operator GO. Not self-merging.
Observations (surfaced, not acted on — kickoff §7 anti-scope)
Re-deriving the consumer class by grep found two surfaces the kickoff's §3 snapshot did not name. Both are other owners' artefacts, so they are reported rather than edited:
agents/orchestrator-worker-discipline.md:10and its shipped twinpackages/core/templates/shared/skill-context/aif-orchestrator-discipline/SKILL.md:8route «the FULL orchestrator workflow (quota zones, queue-mode anti-collusion, Phase -1 dual-reviewer)» to «the meta-orchestrator skill (operator-side)» — i.e. topipeline. Quota zones and Phase -1 live in this skill, not inpipeline. Pre-existing imprecision, unchanged by this PR; worth a one-line repointing by its owner.setup.d/10-skills.sh:82describes this skill's content as «Mode A/B, Queue mode, quota zones, Phase -1 cold kickoff read». That enumeration is still accurate after the rewrite — recorded so a future thinning pass knows the manifest comment tracks the delta list.A third note, on this PR's own shape: the ledger ships as
report.mdbecause.gitignore:16ignores.claude/orchestrator-prompts/*/*andreport.mdis an already-negated durable-artefact name whose comment describes exactly this class («population enumeration + per-verdict evidence»). Using it avoided editing shared.gitignorestate for one file.§1.7 Forward-check applied
Checked against the disciplines this change is scoped by. Doc-authority (doc-authority-hierarchy.md:1): the rewritten body keeps its
Authoritative for:/NOT authoritative for:header and the latter is where the five upstream bindings now live, which is the/archpattern at .claude/skills/arch/SKILL.md:24; principle 09 green. Build-first-reuse (build-first-reuse-default.md:1): the whole change is REUSE in the strict sense — it deletes our restatements and points at upstream owners; no new capability, no dependency, no module, so thePrior-art:trailer takes the escape hatch with a stated rationale. No-paid-LLM-in-CI (no-paid-llm-in-ci.md:1): the review layer is session-read cold agents, zero CI inference. Language discipline (language-discipline.md:1): body English-only, frontmatter trigger words (category-3 match-data) untouched — principle 22 green. Attention-is-not-a-mechanism (attention-is-not-a-mechanism.md:1): the acceptance layer is the ledger plus a named cold protocol, not «a reviewer will read the diff»; and the one anchor an external doc names by heading is checked by a grep in the kickoff's host-verify block, not by memory.§1.7 Backward-check applied
Class of this change = prose slices removed from a shipped skill body on the grounds that an upstream skill or a sibling reference already owns them. Surfaces where that class occurs, each verdicted rather than recapped:
.claude/skills/orchestrator/references/*(10 files, 1210 lines) — GAP-FOUND and closed by design: phase-minus-1.md:4 declares itself NOT authoritative for the subagent-implementation table and points back at the body, so that table was deliberately kept; deleting it would have left the pair ownerless. glossary.md:3 and rationale.md:3 claim the role/channel definitions and the incident history, so the body's duplicates of those collapsed to pointers..claude/skills/pipeline/**— SWEPT-CLEAN: pipeline/SKILL.md:382 names this skill as the SSOT for «Mode A / Mode B», and that vocabulary survives with definitional force; references/output-format.md:495 records a falsifier that fires if this skill gains a structured-args parser — it did not, the natural-language payload contract is untouched..claude/skills/{dispatcher,aif-doctor,night-mode}/**— SWEPT-CLEAN: their references are wrap-never-fork boundary statements (dispatcher/SKILL.md:412, aif-doctor/SKILL.md:227) and a superset-context pointer (night-mode/SKILL.md:66); none quotes removed text.CLAUDE.md— SWEPT-CLEAN with a live check: CLAUDE.md:134 names the Phase -1 «Principle-test allowlist probe» heading; it is still at orchestrator/SKILL.md:239.agents/**+packages/core/templates/shared/skill-context/**— GAP-FOUND, out of scope: the two mis-routed pointers in the Observations above. Pre-existing, not caused here, owned elsewhere.tests/install-sh/baselines/*— SWEPT-CLEAN: all eight npm-stack fingerprints carrying this skill were recaptured and re-compared green in the same commit.Sibling skills were checked for the same class and deliberately not touched:
arch/SKILL.mdis already thin (the model this PR follows), and thinningpipelineornight-modeis a different umbrella with a different owner.Fidelity verdict
FIDELITY: skipped — Tier-2 kickoff carrying no
bridge-profilemarker: the D-H9 design ratified the direction but not a per-slice keep/remove map, so no plan-complete substrate exists for a fidelity audit to compare against. The equivalent assurance is the kickoff §3 cold slice-loss review against the shipped ledger.