# chore\(tools\): add an optional TODO reconciliation gate \(\#285\) · lucenx/codexbar-plasma

[View on GitCafe](https://git.cafe/lucenx/codexbar-plasma/commit/f589bffdfc593b0d3338532cbed0349a349faa97)

Repository: [lucenx/codexbar-plasma](https://git.cafe/lucenx/codexbar-plasma)

Visibility: public

Requested revision: f589bffdfc593b0d3338532cbed0349a349faa97

Requested commit: f589bffdfc593b0d3338532cbed0349a349faa97

Commit: f589bffdfc593b0d3338532cbed0349a349faa97

Tree: e0360b98c22ac98d3960db097641a08c5fae95f7

Author: Simone

Committer: GitHub

## Message

```
chore(tools): add an optional TODO reconciliation gate (#285)

Adds `make todo-gate`, an optional check that asks a System One decision model
whether a committed change delivers an unchecked TODO.md entry it does not
remove. Code owns the policy, including whether TODO.md was touched; the model
only compares the diff with the listed entries. Both inputs are read from the
committed revision. The script is stdlib-only, stays out of `make check`, and
skips itself when OPENROUTER_API_KEY is unset.

The 0.6 threshold comes from replaying 17 recent commits: changes that left
TODO.md alone scored at or below 0.36, and the change that completed a listed
entry scored 0.86. Candidate changelog and guide-update questions were measured
on the same commits and dropped, because their touched and untouched scores
overlapped and no threshold separated them.

Untrusted inputs are bounded: probabilities and the configured threshold must be
finite values in [0, 1], and the response payload and usage shapes are validated
before use.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
```

## Parents

- [f1a4eb8baadc3bd618930b44fee244d655c17d95](https://git.cafe/lucenx/codexbar-plasma/commit/f1a4eb8baadc3bd618930b44fee244d655c17d95?format=markdown)

[Source at this commit](https://git.cafe/lucenx/codexbar-plasma/tree/f589bffdfc593b0d3338532cbed0349a349faa97?format=markdown)
