chore(memory): BDR-083 + LRN-141/142 + journal + CHANGELOG + TODO W0-W8

BDR-083 records what was taken from unlazy and, more usefully, what was
refused and why. LRN-141: an external skill's machinery encodes its threat
model, not yours — take the invariants, refuse the machinery. LRN-142:
structure locks are fixed-string, so reflowing a doctrine paragraph reds
them; fix the doc, not the lock.
This commit is contained in:
Bastien Chanot
2026-08-24 13:12:38 +02:00
parent 63310467ca
commit bfac4d4522
5 changed files with 82 additions and 0 deletions
+18
View File
@@ -6,6 +6,24 @@ Format follows [Keep a Changelog](https://keepachangelog.com/).
## [Unreleased]
### Added
- **Contract gates — deterministic floor under the fresh verifier (BDR-083)** —
an acceptance criterion can now carry an oracle (`CHECK:` command +
`EXPECT:` success-only marker + `EVIDENCE:` slot). `lib/gates.sh run
<contract>` executes them fail-closed — MET requires exit 0 **and** the
marker — and writes the outcome back into the contract, so the fresh
verifier reads evidence as fact instead of trusting the executor's report.
New `GATE 0` in `lib/verify-secure-loop.md` runs the floor before any
verifier is dispatched: a red build no longer costs an LLM dispatch to
discover. `ABANDON: <id> <reason>` makes an impossible criterion a visible
handoff that blocks `CONFORME` and routes to the human gate (new verifier
verdict `ABANDONED(n)`). `feater` and `bugfixer` gain a four-pass
completion discipline, scoped so it can never widen the contract.
Adapted from the `unlazy` skill (Leonxlnx/unlazy, MIT); its Stop hook,
approval store, `.unlazy/` tree, depth-tree arithmetic and Node checker
were deliberately refused — see BDR-083 for each reason.
64 new assertions in `lib/tests/gates.test.sh`.
### Changed
- **seo-analyzer + geo-analyzer de-prescribed for Opus 5 (BDR-082)** —
process choreography converted to when-guidance under an