Skip to content

PMAT-3715: release-readiness-v1 — the tag is refused unless every release cell has a fresh Pass receipt - #3736

Open
noahgift wants to merge 5 commits into
mainfrom
PMAT-3715-release-readiness-shape
Open

noahgift wants to merge 5 commits into
mainfrom
PMAT-3715-release-readiness-shape

Conversation

@noahgift

@noahgift noahgift commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

PMAT-3715: release-readiness-v1. The tag is refused unless every release cell has a fresh Pass receipt

Operator, 2026-09-21, verbatim: "you need to improve our dogfood process and pv SHACL so leaks don't exist pre-release. this is clown town." Every 0.69.0 leak was absence read as conformance. Here every obligation of a release is a graph node derived from what was measured, so a missing receipt is a missing edge that minCount 1 rejects.

What it does

Proof

  • 34 red-turning CLI cases, crates/aprender-contracts-cli/tests/ont_release_readiness.rs, wired as ci/explicit-test-commands.d/450. The green base passes 48/48 cells, each named, and then one thing changes per case:
    • a cell that is missing, skipped, falls back, doesn't say whether it fell back, is stale by sha, stale by version, or duplicated;
    • a think-ON cell that is missing, or has an unclosed block and an empty answer;
    • a declared-length rung that is absent, or unmeasured; two hosts that disagree on a file's length; a prompt short of its rung;
    • a kernel green on sm_121 and red on sm_89 (reported first); a kernel measured on one arch only;
    • one mismatched tokenizer id; zero tokens compared; a broken round trip;
    • a host with no receipt; a v1 receipt standing in for a host; an inherited or absent dogfood;
    • a consumer with no number; a thinking_modes/markers contradiction;
    • the memory rule: a 27B-shaped refusal on lambda plus a pass on gx10 is GREEN; an OOM instead of a refusal, a co-tenant refusal, a refusal with no shortfall, and a rung that fits nowhere are RED;
    • T-4's --receipts-commit; no subject → 2; caller errors → 3; pv extract writes only to --out.
  • Mutants: skip-as-pass (a shape mutant) turns 1 case red; always-fresh (a code mutant) turns 3 red.
  • cargo test -p aprender-contracts --lib: 1695 passed. cargo test -p aprender-contracts-cli: every target green. The ont4b shape ratchet was raised 9 → 18, naming the new shapes. pv lint contracts: PASS, 0 errors, and no new warnings from this contract. make ont-ratchet was restamped. Clippy -D warnings is clean on both crates, lib and tests.
  • evidence/release/proof-0.69.0/ (done_when 5, first half): 0.69.0's own evidence, translated without inventing a measurement (the rules are in translate.py and the README), is RED with 795 findings. They name:
    • qwen3-8b on lambda: verdict=fail;
    • qwen2.5-coder on lambda and qwen3moe on both hosts: never identified by the release (unmeasuredModel), with their failing sweep rows unkeyedRow;
    • 752 of 768 cells absent: every chat, serve and code cell;
    • the dogfood receipt the train "inherited" a GO from, which says NO-GO, for the parent commit, at 0.68.2.

Known remainder (cop ruling, verbatim)

release_evidence.rs VERBS is a hand-coded list; #3745 S2 replaces it with the derived cell set via Inputs.cells. 0.69.1 does not tag while it exists.

Quorum

Round 3 at 84289cb7ba38adf96c0a1c5f836eb84ccb8d0646 is AGREED: gemini-3.1-pro-high PASS, gemini-3.1-pro-low PASS, gpt-oss-120b-medium PASS (author claude-opus-5; receipt-lint: complete). Artifact: docs/audits/quorum-PMAT-3715.json, diff_sha256 9df958d287befbf36a6b50be55984468291262bf8a3cf2cf9507b584e2f5676b. Round 1 judged against the ticket title alone and was superseded by the implementation receipt; round 2 was 2 PASS + 1 NO-VERDICT. After the round-3 head, the only commit adds this artifact and the roadmap-fragment note below, and changes no code.

Merged origin/main

#3706 (PMAT-3704) ties pc_extract to Σ, so release-evidence gets its own control, release_evidence::positive_control(), drawn every gate run. Mutant measured: emitting only cells that have rows gives pv lint --gate shapes exit 2, "positive control pc_extract.release-evidence did not fire".

Not in this PR, so it carries Refs

Receipt formats were agreed on #3712 with aprender-62, -f0, -37 and -eb; tokenizer parity on #3726.

Refs #3715, #3712, #3710, #3726

🤖 Generated with Claude Code

noahgift and others added 2 commits September 21, 2026 18:34
…ease cell has a fresh Pass receipt; absence is a violation by construction

Operator, 2026-09-21: "you need to improve our dogfood process and pv SHACL so leaks don't exist
pre-release. this is clown town." Every 0.69.0 leak was absence read as conformance.

