Claude Code First, specification version 0.1.0. The plain-language guide
Version 0.1.0. Grade R3/S3.
F306 The agent configuration broke silently, and the remedy was to put it under the project's own gate
| Field | Value |
|---|---|
| Status | active |
| Topic | Gates, verification, and hooks against instructions |
| Grade | R3/S3 |
| Cases | roadkeep, freewilly, Shio |
| Contrary | none |
| Harness facts | H11, H13 |
Claim
In three projects a part of the agent's own configuration (a skill's frontmatter, the committed settings with their hook wiring, a published plugin's skills) stopped working without any error, and each project answered by adding a check to its test suite or CI that fails when that configuration is lost.
Mechanism
The harness reads settings, hooks, skills and plugin manifests without reporting what it dropped or never loaded, and an agent working in the session cannot see what is missing from it. A test that reads the committed configuration, or a validator run in CI, is the only reader that fails where the harness stays silent.
Observations
- roadkeep. "invalid YAML frontmatter caused the loader to drop essential metadata" [roadkeep@f79ca3b4]
(RK331). The CI header lists the family: frontmatter the tests could read is what "RK331 shipped broken" [roadkeep@91754240:.github/workflows/gate.yml#L10], and "running it once by hand is how three defects in" [roadkeep@91754240:.github/workflows/gate.yml#L11] that family were found. CI now runs claude plugin validate --strict (H13) at a pinned version, "2.1.220" [roadkeep@91754240:.github/workflows/gate.yml#L71].
- freewilly. The committed settings lost their allow entries mid-session: "Twice in one session fifteen entries vanished from" [freewilly@c1c2eaf:tests/FreeWilly.Preflight.Tests/PackagingTests.cs#L277]
the allow list, and the second deletion reached a commit about something else. DD115 [freewilly@646e121] added two tests: one fails when the settings file "no longer grants" [freewilly@c1c2eaf:tests/FreeWilly.Preflight.Tests/PackagingTests.cs#L302] a tool on a declared floor, the other when "no roadkeep guard is wired on" [freewilly@c1c2eaf:tests/FreeWilly.Preflight.Tests/PackagingTests.cs#L326] any of the three hook events.
- Shio. The repository published a plugin whose skills "were published by, and never loaded in, the repository that wrote them" [shio@d1853cbea],
so breakages in them arrived as outside reports. SH949 enabled the plugin in the committed settings and added a test, "no skill name is both a plugin skill and a project skill" [shio@821f18d74:claude-plugin/test/plugin.test.mjs#L291].
- winwright. The shipped skill is under test for its names, since a stale one "sends an agent confidently at something that is not there" [winwright@861b82e:tests/Winwright.Tests/SkillTests.cs#L16-L18],
and that check has gone red (F304). No silent break of the configuration preceded it in the sources, so this shows the check, not the failure.
Independence
Three independent origins: roadkeep's frontmatter, freewilly's settings, Shio's unloaded plugin skills. Each is a different part of the configuration and a different remedy. The component that rewrote freewilly's settings is not established by its sources (see harness observation O1), which does not affect the claim: the loss was silent whatever caused it.
Counter-evidence
None found at the pins. freewilly's DD115 tests are not recorded as ever failing: git log c1c2eaf -- .claude/settings.json shows no change to the file after the incident, so the pin holds no occasion on which they could have.
Grade
R3: independent failures in three projects. S3: freewilly's is counted (fifteen entries, twice) and roadkeep's gate header counts three defects in one family. Not S4: the checks encode the remedy, and no source records one of them failing on a real loss after it was added.