Claude Code First, specification version 0.1.0. The plain-language guide
Version 0.1.0. Grade R3/S3.
F305 Tasks closed without a check covering the change as committed, and the gap surfaced later as a new task or a red for the next session
| Field | Value |
|---|---|
| Status | active |
| Topic | Gates, verification, and hooks against instructions |
| Grade | R3/S3 |
| Cases | Shio, winwright, freewilly |
| Contrary | none |
| Harness facts | none |
Claim
In three projects a task was recorded as done when no check the build runs covered the behaviour in its final committed state, and the missing half was found later, as a follow-up task, as a defect, or as a red that landed on the next session; each project answered by making a check part of closing a task.
Mechanism
An agent closes a task on the evidence in front of it: a report that looks right, a manual look, or a run that preceded its last edit. When nothing the build runs asserts the behaviour, or when the closing step itself changes what the gate reads, the defect survives the close and is paid for by whoever comes next.
Observations
- Shio. Six corrections "shipped half of themselves and the other half became a new task" [shio@821f18d74:agents.md#L226],
three of them shipping the report and leaving the behaviour, "At 246 commits in seven days" [shio@14acb91ce]. SH527 made the closing condition a test: a defect closes with an assertion carrying its id, and the missing ones are computed as a debt [shio@d29b83dc8], on the ground that "A rule nobody can check is a preference, so" [shio@821f18d74:agents.md#L229].
- winwright. Shipping a task edits the roadmap after the run that proved the work, so "The red then lands on whoever runs next, about an entry their change never touched." [winwright@a686d44]
The skill records it: "WW438: that happened twice in one session" [winwright@861b82e:.claude/skills/roadmap-docs/SKILL.md#L157], the second time to somebody who had watched the first. The remedy put the order into the two refusals and a case, and a control run confirmed they fail: a criterion added under a new task id and one reworded "turned both refusals red" [winwright@a686d44].
- freewilly. DD95 records that DD75 shipped with no test: "An edit that silently did not apply took three guards and one deletion with it" [freewilly@c1c2eaf:docs/CHANGELOG.md#L22],
"so the new behaviour was verified by hand and by nothing the build runs" [freewilly@c1c2eaf:docs/CHANGELOG.md#L22]. The missing test was added and the dead code deleted.
- polyweave. Only 18 of 132 commits record that the gates ran (F303), so the pin cannot say
whether tasks closed without them. No observation either way.
Independence
Three independent origins, one failure of each project's own closing practice: Shio's half-shipped corrections, winwright's ship-after-run order, freewilly's untested DD75. Each remedy is local to its project (an assertion-debt test, refusals in a criteria catalogue, a missing test added) and none was copied.
Counter-evidence
None found at the pins. Shio's own framing is that at its commit rate this was "the system's expected output" [shio@14acb91ce], which reads the failures as a property of the rate rather than of the agent; if so, the claim may depend on the pace of work, which the other two projects do not measure.
Grade
R3: independent failures in three projects. S3: Shio's is counted (six corrections, three of them report-only), winwright's occurred twice in one session. Not S4: winwright's refusals were seen to fail in a deliberate control, but they encode the ship-then-pair-then-run order of one catalogue, not the finding that a close needs a covering check; Shio's assertion-debt test encodes the finding more closely, and its first run is recorded as misreading itself (F302), not as catching an unasserted close.