Skip to content

PRM-L: land PRM-001 v3 (PROMETHEUS) + rex/001 rows to main (Refs #4354) - #4451

Closed
noahgift wants to merge 56 commits into
mainfrom
prm-l
Closed

noahgift wants to merge 56 commits into
mainfrom
prm-l

Conversation

@noahgift

Copy link
Copy Markdown
Member

PRM-L: land PRM-001 v3 (PROMETHEUS) and the rex/001 work on main

Refs #4354 · ticket PMAT-4354

What lands

  • docs/specifications/PRM-001-prometheus.md: spec v3, byte-exact with the operator handoff (sha256 c9b52d08d7eb…).
  • rex-prereg-v2 lock at docs/audits/prm-001/prereg.lock (prereg_sha f0b4e4ac…). It covers PRM-001 §2–§5, stats.rs, the v2 analysis plan and prompt v1.
  • The v1 lock is SUPERSEDED, never edited. docs/audits/rex-001/prereg.lock (ef51087d…) stays byte-frozen. falsify_rex_prereg_004 proves it still verifies.
  • stats::h7_holds: v3 H7 is δ-free. It holds when κ_err(qwen, each voter) ≤ max voter–voter κ_err, and it is undecided when any κ is undefined.
  • SUPERSEDED banners on review-experiment-protocol.md (above §0; §2–§5 are untouched, so the v1 lock verifies) and on research-design-pr-agent-qwen-3.5.md.
  • PRM rows from rex/001:
    • C2 ledger-v2
    • C6/C7 secret and contamination
    • C8 dedup
    • C11 sparse-logits-v1
    • C12 terms tagging
    • C13 lane-kappa, now gating through h7_holds, plus G-PROV admission
    • C14 datacard
    • PRM-09 ladder v2 (consumers pass rex ladder --current)
    • PRM-S2 workload profile
  • contracts/census.json and the README counts are regenerated: 1858 contracts, 81 workspace crates.

Figure

docs/specifications/figures/prometheus-flow.png is the operator's v3 export (PROMETHEUS-v3-dark-4k.png, sha256 078be9ce93b7…).

The spec text is authoritative. The figure has three known text deltas against v3; the operator will re-export, and none of them blocks this PR:

  1. The κ_err caption reads "≤ baseline + δ". v3 H7 is δ-free: ≤ the max voter–voter κ_err.
  2. The checkpoint label differs from the spec.
  3. The B2a label differs from the spec.

Verification

  • cargo test -p aprender-review-experiment --lib: 155/155 pass. clippy -D warnings is clean, and cargo fmt --check is clean.
  • rex prereg-check returns rex-prereg-v2 OK prereg_sha=f0b4e4ac…. A planted §3 edit gives DRIFT (rc=1).
  • readme_contract: 16/16. check_readme_claims.sh returns rc=0. cargo deny check advisories is ok.
  • Quorum at fb367bf7f is 3/3 and not degraded: sonnet-5 APPROVE, agy gemini-3.1-pro-high PASS (run from a standalone full clone, away from shared-.git ref churn), haiku-4-5 APPROVE. The receipt is on the private fleet store (PMAT-4354 agy-r4).
    • One sonnet lane found census drift of 6 contracts; that is fixed at fb367bf7f and re-verified.

No transcripts, trace blobs or secrets are in this diff: data files carry hashes and metadata only.

🤖 Generated with Claude Code

noahgift and others added 30 commits September 25, 2026 11:01
Freezes spec §2–§5, the analysis code (stats.rs), the analysis plan and
prompt v1 under prereg_sha ef51087dc79b… before any measurement (S-1).
New crate aprender-review-experiment (publish = false); harness CLI is an
example, not a [[bin]]. Planted §3 edit turns prereg-check and
FALSIFY-REX-PREREG-001 RED; restore → GREEN. Receipt:
docs/audits/rex-001/rex-00-receipt.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#4356

Phase 0: no declared label admits apr-serve review jobs on any host; cells
stay NotRun{NoDeclaredExecutor} until infra#1088 lands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ation check — Refs #4357

corpus_version review-corpus-v1@787d2026256cc08b. P 50 (cargo-mutants listing,
markers stripped), R 50 (revert-the-fix, comment-only hunks dropped), G 50
(green, unreverted, pre-cutoff). 45 dev / 105 test; 70 test defect items.
Diffs are outside git (items-v1.tar sha256 70dffe56…). Contracts
review-corpus-v1 (FALSIFY-RCV-001..003) and review-corpus-contamination-v1
(FALSIFY-RCC-001..003); planted train leak RED (rc=101) -> GREEN.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…FY-RXR-001..003) — Refs #4358

