Repository navigation
Count the panel or people in the Verdict, with seeded samples for several readers - #1953
Merged
Merged
Conversation
…eral readers (#1886) The Bar now sets the Grader panel and the people each off, beside or counted, as ADR 0028 describes. Named readers get queues drawn by pair from the Bar's seed with a set overlap, and a shared pair is ready only if every reader calls it ready. Counted calls make a Trial pass only when its code Grader passes and its pair is called ready; a people-only sample decides on the sampled pairs alone; with both counted the panel stands in on unread pairs, guarded by a voting-family check at start and a people–panel agreement level. The Verdict waits on people while a reader has pairs to call, and people–people agreement is reported.
Release Trial repositories when a people's call settles the Verdict, through one shared publish step for rechecks, leak decisions and counted people's calls. Name the Verdict's sample agreement and the Bar's PeopleSetting apart from the reported people, and count pairs, not Eval tasks, in a Verdict on the people's sample alone.
This was referenced Nov 10, 2026
# Conflicts: # docs/experiment-results.md # docs/guide.md # site/architecture/index.html # site/docs/index.html # site/how-it-works/index.html # site/index.html # src/console/start/experiment.rs # src/evals/experiment/options.rs # src/evals/experiment/panel.rs # src/evals/experiment/panel/tests.rs # tests/experiments/panel.rs
This was referenced Nov 10, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1886
Summary
The Bar now records who decides a Verdict, as ADR 0028 describes. The Grader panel and the people are each
off,besideorcounted. The people's setting also names the readers and fixes a seeded sample per reader with an overlap.The merge call that counts for each judged process pair (
deciders::decide):How each pair's call feeds the Verdict (
grading::assess):The rule for a panel standing in for people: with both counted, a voting panel that spans fewer families than
--panel-familiesis refused before the Experiment is created.Where the change shows:
people.queues.decidersreport, which the Console and the CLI show as a line.File layout:
Evidence
Execution evidence
cargo test --test experiments a_counted_peoples_call_that_settles_the_verdict_releases_trial_repositorieswas run on a212c9f, before the review fix (Standards finding 1).--people,--panel countedand their flags do not exist on the base, so these tests have no Before run.cargo test --bin thirdshift deciders::tests: 9 passed. They cover:inconclusive (people–panel agreement on the sample is 4/8 merge calls, below the Bar's 0.8, …);cargo test --test experiments -- panel::counted panel::a_stand_in: 2 passed. These cover the family refusal at start, and a counted people's CLI call deciding a real Experiment.cargo test --test console -- pairwise::each_readers_queue pairwise::with_people_off experiments::a_verdict_on_the_peoples_sample.scripts/affected-tests origin/issue-1872on 418933b:inbox.test.cjs"Landing, Ready and Stopping rows…". It is a theme-colour check unrelated to this diff. The file then passed alone (ℹ pass 80 ℹ fail 0), and the full rerun above passed.Visual evidence
Both captures are of the Console Experiment page, People's calls section, at 1440×900. The fixture is a paused process Experiment with three pairs. The base build reads the same fixture without the fields it can't hold: the panel's role, families and agreement, and
bar.people.After: people are counted, with readers ann and bo, a sample of 2 and an overlap of 1. Each reader's queue shares exactly one pair.
Merge Danger
Door: two-way
Format 10 of the Experiment results is unreleased on this Spec branch, so this extends it in place. It adds
bar.people,bar.panel.role/families/agreement,verdict.deciders,people.queues,people.people_agreementand thewaiting_on_peopleVerdict.Blast Radius: Experiments
Without the new flags, a Bar keeps today's behaviour: no panel, and people beside with no named readers. Experiments saved without the fields read as before. The Inbox and Peek now treat
waiting_on_peopleas needing you. The release scripts don't list it, because a release Bar never counts people.Review
Both axes reviewed a212c9f against
refs/remotes/origin/issue-1872. Standards raised 10 findings and Spec raised 8.Every changed file in that commit was read by both reviewers, except one generated file.
site/docs/index.htmlwas not read; it is generated fromdocs/guide.md, which was reviewed, andnpm run docs:check --prefix sitepassed.The review-fix commit 418933b changed four files the review never saw:
src/evals/experiment/leaks.rssrc/evals/experiment/rechecks.rstests/console/experiments.rstests/experiments/panel.rs(the added test)Addressed:
Stored::publish_decided.sample_agreement.PeopleSetting.BTreeSetimport.Unaddressed findings
Standards
deciderscounts are filled ingrading::evaluate.evaluateis the only place that knows whether a task is Void-dropped (dropped_as_void, grading.rs). Waiting or unread pairs in Void-dropped tasks must not hold or count toward the Verdict, so the counts have to be made there.(baseline, candidate)bools are not moved topanel::Merges.Mergesholds three-valuedMerge, includingTie, but a decided call is two-valued, since a tie is already resolved to not ready. ReusingMergeswould bring back a state that cannot occur.WaitingOnPeoplefollows the existing pattern forWaitingOnLeaks, which has the same string lists inpeek.rsandinbox.rs. Gathering them is a refactor outside this Ticket. The release scripts can't seewaiting_on_people, becausescripts/release.shpasses no people flags.refresh_completed. It runs only after readingstate == Completed. A run of a completed Experiment takes the lock only to print and return (experiment.rs: "Experiment … is already completed"), and rechecks and leak decisions hold it briefly. Withtry_lock, a call landing during a recheck would leave the Verdict stale atwaiting_on_people.Spec
verdict::validateneeds the Bar's Trials in both Arms) can't take a partial task, so this PR keeps the method and makes the pair the unit. Whether that is acceptable, or whether the sample should be drawn by task instead, is a Spec decision for the Day shift → Decide the statistical unit for a Verdict on the people's sample alone #1954waiting_on_peoplestate and recalculation. People's calls arrive after the run ends. Without a waiting state, a counted Verdict would be computed before the calls it rests on. This follows the existingwaiting_on_leaksandwaiting_on_rechecks(store.rsrefresh_verdict).--panel-agreement. The Bar must hold some level, and Spec: blind pairwise grading of process Trials by a Grader panel and people #1872 names none, so I chose 0.8. It can be overridden per Experiment, but the default is the Day shift's call → Decide the default people–panel agreement level for a panel standing in for people #1955new_tests.new_testshave no pair page (pairs::runskips them). A reader given such a pair could never call it, and the Verdict would wait forever. Refusing at start is the explicit alternative.panel::preparecomes after the Arms are built. The check at start (panel::check_stand_ininexperiment::run, beforeStored::open) covers both Arms' Harness and Model. Only Process Steps on another family are known later, and that re-check still refuses before the first Trial, which is what ADR 0028 requires.people: in the Console, the text view and JSON. The Verdict line shows the sample agreement where it decides the Verdict.Built with claude 2.1.314 · opus · default effort
Security review outcome
No unaddressed introduced findings.