✔ the file list names the spec and Markdown directly under docs, as committed at HEAD (72.879833ms)
✔ a save writes the typed text as one commit by the business human and touches nothing else (137.7736ms)
✔ a stale base refuses and writes nothing, whoever made the newer commit (124.488817ms)
✔ only the spec and existing docs files are writable (44.723827ms)
✔ content and base are checked before anything is written (61.168202ms)
✔ an unchanged save, a dirty tree and a busy writer refuse without a commit (45.011275ms)
✔ a failed commit restores the exact prior bytes, including a byte-order mark, and leaves history alone (62.453299ms)
✔ failed init cleans its layout and permits retry (pre-existing=false) (47.231923ms)
✔ failed init cleans its layout and permits retry (pre-existing=true) (35.582436ms)
✔ project check distinguishes a complete but uncommitted layout (20.698857ms)
✔ record repo refuses every declared code root including a sibling project (0.842307ms)
✔ agent record writer refuses a human definition without changing history or files (17.05235ms)
✔ failed init preserves an unrelated file created while its commit runs (14.630177ms)
✔ failed init preserves an unrelated file inside a newly created layout directory (16.185851ms)
✔ failed init refuses to delete a replacement of its owned metadata file (14.347856ms)
✔ init creates a checked versioned layout, valid templates and human-authored local history (35.928312ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (20.715011ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (18.711915ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (93.152859ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (16.341639ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (19.393524ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (18.429302ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.333012ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (37.692232ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (26.311163ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (14.798897ms)
✔ schema constraints and layout omissions are reported independently (13.113836ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.768436ms)
✔ a linked git directory is refused before a writer lock can touch its target (29.979724ms)
✔ spec reads exact committed content and its path commit/log, not dirty bytes or a later docs commit (88.673765ms)
✔ latest agent spec edit is visible but never confirmed or replaced by an earlier human version (40.763928ms)
✔ shared file reader exposes committed docs and refuses path/revision injection or another history (67.499085ms)
✔ reader rejects missing paths, links, invalid UTF-8, NUL and oversized committed blobs (103.820157ms)
✔ reader refuses mismatched committed project identity, unsafe config and unknown argument keys (28.740975ms)
✔ path history is bounded at 100 and explicitly marks truncation (655.959847ms)
✔ committed UTF-8 BOM, Unicode and trailing newlines are returned without normalization (30.930044ms)
✔ D4: spec log refuses a commit subject larger than its 256 KiB read bound (34.329089ms)
ℹ tests 37
ℹ suites 0
ℹ pass 37
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 1112.101307
