Claude Code First, specification version 0.1.0. The plain-language guide
Version 0.1.0. Grade R3/S3.
F403 Where several copies of a shared tool could answer, sessions ran a stale or unintended copy without noticing
| Field | Value |
|---|---|
| Status | active |
| Topic | Environment, permissions, and agent-facing products |
| Grade | R3/S3 |
| Cases | winwright, freewilly, roadkeep, Shio |
| Contrary | none |
| Harness facts | none |
Claim
When a shared engine or skill existed in several copies a session could reach (a vendored copy, a sibling checkout, plugin caches, a marketplace clone), sessions ran or read a copy that was stale or not the intended one, nothing failed, and a notice at session start did not stop an agent from working from the stale copy.
Mechanism
A copy kept in the consuming repository is refreshed only when someone runs the refresh, and a resolver that finds an engine by searching answers with whichever copy it reaches first. Both fail quietly: the stale copy still runs and still reads as authoritative, and the wrong engine still answers commands. A warning printed at session start competes with the task the agent was given and can be read past.
Observations
- winwright. The vendored roadkeep skill drifted behind the engine and was refreshed on
2026-08-28, "which had drifted behind the engine answering here" [winwright@ca680df]. Four days later it had drifted again and the session worked from it anyway: the surfaces "were stale all session" [winwright@a18dd8d]; the session-start notice reported it, and "I read past it every time" [winwright@a18dd8d]. The cost was counted: "five refusal round-trips over the 250-word limit, each re-sending the whole paragraph" [winwright@a18dd8d], for want of a command the stale copy did not document.
- freewilly. The environment variable meant to select the vendored engine did not take:
"ROADKEEP_HOME arrives unexpanded, so every hook runs a sibling checkout rather than the engine this repo vendors" [freewilly@c1c2eaf:docs/CHANGELOG.md#L200], fixed the same evening [freewilly@d1f00b9]. A second entry records that nothing reported the vendored copy's age: "Nothing says how far behind the vendored engine is" [freewilly@c1c2eaf:docs/CHANGELOG.md#L202]. Its install script states the general problem: "Which copy answers is not decidable by looking" [freewilly@c1c2eaf:install-roadkeep.cmd#L12-L19], with a session lost to an ImportError from a half-edited live checkout.
- roadkeep. In an adopting project, a session read a skill that was "78 lines behind" [roadkeep@91754240:src/roadkeep/guarding.py#L57-L59]
its source "with the trust of the original" [roadkeep@91754240:src/roadkeep/guarding.py#L59], because "Nothing in an adopting project runs the gate that holds its vendored skill in step" [roadkeep@91754240:docs/CHANGELOG.md#L872]; the remedy is the session-start notice (RK234). The launcher records a second case, in a corpus it does not name: a stale plugin registry row pointed at a removed version while "only three later versions were on disk, so this returned True, the launcher stood down" [roadkeep@91754240:hooks/roadkeep-launch.py#L151], and both guards were absent at once.
- shio. The engine was vendored to one path on 2026-08-14 [shio@1a541993e] because
"which copy answers is not decidable by looking" [shio@821f18d74:agents.md#L277]. At the pin the two descriptions of that copy disagree: "roadkeep is not vendored here and there is no path to a checkout" [shio@821f18d74:roadkeep.toml#L8] against "The engine is vendored" [shio@821f18d74:agents.md#L272].
Independence
Three independent origins at least. winwright's two refreshes and its stale session are its own. freewilly's unexpanded variable is its own defect in its own launcher configuration. roadkeep's two cases are evidence about the tool, recorded from adopting projects it does not name, and count once. The ImportError and the reasoning about which copy answers appear in both Shio and freewilly, Shio's commit 13 minutes earlier, so they count once, for Shio. The Shio configuration disagreement is a drift in prose, not a stale copy answering, and is recorded for context rather than counted.
Counter-evidence
None found at the pins against the claim. Against the remedy: the session-start notice roadkeep added for this (RK234) was present in winwright's stale session and did not stop it, so a notice is not shown to work. freewilly's DD118, which put the vendored engine's version beside the published one in the gate, is recorded as shipped, but the gate at the pin no longer runs it: the lint workflow and the test that held DD118 were deleted [freewilly@cd630d6], and the workflow came back without the vendored engine [freewilly@714360e].
Grade
R3: winwright, freewilly and roadkeep-or-Shio are independent origins in at least three projects. S3: winwright counted the cost in round-trips and roadkeep counted the drift in lines. No check that encodes the claim is recorded as having failed.