feat(config): every lens off until the repository turns it on
Jorijn: "all lenses off by default and opt in only". Config::Defaults() gives every lens run: false; a config that turns on none - a missing `lenses` key included - has the one problem that names the lenses, so config, freeze and run all stop on it; the template ships every lens off, init says to turn lenses on, and the "no lens runs" preflight names the cause. A consumer config without a `lenses` key now needs one, as the CI smoke test's does. Proven with the lens commit before it: the suite (26 passed), and the dry-run comparison recorded there.
This commit is contained in:
parent
febbfc3fcc
commit
101471d81a
15 changed files with 513 additions and 269 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# Crafter Review
|
||||
|
||||
The pre-push review pipeline: adversarial lenses review a frozen commit range, one `claude --print` process per inventory unit, before the range is pushed. Five lenses in a fixed order: the approach, the range exercised in the running application through the Playwright MCP server, side by side the static bug proof and the security review, and last the commit truth of the messages and the documentation. The repository's config says which of them run and what each gets: the browser, the local Supabase database, both, or neither.
|
||||
The pre-push review pipeline: adversarial lenses review a frozen commit range, one `claude --print` process per inventory unit, before the range is pushed. Five lenses in a fixed order: the approach, the range exercised in the running application through the Playwright MCP server, side by side the static bug proof and the security review, and last the commit truth of the messages and the documentation. Every lens is off until the repository's config turns it on, and the config says what each gets: the browser, the local Supabase database, both, or neither.
|
||||
|
||||
| Gate | Lens | Question |
|
||||
|---|---|---|
|
||||
|
|
@ -43,7 +43,7 @@ crafter-review config # edit .review-gates/config.json until it prints no
|
|||
```
|
||||
|
||||
`init` does four things:
|
||||
- it writes `.review-gates/config.json` from the template when there is none;
|
||||
- it writes `.review-gates/config.json` from the template when there is none - every lens off: turn on the ones this repository runs;
|
||||
- it adds `.review-gates/push/` and `.review-gates/trees/` to `.gitignore`;
|
||||
- it writes the `/prepush` skill to `.claude/skills/prepush/SKILL.md`, which a later `init` refreshes (the line after its frontmatter marks it as init's);
|
||||
- it prints the next steps.
|
||||
|
|
@ -52,7 +52,7 @@ It writes nothing in a subdirectory, in your home directory (`--force` when that
|
|||
|
||||
`.review-gates/config.json` is committed. It says what the pipeline must know about the repository:
|
||||
- who may author its commits, and which branch a range is measured against;
|
||||
- which lenses run and the environment each gets (`none`, `browser`, `supabase` or `browser+supabase`);
|
||||
- which lenses run (every lens is off until `lenses.<name>.run` is true) and the environment each gets (`none`, `browser`, `supabase` or `browser+supabase`);
|
||||
- how its application is started and reached: one stack, or several side by side (`slots`);
|
||||
- where its local database answers;
|
||||
- which paths carry no runtime behaviour.
|
||||
|
|
|
|||
Loading…
Reference in a new issue