Harness drives apr serve /v1/chat/completions at greedy/seed 4354/512 tokens, never
truncates (context refusal -> NotRun{ContextOverflow}), seeded run order + 10% rerun.
Scorer denominators are the EXPECTED item set; raw outputs are sha-checked and the
verdict re-parsed. Receipts verify with minisign when --pubkey is given. Three
falsifiers planted RED and restored GREEN (docs/audits/rex-001/rex-03-receipt.md).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…03) — 6/6 NotRun{NoDeclaredExecutor}, S-7 — Refs #4359

Every §2.1 cell has exactly one admission row; a silent cell rejects the file, Admitted
needs a parity receipt at or above a cited threshold, and no admitted cell raises S-7
(`rex admission-check` exits 10). With infra#1088 open, all six cells are NotRun, so S-7
fires and the experiment STOPs. The §7 premise "apr parity vs llama.cpp" is false at
v0.69.3 (GPU-vs-CPU only); the oracle is an explicit field. The S-6 operator ruling is
recorded in the receipt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`rex score --pilot --split dev` projects the test-split Wilson half-width
on recall at the pilot estimate (design p = 0.5 when the pilot has no
defect in its denominator) and grows the corpus above 0.12 or when the
width cannot be computed. Runtime counts the 10 % re-run; no warm sample
is None, not zero. The spec's ~0.117 is the Wald width; the frozen Wilson
width is ~0.114. Contract rex-pilot-projection-v1 (FALSIFY-RXP-001..003),
each planted RED at pilot_tests.rs:22/:29/:38 and green after restore.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The 4B shadow lane already runs inside the quorum rail (paiml-implement
#420, advisory-lane.sh); `rex ledger` reads what it records in each
quorum receipt and holds it to REX-07: every quorum carries a shadow row
(no advisory_lane, or lane `off`, is missing), a lane that did not answer
is Unknown{LaneUnavailable}, and the shadow is uncounted and leaves the
width at the counted lanes. On the live PMAT-405 receipt it emits a
correct row (gx10-cuda PASS, width 3) and exits 0. Contract
review-ledger-v1, FALSIFY-RXL-001..003 each planted RED at
ledger_tests.rs:49/:66/:85 and green after restore.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
)

