feat: Publish-Remote Gate und die Anleitung fuer eine private Instanz (2.2.0)
CI / verify (push) Successful in 44s
Release / release (push) Successful in 36s

Files changed:
- .gitignore
- AGENTS.md
- CHANGES.md
- VERSION
- instructions/gates.md
- instructions/private-instance.md
- tools/chemenu/commands/doctor.py
- tools/chemenu/commands/git_publish.py
- tools/chemenu/config.py
- tools/chemenu/tests/test_git_publish.py
This commit is contained in:
2026-09-01 18:06:55 +02:00
parent fb97d46888
commit 7263f85936
10 changed files with 506 additions and 10 deletions
+8 -3
View File
@@ -20,7 +20,9 @@ tools/wikitool instructions sync
Full procedure, including the tool environment: [instructions/bootstrap.md](instructions/bootstrap.md).
Setting up a brand-new, empty instance instead of cloning this one: `tools/wikitool dist export`
and [instructions/setup-instance.md](instructions/setup-instance.md) - see
[INSTALL.md](INSTALL.md).
[INSTALL.md](INSTALL.md). A *private* instance that keeps taking stack updates from a public
upstream is a third shape, with a safeguard the other two do not need:
[instructions/private-instance.md](instructions/private-instance.md).
## Invariants
@@ -177,16 +179,19 @@ tools/wikitool search --field entity_type=system --field 'confidence<0.6'
## Gates
Two limits are enforced in code rather than by instruction, because a prompt-level limit is
Three limits are enforced in code rather than by instruction, because a prompt-level limit is
one an agent can talk itself past.
- **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
threshold and the rule live in [instructions/gates.md](instructions/gates.md).
- **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.
- **Iteration Budget Gate / Loop-Breaker.** Past 60 `wikitool` calls in a session, or after 3
identical calls in a row, further calls are refused.
Both refuse with exit 1. **Do not retry, and do not open the gate.** Stop, summarize the
The last refuses with exit 1. **Do not retry, and do not open a gate.** Stop, summarize the
situation to the user, and get explicit approval. The full procedure - including why
`budget reset` is not the escape hatch - is [instructions/gates.md](instructions/gates.md).