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

+26 -20
View File
@@ -21,16 +21,22 @@ language* the prose is in, and what the tool-owned headings are called, is this
[instructions/german-terminology.md](instructions/german-terminology.md).
This is a per-instance decision, not a property of the pattern - which is why it lives in a file
the instance owns rather than in one the stack ships. A new instance built with
`dist export` starts empty and picks any language by filling in `kb/CONVENTIONS.md` before
the first ingest.
the instance owns rather than in one the stack ships. A new instance installed from a release
starts empty and picks any language by filling in `kb/CONVENTIONS.md` before the first ingest.
## Getting started
Two starting points, depending on what you're doing - full walkthrough in [INSTALL.md](INSTALL.md):
Two starting points, depending on what you're doing:
- **Cloned this repo?** The skill definitions the agent harness loads are **generated and not
committed**. Publish them once:
- **A new instance.** Every instance is installed from a release, into an empty folder you
choose: you give your agent one sentence, and it follows `instructions/setup-instance.md` from
the latest release - preflight, git init, author identity, an optional remote, your authoring
conventions and persona, the first commit. The sentence, what the agent will ask you, and what
to do when it stops are in [INSTALL.md](INSTALL.md).
- **A further checkout of an instance you already have** (a second machine). Clone the
instance's own repository, then run the preflight and publish the skills, which are
**generated and not committed**:
```bash
tools/preflight.sh # checks python/git/rg, records their paths, creates tools/.venv
@@ -39,18 +45,17 @@ Two starting points, depending on what you're doing - full walkthrough in [INSTA
```
`tools/wikitool` refuses to start (exit 42) until the preflight has passed; if it stops
instead, its output says what to install - `instructions/preflight.md`. A release carries the
same two scripts as assets that download and unpack the stack themselves, for installing
without a clone.
instead, its output says what to install - `instructions/preflight.md`. `instructions sync`
copies each `instructions/<name>/SKILL.md` into `.agents/skills/` (GitHub Copilot, Codex CLI,
Mistral Vibe) and `.claude/skills/` (Claude Code). Full procedure:
`instructions/bootstrap.md`.
That copies each `instructions/<name>/SKILL.md` into `.agents/skills/` (GitHub Copilot, Codex
CLI, Mistral Vibe) and `.claude/skills/` (Claude Code). Re-run it after changing a skill.
Full procedure: `instructions/bootstrap.md`.
- **Starting a brand-new, empty instance instead?** `tools/wikitool dist export <target>`
builds a contentless copy of the machinery - no example pages, no personal content - then
`instructions/setup-instance.md` walks through git init, author identity, an optional remote,
and the first commit.
<!-- dist:strip-start -->
- **Working on the stack itself.** A clone of this repository is a development checkout, with
the demo corpus described below; it is never an instance. Setting it up, and `dist export` as
the build and test tool it is, are in `DEVELOPMENT.md` (for you) and
`instructions/dev/dev-setup.md` (for the agent).
<!-- dist:strip-end -->
## Architecture
@@ -59,7 +64,7 @@ chemenu/
├── AGENTS.md # Control plane: invariants, file naming, routing, gates
├── CLAUDE.md # Claude Code only: imports AGENTS.md, links the one Claude-Code-only decision (model/effort). No rules of its own
├── README.md # This file: human-readable overview of the whole repo
├── INSTALL.md # Human-readable setup: new instance vs. cloning this one
├── INSTALL.md # Human-readable install: one release, one sentence to the agent
├── INSTALL-MCP.md # Human-readable setup for the optional MCP read server
├── EVALS.md # Human-readable overview of telemetry and evaluation
├── CHANGES.md # Changelog for the stack itself
@@ -73,7 +78,7 @@ chemenu/
├── .vibe/ # Mistral Vibe hooks + the repo's telemetry policy
├── instructions/ # CONTROL: everything an agent is told to do
│ ├── CONTRACT.md # Instruction vs. skill, publishing, writing standard
│ ├── bootstrap.md # Prepare a fresh clone
│ ├── bootstrap.md # Prepare a further checkout of an instance
│ ├── gates.md # What to do when a gate refuses a call
│ ├── german-terminology.md # Which words stay English in German prose; register
│ ├── session-setup.md
@@ -398,7 +403,8 @@ gitignored and no exporter is configured.
**A distributed instance records nothing unless it asks to.** The default follows the
installation form - on for a git clone of this repo, where the traces are the stack's own
measuring instrument, off for a `dist export` tarball, where nobody ordered telemetry. Two
measuring instrument, off for an instance installed from a release, where nobody ordered
telemetry. Two
quantity caps apply either way: 5 MiB per session trace, and 250 session directories.
`wikitool doctor` reports which state a checkout is in and why; EVALS.md § "Whether it runs at
all" has the precedence rules and the opt-in file.