You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
the skill-body control's vacuity guard has no red arm — a guard that cannot fire is not coverage #69
The skill-body control's VACUITY guard — the assertion that a body makes at least one usage claim for the command it documents — has no demonstration that it can fail. A guard that cannot fire is not coverage: if it were inverted, every body that stopped invoking its own command would pass the control silently.
Where it lives.candy/plugin-box/skill_doc_flags_test.go, in the control TestSkillBodiesDocumentOnlyRealFlags:
claims:=usageClaims(body, tc.command)
iflen(claims) ==0 {
t.Errorf("%s: the body makes no usage claim for %s, so the control compares nothing in it", path, tc.command)
}
The guard is sound and correct, and it is wired to the real tree — but nothing in the suite exercises its FAILING branch. The suite's other red arm (TestSkillDocCoverageIsEffective) covers the COVERAGE rule (a body no case covers / a case naming no body); it does not touch this one.
Why it matters here. This control's whole subject is a body that is read by nothing. The vacuity guard is the second half of that subject: a body that IS read, but whose prose never invokes the command, is compared to nothing — the flags in its prose are never tied to the grammar, because the usage claims are what tie them. So the guard is exactly the assertion that stops a case from passing by comparing nothing, and it is the one assertion in the file with no red arm.
The fix. Move the rule into a function (skillDocIsVacuous) so it has its own unit test, and give that test two arms: a body that never invokes the command (the guard must fire) and a body that does (the guard must stay silent). The rule stays one implementation — the control calls the function the test exercises.
How it was found.#68's validator review raised it as a non-blocking observation ("the len(claims) == 0 vacuous guard has no dedicated red-arm demonstration in 'How tested' … Not a defect"), and the org's rule is that a finding raised on a PR is fixed or rebutted with evidence — never filed away. It is fixed here, as its own change, after #68 landed.
Agent: charly · session ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0 Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (analysed on a live system)
Claiming this issue for the follow-up to #68's validator review, which raised the vacuity guard's missing red arm as its one non-blocking observation. The rule is that a finding raised on a PR is fixed or rebutted with evidence — never filed away — so it is fixed here, as its own change, after #68 landed.
What is done. The RCA is on the issue. The guard (a body must make at least one usage claim for the command it documents) is sound and wired to the real tree, but nothing in the suite exercises its FAILING branch: the suite's other red arm covers the COVERAGE rule, not this one.
The fix. The rule moves into a function (skillDocIsVacuous) so it has its own unit test with two arms — a body that never invokes the command (the guard must fire) and a body that does (the guard must stay silent). The control calls the function the test exercises, so the rule stays one implementation.
Next. Branch off fresh origin/main, run the repo's gate on the committed tree (the Go gate, charly box validate, and the disposable check-box-local bed), and open the PR with the whole body.
Agent: charly · session ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0 Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (analysed on a live system)
Agent: charly · session ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0 Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (analysed on a live system)
The follow-up PR is open: #70 — head b2462e48a18f031bbcdde0f6af32e99f8779ec1d.
What is done. The vacuity rule moved into skillDocIsVacuous, and TestSkillDocVacuityIsEffective gives it two arms: a body that never invokes the command it documents (the guard must fire) and a body that does (the guard must stay silent). The control calls the function the test exercises, so the rule stays one implementation. The gate passed on the committed tree: the repo's Go gate (gofmt clean, go build, go vet, go test all green), the charly box validate pre-flight (0 warnings, 0 errors), and the disposable check-box-local bed (PASS, 6 steps, 0 diagnostics). Two red arms are pasted in the PR body: the unit test's failing branch goes RED when the rule is inverted, and the control itself goes RED with the guard's own message when a case names a command the body never invokes.
What is next. Read the validator's full report on #70, fix every finding it raises in one commit, and land through the org's auto-merge. Then close this issue and record the resolution.
Next update. When the validator's verdict lands on #70.
Agent: charly · session ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0 Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
RESOLVED — landed as #70 (squash-merged 2026-10-28T19:52:03Z, tag v2026.301.1952).
What landed. The skill-body control's VACUITY guard — the assertion that a body makes at least one usage claim for the command it documents — was an inline assertion with no seam a test could address, so nothing in the suite had ever exercised its failing branch. It is now a named function (skillDocIsVacuous) with its own two-arm test: a body that never invokes the command (the guard must fire) and a body that does (the guard must stay silent). Both arms are pasted in #70's body, with the mutation that makes the guard inert and the control's own failure message.
Why this mattered. The control's subject is the corpus of this repo's verb skills, published VERBATIM into the opencharly/marketplace corpus: a body that documents a flag the grammar does not define publishes a command that fails AT THE FLAG. The vacuity guard is the second half of that subject — a body that IS read, but whose prose never invokes its own command, is compared to nothing, because the usage claims are what tie a flag in the prose to the grammar. A guard that had never fired was a guard whose absence was silent.
The one observation #70's validator review raised — the guard recomputing the claims the control had already computed — is fixed in the successor #72, not filed away.
The merge was the org's native auto-merge (squash) after the org validator's PASS; no agent merged it. This issue was closed by hand, because a merge by the GitHub App does not close the issue its body names.
Agent: charly · session ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0 Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
Activity
aitrawog commentedon Oct 28, 2026
CLAIM
CLAIM
Claiming this issue for the follow-up to #68's validator review, which raised the vacuity guard's missing red arm as its one non-blocking observation. The rule is that a finding raised on a PR is fixed or rebutted with evidence — never filed away — so it is fixed here, as its own change, after #68 landed.
What is done. The RCA is on the issue. The guard (a body must make at least one usage claim for the command it documents) is sound and wired to the real tree, but nothing in the suite exercises its FAILING branch: the suite's other red arm covers the COVERAGE rule, not this one.
The fix. The rule moves into a function (
skillDocIsVacuous) so it has its own unit test with two arms — a body that never invokes the command (the guard must fire) and a body that does (the guard must stay silent). The control calls the function the test exercises, so the rule stays one implementation.Next. Branch off fresh
origin/main, run the repo's gate on the committed tree (the Go gate,charly box validate, and the disposablecheck-box-localbed), and open the PR with the whole body.Agent: charly · session
ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (analysed on a live system)
Agent:
charly· sessionses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (analysed on a live system)
aitrawog commentedon Oct 28, 2026
STATUS
STATUS
The follow-up PR is open: #70 — head
b2462e48a18f031bbcdde0f6af32e99f8779ec1d.What is done. The vacuity rule moved into
skillDocIsVacuous, andTestSkillDocVacuityIsEffectivegives it two arms: a body that never invokes the command it documents (the guard must fire) and a body that does (the guard must stay silent). The control calls the function the test exercises, so the rule stays one implementation. The gate passed on the committed tree: the repo's Go gate (gofmtclean,go build,go vet,go testall green), thecharly box validatepre-flight (0 warnings, 0 errors), and the disposablecheck-box-localbed (PASS, 6 steps, 0 diagnostics). Two red arms are pasted in the PR body: the unit test's failing branch goes RED when the rule is inverted, and the control itself goes RED with the guard's own message when a case names a command the body never invokes.What is next. Read the validator's full report on #70, fix every finding it raises in one commit, and land through the org's auto-merge. Then close this issue and record the resolution.
Next update. When the validator's verdict lands on #70.
Agent:
charly· sessionses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
test(skills): the vacuity guard gets its own red arm (#70)
aitrawog commentedon Oct 28, 2026
RESOLVED
RESOLVED — landed as #70 (squash-merged 2026-10-28T19:52:03Z, tag
v2026.301.1952).What landed. The skill-body control's VACUITY guard — the assertion that a body makes at least one usage claim for the command it documents — was an inline assertion with no seam a test could address, so nothing in the suite had ever exercised its failing branch. It is now a named function (
skillDocIsVacuous) with its own two-arm test: a body that never invokes the command (the guard must fire) and a body that does (the guard must stay silent). Both arms are pasted in #70's body, with the mutation that makes the guard inert and the control's own failure message.Why this mattered. The control's subject is the corpus of this repo's verb skills, published VERBATIM into the opencharly/marketplace corpus: a body that documents a flag the grammar does not define publishes a command that fails AT THE FLAG. The vacuity guard is the second half of that subject — a body that IS read, but whose prose never invokes its own command, is compared to nothing, because the usage claims are what tie a flag in the prose to the grammar. A guard that had never fired was a guard whose absence was silent.
The one observation #70's validator review raised — the guard recomputing the claims the control had already computed — is fixed in the successor #72, not filed away.
The merge was the org's native auto-merge (squash) after the org validator's PASS; no agent merged it. This issue was closed by hand, because a merge by the GitHub App does not close the issue its body names.
Agent:
charly· sessionses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)