- receipts.rs reads apr-model-ladder-receipt v1 AND v2 (#3712). Before this, the first committed v2
  receipt would have turned `pv lint --gate shapes` exit 3 on every PR (a foreign schema is refused
  by name, and still is for v3).
- extract:release-evidence (Σ entity type release-evidence), built ONLY under a release subject:
  Release, Host, Model, Verb, ContextRung, Cell, CellReceipt, RefusalCell, RungCoverage,
  TokenizerCell, KernelCell nodes. The universe is DERIVED (host inventory ∪ cuda ladder rungs ×
  verbs × thinking_modes × context rungs up to the model's GGUF length; kernels from every host's
  dispatch path; one tokenizer cell per model), so a missing receipt is a missing edge.
- the nine-shape release-readiness-v1 family; `--shape` arms it whatever armed_shapes says and
  reports release → host → context → model → coverage → tokenizer → kernel → refusal → cell.
- `pv lint --gate shapes --shape release-readiness-v1 --release-version V --release-commit MC
  [--receipts-commit S] [--receipts D] [--kernel-receipts D] [--tokenizer-receipts D]
  --dogfood-receipt F`: 0 Pass · 1 Fail naming cells · 2 decline (no subject) · 3 caller error.
  `pv extract --release-* --out F` writes the release graph and never the tracked contracts.nt.
- 34 red-turning CLI cases (a green base with every cell named, then one change each), 10 unit
  tests; skip-as-pass and always-fresh mutants each turn the table red.
- evidence/release/proof-0.69.0: 0.69.0's own evidence, translated without inventing a
  measurement, is RED with 795 findings naming qwen3-8b lambda (verdict fail), qwen2.5-coder lambda
  and qwen3moe on both hosts (never identified), 752 of 768 cells absent, and the NO-GO dogfood
  receipt the train "inherited" a GO from.

Receipt formats agreed on #3712 with aprender-62, -f0, -37, -eb; tokenizer parity on #3726.
No waivers (cop ruling (c); the operator-only surface is #3722).

Refs #3715, #3712, #3710, #3726

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… reproduces; fixture rows one per line

gate-summary.json carries the verdict, the counts, every non-cell finding verbatim and the cell findings
aggregated per host/model; the README's command re-runs the full 795-finding report.

Refs #3715

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Contributor Author

quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false)

{
 "ticket": "PMAT-3715",
 "head": "0e99993dc13eae20f6f49644f29041d2e23b4796",
 "width": 3,
 "executor": "agy",
 "agreed": false,
 "auto_merge": {
  "checked": true,
  "was_armed": false,
  "disarmed": false,
  "note": "auto-merge not armed"
 },
 "lanes": [
  {
   "lane": 1,
   "verdict": "NO-VERDICT",
   "findings": 0
  },
  {
   "lane": 2,
   "verdict": "NO-VERDICT",
   "findings": 0
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 0
  }
 ]
}

…ith its URL

Round 1 of the quorum judged against the ticket TITLE alone (`pmat work status` prints nothing else): both
gemini lanes carried a scope FAIL for the kernel, thinking, tokenizer and dogfood cells that the issue's author
added on the issue. The receipt is what the brief carries; it quotes each addition and the measurements.

Refs #3715

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Contributor Author

quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false)

{
 "ticket": "PMAT-3715",
 "head": "ba9afe3d1cd8c6a900ade681ce17cc4d3b1cf4ba",
 "width": 3,
 "executor": "agy",
 "agreed": false,
 "auto_merge": {
  "checked": true,
  "was_armed": false,
  "disarmed": false,
  "note": "auto-merge not armed"
 },
 "lanes": [
  {
   "lane": 1,
   "verdict": "NO-VERDICT",
   "findings": 0
  },
  {
   "lane": 2,
   "verdict": "PASS",
   "findings": 0
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 0
  }
 ]
}

…ease-evidence gets its own control

The one real conflict (the extract import in shapes_gate.rs) is textual; the semantic one is #3706's
every_implemented_entity_type_in_sigma_has_an_extract_control_and_it_fires: release-evidence was implemented in
Σ with no pc_extract control, so the merged tree would have gone RED.

release_evidence::positive_control(), drawn every gate run with no release subject and no file: a sample cell
with one fresh Pass row and a planted cell with none go through the real build(); it fires iff the planted cell
is still a release:Cell node with ZERO rows (absence materialized for minCount 1). extract() is now file reading
plus a pure build(Inputs). Mutant measured: emit only cells that have rows -> pv lint --gate shapes exit 2,
'positive control pc_extract.release-evidence did not fire'. Also moves receipts.rs's strings() helper above
the test module (clippy items_after_test_module).

Refs #3715, #3704

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 21, 2026

Copy link
Copy Markdown

§13.11 rung 1 — quorum shadow verdict

S13-SHADOW pr=3736 head=c7dfd6427ee9963ba37b4e42a9b81b1f45a7f486 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
Contributor Author

quorum-review (AD-04): three PASS — agreed (auto_merge: checked=true was_armed=false disarmed=false)

{
 "ticket": "PMAT-3715",
 "head": "84289cb7ba38adf96c0a1c5f836eb84ccb8d0646",
 "width": 3,
 "executor": "agy",
 "agreed": true,
 "auto_merge": {
  "checked": true,
  "was_armed": false,
  "disarmed": false,
  "note": "auto-merge not armed"
 },
 "lanes": [
  {
   "lane": 1,
   "verdict": "PASS",
   "findings": 0
  },
  {
   "lane": 2,
   "verdict": "PASS",
   "findings": 0
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 0
  }
 ]
}

…emainder in the fragment

The cop's landing conditions (1)-(2): the fragment names the hand-coded VERBS const as the known remainder,
verbatim, so no reader takes it for the finished design; #3745 S2 deletes it. No code changes.

Refs #3715, #3745

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

This branch has not been deployed

No deployments
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