Skip to main content

Changelog

0.25.0 (2026-10-06)​

Features​

  • firing-log: record which anchor kinds matched each scar (#335) (#339) (aa6b719)
  • lint: warn on a violation that cannot arm, dead candidate anchors, and broad patterns (#325) (#328) (b3b3224)
  • render: header names the pre-cap total when the cap cut scars (#322) (fc3754b)
  • sweep: run every armed violation over the whole tree and report live hits (#326) (#329) (ecbd159)

Bug Fixes​

  • lint: report duplicate scar ids, and stop the matcher dropping one (#327) (210f4c7)
  • match: symbol anchor is a content signal only when the edit mentions the symbol (#338) (0a1aac6)
  • orphan: count symbol anchors in orphan detection and report one that no longer resolves (#337) (#342) (321f9de)

Documentation​

  • anchors: say path anchors are prefixes, and teach the skill when to use symbol anchors (#340) (7babb9f)

0.24.0 (2026-09-08)​

Features​

  • firing-log: one shared validated reader for the firing log (#313) (d316922)
  • skill: install the authoring skill to every detected host (#320) (1d9c985)

Bug Fixes​

  • promote: record whether a promotion happened at a terminal (#315) (f28e8eb), closes #308

0.23.0 (2026-09-03)​

⚠ BREAKING CHANGES​

  • install: with no --runtime, no terminal, and more than one detected host, scar hook install and scar skill install write nothing and print the commands to run instead of installing Claude Code by default.

Features​

  • install: detect installed hosts and the channel that already serves each (#304) (180cf6f)

0.22.0 (2026-09-03)​

Features​

  • lint: escalate a chronically-firing scar into an explicit review flag (#276) (e26884b)
  • promote: record whether promoted_by was typed or read from git config (#298) (bcdc4d7)
  • reanchor: record an applied rewrite as an evidence note on the scar (#299) (2aa1d12)
  • stats: record blocking capability on the firing row (#281) (a341b48)
  • stats: record context size on the firing row (#283) (99ba9c3)
  • stats: record the match census before top_k truncates it (#289) (715e42c)

Bug Fixes​

  • hooks: Codex and Windsurf posttool record a clean verdict too (#297) (823af3c), closes #293
  • promote: record who vouched in its own field, not inside authors (#290) (d1e649a), closes #287
  • stats: make a dead posttool hook distinguishable from compliance (#280) (13f0b6a)
  • stats: record why a scar was demoted, not just that it was (#288) (d6dafba), closes #284
  • stats: stop counting a command firing as an observed edit (#300) (7abeeed), closes #294

Documentation​

  • format: update the stale veritrail link to vitni (#269) (a842449), closes #268
  • stats: state that the armed-window number needs git archaeology (#291) (4097081), closes #285

0.21.0 (2026-08-29)​

Features​

  • stats: add --since/--until so a window is a first-class operation (#263) (f1b262b), closes #258
  • stats: record which fired scars were violation-armed (#267) (206d6af), closes #266

Bug Fixes​

  • codex: let the duplicate-channel warning be silenced (#253) (e060656), closes #252
  • match: scan whole file bodies for pattern liveness (#262) (fe177ca), closes #259
  • stats: report the applied window in the --all-repos payload (#265) (b0e8c1f), closes #264

Documentation​

  • spec: publish a stability contract for the nine --json payloads (#257) (c3e5c1b), closes #255

0.20.0 (2026-08-28)​

Features​

  • hooks: add native Codex push runtime (#244) (c1fc929), closes #243
  • hooks: install Codex hooks into ~/.codex/hooks.json (#247) (46fe470)

Bug Fixes​

  • codex: collapse duplicate firings and warn on two live hook channels (#251) (efe7e37), closes #250

0.19.0 (2026-08-28)​

Features​

  • model: revives_if — an archived scar names its resurrection condition (#224) (1bb438f), closes #205
  • stats: detect a disconnected instrument (#240) (79da8e5), closes #237
  • stats: earn the retrieval denominator behind an opt-in flag (#235) (b02bc8f), closes #217

Bug Fixes​

  • ci: sync uv.lock on release and let --locked catch the drift (#222) (e000d77), closes #220
  • installer: scope hook ownership to the kind, not the event (#238) (87b9c53)
  • stats: one stage block, rendered by every surface (#233) (de02850), closes #227
  • stats: render the measurement stages in the Rich output too (#226) (1fba7c2), closes #225

Documentation​

  • ci: correct the release.yml claim about the run-approval gate (#234) (f73de3c), closes #223
  • skill: state the real escaping mechanism — values reach the matcher verbatim (#218) (92de859), closes #216

0.18.0 (2026-08-27)​

Features​

  • stats: split measurement into retrieval vs enforcement metrics (#214) (7543aff)

Bug Fixes​

  • lint: detect a dead branch inside an alternation pattern anchor (#215) (60ef296)
  • lint: error when the status field is omitted entirely (#199) (#211) (6b0b994)
  • Violation regex with embedded double quotes survives round-trip (#201) (aecfd2d)

0.17.0 (2026-08-15)​

Features​

  • agents: Windsurf/Cascade hooks — block-once scar injection (#198) (164f6d3)
  • anchors: command anchors — fire scars on shell command execution (#175) (#177) (8b378b7)
  • cli: scar brief --compact — paste-ready scar block for sub-agent launch prompts (#176) (#178) (aad9a86)
  • docs: documentation site — methodology, quickstart, concepts, agents, llms.txt (#171) (1fc2610)
  • lint: warn on over-broad path anchors — report coverage of tracked files (#193) (60f03de)

Bug Fixes​

  • gitignore: add .scar/candidates/fp-log.txt to ignore list; remove obsolete fp-log.txt file (#208) (eeb1e35)
  • harvest: count oscillations non-overlapping, as the comment always claimed (#188) (#194) (d9dbdd3)
  • lint: ReDoS gate catches nested groups at depth and overlapping alternations (#191) (0166eaf), closes #184
  • match: tier before truncating — content-signal matches never lose top-k slots (#185) (#192) (ad34b7e)
  • model: unquote matched wrapper pair for pattern/command/condition (#202) (#204) (553ef99)
  • promote: case-insensitive reviewer dedup + author-drift lint (#182) (#183) (9a4ae78)
  • symbols: refuse ambiguous bare anchors; fold leaf tokens into fingerprints (#187) (#196) (eec8f7b)

Performance Improvements​

  • hooks: one directory parse per hook, cached tree-sitter parse, node-direct fingerprints (#186) (#195) (3ba38ab)

Documentation​

  • readme: slim README to pitch, install, and docs-site links (#174) (4820ad3)

0.16.2 (2026-07-30)​

Bug Fixes​

  • harvest: sanitize candidate titles and slugs, warn on leakage (#159) (#160) (15a7714)
  • mcp: newline-delimited JSON stdio framing per MCP spec (#167) (e56544a), closes #162

Documentation​

  • drop the MCP experimental marking — #162 transport fix shipped (#169) (c6d33d6), closes #168
  • skill: adopt the recurrence heuristic as the scar qualification one-liner (#166) (06607c2), closes #165
  • truth-sync README/SPEC/SCAR-FORMAT/ROADMAP/AGENTS with shipped behavior (#164) (03e9986), closes #163

0.16.1 (2026-07-04)​

Bug Fixes​

  • orphan: scan full content for liveness; hint violation: for reintroduction guards (#157) (757a1d1)

0.16.0 (2026-07-04)​

Features​

  • cli: rich rendering for promote, harvest, agent doctor, and init (#155) (02abf94), closes #154

Documentation​

  • skill: teach the violation: tripwire in scar-authoring SKILL.md (#152) (678721a), closes #151

0.15.1 (2026-07-04)​

Bug Fixes​

  • match: never count a scar's own file as a violation target (#149) (f9c3b72)

0.15.0 (2026-07-03)​

Features​

  • harvest: --write N renders top candidates as reviewable drafts (#139) (1cd495d)
  • init: guided first-run — harvest on-ramp and hook install pointers (#143) (753f701)
  • init: seed a worked-example candidate on fresh init (#147) (1e75061)

Bug Fixes​

  • parser: strip inline comments from evidence values (#145) (6ccd2c2)

0.14.0 (2026-07-03)​

Features​

  • cli: promote --reviewer falls back to git user.name (#134) (c1c858e), closes #133

Bug Fixes​

0.13.0 (2026-07-02)​

Features​

  • precision engine — tiered rendering, repetition collapse, over-broad advisory (#122) (df0e900)
  • violation field — post-edit compliance tripwire (#127) (8d1223f)

Bug Fixes​

  • gc: --max-firings 0 now actually empties the firing log (#125) (66a72be)

0.12.0 (2026-07-02)​

Features​

  • credibility batch — check gate, firing observability, label leak fix (#107) (b50518c), closes #106
  • distribution batch — pre-commit hooks, GitHub Action, plugin PATH resolution (#114) (a6a4128)
  • follow git renames for dead path anchors + scar orphan --fix-renames (#110) (478afb3)
  • scar draft-check — universal git-native authoring trigger for any agent (#118) (462ecb5)
  • scar gc — prune machine state, report repo hygiene read-only (#116) (0eef648)
  • scar reanchor — propose and apply new anchors for orphaned/partial-rot scars (#112) (0959aee), closes #111

0.11.0 (2026-07-01)​

Features​

  • anchors: re-measure anchor survival on the shipped mechanism (Phase 4) (#102) (ae6c327)
  • harvest: exclude lockfile basenames from comment-archaeology scan (#87) (#104) (e30c002)

Documentation​

  • spec: cut confidence dynamics from §5, document static weight (#95) (#105) (96efe5f)

0.10.0 (2026-07-01)​

Features​

  • anchors: symbol-drift advisory (Phase 3) (#100) (e384d23)
  • anchors: tree-sitter symbol anchors (Phases 1+2) (#98) (f2c7a4e)

Bug Fixes​

  • correctness batch — 7 audit-verified bugs (#93) (df0b6d7), closes #91
  • match: reject ReDoS-prone pattern anchors at the lint gate (#89) (7c10fde), closes #88

Documentation​

  • align SPEC/ROADMAP/README with shipped reality; lint-warn unsupported anchors (#96) (76e14ce), closes #90
  • harvest: document scorer type-prior as code-repo-calibrated (#85) (cacf586), closes #54

0.9.0 (2026-07-01)​

Features​

  • cli: Rich-colored --help via rich-argparse (#81) (7983a85), closes #80

0.8.0 (2026-06-30)​

Features​

  • cli: add --version flag to report installed version (#76) (e45805d), closes #75
  • cli: Rich output for read commands (TTY-detect + --json) (#79) (3ff9d40)

0.7.0 (2026-06-30)​

Features​

  • durable evidence forms (issue:/url:) to survive squash-merge (#50) (#74) (d558849)

Bug Fixes​

  • harvest: exclude vendored/scaffold paths from comment-archaeology (#72) (#73) (919add4)
  • parser: strip unquoted inline comments in _field (#70) (03ec578)

0.6.1 (2026-06-26)​

Bug Fixes​

  • plugin: sync plugin.json + uv.lock to 0.6.0 + drift guard (#63) (fe21ed6)

0.6.0 (2026-06-26)​

Features​

  • agent: Packaged scar-authoring skill + Claude Code plugin (#32) (#58) (b1eaca7)

Bug Fixes​

  • harvest: exclude .scars/ tree from candidates (self-ref noise) (#56) (29c2d61), closes #55

0.5.0 (2026-06-13)​

Features​

  • harvest: precision@N reporting CLI — close the measurement loop (#53) (100bd1d)
  • harvest: ranking layer — heuristic scorer + label-capture instrument (#39) (7369f73)
  • lifecycle: lint warns on evidence commit SHAs unreachable from HEAD (#44) (714357e)
  • lifecycle: orphan detection — resolution failure, loud in CI (#34) (421a12a)
  • lifecycle: partial-anchor rot — surface dead anchors on firing scars (#40) (85fd57e)

Bug Fixes​

  • scars: drop #6 orphaned receipt, broaden scar #5 for squash-merge (#51) (4c63ac5)
  • scars: re-anchor 3 ghost pattern anchors to real code (#42) (00a2fcb)
  • scars: replace 3 orphaned bare commit-SHA receipts with self-contained notes (#46) (a224619)

0.4.0 (2026-06-12)​

Features​

  • format: reserve optional receipt_id field (#29) (47ce933)

Bug Fixes​

Documentation​

  • roadmap: truth pass — gates resolved, Phase 1 shipped, Phase 2 in progress (#26) (7701a97)

0.3.0 (2026-06-12)​

Features​

  • agents: multi-agent scar integration — AGENTS.md, MCP server, agent helpers (#21) (52c817f)

0.2.0 (2026-06-12)​

Features​

  • cli: lifecycle v0 — challenge, archive, review_after surfacing (#16) (0c6fb05), closes #14

Documentation​

  • readme: scar challenge is planned, not shipped — point to lifecycle issue (8c6b021)

0.1.1 (2026-06-12)​

Bug Fixes​

  • hooks: drafter triggers on revert language only (#12) (547c4bb), closes #11