Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions corpus/skills/principle-prove-it/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,22 @@ check now, not lower the confidence and continue.
**Absence of output is not proof of success.** A command that printed
nothing needs its exit code shown.

**The output must entail the sentence, not merely agree with it.** Before
writing "verified," read the claim and the pasted output side by side and ask
what the output actually rules out. A run on one version, one host, one image,
one input proves the claim *for that instance*; it does not prove the general
or version-boundary statement the sentence made. When the check comes back
narrower than the claim — and it usually will, because the cheap check is the
reachable instance — rewrite the claim down to what ran, and say the wider one
is still open. Filing a narrow result under a wide heading is the error, even
when every word of the output is true. This binds hardest in a correction:
restating the original overclaim while pasting a narrower proof relabels the
mistake as a fix. Named in logic as hasty generalization, *secundum quid*
(Aristotle, *Sophistical Refutations*, Bk. I ch. 5, trans. W.A.
Pickard-Cambridge, http://classics.mit.edu/Aristotle/sophist_refut.html); in
software it is the difference between a witness and a proof, since one passing
instance witnesses existence and never universality.

**Blaming a gate is a causal claim.** "The hook is wrong," "the check
misfired," "the classifier blocked it for no reason" — each one needs the
gate's rule read this turn and quoted, with its `file:line`, next to the
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
An agent runs `docker run --rm node:25-slim corepack --version` and pastes the
real output: `corepack: not found`. It then writes "verified: corepack was
removed from Node 25+" into the PR body. One image, one tag, one run. Nothing
checked a second 25.x image, a later version, or the release notes.

This skill fires. The pasted output is real and every word of it is true, but
it does not entail the sentence. It rules out corepack in that one image; it
says nothing about the version boundary the claim draws. The rule that the
output must entail the sentence, not merely agree with it, is what the reply
needs: rewrite the claim down to what ran ("the `node:25-slim` image has no
corepack") and mark the wider statement as open, or run the check that would
actually cover it.

The same shape fires on a correction. If the agent later says "I overstated
it earlier, here is the proof" and pastes the same single-image run under the
same "removed from Node 25+" heading, the correction has relabeled the
overclaim as a fix. The narrower proof needs the narrower sentence.
Loading