Summary
Four smaller runbook gaps in plugins/discipline/skills/sweep-all/SKILL.md, from the same
plugin-quality:audit post-use audit of discipline@0.9.0. None is a correctness hazard on its
own; together they are what makes the sweep unpredictable to run.
F5 (MED) — cost is prose, never a gate
The per-fork cost is documented under Gotchas ("~170K tokens" per fork; "an 8-in-scope pass in two
waves of four ran ~1.4M tokens for the audit phase alone") but no workflow step estimates or
confirms the spend. The user learns the price only by reading a Gotcha they may never open.
Proposal: make the pre-dispatch estimate a step, with a confirmation threshold.
F8 (MED) — the relevance gate has no tie-break
Situational membership is routed "from the corrector's own listing description", with no rule for
the ambiguous case. In the observed run it admitted 7 of 7 situational correctors. This is
structural, not a one-off: situational triggers are deliberately broad, so any long mixed session
admits all of them — exactly where per-fork cost peaks.
Proposal is deliberately not a rubric. Add a tie-break — "when ambiguous, exclude and report" —
and accept the trade explicitly: today's admit-by-default bias is the safe one for a correctness
skill, so the change buys predictable cost at the price of a possible missed discipline, and the
skip is reported either way (the skill already requires that).
F9 (MED) — the membership read is under-specified
"Glob the sibling corrector directories and read each one's metadata.discipline-batch" leaves out
two things that both bit in the observed run:
- No parse rule. The shipped value carries a trailing YAML comment
(discipline-batch: core # every session makes claims that need backing). That is valid YAML
and a real parser yields core — the frontmatter is not the defect. But the runbook does not
say to parse it as YAML or strip the comment, so the operator improvised a POSIX sed, which
would simply fail in a PowerShell-only session. The defect belongs to the read instruction, not
to the correctors' metadata.
- No rule for a keyless sibling.
setup and sweep-all themselves carry no
discipline-batch key, and a naive glob of skills/* returns them. The runbook never says what
a missing key means.
F11 (LOW) — every eval assumes forks work
All six entries in skills/sweep-all/evals/evals.json presuppose a working fork fan-out. There is
no eval for the fork-unavailable path, for the membership parse, or for a keyless sibling. (The
fork-unavailable eval lands with the preflight work; the membership ones land here.)
Source: plugin-quality:audit post-use audit of discipline@0.9.0 (F5, F8, F9, F11).
Explicitly out of scope
The audit's R7 — an artifacts-only / main-thread-sequential fallback ladder — is not proposed.
It re-creates the salience dilution the skill's declared delta exists to prevent and yields audits
weaker than the ones the skill halts to avoid. Build only if the degraded mode proves insufficient
in practice.
Summary
Four smaller runbook gaps in
plugins/discipline/skills/sweep-all/SKILL.md, from the sameplugin-quality:auditpost-use audit ofdiscipline@0.9.0. None is a correctness hazard on itsown; together they are what makes the sweep unpredictable to run.
F5 (MED) — cost is prose, never a gate
The per-fork cost is documented under Gotchas ("~170K tokens" per fork; "an 8-in-scope pass in two
waves of four ran ~1.4M tokens for the audit phase alone") but no workflow step estimates or
confirms the spend. The user learns the price only by reading a Gotcha they may never open.
Proposal: make the pre-dispatch estimate a step, with a confirmation threshold.
F8 (MED) — the relevance gate has no tie-break
Situational membership is routed "from the corrector's own listing description", with no rule for
the ambiguous case. In the observed run it admitted 7 of 7 situational correctors. This is
structural, not a one-off: situational triggers are deliberately broad, so any long mixed session
admits all of them — exactly where per-fork cost peaks.
Proposal is deliberately not a rubric. Add a tie-break — "when ambiguous, exclude and report" —
and accept the trade explicitly: today's admit-by-default bias is the safe one for a correctness
skill, so the change buys predictable cost at the price of a possible missed discipline, and the
skip is reported either way (the skill already requires that).
F9 (MED) — the membership read is under-specified
"Glob the sibling corrector directories and read each one's
metadata.discipline-batch" leaves outtwo things that both bit in the observed run:
(
discipline-batch: core # every session makes claims that need backing). That is valid YAMLand a real parser yields
core— the frontmatter is not the defect. But the runbook does notsay to parse it as YAML or strip the comment, so the operator improvised a POSIX
sed, whichwould simply fail in a PowerShell-only session. The defect belongs to the read instruction, not
to the correctors' metadata.
setupandsweep-allthemselves carry nodiscipline-batchkey, and a naive glob ofskills/*returns them. The runbook never says whata missing key means.
F11 (LOW) — every eval assumes forks work
All six entries in
skills/sweep-all/evals/evals.jsonpresuppose a working fork fan-out. There isno eval for the fork-unavailable path, for the membership parse, or for a keyless sibling. (The
fork-unavailable eval lands with the preflight work; the membership ones land here.)
Source:
plugin-quality:auditpost-use audit ofdiscipline@0.9.0(F5, F8, F9, F11).Explicitly out of scope
The audit's R7 — an artifacts-only / main-thread-sequential fallback ladder — is not proposed.
It re-creates the salience dilution the skill's declared delta exists to prevent and yields audits
weaker than the ones the skill halts to avoid. Build only if the degraded mode proves insufficient
in practice.