docs(agents): split the worker-discipline pointer to its two real owners - #1463
Merged
Merged
Conversation
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.
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.
The defect
Both
@dual-pairtwins —agents/orchestrator-worker-discipline.md:10andpackages/core/templates/shared/skill-context/aif-orchestrator-discipline/SKILL.md:8— routed four capabilities to one destination: «that is the meta-orchestrator skill (operator-side)». Measured against the live skills, three of the four are in the other skill:orchestrator/SKILL.md:16,:41,:55orchestrator/SKILL.md:423,:427,references/queue-mode.mdorchestrator/SKILL.md:241— «spawn reviewers with an A/B focus split»pipeline/SKILL.md:21,:573— correctpipelinedisclaims Queue-mode ownership in its own body (pipeline/SKILL.md:384: «A separatequeue-mode.mdreference file never shipped»), so the old pointer sent a reader to a skill that says it does not have the thing.The label was stale in a second way: the skill was renamed meta-orchestrator →
pipeline, so the destination had no resolvable name for a reader who greps.Failure scenario: an aif-dispatched worker whose kickoff asks it to plan a multi-stage task reads this header, goes looking for quota zones or the Phase -1 protocol in
pipeline, finds neither, and either proceeds without the discipline or reports a false absence.The fix
One line in each twin, edited identically: the sentence now splits the four items across their two real owners and names
pipelinewith its current name plus the former one, so both spellings resolve. No other content changes.How this surfaced (an origin note, not a stage-PR substrate)
Surfaced as an out-of-scope observation by #1460 (the D-H9 orchestrator rewrite), whose kickoff §7 forbade editing other owners' artefacts, and recorded in the umbrella's closure marker (
done.md, merged in #1461). This is the separate owner commit the Artifact Ownership Contract calls for — maintainer-invited in this session, not a drive-by.Verification
npx vitest run packages/core/principles/09-doc-authority-hierarchy.test.ts→ 37 passed (both files are inREQUIRED_HEADER_DOCS,09-doc-authority-hierarchy.ts:132and:141).21-agnosticism-conformance+22-internal-english+25-template-rule-ref-resolution→ 20 passed.SNAPSHOT_MODE=compare bash tests/install-sh/snapshot.sh→ 15 pass / 0 fail, and that green is honest rather than lucky: neither file ships in a default install — the skill-context is--with-aif-suite-gated (tests/install-sh/c1-wiring.test.sh:26) and this agent is not among the ten in the baselines (checkedtests/install-sh/baselines/ts-server/greenfield.fingerprint). The gated tests assert presence, not content (with-aif-suite-flag.test.sh:79), so no fingerprint recapture is due.§1.7 Forward-check applied
Checked against the disciplines this change is scoped by. Doc-authority (
doc-authority-hierarchy.md:1): the change edits only the «NOT authoritative for» clause, which is exactly the field that carries routing — principle 09 green, verified by run rather than by reading. file:line evidence:agents/orchestrator-worker-discipline.md:10. Dual-implementation (dual-implementation-discipline.md:1): the two files carry a@dual-pair: aif-orchestrator-disciplineanchor, so the edit is byte-identical in both halves — a one-sided fix would have been the#two-prompts-driftfailure this rule names. file:line evidence:packages/core/templates/shared/skill-context/aif-orchestrator-discipline/SKILL.md:10. Build-first-reuse (build-first-reuse-default.md:1): no capability, no dependency, no module — thePrior-art:trailer takes the escape hatch with a stated rationale. No-paid-LLM-in-CI (no-paid-llm-in-ci.md:1): no CI surface touched. Language discipline (language-discipline.md:1): both bodies stay English; principle 22 green.§1.7 Backward-check applied
Class of this change = a shipped doc's authority header naming the wrong owner for a capability. Swept that class rather than only the two files in hand:
grep -rn 'meta-orchestrator skill'over the repo (excluding.claude/orchestrator-prompts/andnode_modules) returns 19 hits, and each was verdicted.agents/orchestrator-worker-discipline.md+ its shipped twin — GAP-FOUND, fixed here. The only two hits where the phrase is a routing claim in an authority header. file:line evidence:agents/orchestrator-worker-discipline.md:10..claude/skills/pipeline/helpers/*.sh(11 hits) — ORTHOGONAL, deliberately untouched:@cc-only-rationalecomments describing the helper's own provenance («meta-orchestrator skill helper»), not a pointer to a capability owner. Renaming them is a naming sweep with a different owner and no reader-facing failure mode. file:line evidence:.claude/skills/pipeline/helpers/priority-score.sh:64..claude/skills/pipeline/references/output-format.md:550— SWEPT-CLEAN: self-reference to the emitting skill, correct as written. file:line evidence:.claude/skills/pipeline/references/output-format.md:550.docs/meta-factory/research-patches/**(5 hits) — OUT OF SCOPE by contract: append-only historical records; retroactively rewriting them is forbidden by the Artifact Ownership Contract. file:line evidence:docs/meta-factory/research-patches/2026-06-03-aif-skills-delivery.md:104, which quotes the very line this PR corrects — a record of what the doc said in 2026-06, and accurate as such..claude/skills/{dispatcher,aif-doctor,night-mode}/**— SWEPT-CLEAN: no hits; their boundary statements point at skills by current name.Fidelity verdict
FIDELITY: skipped — this PR declares no
## Provenancesubstrate because it has none: no kickoff and no plan-complete design backs it, so there is nothing for agents/fidelity-auditor.md to compare the diff against. The section above is an origin note (which observation prompted the fix), deliberately not headed## Provenance, which the gate reserves for a stage PR's substrate. Evidence for each of the four re-routed items is given inline above as file:line — e.g..claude/skills/orchestrator/SKILL.md:241for the dual-reviewer claim — rather than derived from a spec.