AGENTS.md § Gates is the one gate list; cli_contract.GATES and docs verify hold it
CI / verify (push) Successful in 6m17s
CI / pwsh (push) Successful in 1m59s
Release / release (push) Successful in 34s

The gate list contradicted itself across AGENTS.md, instructions/gates.md and the
command records' gate names. The Rebase-Review Gate is now listed, `new project`'s
exit 42 is no longer a pseudo-gate, gates.md and the explanation page link to the one
list instead of counting, and a register plus a docs verify check keep the three in step.

Files changed:
- AGENTS.md
- CHANGES.md
- VERSION
- docs/explanation/why-gates-are-code.md
- docs/reference/commands/pages.md
- docs/reference/commands/types-instructions-and-docs.md
- docs/reference/exit-codes.md
- instructions/gates.md
- tools/CONTRACT.md
- tools/chemenu/cli_contract.py
- tools/chemenu/commands/docs_verify.py
- tools/chemenu/commands/doctor.py
- tools/chemenu/commands/git_publish.py
- tools/chemenu/commands/new_page.py
- tools/chemenu/errors.py
- tools/chemenu/mcp/server.py
- tools/chemenu/tests/test_cli_contract.py
- tools/chemenu/tests/test_docs_verify.py
- tools/chemenu/tests/test_git_publish.py
- tools/chemenu/tests/test_reference_doc.py

Co-Authored-By: Claude Code <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2
This commit is contained in:
torbenandClaude Code committed 2026-10-07 10:10:48 +02:00
1 parent 1559f4b405
commit e9f4759727
20 files changed
+269 -52

No files matched your search

+7 -3
View File
@@ -162,7 +162,7 @@ instance comes only from a release),
[docs/explanation/language-boundaries.md](docs/explanation/language-boundaries.md) (why the
control plane is English everywhere and the KB language is a value, and why the axis is the
reader rather than the owner),
[docs/explanation/why-gates-are-code.md](docs/explanation/why-gates-are-code.md) (why the five
[docs/explanation/why-gates-are-code.md](docs/explanation/why-gates-are-code.md) (why the
gates in [Gates](#gates) are code rather than instruction),
[docs/explanation/version-model.md](docs/explanation/version-model.md) (why a version number
answers a compatibility question and a migration question separately), and
@@ -278,8 +278,8 @@ that take a title. A result cut short by `--limit` says so and names the total.
## Gates
Five limits are enforced in code rather than by instruction, because a prompt-level limit is
one an agent can talk itself past.
These limits are enforced in code rather than by instruction, because a prompt-level limit is
one an agent can talk itself past. This section is the one list of them.
- **Mass-Update Gate.** `publish` exits **42** on a change touching too many files, printing
the file list and the `--confirm <token>` line that publishes it once the user approves. The
@@ -287,6 +287,10 @@ one an agent can talk itself past.
- **Publish-Remote Gate.** `publish` exits **42** on a push to a URL this checkout has not
declared in `.wikitool-remotes.json`. It has no token and no flag: the way past it is a
deliberate edit by the user, never by an agent.
- **Rebase-Review Gate.** `sync` and `publish` exit **42** on a rebase whose incoming commits
touch a file this session is also changing, printing the incoming commits, the overlapping
files, their diff and the `--confirm-rebase <token>` line that rebases once the user has
judged that the two changes do not collide logically.
- **Upload Review Gate.** `upload accept` exits **42** on an MCP `submit` tool submission
nobody has cleared yet, printing its manifest and the `--confirm <token>` line that promotes
it once the user approves - same shape as the Mass-Update Gate, one submission at a time.