Claude Code First, specification version 0.1.0. The plain-language guide

Version 0.1.0. Grade R2/S2.

F200 A commit tool that stages everything commits whatever else the working tree holds, and an ignore rule closes only the pattern it names

FieldValue
Statusactive
TopicCommits and concurrent sessions
GradeR2/S2
CasesShio, freewilly
Contrarynone
Harness factsnone

Claim

The owner's commit tool stages the whole tree, so scratch files and unrelated edits in the working tree (run logs, bytecode, a settings file changed mid-session) were committed under another task's message, and the ignore rules added in answer closed each pattern only after it had leaked once.

Mechanism

An agent session leaves artefacts beside its work: a teed test log, a progress file, a __pycache__ directory from a hook, a settings file the session rewrote. A commit step that runs a stage-all command owns everything the tree holds at that moment, so any of these rides into the next commit, whose message, written for the task, does not mention it. An ignore rule names one pattern after it has leaked; a file under a new name is not covered until it leaks in turn.

Observations

Independence

The common cause is one tool, the owner's run-commit.cmd, which all five projects use. Under rule 3 of ../grading.md its behaviour is one origin, however many projects show it. The strays themselves differ by project (Shio's teed logs, freewilly's settings rewrite and test output), so counted as failures under rule 1 they would be two origins; this finding takes the lower count, because the claim is about what the tool does. The ignore rules are local remedies: Shio's and freewilly's name different patterns and were each written after a local leak, so neither is a copy of the other. The warnings in winwright, roadkeep and polyweave are copies of the same instruction and count for nothing.

Counter-evidence

None found at the pins. The pins cannot show strays that were caught before a commit, and freewilly's restoring commit says the first of its two trims was "caught before a commit" [freewilly@ac7e7ec], so the recorded leaks are a lower bound. Whether any project still leaks after its ignore rules is not recorded.

Grade

R2: one origin, the tool, seen on separate occasions and across an attempted fix: Shio's log leak on 2026-08-06, the /*.log rule the same minute, and a second log-like file leaking past that rule on 2026-08-17; freewilly's settings trim on 2026-08-14 and a test's bytecode, undated in the ledger. S2: each leak is recorded by a commit, a ledger entry or a comment beside the ignore rule. The removed entry count (15) describes the freewilly incident but does not measure the finding, and no count of leaked files was made at the pins, so the grade is not S3.