Skip to content

docs(agents): split the worker-discipline pointer to its two real owners - #1463

Merged
artyhoo merged 1 commit into
stagingfrom
fix/orchestrator-discipline-pointer-split
Aug 18, 2026
Merged

docs(agents): split the worker-discipline pointer to its two real owners#1463
artyhoo merged 1 commit into
stagingfrom
fix/orchestrator-discipline-pointer-split

Conversation

@artyhoo

@artyhoo artyhoo commented Aug 18, 2026

Copy link
Copy Markdown
Owner

The defect

Both @dual-pair twins — agents/orchestrator-worker-discipline.md:10 and packages/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:

capability pointer said actually owned by
quota zones pipeline orchestrator/SKILL.md:16, :41, :55
queue-mode anti-collusion pipeline orchestrator/SKILL.md:423, :427, references/queue-mode.md
Phase -1 dual-reviewer pipeline orchestrator/SKILL.md:241 — «spawn reviewers with an A/B focus split»
cross-umbrella priority pipeline pipeline/SKILL.md:21, :573correct

pipeline disclaims Queue-mode ownership in its own body (pipeline/SKILL.md:384: «A separate queue-mode.md reference 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 pipeline with 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 in REQUIRED_HEADER_DOCS, 09-doc-authority-hierarchy.ts:132 and :141).
  • 21-agnosticism-conformance + 22-internal-english + 25-template-rule-ref-resolution → 20 passed.
  • SNAPSHOT_MODE=compare bash tests/install-sh/snapshot.sh15 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 (checked tests/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-discipline anchor, so the edit is byte-identical in both halves — a one-sided fix would have been the #two-prompts-drift failure 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 — the Prior-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/ and node_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-rationale comments 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:550SWEPT-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 ## Provenance substrate 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:241 for the dual-reviewer claim — rather than derived from a spec.

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.
@artyhoo
artyhoo merged commit bd9b937 into staging Aug 18, 2026
53 of 54 checks passed
@artyhoo
artyhoo deleted the fix/orchestrator-discipline-pointer-split branch August 18, 2026 07:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant