feat!: installation only from a release, into an empty folder; upstream merge/verify and private-instance.md removed, dist adopt, shell-neutral instructions (#153)
CI / verify (push) Successful in 5m19s
CI / pwsh (push) Successful in 1m55s
Release / release (push) Successful in 36s

Files changed:
- .gitea/workflows/ci.yml
- .gitea/workflows/release.yml
- AGENTS.md
- CHANGES.md
- DEVELOPMENT.md
- EVALS.md
- INSTALL.md
- README.md
- VERSION
- docs/ownership-and-templates.md
- instructions/CONTRACT.md
- instructions/bootstrap.md
- instructions/dev/dev-setup.md
- instructions/dev/stack-dev/SKILL.md
- instructions/gates.md
- instructions/ingest-large-tree.md
- instructions/kb-profiles.md
- instructions/mcp-read-server.md
- instructions/migrations/3.0.0-authoring-conventions.md
- instructions/preflight.md
- instructions/private-instance.md
- instructions/session-setup.md
- instructions/setup-instance.md
- instructions/upgrade-instance.md
- tools/CONTRACT.md
- tools/README.md
- tools/chemenu/cli.py
- tools/chemenu/cli_contract.py
- tools/chemenu/commands/dist_cmd.py
- tools/chemenu/commands/docs_verify.py
- tools/chemenu/commands/doctor.py
- tools/chemenu/commands/git_publish.py
- tools/chemenu/commands/upstream_cmd.py
- tools/chemenu/commands/work_cmd.py
- tools/chemenu/config.py
- tools/chemenu/ownership.py
- tools/chemenu/tests/test_cli.py
- tools/chemenu/tests/test_dist_cmd.py
- tools/chemenu/tests/test_instructions_shell.py
- tools/chemenu/tests/test_preflight.py
- tools/chemenu/tests/test_preflight_pwsh.py
- tools/chemenu/tests/test_run_budget.py
- tools/chemenu/tests/test_upstream_cmd.py
- tools/chemenu/toc.py
- tools/preflight.ps1
- tools/preflight.sh
This commit is contained in:
torben committed 2026-10-01 22:12:09 +02:00
1 parent d0f08d1fba
commit a6d07f97c4
46 files changed
+1314 -1936

No files matched your search

+16 -14
View File
@@ -44,25 +44,27 @@ everything an operator needs that is *true of the software* rather than of one i
and cryptography to do it.
```bash
tools/.venv/bin/pip install -r tools/requirements-mcp.txt
tools/.venv/bin/python -m pip install -r tools/requirements-mcp.txt
```
2. **Decide which checkout it serves.** The root resolves by precedence - an explicit `--root`,
then `$CHEMENU_ROOT`, then the checkout the package lives in. A deployment points at its
corpus with one variable and no code:
then `CHEMENU_ROOT`, then the checkout the package lives in. A deployment points at its
corpus with one variable and no code, set in the environment the server process starts in
(its service unit or container spec):
```bash
export CHEMENU_ROOT=/srv/chemenu
```
| Variable | Value |
|---|---|
| `CHEMENU_ROOT` | The checkout it serves, for instance `/srv/chemenu` |
3. **Take tracing out of the served tree.** The server refuses to start otherwise, and the
refusal is the point: telemetry defaults to on and writes under `reports/telemetry/` inside
the repo, which step 5's sync is entitled to wipe. Either is fine:
the repo, which step 5's sync is entitled to wipe. Set one of the two in the same
environment:
```bash
export WIKI_TRACE=0 # off
export WIKI_TRACE_DIR=/var/log/chemenu # or elsewhere, outside the corpus
```
| Variable | Value |
|---|---|
| `WIKI_TRACE` | `0` - tracing off |
| `WIKI_TRACE_DIR` | A directory outside the corpus, for instance `/var/log/chemenu` |
4. **Start it on the transport that matches what is in front of it.**
@@ -80,11 +82,11 @@ everything an operator needs that is *true of the software* rather than of one i
5. **Keep the checkout current by polling, and keep it clean.**
```bash
git -C "$CHEMENU_ROOT" fetch --quiet origin && \
git -C "$CHEMENU_ROOT" reset --hard --quiet origin/main
git -C <checkout> fetch --quiet origin
git -C <checkout> reset --hard --quiet origin/main
```
Every few minutes, from a timer beside the server. Polling rather than a webhook on purpose:
The second only after the first succeeded, every few minutes, from a timer beside the server. Polling rather than a webhook on purpose:
it needs no inbound endpoint and no signature checking, which is a smaller surface than the
thing it would optimize. A webhook is a later optimization, not a starting point.