Update README.md
Some checks failed
Flatpak / check (push) Has been skipped
Flatpak / publish (push) Failing after 40s

This commit is contained in:
jorijnvdgraaf 2026-11-02 10:51:39 +00:00
commit 90e1725313

View file

@ -23,8 +23,6 @@ flatpak install catcrafts net.catcrafts.CrafterReview
alias crafter-review='flatpak run net.catcrafts.CrafterReview' alias crafter-review='flatpak run net.catcrafts.CrafterReview'
``` ```
Every push to `master` is a release, published as `stable`. The alias is for people: the `/prepush` skill spells every command as `flatpak run net.catcrafts.CrafterReview …`, because Claude's Bash tool sees no aliases.
What the machine provides: What the machine provides:
- **The Claude Code CLI.** It is proprietary and not bundled. crafter-review looks for it in this order: `CLAUDE_BIN` or `REVIEW_GATES_CLAUDE_BIN`, the PATH, the editor extensions' bundled binary (newest first), then `~/.claude/local` and `~/.local/bin`. It runs inside the sandbox, so every pass is measured and every pass's process tree can be killed. - **The Claude Code CLI.** It is proprietary and not bundled. crafter-review looks for it in this order: `CLAUDE_BIN` or `REVIEW_GATES_CLAUDE_BIN`, the PATH, the editor extensions' bundled binary (newest first), then `~/.claude/local` and `~/.local/bin`. It runs inside the sandbox, so every pass is measured and every pass's process tree can be killed.
@ -61,15 +59,6 @@ It writes nothing in a subdirectory, in your home directory or over a `SKILL.md`
`crafter-review doc config` prints the template; `crafter-review doc prepush` prints the procedure, `process/prepush.md`. `crafter-review doc config` prints the template; `crafter-review doc prepush` prints the procedure, `process/prepush.md`.
### Moving a repository off the review-gates submodule
1. Re-freeze every review in flight with crafter-review. The Flatpak's git may be another version than the one that froze it, and a different git version gives a different hash. The old `run-line.txt` also points into the submodule.
2. `git submodule deinit -f review-gates && git rm review-gates`
3. `crafter-review init`. If `.claude/skills/prepush` is the old link into `review-gates/`, it removes the link, never writing through it, and makes a real directory with the skill.
4. If a copy of the skill that an earlier `init` wrote is tracked, `git rm --cached .claude/skills/prepush/SKILL.md` (init says so when it sees one): the skill is generated, and the `.gitignore` init writes beside it keeps it out of git from then on.
An existing `config.json` needs one change since 2026-11-01: `lenses.<name>.run` is retired, so list the lenses in `modes.commits.lenses` (`config` names what is missing, and `freeze`, `run` and `slots` refuse until it is there). The reuse keys keep working: a range reviewed before the move is reused, not bought again.
## Running a review ## Running a review
```bash ```bash
@ -107,32 +96,12 @@ To stop a run, run `crafter-review stop <its scratch dir>`, or `crafter-review s
| `init`, `doc`, `browser install`, `stop` | the setup, the shipped texts, the Chromium, a stop | | `init`, `doc`, `browser install`, `stop` | the setup, the shipped texts, the Chromium, a stop |
| `sql`, `totp`, `inventory` | the helpers a lens runs, and the partition of an export, a series or a reply | | `sql`, `totp`, `inventory` | the helpers a lens runs, and the partition of an export, a series or a reply |
## Inside the Flatpak
The sandbox gets the network, the whole host filesystem (`--filesystem=host`), the host's `/tmp` and gnupg's keyboxd socket. `--filesystem=host` is a convenience for a developer tool, **not an isolation boundary**: a lens's tool allowlist is what keeps a pass to its job, as it was outside the Flatpak.
The driver hands its children the host's XDG directories. git then reads `~/.config/git/config`, Playwright finds `~/.cache/ms-playwright`, and claude and npx behave as on the host. A pass's shell is bash. A few things do differ from a native run:
- a lens reading `/usr` sees the Sdk's; the host's is at `/run/host/usr`, which the commit-range lenses' common text (`_common-repo.md`) tells them;
- git hooks run with the Sdk's tools;
- `FLATPAK_ID` reaches every child;
- a runtime update can change git between `freeze` and `--verify`, which the MISMATCH message then names.
**Several drivers on one machine.** Every driver registers its passes on one board, `~/.cache/review-gates/seat-board.json`, and holds a lifetime lock beside it while it runs. A driver in the Flatpak publishes the host pid of its sandbox, so a driver outside it sees it alive exactly as long as it runs and sweeps it the moment it is gone.
## Building from source
```bash
crafter-build --local test # the suite; --local takes ../Crafter.Network instead of the pinned commit
crafter-build --local lint
crafter-build run flatpak # the Flatpak on the stable Crafter.Build base (flatpak-builder or org.flatpak.Builder)
crafter-build run install # install that build as net.catcrafts.CrafterReview//local
```
`run flatpak --base=<branch>` builds on another branch of the base app, and `--deps=local` takes Crafter.Network and Crafter.Thread from the checkouts next to this one, for commits not yet on forgejo. `AGENTS.md` is the guide for changing the pipeline.
## License ## License
crafter-review is licensed under the GNU Affero General Public License v3.0 only (`LICENSE`). It vendors [nlohmann/json](https://github.com/nlohmann/json) 3.12.0 (`lib/json.hpp`, MIT License, © 2013-2025 Niels Lohmann). crafter-review is licensed under the GNU Affero General Public License v3.0 only (`LICENSE`).
Vendored files in the lib directory maintain their own license.
## Copyright ## Copyright