Repository navigation
Design: the review drive's results can be rerun by anyone, because uphold ships a reference reviewer and names the one it scored #463
Description
Why
uphold_check.py --review --drive -- REVIEWER... scores a reviewer against the review controls, but uphold ships no reviewer. REFERENCE.md says so on purpose: "No model client lives here; the reviewer command carries the model, the key and the budget." That keeps the core free of a model client. It also means every person who wants to run the drive writes their own reviewer, and every result depends on a command nobody else has:
- Single authoritative source asks text shown to readers to name the source of another party's facts #462's evidence (10/10 caught, 0/10 fired, 3/10 before the change) came from a local
claude -pwrapper that exists only in one session's scratch directory. A reader of the pull request cannot rerun it. - The same wrapper had already been written once before, for uphold_check.py --review --drive scores a reviewer command against the controls, and two more records carry one #422/Every review-carried record carries a control, and a test keeps it that way #423, with flags learned by trial:
--barefails with "Not logged in", and the settings and MCP configuration have to be cleared so the reviewer sees only the document. - The drive's output names the score but not the reviewer: which command, which model, which flags. Two results from two different wrappers look identical.
So the drive is general, but the thing it measures is private to whoever ran it.
Position
uphold ships one reference reviewer as a separate, optional command, not inside the core. uphold_check.py stays free of a model client, as REFERENCE.md rules. The reference reviewer lives beside it (for example scripts/reviewers/), speaks the documented stdin/stdout contract, and carries the model, the key and the budget the way any reviewer does. It is one example of the contract, not the only reviewer: a person at a prompt, or another model behind another wrapper, still answers the same way.
The drive names the reviewer it scored. Each result line, or a header above them, carries the reviewer command as run, so a pasted result says what produced it.
Done when
- A reference reviewer that passes the contract's own tests (one id or title per line, nothing on no violation, non-zero exit on its own failure). Check: a test that runs it against a fixture model or a stub.
-
--driveoutput names the reviewer command. Check: a test on the rendered output. - REFERENCE.md's
--drivesection points at the reference reviewer and keeps the "any reviewer answers the same way" contract.
Questions
-
Where does the reference reviewer live?
- (a) Inside
uphold_check.py, as a built-in reviewer the drive calls when no command is given. - (b) A separate optional command beside
uphold_check.pythat speaks the documented stdin/stdout reviewer contract, carrying its own model, key and budget.
Answered: (b). economy-of-mechanism L11 "Features, flags, or configuration keys are proposed for a component that other components trust."; economy-of-mechanism L12 "moving work out of it into untrusted callers is the intended outcome"; economy-of-mechanism L18 "Does a new option belong inside the protected mechanism, or can it live in untrusted code that calls it?"; mechanism-policy-separation L11 "The same capability serves multiple policies or environments.". Precedent: none. Ruled from the records
policy/principles.tomladopts under[decide]and its orders, at v1.40.0; three rulers given the options in different orders agreed. - (a) Inside
-
Which model client does the reference reviewer use?
- (a)
claude -p, Claude Code's non-interactive mode. - (b) A direct call to the model provider's HTTP API with a key.
- (c) No model client: uphold ships the reviewer prompt and a replayable run record; a live run goes through any command on the stdin/stdout contract. See the comment below.
Answered: escalated -- no record this repository adopts covers choosing a client. current-stack and reuse-maintained-components would, but
policy/principles.tomldoes not adopt them under[decide]. Three rulers agreed on escalating.Owner's ruling (2026-11-01): (c).
- (a)
-
Does the drive's output name the reviewer it scored?
- (a) Yes: the output names the reviewer command as run.
- (b) No: the output stays as it is, and whoever pastes a result says which reviewer produced it.
Answered: (a). single-authoritative-source L11 "The same fact is represented in multiple services, stores, reports, or workflows."; single-authoritative-source L18 "Can every copy explain its source and refresh policy?"; explicit-unknown L11 "Results are aggregated into a status that someone will treat as coverage.". A pasted result is a copy of a drive run, and the reviewer is its source. Precedent: none. At v1.40.0; three rulers given the options in different orders agreed.
Unknowns
- Whether the reference reviewer's prompt counts as part of what is measured. A pass^k from one prompt is a statement about that prompt as much as about the document.
Activity
HackingGate commentedon Oct 31, 2026
Question 2: a third option
claude -p, Claude Code's non-interactive mode.What (c) means:
scripts/reviewers/prompt.md) whose hash is named in every result. That answers the Unknown above. The prompt is part of what is measured, so it is pinned and named, not left inside a wrapper.--drivewrites a run record: the reviewer command as run, the model id the command reports, the prompt hash, and each control's raw answer.--drive --replay RECORDscores a record again without calling a model. A reader of a pull request like Single authoritative source asks text shown to readers to name the source of another party's facts #462 can check its numbers with no key and no wrapper.claude -pand an API example; neither is shipped, so no provider's name reaches a flag, a source file or a check."Rerun by anyone" is two jobs. Scoring a result again needs only its record. Producing it again needs some model, and that stays the caller's choice. (a) and (b) tie both jobs to one vendor and a key.
Evaluation harnesses do the same as far as I know (training knowledge to mid-2026, no web search). Inspect AI and promptfoo take the model from caller configuration, log every sample, and score the logs again offline. Judge-model evaluations count the judge's prompt and model as part of the result.
Records that bear on it (not adopted under this repository's
[decide], so this stays escalated to the owner):vendor-neutral-interfaces,economy-of-mechanism(the trusted core gains a record format and a replay path, not a network client),single-authoritative-source(a pasted score points back to the record that produced it, as Q3 ruled).Cost: about half a day. That covers the prompt file, the record format,
--replay, and a test that scores a checked-in fixture record again.Awaiting the owner's ruling on Q2.
https://claude.ai/code/session_01EycJ7jceyKGYYpSgtty4NQ
A drive's report names the reviewer, ruler and auditor it scored (#476)
A review drive is recorded, and a record is scored again with no model (