`rex ladder REPORT_JSON` reads only a locked, confirmatory
rex-001-report-v1 and returns the 4B lane's rung: shadow by default,
tripwire on H4 (explicit holds + CI lower bound ≥ 0), vote on H4 ∧ H5,
capped by the §4.5 hardware ruling. H5 alone stays shadow (R-11).
Contract rex-promotion-ladder-v1; FALSIFY-RXG-001..003 each planted RED
at ladder_tests.rs:31/:55/:72 and green after restore.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…g is RED (Refs #4365)

review-lane-perf-ratchet-v1 (§5.1). `rex ratchet record` turns a tag's warm,
non-rerun receipts on the primary cell into per-item wall times; `rex ratchet
check` arms after 3 tags and compares each later tag with the best earlier
one by a paired bootstrap of the Harrell–Davis p95 ratio (ALPHA from the
prereg). Exit 10 on RED.

Finding (FALSIFY-RXR-002): the §4 unpaired CI-overlap rule, and a paired
nearest-rank p95, both miss a planted +10% at n=130; the HD paired rule
catches it 40/40 with 0/40 false alarms at 3% per-item run noise.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#4366)

- champion.rs: five fail-closed §5.4 gates, 20 evaluations per sealed test
  version (refusals spend nothing, R-6), pin-bump promotion with rollback sha,
  two-consecutive-gold-escape demotion.
- fewshot.rs: B1b retrieval from non-test gold only (R-2), never the query;
  guard() scans each fenced block alone. Finding: a gold `- defect at` line
  after a fence joins the last hunk, so a whole-text scan missed a sealed
  test diff in a rendered prompt (RXF-003 pins it).
- `rex challenge` (exit 0 promoted / 10 rejected / 11 refused); score_cmd
  uses verify_signed.
- contracts/review-champion-challenger-v1.yaml (RXC-001..003, RXF-001..003).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pt (Refs #4367)

- b2.rs: one review-b2-loop-v1 row per B2 tier from the refusal ledger
  (refusal-receipt-v1): ready only on an acceptance receipt, verb_refused
  on a ledger row, unledgered otherwise — an absent refusal is not
  acceptance. teacher_receipt(): sha, count, k, m=1, 0 test hits over the
  non-test pool; fails closed on an empty sealed index.
- `rex b2 status|teacher-receipt` (status exits 11 while any row is NotRun).
- contracts/review-b2-loop-v1.yaml (FALSIFY-RXB-001..003).
- At HEAD all four rows read unledgered: distill/finetune/merge/quantize
  have no measured qwen35 refusal row (EPIC #4002 owns the verbs).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t dispatch time only (Refs #4354)

Operator ruling 2026-09-25 (cop-inbox/handoff/ruling-r9-b.md, sha b6db6866c604).
lambda-cuda may run the apr SHADOW lane only as rung 2: rung 1 (gx10-cuda)
returned NotRun and the GPU lock is free at dispatch. No resident serve, no
preloaded weights, no REX cells, no teacher/finetune jobs; other R-9
exclusions stand. A lock taken mid-round = NotRun{Busy}, ladder continues,
no retry on the same cell. Fallback order gx10-cuda -> lambda-cuda ->
intel-wgpu -> mini-metal -> intel-cpu -> NotRun{NoExecutor}. S-4, G7 and the
lambda-minutes metric follow R-9. R-9 is §6, outside the §2-§5 prereg span:
FALSIFY-REX-PREREG-001..003 pass, the lock is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ha carried; holds() needs identity_gaps == 0 (Refs #4354)

- Shadow is now Verdict{verdict,cell,backend} | NotRun(NoExecutor|Busy|
  Timeout|ContextOverflow|TrainActive) | Refused{cell,removed_by:
  ladder|gpu-proof|parse}, deny_unknown_fields. Unknown::LaneUnavailable
  {why: free text} is gone: one spelling with receipt-lint.
- The receipt's advisory_lane.row carries it; a missing or unparsable row
  is a violation, never a silent Unknown.
- weights_sha256 is read from the receipt, and Coverage::holds() requires
  identity_gaps == 0.
- FALSIFY-RXL-004 (no weights sha => holds() false) and RXL-005 (free-text
  reason fails to parse), each killed by its mutant (holds() clause
  dropped; deny_unknown_fields dropped).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…a row (Refs #4354)

Operator ruling PRM-001 v2 items 3, 4 and 6 (cop-inbox/handoff/ruling-prm-v2.md).
v1 was locked with 0 data rows, so nothing becomes exploratory (R-1).

Locked (§3-§4, stats.rs, analysis plan):
- H1 = VERDICT identity across cells (verdict_divergence); bytes descriptive.
- H4 = one rule: paired bootstrap of p4B - min(pHaiku, pAgy), min taken
  inside each resample (bootstrap_vs_min_voter); Holm-adjusted one-sided p
  decides, CI report-only. ladder.rs reads p_holm (report schema v2).
- H5 decided on class-R recall only; per-class P/R recall + precision
  descriptive (paired_parsed_class; Scored carries its class).
- §4.1 admission oracle = the cell's parity.oracle; llama.cpp@d1d3c3396
  where declared (#4444), else apr-parity-gpu-cpu + H1 verdict check.
- §4.6 train-active falls through the dispatch ladder, never blocks;
  lane rows use the #436 Verdict|NotRun|Refused spelling.
- κ on per-item errors, apr vs each voter (error_kappa, kappa_andon).

Unlocked: §0.4/R-11 zero-weight shadow; R-9/S-4/§9.1 lambda accounting
(experiment cells, teacher, resident serve: 0 min; shadow rung 2 measured).

Falsifiers: min-inside-resample differs from pick-once on tied voters;
byte-only diff does not reject H1; RXG-004 CI is report-only; prereg 001-003.
90/90 lib tests; pv validate both contracts; clippy -D warnings clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ith the cop's pending-instrument ruling; §9 report IN_PROGRESS

Spec copied from the cop handoff (sha e8764b72adbe) and amended with §1.1: T0 found
none of the §1 verify commands exist; G1/G7/G10/G11/G13 are [U]-pending-instrument
tied to T1/T10/T1/T6/T16; G2/G4 are #436 scope; G12's command replaced (apr has no
--model-arch).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, fails closed

Five fleet hosts, 2026-09-25: cleanupPeriodDays 36500 on all five; files older than 30 d
lambda-labs 3278, intel 290, gx10 1, mini 0, yoga 0 (matches infra#1135 T0). An unreachable
host prints UNREACHABLE and exits 1. Case table: unset/numeric/no-settings key, planted old file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ruling agent-trace item 6. FALSIFY-TPA-001 (planted AWS key quarantined) and TPA-002 (planted test-split diff refused) fail 4/4 against admit() admitting everything.

Refs #4354

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…aled-test hit refuses

Ruling agent-trace item 6. src/pool.rs: admit() gives each JSONL row one verdict. Admitted | Quarantined (secret hit, held byte-identical, never redacted) | Refused (sealed-test diff or sha, via contamination::Index, checked first) | Unchecked (empty sealed index admits nothing). The scanner has no regex dependency, scans JSON-unescaped strings, and uses whole-word prefixes. Contract training-pool-admission-v1 (TPA-001..004; pv validate: 0 errors). RED->GREEN: 4/4 fail on the stub at b177c3af8, 4/4 pass here; crate lib 87/87; clippy -D warnings clean. Mutants killed: no-unescape, no-refuse, no-quarantine, empty-index-admits, no-boundary.

Refs #4354

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… reports nothing

PRA-001 T6. Secret scan = union of builtin detectors and the gitleaks
v8.30.1 ruleset vendored verbatim as data (MIT, sha256-pinned), interpreted
in-process in Rust. 20 run-time-built canaries, per-rule ablation, AWS doc key
(gitleaks-allowlisted) caught by builtin only. Contract renamed from
training-pool-admission-v1.

This commit's scan() clears its hits: TAS-001/003/004 and both case tables
are RED (5 failed, 91 passed).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Refs #4354
scan() returns its hits. Mutation table (tests run: secret + pool):
killed no-gitleaks, no-builtin, no-allowlists, no-entropy, no-unescape,
no-translate, and-allows; survived no-keywords (equivalent: the keyword
prefilter is a speed-up, every upstream regex already requires its keyword).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Refs #4354
…ash-only index

PRA-001 T7. FALSIFY-RCC-004 plants a sealed diff with whitespace, blank-line,
partial-rename and re-base perturbation into a candidate pool. The exact
checks (diff sha, hunk sha) miss it; the Index stores sketches but does not
scan them yet, so RCC-004 is red (110/111). cluster.rs (MOSS-normalised
12-token shingles, bottom-64 MinHash, 0.7 containment), RCC-005/006 and the
contract v1.1 land here with it.

Refs #4354

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…item is refused

PRA-001 T7. Index::scan now checks each text's shingles against the sealed
sketches: >= 0.7 of an item's bottom-64 sketch present is a `cluster` hit, so
the perturbed sealed item is Refused at pool admission (111/111).
False-positive probe, 391 real .rs commit diffs from origin/main, all 152,490
ordered pairs: 7 clustered at k=12 (0.005%), all one family of templated beat
test files (copies with renamed identifiers); k=5 gave 469. Mutation table:
whitespace skip, rename, header skip, marker, min-shingles, blank-line skip,
threshold and scan removal are all killed.

Refs #4354

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…pend-only outcome joins; v1 rows still read (Refs #4354)

v1 kept each counted lane's findings as a count, so every quorum lost its
(input, output, findings) triple. v2 keeps the text verbatim and the lane's
agent-trace-v1 input/output shas. Text that was never captured is None, a
trace gap, never an empty list that would train as 'no issues'.

- read_row dispatches on schema; both v1 shapes written under that name
  (402aff8 tagged shadow, 89d994b typed #436 shadow) still parse.
- v1::Row::migrate keeps the count, leaves text/shas None, and refuses a
  legacy shadow (no cell/backend, so no typed #436 form).
- OutcomeJoin: the latest join by at wins; the row is never rewritten.
- contracts/review-ledger-v2.yaml carries FALSIFY-RXL-001..008; v1's stale
  Unknown{LaneUnavailable} equation now points at the typed form.

Mutants killed (3/3): migrate invents Some(vec![]), trace_gap ignores
missing text, an unknown schema read as v1. Crate lib 103/103, clippy -D
warnings clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Top-k=20 teacher-logit blob per PRA-001 §2.7: u32 ids, T=1 log-softmax
(f16), logsumexp_full (f32), retained mass M (f16) so 1−M is the true
tail. Closed JSON header, zstd LE columns, one shared validator for
encode and decode. Raw 130 B/token at k=20; encoded M6 needs real apr
serve rows (top-k capture not yet in apr serve).

FALSIFY-SPL-001..004 in contracts/sparse-logits-v1.yaml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…te in a valid frame) (Refs #4354)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…independence-v1)

New module kappa_probe.rs (stats.rs, spec §2–§5 and analysis-plan.md are
untouched: prereg-locked). κ_err = the frozen stats::error_kappa on per-item
error indicators vs GOLD, shadow lane vs every counted lane, over matured gold
rows of one split. Unparsed verdicts, silver/pending/quarantined rows and
pending/closed_unmerged outcomes are excluded, never counted as errors. A pair
under min_n, or with κ undefined, is `insufficient` and prints no number.

`rex lane-kappa` prints the scoreboard; with --candidate it gates: δ and min_n
come only from the run manifest's lane_independence block, registered strictly
before training started. Exit 12 = S-14 andon (κ rise > δ on any counted lane,
a lane missing or insufficient on either side, an unusable manifest, or
--candidate without --manifest).

FALSIFY-LIND-001..004 were planted RED against a stub (4/4 failed), then GREEN.
Four mutants each kill the falsifier they target: gate `>`→`>=` (003), no gold
filter (001), registered_at `>=`→`>` (004), gate ignores the manifest's min_n
(002; it first survived and got its own assertion). CLI smoke: exit
0 scoreboard, 12 on a voter-copying candidate, 12 with no manifest, 2 usage.
`make lane-kappa ROWS=F [SPLIT=val] [MIN_N | MANIFEST CANDIDATE]` wraps it.

Refs #4354

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…g_sha f0b4e4ac) (Refs #4354)

- docs/specifications/PRM-001-prometheus.md = handoff v3, sha256 c9b52d08d7eb.
- rex-prereg-v2 now locks v3 §2–§5 + stats.rs + analysis plan v2 + prompt v1
  in docs/audits/prm-001/prereg.lock. The 17:09Z draft lock (1f4acb3d) is void.
- v1 lock docs/audits/rex-001/prereg.lock (ef51087d) restored byte-exact from
  5f0ae10 and never edited again (operator). The v1 spec §2–§5 and v1 plan are
  restored byte-exact too; FALSIFY-REX-PREREG-004 keeps them verifying.
- v1 spec gains a superseded banner above §0 (outside §2–§5).
- stats.rs: H7 max-pair gate `h7_holds` (δ-free, undecided on any undefined κ);
  the v2 silver-step `kappa_andon` is removed (v3 has no silver pool).
- A planted §3 edit on disk: `rex prereg-check` rc=1 (DRIFT spec_s2_s5).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	README.md
#	contracts/census.json
… own cluster (Refs #4354)

FALSIFY-TDD-001..004 fail 4/4 against the one-cluster-per-item stub.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… fingerprint, closed by union-find, named by earliest member (Refs #4354)

Reuses cluster.rs (shingles, bottom-64 sketch, containment); no second
MinHash. Candidates from an inverted index over sketch hashes; a pair
matches when either sketch is >=0.7 contained in the other's shingles.
Tiny diffs merge only on identical normalised tokens. Cluster id =
min (at, id), order-independent, for the PRM-C9 split guard.

FALSIFY-TDD-001..004 GREEN; TDD-003's chain asserts X!~Z as its premise.
Mutants 8/9 killed; survivor >= -> > on the 0.7 threshold is
boundary-equivalent on these fixtures. pv validate: 0 errors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift and others added 20 commits September 25, 2026 20:06
…et per index snapshot (Refs #4354)

datacard::Snapshot reads index/agent-trace-v1/YYYY/MM/DD.jsonl in path order;
a bad line or foreign schema is an error naming file:line, never a skipped row.
The snapshot id is sha256(sha256sum manifest)[..16]. croissant() emits the
Croissant 1.0 + RAI 1.0 JSON-LD card (aggregate counts only), datasheet() the
seven-section Datasheet, write_snapshot() both plus the manifest under
datacard/<snapshot>/: idempotent, and a hand-edited card is refused, not
overwritten. validate() is a structural Croissant checker in Rust, since
mlcroissant is Python (S-PY). Public-eligible = gold ∧ local ∧ secret-clean.

FALSIFY-TDC-001..006 green; pv validate clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ide the datacard (Refs #4354)

PRM-001 v2 folds PRA T14 into PRM-C14, which adds the weekly receipt. Per ISO
week it records quorums/day, rows, index bytes and the CAS blobs the rows
address: stored bytes, plus raw bytes read from the zstd frame header
(RFC 8878). It checks them against the G15 [O] band (50-200 quorums/day,
<= 0.45 TB/yr raw): within | outside | unmeasured. A missing blob or an
undeclared raw size reads unmeasured, never within. weekly.json is written
with the card under the same hand-edit rule.

FALSIFY-TDC-007/008. These were written after the code, not RED-first; their
RED proof is 10 hand mutants: 9 killed at first, and the survivor (the TB/yr
cap had no case) is killed by the added 4.29 GB/day row. TDC-006 now also pins
'bad json'. For TDC-001..006, 10 of 12 mutants were killed; skip-bad and leak
are equivalent (still refused / Snapshot keeps no row content).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v3 renumbered the gates (G15 is now the branch row). The receipt's key,
constants, contract text and test name follow. Refs #4354

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…figure

research-design-pr-agent-qwen-3.5.md gains a SUPERSEDED banner pointing
at PRM-001 v3; its body is unchanged. The figure is the operator's v3
export (PROMETHEUS-v3-dark-4k.png, sha256 078be9ce93b7…). The spec text is
authoritative over the figure's known caption deltas.

Refs #4354

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…a pass-through stub (Refs #4354, #4446)

Spec §2.10 / §9 P-TERMS. Contract agent-trace-terms-v1,
FALSIFY-TERMS-001..004 plus 3 case tables; 7/7 fail on the stub.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…l-excluding pool rebuild (Refs #4354, #4446)

terms.rs validates provider, exact model_id (no family alias; local =
weights sha256), access_channel consistent with provider, and terms_ref
{https url, date, UTC fetched_at}. rebuild() takes first-class
--exclude-provider / --exclude-channel args; a row with any gap is
refused by every rebuild. public_release() keeps local rows only (§2.11).
Not legal advice; S-6 governs.

7/7 terms tests, clippy -D warnings clean, pv validate ok; 10/10 planted
mutants killed (sha length, https, month range, UTC Z, refused->kept,
public-release google, alias rule, channel/provider check, channel
exclusion, vertex mapping).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…st be refused; stub admits all

FALSIFY-TAP-001..004 against a provenance() that returns Ok: 4 fail. Reuses
PRM-C12 terms.rs (tags, Provider). label_source is a provisional gold marker
pending PRM-C10.

Refs #4354

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…-gold rows before the secret scan

Verdict::Ineligible(Prov{Hosted,Untagged,NotGold}); provenance() runs after the
sealed check and before quarantine, so a hosted row is never quarantined (and
never released from it). Mutants killed: no-prov, no-hosted-first, any-label,
untagged-ok, notjson-ok, prov-after-secret.

Refs #4354

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Refs #4354

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… lane, strata weights over distinct diffs

Refs #4354

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…p, one-rung steps (FALSIFY-RXG-005..008)

7 of 9 ladder tests fail on the stub.

Refs #4354

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ability ≥ 0.95, speed), vote on 20 agreeing tie-breaks, lambda S-4 cap, one-rung steps

rex ladder REPORT_JSON [--current RUNG]. 9/9 ladder tests, 159 lib tests, clippy -D warnings clean, 26/26 hand mutants killed.

Refs #4354

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Refs #4354

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs #4354

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…1858)

Caught by the PMAT-4354 degraded-quorum sonnet lane: six contracts added on
rex/001 after the main merge were missing from census.json and README.

Refs #4354

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@noahgift
noahgift enabled auto-merge September 25, 2026 19:47
@github-actions

github-actions Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

§13.11 rung 1 — quorum shadow verdict

S13-SHADOW pr=4451 head=b10c8eda8f5b776ceaaa67e91d15f72cebfbbbb0 verdict=REFUSE class=Q1 arm_rc=1

Shadow mode: this records a verdict and merges nothing. A refusal
to arm is not a block (§13 adds zero rows to §7) — the pull request is
exactly as green as it was.

@noahgift

Copy link
Copy Markdown
Member Author

Superseded by #4459 (rex/001). The cop ruled at 07:12Z, and aprender-59's audit found prm-l to be an older subset of rex/001: git merge-base --is-ancestor b10c8eda8 c861b4b06 → false. Branch prm-l is kept, not deleted.

@noahgift noahgift closed this Sep 26, 2026
auto-merge was automatically disabled September 26, 2026 08:05

Pull request was closed

@noahgift

Copy link
Copy Markdown
Member Author

Correction to the ancestry line above. --is-ancestor reads false only because prm-l merged main after rex/001 branched; it is the wrong test here. The real test is git cherry c861b4b06 b10c8eda8 $(git merge-base origin/main b10c8eda8): 0 of prm-l's 49 own non-merge commits are missing from rex/001 by patch-id. The supersession holds. Local tag: superseded/prm-l-4451 → b10c8ed.

@noahgift
noahgift deleted the prm-l branch October 9, 2026 08:28
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