What's Changed
- fix(i18n): refuse a fence-parity scope that reached nothing (#634) by @pjt222 in #678
- perf(i18n): scope both corpus walks to --id — 57s to 1.6s (#635) by @pjt222 in #682
- fix(i18n): fold the two writers' alignment guards through production (#674) by @pjt222 in #685
- docs(scripts): record the #589 triage where it can be acted on by @pjt222 in #687
- fix(i18n): route the normalizer's scope guards through validateScope (#677) by @pjt222 in #690
- fix(ci): make
npm testrun the tests (#680) by @pjt222 in #692 - fix(docs): generate SECURITY.md's attack surface instead of retyping it (#600) by @pjt222 in #686
- fix(docs): put workflows/ in the attack surface, and watch the two readdir inputs (#691) by @pjt222 in #693
- refactor(i18n): classify the reproducer through compareTagSequence (#676) by @pjt222 in #694
- feat(ci): let the release path be asked a question (#681) by @pjt222 in #695
- fix(build): the publish gate said the same thing twice, so it could say two things (#697) by @pjt222 in #698
- feat(guard): a run that moves its own HEAD now has an exit that is not --force (#688) by @pjt222 in #699
- fix(viz): the mode label named five where six are bound, on a published page (#639) by @pjt222 in #702
- fix(docs): SECURITY.md said "documentation" over an executable Python script (#691, #696) by @pjt222 in #701
- docs: two pieces of written guidance contradicted what this repo actually does (#689, #643) by @pjt222 in #704
- fix(ci): two assumptions were declared and unchecked; one is now checked, one measured (#663, #666) by @pjt222 in #706
- fix(memory): the constraint model was wrong, and nothing checked reachability (#407) by @pjt222 in #710
- fix(ci): the skills registry was gated by a count, which a rename leaves untouched (#700) by @pjt222 in #708
- fix(guard): a dropped word left the rebaseline message ungrammatical (#688) by @pjt222 in #709
- docs(tests): downgrade what the memory-cap probe can show, and write the arithmetic once (#407) by @pjt222 in #717
- docs(tests): name the issue the probe's deferred work was filed as by @pjt222 in #723
- chore(deps-dev): bump js-yaml from 5.2.3 to 5.3.0 in /viz by @dependabot[bot] in #657
- chore(deps): bump js-yaml from 5.2.3 to 5.3.0 by @dependabot[bot] in #658
- test(memory-cap): the harness states the cap in the prompt (#722) by @pjt222 in #724
- test(memory-cap): an untagged fence is a fence (#721) by @pjt222 in #725
- fix(i18n): pin the untagged-fence assumption and the tie-break (#629, #630) by @pjt222 in #728
- fix(mutation-check): strip ANSI so --expect-killed-by works outside CI (#729) by @pjt222 in #730
- ci(agents): gate agent file vs registry skill/tool drift (#434) by @pjt222 in #731
- refactor: one template predicate for the 115 hand-rolled exclusion sites (#672, #546) by @pjt222 in #736
- chore(deps-dev): bump vitest from 4.1.10 to 4.1.11 in /viz by @dependabot[bot] in #737
- chore(deps): bump mermaid from 11.16.1 to 11.17.0 in /viz by @dependabot[bot] in #738
- chore(deps-dev): bump vite from 8.2.1 to 8.2.2 in /viz by @dependabot[bot] in #739
- feat: enumerate every generated-and-committed artifact, and gate the enumeration (#590) by @pjt222 in #741
- fix(release): point the publish path at NPM_TOKEN, the secret that exists (#696) by @pjt222 in #746
- release: 1.9.1, and guard the tag against the manifest (#696) by @pjt222 in #747
- docs(release): reattach the publish-arm comment to the step it describes by @pjt222 in #748
Full Changelog: v1.9.0...v1.9.1