Crafter.Review/implementations
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jorijn van der Graaf e215ad986e
feat(seats): the env file's settings count, and a machine's own seats file
ApiConfig and PoolConfig read the seat order, the budgets and the
concurrency from the process environment alone, so a `.env` that said
REVIEW_GATES_SEAT_ORDER=oauth-first ordered nothing: the Python driver
reads those lines from the file under the process environment
(config_env, 2026-10-17: a setting lives beside the seats it orders).
SeatPool::SettingsOf does the same - the file's placement settings
under the process environment, in a map handed to the placement readers
alone (ApiConfig, PoolConfig, Seats::ConfigFromEnv) - and leaves the
process environment untouched, so no other reader sees a line of the
file: a path's or a binary's line reaches nothing, and two drivers
reading one .env keep one board and one ledger. The placement settings
are one list, SeatPool::PlacementSettings - the fifteen names those
readers read - for the map, the run's log and what makes a working
directory's .env a seats file; a REVIEW_GATES_* line of any other name
stays out of the map and is named, by the run's log and on `seats`'s
stderr. One dotenv grammar serves the tokens and the settings
(Seats::DotenvLines).

`run` and `seats` resolve the file from their own --env-file
(SeatPool::ResolveSeatsFile): the --env-file, else $SEATS_ENV_FILE, else
the working directory's .env - the operator's, as the Python driver and
`seats` read it, not the repository under review's - when it is a file
holding a seat or a placement setting, each with a value, or one that
cannot be read as UTF-8 text (its error is then the command's) - a
readable application .env, its Vite or Supabase lines, one of blank
placeholder lines or one that is no file is passed over, and the run
says so - else the machine's own
$XDG_CONFIG_HOME/crafter-review/env, else ~/.config/crafter-review/env:
one file for every repository on a machine, a repository's seats .env
winning over it. Each file is read once and the settings and the tokens
are taken from that read (SeatsFile::Text), so a file that can be read
only once - a pipe, `--env-file <(gpg -d seats.env.gpg)`, a FIFO - gives
its settings and its seats alike, and a failed read raises its own error
where the tokens are laid over the environment: SeatPool::WithFileTokens,
for `run` and `seats` alike, and LoadSeats takes the merged environment
and no longer reads a file by path. An empty `seats --env-file` means no file
now, as it did for `run`, and the `seats` report names the side that
runs first (it said "api seats run first" whatever the order).

Runs, Commands and KernelModes, the tests that run `run` and `seats`,
point XDG_CONFIG_HOME, and HOST_XDG_CONFIG_HOME for the Flatpak, at a
path of their own that nothing creates, so a global file stays out of
them; the grammar, the settings and their precedence, the lookup and the
one read have their tests, a run with `--env` (a prefix) and with a
repeated --env-file, and a `seats` with `--env`, take tokens and
settings from the one file, an application's .env and a venv are passed
over, a FIFO is read once, no line of the file reaches `stop`, every
listed placement setting moves a reader, another REVIEW_GATES_* line is
named and a .env of blank lines passed over, and the
README, the environment table and the procedure say the new rule.
2026-11-02 00:30:52 +01:00
..
Crafter.Review-Artifact.cpp feat(pipeline): the pure pipeline, checked against its goldens 2026-10-31 06:48:55 +01:00
Crafter.Review-Config.cpp feat(config): modes - a mode is an artifact kind, the lenses it runs and its effort 2026-11-02 00:29:00 +01:00
Crafter.Review-Core.cpp feat(pipeline): the pure pipeline, checked against its goldens 2026-10-31 06:48:55 +01:00
Crafter.Review-Crypto.cpp feat: the crafter-review skeleton, and its semantics for text, JSON and crypto 2026-10-31 05:29:18 +01:00
Crafter.Review-Dispositions.cpp feat(modes): the kernel modes - a patch series and a mailing-list reply 2026-10-31 22:56:12 +01:00
Crafter.Review-Driver.cpp feat(seats): the env file's settings count, and a machine's own seats file 2026-11-02 00:30:52 +01:00
Crafter.Review-Freeze.cpp feat(run): the repository under review is the freeze record's, not the working directory's 2026-10-31 21:31:48 +01:00
Crafter.Review-Http.cpp feat(http): the HTTP layer on ClientHTTP1::Fetch and the typed socket error 2026-10-31 20:46:13 +01:00
Crafter.Review-Inventory.cpp feat(modes): the kernel modes - a patch series and a mailing-list reply 2026-10-31 22:56:12 +01:00
Crafter.Review-Mcp.cpp feat(opencode): the OpenCode harness, checked against its goldens 2026-10-31 08:32:51 +01:00
Crafter.Review-Memory.cpp fix: three errors that ended with the wrong exit code 2026-10-31 16:35:26 +01:00
Crafter.Review-Normalize.cpp feat(modes): the kernel modes - a patch series and a mailing-list reply 2026-10-31 22:56:12 +01:00
Crafter.Review-OpenCode.cpp feat(opencode): the OpenCode harness, checked against its goldens 2026-10-31 08:32:51 +01:00
Crafter.Review-PgWire.cpp feat(http): the HTTP layer on ClientHTTP1::Fetch and the typed socket error 2026-10-31 20:46:13 +01:00
Crafter.Review-Plan.cpp feat(config): modes - a mode is an artifact kind, the lenses it runs and its effort 2026-11-02 00:29:00 +01:00
Crafter.Review-Platform.cpp fix(platform): in the Flatpak a pass's shell is bash 2026-10-31 16:09:40 +01:00
Crafter.Review-Pool.cpp feat(modes): the kernel modes - a patch series and a mailing-list reply 2026-10-31 22:56:12 +01:00
Crafter.Review-Process.cpp feat(pool): the pool - stacks, admission, the runner and the scheduler 2026-10-31 08:55:00 +01:00
Crafter.Review-Prompt.cpp feat(config): lens sections - a repository's own text appended to a shipped charter 2026-11-01 23:56:26 +01:00
Crafter.Review-Refs.cpp feat(modes): the kernel modes - a patch series and a mailing-list reply 2026-10-31 22:56:12 +01:00
Crafter.Review-Run.cpp feat(seats): the env file's settings count, and a machine's own seats file 2026-11-02 00:30:52 +01:00
Crafter.Review-Schema.cpp feat(modes): the kernel modes - a patch series and a mailing-list reply 2026-10-31 22:56:12 +01:00
Crafter.Review-SeatPool.cpp feat(seats): the env file's settings count, and a machine's own seats file 2026-11-02 00:30:52 +01:00
Crafter.Review-Seats.cpp feat(seats): the env file's settings count, and a machine's own seats file 2026-11-02 00:30:52 +01:00
Crafter.Review-State.cpp feat(config): modes - a mode is an artifact kind, the lenses it runs and its effort 2026-11-02 00:29:00 +01:00
Crafter.Review-Stream.cpp feat(pipeline): the pure pipeline, checked against its goldens 2026-10-31 06:48:55 +01:00
Crafter.Review-Text.cpp feat(pipeline): the pure pipeline, checked against its goldens 2026-10-31 06:48:55 +01:00
Crafter.Review-Tools.cpp feat(pipeline): the pure pipeline, checked against its goldens 2026-10-31 06:48:55 +01:00
Crafter.Review-Totp.cpp feat(sql): the database helper and the TOTP helper, as subcommands 2026-10-31 07:20:00 +01:00
main.cpp feat: the crafter-review skeleton, and its semantics for text, JSON and crypto 2026-10-31 05:29:18 +01:00