Skip to content

Phase 3 — structured L3 review panels - #37

Merged
thebeastagi merged 3 commits into
mainfrom
feat/phase-3-review-panels
Jul 20, 2026
Merged

Phase 3 — structured L3 review panels#37
thebeastagi merged 3 commits into
mainfrom
feat/phase-3-review-panels

Conversation

@thebeastagi

Copy link
Copy Markdown
Owner

Phase 3 — structured L3 review panels

Implements epic #9 (tasks #23#28). Stacked on #36; diff shrinks as earlier phases merge.

What lands

Piece Module Notes
Reviewer schemas sapiens/review.py Four roles (statistician, domain theorist, methodologist, devil's advocate); typed approve/object/abstain verdicts; severity-graded objections with rationales.
Multi-round protocol sapiens/review.py Bounded deterministic rounds; objection lifecycle raised/sustained/withdrawn; disagreement gate — sustained MAJOR/BLOCKING rejects, MINOR caveats recorded but non-fatal.
Reference reviewers sapiens/reviewers.py Deterministic; re-run Phase-2 gates independently + hunt seeded-bias signatures; MAJOR escalates to BLOCKING on re-affirmation.
Catch-rate scoring sapiens/catchrate.py Per-role + panel rates over the seeded suite; panel 3/3 known-bad, 0 false rejects (exact for this suite — report carries the caveat).
Kernel L3 gate sapiens/kernel.py Opt-in; panel verdict recorded in the ledger as review evidence (no side channel); rejection blocks L3 with the verdict on record.

Design notes

Two bugs were caught by the test suite during development and fixed: leakage checks initially over-flagged legitimate review-stage holdout reuse (now train-only crossing), and sustained-objection semantics are now explicitly exercised through full round budgets.

Invariants

L4 human-gated · no discovery claims · clean-room · no secrets · $0 spend.

Tests: 44 new → 189 total green locally; ruff clean. Version 0.4.0.

Closes #23, closes #24, closes #25, closes #26, closes #27, closes #28. Part of #9.

…, checkpoints

- sapiens.registry: SYNTHETIC/CORE/UNTRUSTED trust tiers derived from
  manifest provenance facts, replacing the Phase-0 synthetic-only gate
- sapiens.permissions: owner-permission/licence manifest (permissions.json,
  empty by default — zero third-party permissions, clean-room invariant
  enforced by code); UNTRUSTED adapters require an active matching entry
- sapiens.isolation: subprocess execution with POSIX rlimits (CPU, address
  space, open files) + wall-clock timeout for UNTRUSTED adapters; every
  failure mode contained fail-closed
- sapiens.checkpoints: HMAC-SHA256 signed ledger checkpoints (env-held key,
  never stored) + external anchor export/verify; ledger gains checkpoint
  event kind with continuity verification
- kernel: UNTRUSTED-tier adapters validate only via isolation; L4 stays
  human-gated; no real-data adapter ships in this phase
- models: AdapterManifest gains code_origin / data_sources /
  third_party_source with coherence checks
- tests: 45 new (permissions, registry, isolation incl. CPU/memory-hog and
  timeout containment, checkpoints, kernel isolation); fixed stale
  module-level time-budgeted ExecutionContext in photometry tests
- docs: README/ROADMAP/ARCHITECTURE/PROVENANCE truthful for Phase 1;
  version 0.2.0

Closes #12, closes #13, closes #14, closes #15, closes #16.
Part of #7.
- sapiens.validation: L1 internal-consistency gate (score presence/range,
  determinism across identical reruns, degenerate constant-score rejection)
  and L2 holdout-replication gate (declared HoldoutProtocol per domain;
  leakage controls on dataset collision and (dataset, seed) reuse;
  pass-fraction threshold); ValidationGates wiring config
- sapiens.fixtures: labelled seeded-bias suite (known-good / overfit /
  leakage / degenerate) with expected gate outcomes
- sapiens.calibration: CalibrationReport over the fixture suite — catch
  rate, false-reject rate, sample counts, content-hash report id
- sapiens.confidence: aggregate_confidence raises UncalibratedError
  without sufficient calibration; emits documented heuristic (raw pass
  fraction x demonstrated catch rate) with provenance — no invented precision
- kernel: opt-in validation wiring (fail-closed when a configured domain
  lacks a declared protocol); gate verdicts logged, never fabricated as
  ledger evidence
- 33 new tests; docs (README/ROADMAP/ARCHITECTURE/VALIDATION) truthful;
  version 0.3.0

Closes #17, closes #18, closes #19, closes #20, closes #21, closes #22.
Part of #8.
- sapiens.review: role-specialized schemas (statistician, domain theorist,
  methodologist, devil's advocate), typed verdicts with severity-graded
  objections; bounded deterministic multi-round protocol with objection
  lifecycle (raised/sustained/withdrawn); disagreement gate — sustained
  MAJOR/BLOCKING rejects, MINOR caveats recorded but non-fatal
- sapiens.reviewers: four deterministic reference reviewers re-running
  Phase-2 gates independently + hunting seeded-bias signatures (degenerate
  scores, train/holdout leakage, implausible perfection, thin stages);
  MAJOR escalates to BLOCKING on re-affirmation
- sapiens.catchrate: per-role and panel catch-rate scoring over the seeded
  fixture suite with explicit small-sample caveat
- kernel: opt-in L3 panel gate — panel verdict recorded in the ledger as
  review evidence (no side channel); approval required for L3 promotion;
  behaviour without a panel unchanged
- 44 new tests; docs truthful; version 0.4.0

Closes #23, closes #24, closes #25, closes #26, closes #27, closes #28.
Part of #9.
@thebeastagi
thebeastagi merged commit 7e58769 into main Jul 20, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant