Conversation
…inventory; no Q4_K rung is optional Operator 2026-09-21: "you must ensure all models Q4_K CUDA work; the end". The gate measured a hand-picked list with an escape hatch (qwen3-8b-q4km required: false, red on lambda at 0.68.2 and 0.69.0), and a full fleet sweep then found reds that were on no list at all. This row is #3712's done_when 1 + 2 (the gate side). - contract: `ladder.inventory` {dirs, case-insensitive *q4_k*/*q4k* .gguf/.apr patterns, backends [cuda]}; MCL-INV-006/007 and FALSIFY-MCL-011..014. - model_ladder.sh: measures ladder ∪ the host's inventory with ONE measure() function (a rung and an inventory model cannot drift), and writes receipt v2: `inventory` [{file, sha256, bytes}], `file` per row, `apr_sha` (full 40-hex). - check_model_ladder.sh FAILs on: `required` not true on a Q4_K rung, a Q4_K rung that does not claim cuda, a ladder with no inventory, a receipt that is not v2 / has no or an EMPTY inventory, an inventory model MISSING from the run (named), and an inventory-only model not green on cuda (skip, fallback and rc != 0 are RED). - case table 18 -> 26, each red for its own reason; 3 self-mutants, each killed by its case; `--case` naming no case is RED; the root comes from the script path. qwen3-8b-q4km stays `required: false` in the contract by cop ruling: flipping it turns `pv lint contracts/` red on every PR (the armed ladder-green shape reads the committed 0.68.2 lambda receipt, "Empty output"; measured rc 0 -> 1 with only that flip). The gate now refuses the key at T-2, so the release cannot ship on it; the flip folds into 0.69.1 with the qwen3-8b fix and a green lambda receipt. Refs #3712 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false) {
"ticket": "PMAT-3712",
"head": "789e4124fe72bf1ea1d7c9714a0ede1570e2a8c1",
"width": 3,
"executor": "agy",
"agreed": false,
"auto_merge": {
"checked": true,
"was_armed": false,
"disarmed": false,
"note": "auto-merge not armed"
},
"lanes": [
{
"lane": 1,
"verdict": "FAIL",
"findings": 2
},
{
"lane": 2,
"verdict": "FAIL",
"findings": 1
},
{
"lane": 3,
"verdict": "PASS",
"findings": 3
}
]
} |
|
§13.11 rung 1 — quorum shadow verdict Shadow mode: this records a verdict and merges nothing. A refusal |
…o 1000, with a bounded wait
At 15:56:08Z interactive apr runs on gx10 drove the host into a global OOM and the
kernel killed CI containers (oom_score_adj 500), not apr (0): 18 kills in 10 s. Cop
ruling: the lock lives in model_ladder.sh, per apr call; T-1 wraps the script in
choom only (a second flock outside would deadlock on this one).
- model_ladder.sh: apr_locked = flock -E 75 -w ${MODEL_LADDER_LOCK_WAIT:-1800}
/tmp/apr-gpu.lock choom -n 1000 -- "$APR"; the only GPU apr call site. A lock still
held after the wait is an ENV decline (exit 2) naming the holder pid from /proc/locks
(lslocks leaves PATH empty for files it cannot resolve), never a hang and never a
model verdict. --lock-probe runs one call through it for the judge's table.
- check_model_ladder.sh: lock_audit (static; also in the REAL run, where a raw
"$APR" <subcommand> call is RED) and lock_probe (a fake apr sees lock=LOCKED and
oom=1000; a held lock declines naming the pid). Four producer mutants, each killed
for its own reason: raw-apr-call, no-lock, no-choom, unbounded.
- contract: the precondition, and FALSIFY-MCL-015.
- fragment: where check_model_ladder.sh runs (dogfood only; unwired on PRs), which a
round-1 lane misread as a PR red.
Refs #3712
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
quorum-review (AD-04): three PASS — agreed (auto_merge: checked=true was_armed=false disarmed=false) {
"ticket": "PMAT-3712",
"head": "6eee66bb07e86fe21971df3a4ed513e8064c22c0",
"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
}
]
} |
This was referenced Sep 21, 2026
Contributor
Author
|
closed by triage (aprender-dd; cop aprender-cf approved): FOLDED, not abandoned. Per the release-process owner aprender-6c [8b6b78]'s ruling on #3712, this row was folded into the 0.69.1 squash batch #3772; its fold order lists it, and its cases are on main. The squash is why its head is not an ancestor of main. Branch kept. |
This was referenced Sep 23, 2026
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.
#3712 row A: the model gate's universe is each host's measured Q4_K inventory; no Q4_K rung is optional
Operator 2026-09-21: "you must ensure all models Q4_K CUDA work; the end". The gate measured a hand-picked list with an escape hatch, and a fleet sweep found reds that were on no list. This PR is done_when 1 + 2 (the gate side). done_when 3 + 4 (T-1 on both hosts, and proof on a real train) belong to the release-tooling lane.
What changes
contracts/model-capability-ladder-v1.yamlladder.inventory{dirs, case-insensitive*q4_k*/*q4k*.gguf/.aprpatterns, backends[cuda]}; MCL-INV-006/007; FALSIFY-MCL-011..014scripts/model_ladder.shmeasure()(a rung and an inventory model cannot drift); receipt v2:inventory[{file, sha256, bytes}],fileper row,apr_sha(full 40-hex)scripts/check_model_ladder.shrequirednot true on a Q4_K rung · Q4_K rung not claiming cuda · ladder without inventory · receipt not v2 / no inventory / EMPTY inventory · inventory model MISSING from the run (named) · inventory-only model not green on cuda (skip, fallback, rc≠0 = RED)scripts/lib/model_ladder_cases/model_ladder.shgoes throughapr_locked=flock -E 75 -w ${MODEL_LADDER_LOCK_WAIT:-1800} /tmp/apr-gpu.lock choom -n 1000 --; a lock still held after the wait → ENV decline (exit 2) naming the holder pid from/proc/locks. The judge audits it statically in the REAL run and behaviourally in--self-test(FALSIFY-MCL-015)Measured on this head
check_model_ladder.sh --self-test: 26 cases, 0 bad, and 3 self-mutants killed (q4k-required-falsebyred-q4k-required-false,q4k-without-cudabyred-q4k-rung-cpu-only,inventory-missingbyred-inventory-model-missing). It gives the same result when run from/tmp.--case no-such-casegives rc 1.--lock-probeseeslock=LOCKED oom=1000; a lock held by another pid declines with rc 2,holder: pid <N>. Four producer mutants are killed, each for its own reason:raw-apr-call(static audit),no-lock(UNLOCKED),no-choom(oom=0),unbounded(rc 124, no bounded decline).check_model_ladder.sh --version 0.70.0printsFAIL rung qwen3-8b-q4km is a Q4_K rung with required: Falseplus the missing receipts, so T-2 is RED.pv validateok ·pv lint contracts/PASS (11 armed) · census andcontracts.ntunchanged ·cargo test -p aprender-contracts --lib1684 passed / 0 failed ·guard_tree --no-cargo76 checks, 0 failed · shell-lint ratchet PASS · bashrs 0 errors.Where the gate runs (a round-1 lane read its rc=1 as a PR red)
check_model_ladder.shis declared only inCargo.toml[package.metadata.dogfood]gates (line 612, the T-2 pre-publish dogfood). It is also listed inscripts/unwired_guards_baseline.txt(line 12): no PR workflow runs it, andguard_treeskips it (unwired-baseline). Its rc=1 on the real contract is therefore the release NO-GO the operator asked for, not a PR red.pv lintis a different tool that never runs this script, and it PASSES on this head.Deliberately NOT here (cop ruling)
qwen3-8b-q4kmstaysrequired: false. Flipping it turnspv lint contracts/red on every PR: the armedladder-greenshape reads the committed 0.68.2 lambda receipt (golden_output: Empty output). I measured rc 0 → 1 with only that flip, onePV-ONT-011 missingGreenHost: lambda. The gate refuses the key at T-2, so the release cannot ship on it. The flip folds into 0.69.1 alongside the qwen3-8b fix and a committed green lambda receipt. The widened bar (verb × thinking × context-rung cells) is row B, stacked on this one.Refs #3712
keep-open: #3712 row A only. done_when 1's "no required: false" clause lands with the qwen3-8b fix in 0.69.1; done_when 2's cells go green through the model fixes; done_when 3 and 4 belong to the release-tooling lane; row B adds the verb × thinking × context cells.
🤖 Generated with Claude Code