docs(development): cut the agent process playbooks to repo deltas (Q886, Q887) - #1587
Merged
Conversation
The dispatch and backlog process lives in three globally-installed skills (session-orchestrator, session-worker, session-backlog). Both playbooks carried a second copy of it, written when the docs had to stand alone without the private skills, and the two copies then drifted: line 3 of parallel-dispatch.md still had the dispatcher merging each PR while line 315 said no agent does (Q886). Cut both to what is true of this repo and nothing else (Q887): the gate, the throttle, the merge queue, the scripts/agent tooling, the hooks, the caps, the allocator, the merge drivers, and every measurement taken here. parallel-dispatch.md 612 -> 403; maintaining-backlog.md 796 -> 784, which is proportionate to where the duplication actually was. Correct the self-sufficiency claim at all three sites that made it (skills.md, development/README.md, documentation-standards.md): it holds for working-method skills, and for the three process skills what holds the rules is the vendored tooling running in make check, not the prose. Ratchet the em-dash baseline for both files to their new counts, so the old ceilings cannot silently readmit what the cut removed.
…added karlkfi/claude-skills#71 merged after this branch's audit and adds a "What is this batch for?" section to session-orchestrator: the dispatcher now asks for the release theme before selecting, splitting it into a ceiling that excludes and an emphasis that sorts. That obsoletes the section this branch had kept, which asserted the problem was unsolved and told the maintainer to state the theme in the /goal scope. Same defect class as the one Q886 named, on the same page, so it belongs in this change rather than a follow-up row. Replace it with what each half means here: the ceiling is post-1.0 SemVer and release.md owns it, a scoped release already records that ceiling in its plan doc and -gate labels rather than it being a per-run answer, and the emphases that actually recur here are parity work, the cleanup tail and the release harness. SemVer is general dev process rather than agent process, so the backlog doc's release-label section now links release.md too: a contributor deciding whether a row gates a release meets the ceiling rule there, where the decision is actually made.
karlkfi
force-pushed
the
claude/q886-q887-d9a48f
branch
from
August 16, 2026 17:32
1f7a8eb to
3942552
Compare
"Vendored" reads the dependency backwards. lint-backlog.sh over the backloglint rules, the ID allocator, the four merge drivers, check-status-isolation.sh and queue-unblock.sh were written here, and the session-backlog skill has no counterpart for most of them: its bundled lint is bash against a smaller generic rule set where ours is Go with 13 rules over a GFM AST. The claim the word was carrying is unaffected, since every tool it names is in that set and runs in make check regardless. Only the direction of the borrowing was wrong, which matters because it is the first thing someone checks when asking whether the docs can lean on the tooling.
This was referenced Aug 17, 2026
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.
Closes Q886 and Q887.
The dispatch and backlog process lives in three globally-installed skills —
session-orchestrator,session-worker,session-backlog. Both agent process playbooks carried a second copy of it, written back when the docs had to stand alone without the private skills. Two copies of a process that is still being iterated is what Q886 predicted would drift, and it had.Q886 — the audit
Compared both playbooks against the three skills as installed, read through the
Skilltool so the comparison is against shipped text rather than a remembered version. The findings split into stale (the doc contradicts the skill, or itself) and duplicate (the doc restates what the skill owns). Only the first class is a defect on its own.Stale, all in
parallel-dispatch.md:session-orchestrator§6 both said so. The row named this one./goaltemplate told the dispatcher to "give every worker the self-healing contract" and to restate the isolated-commit rulesession-orchestrator§2, forbid restating the contract in a spawn prompt. The template predates that rule and was never re-read against it.session-backloghad no stale counterpart.maintaining-backlog.mdcorrectly documents the single-table layout. The skill now describes a per-item store as a destination, and no cutover has landed onmain, so describing the store would have been the mistakeparallel-dispatch.mdalready records under § Coordination channels. The page now says so explicitly.Q887 — the cut
Both playbooks now carry this repo's deltas and nothing else: the gate and its sub-gates, the throttle, the merge queue and
allow_auto_merge: false, thescripts/agent/tooling, the hooks, the caps, the ID allocator, the merge drivers, and every measurement taken here.parallel-dispatch.md612 → ~420maintaining-backlog.md796 → ~790That asymmetry is the finding, not a shortfall. The row measured the skill retirement adding 21 lines to the first file and 4 to the second, and re-reading section by section confirms why:
maintaining-backlog.mdis almost entirely repo mechanism and repo measurement already. The only real duplication was § The shared process, in brief, which restated position-is-priority, the two Queue states, the blocker syntax, the Notes cap, the\|rule, the Deferred trigger tags, and plan docs for M/L. That section is now § Where the format differs from the skill and keeps only what the skill does not say.Upstream moved mid-branch, so this folds it in
karlkfi/claude-skills#71 merged 35 minutes after this branch's audit ran, adding a "What is this batch for?" section to
session-orchestrator: the dispatcher now asks for the release theme before selecting anything, splitting it into a ceiling that excludes and an emphasis that sorts.That obsoletes a section this branch had deliberately kept — § "Priority is release-thematic, and the Queue does not record the theme", which asserted the problem was unsolved and told the maintainer to state the theme in the
/goalscope. Shipping it would have landed a fresh instance of Q886's own defect on the page the PR exists to de-drift, so it is folded in here rather than filed as a follow-up.The replacement says what each half means here:
X.Y-gatelabels naming what the tag waits for. Read it rather than asking again.Two references to the renamed anchor were updated with it (the
/goalknob and the pre-flight checklist), both of which had told the maintainer to pre-state a theme the dispatcher now asks for.SemVer is contributor process, not agent process
So it does not get cut to a delta.
release.mdalready writes it out, which is the right home — but the place a contributor decides whether a row belongs to a release ismaintaining-backlog.md§ Don't pre-assign release versions, and that never linked it. It does now: a patch is bugfix-only, so labelling afeaturerow for one is wrong however badly the release wants it, and the way out is a backport branch rather than a relabel.The claim the cut invalidated
Three places asserted that a contributor without the skills loses nothing because every rule is written out in this tree in full. The cut makes that false, so all three are corrected rather than one:
skills.md— the section is now split by class. Working-method skills (deslop,verify-claims,rendered-page-review,tech-docs-layers,github-issue-filer,session-retro) still cost a contributor nothing. The three process skills own their process, and what holds the rules for a reader without them is that the tooling is in-tree and gate-enforced, where the prose is not:lint-backlog.sh, the ID allocator, the merge drivers,check-status-isolation.shand the dispatch hooks all run inmake checkand the pre-commit hook regardless. It also names the reader this trades away, and what would reverse the trade.An earlier revision of this branch said "vendored", which reads the dependency backwards and was corrected at all three sites that used it, including one that predates this PR. The five tools named were written here, and the
session-backlogskill has no counterpart for most of them: its bundled lint is bash over a smaller generic rule set wheredevtools/docs/backloglintis Go with 13 rules over a GFM AST. The claim itself is unaffected — every tool it names is in that set — but the direction of the borrowing matters, because it is the first thing someone checks when asking whether the docs can lean on the tooling.docs/development/README.md— both index rows restated the old claim and the old scope.documentation-standards.md— its skill-linking rule citedmaintaining-backlog.mdas the worked example of a page kept sufficient for a contributor without the skill, which is now exactly what that page is not. It points at the class distinction instead and keepstesting.md § Diagnosing failuresas the example that still holds.Also in the diff
scripts/docs/em-dash-baseline.txtratchets both files down (121 → 112, 92 → 39). The baseline is a ceiling, so leavingparallel-dispatch.mdat 92 against an actual 39 would have let 53 em-dashes back in silently. Counts are the checker's own, fromcheck-em-dash.sh --report, not agrep. The ratchet then caught the fold-in above at 42 and the new prose was rewritten to fit rather than the ceiling loosened.Flagged, not acted on
/goal(three sites) and/autofix-pr(one) are harness features rather than skills, and nothing in the repo defines either. Neither appears in this session's command list, but that list is session-scoped, so absence here is not evidence they are retired — and neither row is about them. Left as-is rather than rewritten on a guess.Testing
make checkgreen over the final tree, rebased onto currentmain. The sub-gates this change can fail all reportokby name:doc-links,lint-backlog,status-isolation-check,plan-index-check,no-plan-refs-check,em-dash-check,roadmap-check.parallel-dispatch.md, 18 intomaintaining-backlog.md) and every one survives; the sections that went had no inbound links.STATUS.md#Q869, whose row lives on draft docs(plan): plan a per-item queue store with a computed priority order (Q869) #1534 and not onmain— caught before committing rather than left for the gate.STATUS.md#Q886/#Q887anchor anywhere, and the onlyBlocked byreference was Q887's own to Q886, deleted with it.