✔ the file list names the spec and Markdown directly under docs, as committed at HEAD (54.797196ms) ✔ a save writes the typed text as one commit by the business human and touches nothing else (133.493895ms) ✔ a stale base refuses and writes nothing, whoever made the newer commit (141.539717ms) ✔ only the spec and existing docs files are writable (43.49533ms) ✔ content and base are checked before anything is written (71.183566ms) ✔ an unchanged save, a dirty tree and a busy writer refuse without a commit (44.287576ms) ✔ a failed commit restores the exact prior bytes, including a byte-order mark, and leaves history alone (83.695952ms) ✔ failed init cleans its layout and permits retry (pre-existing=false) (38.046726ms) ✔ failed init cleans its layout and permits retry (pre-existing=true) (29.360599ms) ✔ project check distinguishes a complete but uncommitted layout (15.361116ms) ✔ record repo refuses every declared code root including a sibling project (1.61446ms) ✔ agent record writer refuses a human definition without changing history or files (14.354646ms) ✔ failed init preserves an unrelated file created while its commit runs (11.553071ms) ✔ failed init preserves an unrelated file inside a newly created layout directory (10.973791ms) ✔ failed init refuses to delete a replacement of its owned metadata file (11.719604ms) ✔ init creates a checked versioned layout, valid templates and human-authored local history (32.341107ms) ✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (14.175026ms) ✔ check reports every bad record, filename mismatch and unknown top-level path (13.490264ms) ✔ one writer commits validated docs, requirements and decisions with the bound agent author (99.656162ms) ✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (15.183308ms) ✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (20.186577ms) ✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (19.701406ms) ✔ schemas remain package-owned and reject invalid nested data and dates (0.355489ms) ✔ git commit failure restores only the attempted record and leaves human history unchanged (46.574054ms) ✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (35.037295ms) ✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.441522ms) ✔ schema constraints and layout omissions are reported independently (12.618052ms) ✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.227044ms) ✔ a linked git directory is refused before a writer lock can touch its target (30.71011ms) ✔ spec reads exact committed content and its path commit/log, not dirty bytes or a later docs commit (67.810342ms) ✔ latest agent spec edit is visible but never confirmed or replaced by an earlier human version (32.561565ms) ✔ shared file reader exposes committed docs and refuses path/revision injection or another history (55.673441ms) ✔ reader rejects missing paths, links, invalid UTF-8, NUL and oversized committed blobs (101.666932ms) ✔ reader refuses mismatched committed project identity, unsafe config and unknown argument keys (27.562302ms) ✔ path history is bounded at 100 and explicitly marks truncation (634.38122ms) ✔ committed UTF-8 BOM, Unicode and trailing newlines are returned without normalization (29.860708ms) ✔ D4: spec log refuses a commit subject larger than its 256 KiB read bound (33.808885ms) ℹ tests 37 ℹ suites 0 ℹ pass 37 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 1037.486734