Skip to content

discipline:sweep-all — cost gate, relevance tie-break, membership-read spec, and missing evals #1624

Description

@kyle-sexton

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: mediumReal value, no hard deadline; normal backlog flow.

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions