Skip to content

Add provider choice and acknowledgement to the config interview - #257

Merged
crenshawdev merged 27 commits into
mainfrom
little-lost-robot
Oct 11, 2026
Merged

crenshawdev merged 27 commits into
mainfrom
little-lost-robot

Conversation

@crenshawdev

Copy link
Copy Markdown
Owner

Build 3 T16. baley config interview now asks which outside review providers to use (openai, deepseek, both, or none) after its thirteen settings questions, and a blank answer keeps the stored choice. For each provider named it shows the provider warning from design 0003 section 5 and needs a typed yes; any other answer, a blank or ended input declines the whole interview and writes nothing. It reads the owner's name from git user.name and refuses owner-identity-missing before the summary when git has none. The summary names every file the confirmed writes can change or create, at resolved paths. After the final yes the writes run in order: providers.acknowledged in the per-user ledger (a new event type on stream providers in user, no view, so the view set stays at 8), the providers' API hosts added to sandbox.network.allowedDomains in Claude Code's settings through install's digest-checked replace, the global review.reviewers list, then the settings through the apply function config set uses. A step with nothing to change is skipped, so a current acknowledgement is reused rather than recorded again. A failure stops at its step and reports its code, the writes already done and the ones not started.

review.reviewers joins the settings schema, default ["host"], scope both, and config set refuses it as list-not-settable and points to the interview. Install keeps every host already in allowedDomains and records no acknowledgement. Nothing checks the acknowledgement before a review or fetch yet, that is Build 4 (#25), and the README and design 0003 say so.

Verified: the workspace suite (3615 of 3615), clippy with -D warnings, cargo fmt --check and cargo deny pass. Each of the twelve acceptance criteria has a check that ran red before its behaviour and green after, and all 38 listed developer tests pass when run by name. A rerun with the same answers against the same settings file was run with the built binary in a throwaway home folder and left every file byte for byte unchanged. Designs 0001, 0002, 0003, 0008 and 0012, the C4 model, the README and the roadmap's T16 row are updated.

Known limits: a rerun with neither --global nor --project inside a project writes the settings answers to baley.toml once config.toml holds a role value, as the interview's default target rule says; the docs now name that case. A rerun does not redo a ledger policy step that failed after the reviewer list was written (#255). Installed qualification against a live Claude Code is T17's.

The reviewer list is the first setting that names outside providers, so
it enters the schema with its grammar, its show text and its place in
policy.effective before the interview writes it.
…acknowledged

The warning is one constant with a version and a digest, so a changed
wording moves the digest and asks every owner again. The event stays
off the views, so the view set holds at 8 and older binaries keep
writing user.
An acknowledgement without an owner is not recorded, so every failed
read of user.name refuses owner-identity-missing and says what git did.
The read goes through the registered git seam under its own caller.
…rs it

A rerun with the same providers records nothing, a reworded warning asks
again by its version and its digest, and the append is bound to the stream
version the read saw so two runs cannot both record.
…warning

The provider question follows the thirteen settings questions and shows the
stored choice. Each provider chosen gets the full warning and needs yes
before the summary, and a missing git user.name stops the interview there.
After the final yes the interview opens the per-user ledger, records the
acknowledgement unless a current one covers it, and only then writes the
settings. A ledger failure stops there with exit 3 and writes nothing else.
…e interview

The list can sit in the global file as well as the project file, so its
refusal names the interview and config.toml instead of baley.toml alone.
…records no acknowledgement

Install renders no sandbox.network and its record keeps defaults empty, so
the check holds today and stands guard for the later builds that add a
network input.
…stall writes no acknowledgement

A yes to the first warning must not cover the second, and an install record must leave the providers stream empty. Both were green under a wrong implementation.
Each provider's API host is compiled on the catalog, and the decision
only ever adds hosts, so the owner's other settings and hosts stay as
they were.
…place

A settings file changed since it was read is refused, so a concurrent
install is caught without taking its lock or touching its record.
…ner's choice

The host reviewer stays as the file has it and only the outside
providers are replaced, so a deselection never turns the host reviewer
on or off.
The global file is judged, bound to the digest the owner was shown,
refused through a link and rendered from its own bytes, so no other
setting is lost, and the digest of what was written goes back for the
settings step to bind to.
A rerun with the same answers plans no acknowledgement, no host and no
list, and a settings file that cannot take the hosts refuses before
anything is shown or written.
…summary

The ledger's five files, each settings file and its temporary file, and
the folders that may be created are named at their resolved paths, and
only for the steps that will run.
… done

The failing step's own lines lead with its code, then the writes already
completed and the steps never started, so a rerun can finish only what
is missing.
The interview now plans before it asks, so a settings file that cannot
take the hosts refuses while nothing is written, and each step runs only
when it has something to change. The settings step binds to the digest
the reviewer step returns, so the list survives it.
…ordered writes as built

Section 5 now says what the code does after the thirteen questions, the
four writes after the final yes, the failure report and the new refusal.
Section 6 gives the acknowledgement's fields and how it is recorded.
…tations to the code

review.reviewers, the acknowledgement and the host and reviewer writes are
built, so CFG-R26 and CFG-R28 say so and name Build 4's checks as unbuilt.
Every file:line citation into code this phase moved points at the lines
that hold what it cites.
…d acknowledgement are built

The warning sentence now matches design 0003 word for word. REV-R3 and
REV-R20 name what is built with its code and leave admission and the
raw-response boundary to Build 4.
…as built

The setup paragraph and Figure 7 show the warning, the typed yes and the
four ordered writes. The host step takes no install lock and records no
install.recorded, so the record's settings digest predates the file and
T17's doctor must not read that as drift.
… holds the acknowledgement

The view set stays at 8, but the store refuses a transaction on a project
holding an event type the binary cannot read, so the old claim that an
older binary keeps writing user was wrong.
…ice and acknowledgement are built

The README's warning is now design 0003's paragraph word for word, and its interview paragraph lists the four writes in order. Design 0001's providers row, interview row and policy-step paragraph match design 0003 section 5.
…he C4 model

Two relations changed: the command line now adds API hosts to Claude Code's settings file and writes the global settings file whole for the reviewer list. The exported blocks and their captions follow the model.
The status sentence, Figure 4 and the Build 3 table follow #253, and a T16 bullet says what the interview provides and what it hands to Build 4 and T17.
…overy

The binary still reads keys and nothing checks the acknowledgement before a review or fetch yet. A rerun does not redo the ledger policy step after a written reviewer list (#255).
…ame file

With no file flag, the interview's default target moves to the project
file once the global file holds a role value, so a rerun inside a
project writes its settings answers to baley.toml. Design 0003, design
0012 and the README claimed every rerun changes no file.
@crenshawdev
crenshawdev merged commit e9df985 into main Oct 11, 2026
5 checks passed
@crenshawdev
crenshawdev deleted the little-lost-robot branch October 11, 2026 01:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant