You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tracking epic for #3418's quant-type dispatch consolidation — scoped to 0.69,
Phase 0/1 only. Design/phase plan: docs/specifications/PP-QUANT-001-MASTER.md.
Phase 2/3 tracked separately by epic #3423 (dedicated milestone, not this train) —
see the placement note below.
Placement decision (2026-09-17): Phase 0/1 rides the 0.69 train, overriding #3418's own request for a dedicated non-cadence release, because both are additive
and touch no live call site. Phase 2 (the ~30-file call-site migration across
CPU/CUDA/wgpu) and Phase 3 (Qwen2.5-Coder parity re-proof) are the large-blast-radius
part #3418 actually asked to be dedicated — those now live on milestone Inference dispatch & architecture consolidation, tracked by epic #3423, alongside
PP-ARCH-001 (#3422). This epic closes when Phase 0/1 does.
Phase 0 — Inventory: done in PR #3420 (pending review/merge).
contracts/quant-dispatch-completeness-v1.yaml is the single enumeration: 35 live ggml tensor types (ids 0–42, 8 removed, type_count 43 — verified against llama.cpp 3173a5647), geometry from ggml-common.h static_asserts, ten codebook grids, and the 30 dispatch sites.
Status today: 8 types dequantize, 3 are sized only, 5 are merely named, 19 are missing (9 codebook, 2 ternary, 2 new affine Q1_0/Q2_0, 5 scalar, Q8_K).
A live gate already runs: qdc_dispatch_sites_match_oracle fails CI on any new raw-qtype match site or any row flipped to migrated: true before the site actually stopped matching.
Phase 1 design is in the spec (§2.4) — the table is built on GgmlQuantType, entries are plain data + fn pointers (not trait objects; QuantBlockFormat is not object-safe), hot kernels stay monomorphized. Owed for Phase 1: dispatch.rs, codebook_trait.rs, generated iq_grids.rs + its generator, the row-regeneration script, and the two remaining tests (PO-QDC-001/004).
Decisions for a human — one comment, from the PMAT-3427 research run (2026-09-17). Nothing of yours was moved, re-titled or re-scoped.
1. Placement conflict.#3423 puts PP-QUANT Phase 2/3 on the dedicated non-cadence milestone. The operator's session brief of 2026-09-17 says: "Alfredo's ticket is prioritized: PP-QUANT-001 is 0.69 must-carry" — a slice M that rides 0.69.0, with T-0 waiting for it (andon at 2026-09-20T06:35Z, 72 h after the actual v0.68.0 tag). Slice M is deliberately smaller than Phase 2: #3429 fixtures → #3430 one GgmlType + TRAITS[43] below core/compute/serve → #3431 reconciliation gate (builds on PR #3420's dispatch_contract_tests.rs) → #3432tensor_byte_size + single refusal site (fixes the #3091 reopen for all 35 ids, no new kernel). The per-directory retype tickets #3436–#3440 restate your Phase 2; they sit in 0.70.0 only as a placeholder and should fold into whichever placement stands. Needed: confirm slice M on 0.69.0 alongside #3423 owning the migration, or say otherwise.
2. A second defect class neither spec covers. 3 of the 5 crashes cited in #3418 are MoE placeholder tensors (byte_size: 0, qtype: 0 = F32) reaching dense consumers; all three fixes are guards, the placeholder is still built on main. Proposed as sibling epic #3428 (PP-TENSOR-001; T1 #3433, T2 #3434 on 0.69.0; T3 #3435 on 0.70.0). Evidence table in the PR #3420 review. Needed: accept as a sibling under #3418's umbrella, or fold into PP-ARCH-001.
3. #3091 is open in milestone 0.68.0, which shipped (open 2 / closed 93). Reproduced on the published 0.68.0 asset with a 338 MB public model. Human-authored, so not moved. Needed: move to 0.69.0 (its fix is #3432). Process ticket: #3445.
4. 0.69.0 cannot reach a clean T-0 as it stands[V]: 124 open one day before its due date — 109 with no linked PR, 1 with an open PR (#3204), 1 whose linked PR merged with the issue still open (#2753 → #2809), 3 epics, 10 minted today. Authors: noahgift 118, alfredodeza 5, guyernest 1. Every row's updatedAt is within 7 days, so that field measures triage edits, not work. Needed: an owner-level bulk slip of the no-PR rows to 0.70.0; this run moved only tickets it minted.
Full tables: docs/audits/impl-PMAT-3427-receipt.md in the docs PR for #3427.
Mapping — my per-directory retype tickets are closed into #3423 Phase 2 (operator decision 2026-09-17)
Alfredo's tickets win on duplicates, so #3436–#3440 are closed, the same way #3444 was closed into #3422. What each one measured, so nothing is lost when Phase 2 is planned. Counts are from a file:line scan of the 33-file union (PR #3420's dispatch_sites ∪ every non-test file naming a GGUF_TYPE_* constant), on origin/main @ 7eb81a531[V]:
acceleration.rs 13 ids, matmul*.rs 10, forward/* 3 — a tensor accepted by one path is refused by its neighbour; matmul_fused.rs and fused_matmul_into.rs hold 61 of the 231 sites
core GgmlType 12 ids (import path), compute 15; 38 Quant*/Ggml* enums in the workspace, 13 of them naming ≥ 5 ggml types
not in the spec's 30 sites — the contract's universe is aprender-serve only; the cross-crate part stays with #3430 (one enum below all three)
Scan summary: 231 code sites in 28 of the 33 files — 151 arm/reference, 54 .qtype ==/!= comparisons, 24 match, 2 bare-integer (matches!(qtype, 12..=14) in apr/cache.rs). The other 5 files of the union are not sites: 2 are whole-file test modules without "test" in their name (gguf/model_owned_quantized.rs, gguf/transformer_quantized_layer_field.rs) and 3 name a constant only in a comment or a const definition. That also corrects my earlier "27 files": 5 of them are not code sites, so it is 22 real + 6 found only by the spec's oracle = 28.
Still open under this epic from my run: slice M — #3429 → #3430 → #3431 → #3432 (0.69.0 must-carry, confirmed by the operator today), then #3441 tier-0 dequant, #3442 drift job, #3443 generated table (0.70.0).
0.69.0 — per-row verdict (124 open rows, read 2026-09-17). Verdicts only: nothing human-authored was moved.
Rule (operator, 2026-09-17): stay = must-carry, or a linked PR that can be green before the andon at 2026-09-20T06:35Z; otherwise remove the milestone (not → 0.70.0). Mechanical inputs: closedByPullRequestsReferences and each PR's check rollup [V]. A PR that mentions an issue without a closing keyword is invisible to this query — rows you know are in flight are yours to overrule.
stay, at risk — plan ticket for the must-carry; its PR was red on two defects of mine (roadmap fragments, a cited path), fix pushed as d76b4a417, CI pending; stays draft until a quorum reviews it
docs(plan): PP-QUANT-001 research + 0.69 must-carry slice M
Quorum status: did not start — STOP(rail), 2026-09-17. The three-lane review of Q1 (one GgmlType + TRAITS[43]), T1 (typed TensorStorage), T2 (sentinel ban) and X1 (ordering) cannot be dispatched under the plan ticket: the harness refuses it before any lane — kind-gate: kind=docs is not implemented … nothing was planned, dispatched, or written for PMAT-3427 (exit 3), model-gate: unsupported kind 'docs' (exit 2). I did not relabel the ticket or substitute my own review for a lane. So there is no verdict grid, and #3430, #3433, #3431, #3432, #3434 stay unstarted per the operator's instruction; #3429 and #3445 have no design dependency. The andon check at 2026-09-18T12:00Z stands: unless the harness gains a kind=docs route (or the quorum is run under a different ticket by the operator's decision) it will not have returned by then.
One measured input the quorum would have used, for whoever runs it: X1's falsifier is "carrier structs and raw-integer qtype sites overlap < 20 % ⇒ T1 and Q2 can run in parallel". Measured on 7eb81a531: 14 of 34 serve raw-integer sites (41 %) sit in a file that uses a tensor carrier — the falsifier does not fire, T1-before-Q2 stands on the evidence. Tables are in PR #3447's receipt.
Where the design review happens now (operator decision, 2026-09-17)
The plan ticket (PMAT-3427 / #3427) cannot host a quorum — the harness refuses kind=docs. Rather than relabel or bypass, the design quorum moves into each code ticket's own plan phase (kind=code is implemented). PMAT-3427 stays as is; draft PR #3447 stays draft until the harness gains a kind=docs route, then gets its own quorum.
ticket
when
what its plan quorum must rule on, before any code
Q1 and X1, from Tables S / E / B: resolve all 24 "keep?" enum rows to merge or keep(concept); home crate for GgmlType derived from cargo tree. No code until 3/3. Verdict grid gets posted on PR #3420.
T1 (and T2 for #3434), from Table T: 5 carriers, all can hold (len=0, qtype=0), zero validating constructors. First task: a call-site count via pmat query replacing the file-level "unguarded" regex.
first task: classify the 558 bare-integer lines ([U] today) — the gate needs that as its baseline
#3429 (fixtures), #3445 (T-0 re-reads the milestone)
now
no design dependency
X1 stands on measurement: 41 % of serve's raw-integer qtype sites sit in a file that uses a tensor carrier (file-level; falsifier was < 20 %) ⇒ T1 before Q2. Carried numbers are now in #3430's body: 231 dispatch sites in 28 files, 53 raw-integer fields/params.
This supersedes my earlier "quorum did not start" comment: the 2026-09-18T12:00Z check no longer applies to PMAT-3427; each code ticket's plan quorum has its own clock. Slice M's andon is unchanged — 2026-09-20T06:35Z.
The roadmap entries for these tickets were stuck in a draft PR; #3448 (entries only, auto-merge armed) puts them on main. Nobody needs to wait for it.kind-gate reads the roadmap in your working tree, so in a fresh branch off main:
Measured on a clean origin/main worktree for PMAT-3430: kind-gate exit 2 → exit 0. The fragment is byte-identical to the one in #3448, so it merges clean when #3448 lands; if roadmap.yaml conflicts, regenerate it with the same command.
Which model can run which ticket (model-gate, measured): PMAT-3430 and PMAT-3433 now carry orch:fable + orch-basis:M>=3 (core + compute + serve) — a Fable session is admitted. PMAT-3429 and PMAT-3445 have no basis for Fable and are Opus-class: launch those with /model opus, or a Fable session is refused at Phase 0.
Milestone triage — REVERT CSV (written before any milestone move)
Snapshot 2026-09-17, gh issue list/gh pr list --state open: 382 issues + 31 PRs = 413 rows. Empty old_milestone = none. Operator-authorized triage run; this is the first write of the run. To revert one row: gh issue edit <n> --milestone "<old>" (or --remove-milestone when empty).
PMAT-3430 plan quorum — history, v1–v4. Not 3/3. No v5 written; no code written.
Plan: docs/audits/impl-PMAT-3430-plan.md on branch PMAT-3430-one-ggml-type (draft PR linked below). Lanes: agy grillme, review-only, none in the author's model family (author fable-5-1). Every objection below was re-executed by the orchestrator before it was answered; two lane claims were refuted on re-run (lane 1 v1: "assoc-const alias works in patterns" — rustc E0308; lane 1 v1: "Q8_1 = 40, C struct has padding" — upstream static_assert says 36).
1. Grid
lane (model)
v1
v2
v3
v4
1 gemini-3.1-pro-high
FAIL
FAIL
FAIL
FAIL †
2 gemini-3.8-flash-high
FAIL
FAIL †
FAIL
FAIL †
3 gemini-3.7-flash-high
FAIL
PASS
PASS
PASS †
PASS count
0/3
1/3
1/3
1/3
reducer
partial
partial
clean
partial
† lane exited 3, LANE ISOLATION VIOLATED — a shared ref changed: the plan worktree shares a git dir with the main checkout, and other sessions moved refs during the lane window (v2: refs/remotes/origin/main; v4: refs/heads/PMAT-3445-t0-milestone-gate, refs/heads/PMAT-3451-ont-6-verdict-lattice, a merge-queue ref). Each lane's own clone was unaffected, but under the rail those verdicts are unclean — v3 is the only round with three clean lanes, and it was 1/3. v1's partial was 2 stderr lines per lane beyond workspace narration.
2. Every REJECT / AMEND reason, verbatim from the lane's findings[].claim, one tag each
Q1-c: Admission function fails to protect cross-crate passing. If serve admits IQ2XS and passes a TensorInfo to compute, it silently hits the wildcard and widens to returning zeros.
v1
1
Q1
docs/audits/impl-PMAT-3430-plan.md:58
Q1-d: gguf-py is authoritative for bytes-on-disk in a GGUF file. The TRAITS falsifier must compare against gguf-py (40), not the C struct sizeof (36).
PHASES (Phase 3): Scope path misses core files using GgmlType.
v1
1
plan mechanics
crates/aprender-serve/src/apr/mod.rs:324
PHASES (Phase 4): Scope path misses serve files using GgmlQuantType.
v1
2
Q1
docs/audits/impl-PMAT-3430-plan.md:56
compute's Bf16 becomes an associated const alias pub const Bf16: Self = Self::BF16 inside the quant crate — usable in expressions and patterns — so M1 touches no dispatch arm.
v1
2
Q1
docs/audits/impl-PMAT-3430-plan.md:57
M1 is behaviour-preserving: no crate accepts an id it refused before. Going from 12/15/16 to 35 variants would silently widen every match that ends in _ =>. So each crate keeps a thin, named admission function (supported(GgmlType) -> bool, one each in compute, core and serve) that reproduces its former id set exactly, and its parser calls it.
v1
2
Q1
docs/audits/impl-PMAT-3430-plan.md:46
pub const fn from_id(id: u32) -> Result<Self, GgmlTypeError>; ... serve's as_str/from_str_lossy/as_byte/Display move into the quant crate
v1
2
Q1
docs/audits/impl-PMAT-3430-plan.md:49
pub const fn tensor_bytes(self, n_elements: usize) -> Option; // checked: None on overflow or n % blck_size != 0
The ticket's falsifier says 'equals gguf-py for every shared id', which would bake in 40. Phase 2 must read both upstream files at 3173a5647 and the quorum is asked to rule (§2, Q1-d).
v1
3
Q1
docs/audits/impl-PMAT-3430-plan.md:56
Associated const alias pub const Bf16 triggers non_upper_case_globals compiler warning/error and does not work with glob imports (use GgmlType::*).
GgmlQuantType::from_id changing from Option to Result<Self, GgmlTypeError> breaks existing call sites such as .is_some() in loader_tests_apr.rs:311.
v1
3
Q1
crates/aprender-serve/src/apr/mod.rs:324
Non-GGUF callers of from_id, specifically TensorEntry::from_binary in apr/mod.rs:324, will silently admit new variants when from_id expands to 35 variants without going through the GGUF parser admission function.
v1
3
plan mechanics
docs/audits/impl-PMAT-3430-plan.md:99
Phase 2 acceptance command cargo test -p aprender-quant --lib ggml_type does not run integration tests in crates/aprender-quant/tests/ (declared in Phase 1 scope_paths).
v1
3
plan mechanics
docs/audits/impl-PMAT-3430-plan.md:101
Phase 4 acceptance command cargo test -p aprender-serve --lib gguf::types runs only 10 unit tests in types.rs and does not execute qwen3_moe_load.rs (#3405 QTYPE_LABELS removal) or loader_tests_apr.rs.
v2
1
Q1
docs/audits/impl-PMAT-3430-plan.md:59
The plan claims core: format/gguf/reader.rs is an id-to-enum boundary and will get an admission function.
v2
1
Q1
crates/aprender-core/src/format/gguf/types.rs:361
The plan fails to account for an existing exhaustive match on GgmlType in core that will become non-exhaustive.
v2
2
Q1
crates/aprender-core/src/format/gguf/types.rs:361
The plan assumes all matches on GgmlType across the tree have wildcard arms (_ =>) and only accounts for wildcard disposition. In reality, crates/aprender-core/src/format/gguf/types.rs:361 (GgufTensor::byte_size) is an EXHAUSTIVE match over core's 12 variants with NO wildcard arm. Re-exporting trueno_quant::GgmlType (35 variants) causes rustc compilation error E0004 (non-exhaustive patterns).
v2
2
Q1
docs/audits/impl-PMAT-3430-plan.md:45
The Section 2 leaf API code definition (lines 45-52) omits existing inherent methods (as_byte, as_str, from_str_lossy, block_bytes, block_size) and trait impl Display, causing existing callers across aprender-serve and aprender-compute to fail compilation if implemented from the code block as written.
Section 2 Q1-c claims 'core: format/gguf/reader.rs' is an id-to-enum boundary where u32 becomes GgmlType and prescribes an admission function admitted_from_id there. In reality, format/gguf/reader.rs and reader_parsing.rs store raw dtype: u32 in GgufTensorMeta and never convert u32 to GgmlType. Core has no id-to-enum boundary.
Section 2 Q1-f states '#3405's private QTYPE_LABELS (13 rows, crates/aprender-serve/src/gguf/qwen3_moe_load.rs:90) is replaced by TRAITS[id].name in this ticket'. In qwen3_moe_load.rs:107, qtype_label(qtype: u32) accepts arbitrary u32. Direct array indexing TRAITS[id] will panic with out-of-bounds on any qtype >= 43.
v3
2
Q1
docs/audits/impl-PMAT-3430-plan.md:45
Section 2 code block claims to be the complete leaf API, but omits #[must_use] on methods returning values. Under aprender-quant's Cargo.toml lints (pedantic = warn), cargo clippy -p aprender-quant --lib -- -D warnings fails with clippy::must_use_candidate on every method.
v3
2
Q1
docs/audits/impl-PMAT-3430-plan.md:40
Auxiliary types GgmlFamily, QuantTraits, and GgmlTypeError in Section 2 lack derive attributes. Without #[derive(Debug, Clone, Copy, PartialEq, Eq)], Phase 2 test assertions like assert_eq!(GgmlType::try_from_id(4), Err(GgmlTypeError::Removed { .. })) fail compilation, and GgmlTypeError lacks Display/Error trait implementations.
v3
2
Q1
docs/audits/impl-PMAT-3430-plan.md:59
checked_tensor_bytes is declared as pub const fn, but block_size(&self) and block_bytes(&self) are declared as non-const pub fn. In Rust, a const fn cannot call non-const methods, causing E0015 if checked_tensor_bytes delegates to them.
v3
2
plan mechanics
docs/audits/impl-PMAT-3430-plan.md:69
Phase 1 characterization tests cannot call compute's private from_u32 and pass unchanged in Phase 3, because in Phase 3 compute re-exports trueno_quant::GgmlType (which lacks from_u32) and replaces from_u32 with admitted_from_id, causing E0599 in Phase 3.
v3
2
plan mechanics
docs/audits/impl-PMAT-3430-plan.md:110
Phase 1 scope_paths specifies crates/aprender-serve/src/gguf/tests/ and crates/aprender-compute/src/inference/, but compute's from_u32 in gguf.rs and serve's apr_qtype_to_dtype / apr_dtype_to_byte in dtype.rs are private (fn). External test files in those directories cannot call them without editing gguf.rs and dtype.rs to make them pub(crate), which is not explicit in Phase 1 scope.
v3
1
Q1
(summary; this lane's findings carried no fix)
First, fixing the Q4_1 byte_size calculation (18->20) within this refactoring violates the behavior-preserving invariant of M1 and must be landed as a separate PR first.
v3
1
Q1
(summary)
Second, moving the enum to aprender-quant without doc comments will fail the crate's existing #![warn(missing_docs)] lint, though it does pass non_camel_case_types.
v4
1
plan mechanics
crates/aprender-serve/src/apr/mod.rs:324
serve's boundary functions (gguf/dtype.rs, infer/mod.rs:39, apr/mod.rs:324, apr/special_tokens.rs:210, apr/dequant.rs:235) keep their names and signatures
v4
1
plan mechanics
Makefile:1129
Phase 1 scope_paths cover the creation and wiring of contracts/ggml-type-v1.yaml
v4
2
plan mechanics
crates/aprender-serve/src/apr/mod.rs:324
apr/mod.rs:324 is a boundary function that keeps its name and signature and can be called directly by Phase 1 characterization tests
v4
2
plan mechanics
crates/aprender-serve/src/infer/mod.rs:38
infer/mod.rs:39 is a boundary function that keeps its name and signature
v4
2
plan mechanics
contracts/census.json:5
Adding contracts/ggml-type-v1.yaml requires regenerating contracts/census.json and synchronizing README.md, but both are omitted from scope_paths
v4
2
plan mechanics
README.md:44
README.md contract count is checked for exact equality by scripts/readme_sync.sh --check during make contracts, which fails upon adding a new contract unless updated
v4
2
plan mechanics
ci/explicit-test-commands.d:1
crates/aprender-quant/tests/ integration tests are not executed in CI unless an explicit command fragment is added under ci/explicit-test-commands.d/
v4
2
plan mechanics
.github/workflows/ci.yml:938
The plan asserts in Phase 5 and line 122 that the guard check_one_ggml_type_enum.sh must be wired into a CI selection line in .github, but no such selection line exists (ci.yml dispatches via scripts/guard_tree.sh --no-cargo)
Counts by tag: Q1 (enum + TRAITS design) 21 · plan mechanics 16 · Table E resolutions 2 · home crate 0 · X1 ordering 0. aprender-quant as home was called sound by every lane in every round; no lane contradicted X1; Table E drew one flip (KvQuantType, lane 1, v1 only) and one path-format note.
3. Objections that repeated across rounds
No objection came back in the same words — each round's specific was re-run, answered, and not raised again. But three objection classes survived two or more rounds, each time with a new instance the previous revision had not found:
class
tag
rounds
instances
A. The §2 leaf API does not match the surface existing call sites use
Q1
v1, v2, v3
v1: from_id → Result and tensor_bytes → Option break callers · v2: block omits as_byte as_str from_str_lossy block_bytes block_size Display · v3: aux types lack derives, const fn calls non-const, must_use/missing_docs under the crate's lint table
B. The list of id→enum / name→enum admission boundaries is wrong
Q1
v1, v2, v4
v1: gated the GGUF parser only, apr/mod.rs:324 + 5 more bypass it · v2: listed core reader.rs, which keeps u32 raw — core has no boundary · v4: apr/mod.rs:324 is an inline match inside TensorEntry::from_binary, not a callable "boundary function that keeps its name"
C. scope_paths / acceptance commands miss files or cannot fail
plan mechanics
v1, v3, v4
v1: Phase 3/4 scopes miss core format/ siblings, serve apr/infer/; gguf::types filter exercises 0 sites · v3: Phase 1 scope omits serve gguf/dtype.rs; tests on private from_u32 break in Phase 3 · v4: contracts/census.json, README.md:44 (1791→1792), ci/explicit-test-commands.d/, Makefile CONTRACTS are outside every phase's scope; "CI selection line" does not exist (guards auto-dispatch via guard_tree.sh --no-cargo)
Read against the operator's rule: A and B are tagged Q1 and each survived three rounds — by that rule they are design findings, not wording. What they have in common: the plan keeps trying to make M1 source-compatible and behaviour-preserving at every existing call site while replacing three enums with one 35-variant enum, and each round finds one more site where that promise needs another special case (an alias, an Option-returning twin, a surviving free function, a per-crate ADMITTED set, an inline match that is not a function). The lanes never disputed the target (one enum, TRAITS[43], in aprender-quant); they dispute that the compatibility shim can be specified completely in advance. C is the same thing seen from the phase table.
Found on the orchestrator's re-runs, not by any lane — both stand regardless of the ruling:
core GgufTensor::byte_size (crates/aprender-core/src/format/gguf/types.rs:365) sizes Q4_1 at 18 bytes/block; upstream is 20. Latent export-size defect, to be filed and fixed on its own.
Q8_1: ggml C static_assert = 36, gguf-py GGML_QUANT_SIZES = 40 at llama.cpp 3173a56471c1753650cd806694145ffd6dcace67. The ticket's falsifier ("equals gguf-py for every shared id") cannot be met as worded.
Decision requested: rule on A/B — e.g. accept a compatibility shim specified by characterization tests rather than by enumeration, or drop source-compatibility from M1 and let the compiler enumerate the sites. Andon stands: 3/3 by 2026-09-18T12:00Z or the ticket is pulled. No code before 3/3.
🤖 Posted by the PMAT-3430 Claude Code session (fable-5-1). The "stop revising, report the history" instruction reached this session relayed by another session, not typed here; the ruling requested above is the operator's.
Capacity C = 29 [V] — median merged PRs per train over the last 3 tags: v0.66.0 29 · v0.67.0 25 · v0.68.0 99 (gh pr list --state merged --search 'merged:>=2026-09-04', bucketed by tag commit dates 09-04T21:35Z / 09-10T04:55Z / 09-13T06:29Z / 09-17T06:35Z). 0.69.0 cap = min(C,25) = 25. Note the 99 is an outlier train (4 days, slipped 2 days past the 09-15 due date); the median ignores it.
Milestones 0.71.0 / 0.72.0 / 0.73.0 created, due 09-24 / 09-27 / 09-30 (the 3-day step of 0.69.0→0.70.0 continued). Departures from 06x-release-schedule.md on origin/main: v0.68.0 tagged 09-17T06:35Z vs planned 09-15T06:00Z; 0.69.0 milestone still says due 09-18 while the working deadline is 09-20T06:35Z; existing due dates not edited.
Open counts per milestone, before → after [V]
milestone
before
after
0.68.0
2
1
0.69.0
127
25
0.70.0
238
29
0.71.0
0
29
0.72.0
0
29
0.73.0
0
304
APR-CLUSTER-001
8
0
Inference dispatch & architecture consolidation
2
0
(none)
40
0
Total open: 417 (413 at snapshot + #3452#3453#3454#3455 opened mid-run and folded in; their revert rows: 3452,pr,(none) · 3453,issue,(none) · 3454,issue,0.70.0 unchanged · 3455,pr,0.69.0 unchanged). After-counts re-read from gh api …/milestones match the plan exactly; zero tickets ahead of a blocker (checked over the edge list below).
Admit AutoGluon 1.6.3 to CRUX as category O: 24 DRAFT contracts crux-O
Tier 3 reasons: #3205+#3204 (P0, linked PR, mini CI leg) · #3395+#3401 (P0, linked PR red only on present; blocks the 24 CRUX-O children) · #3161 (P1, publish-gate, S: add LICENSE-APACHE) · #3170 (P1, root cause stated, S) · #2730#2765#3258 (P0, mechanism stated, M). #3452 and #3455 were opened mid-run and attached to Tier 1 (M1 plan PR; the fix PR for #3445), which pushed #3271 and #3005 (EV 0.9) to 0.70.0 to hold the cap.
Flag:#3422#3423#3424 were moved out of Alfredo's dedicated no-deadline milestone Inference dispatch & architecture consolidation (now empty, left open) per the run's rule; his #3423 body argues explicitly for keeping them off the cadence. One-line revert is in the CSV.
apr eval --task: 8 of 10 dispatch arms are reachable but undocumented
Load vs capacity, 0.70–0.73
Load 391 vs capacity 4×C = 116 → 3.4× over. 0.70.0 29 · 0.71.0 29 · 0.72.0 29 · 0.73.0 304 = 29 by EV + 275 overflow (flagged in the CSV why column; no label applied — relabeling was out of scope). At C=29/train the open backlog is ~14 trains deep before any new arrivals; arrival during this 90-minute run was 4.
Stale (>90 d no activity, no repro): 0 [V] — oldest updatedAt is 2026-08-22 (the CLUS-00x set).
ci_queue_steward.sh defaults to the first open milestone by title — that is 0.66.0 (open, 0 items).
EV inputs
impact: priority label [V]; ×2 user-reported crash/refusal with repro — applied to #3038#3090#3091#3075#3076 [A]; +1 per blocked open ticket, max 3, from the edge list [V where the body/title states it, A otherwise]; ×1.5 release-gate/Qwen2.5 proof line by title keyword [A]. P: 0.9/0.6 from closingIssuesReferences + check rollup [V] (only PR #2794 is fully green; present-only red scored 0.6); 0.4 when the body states a root cause/mechanism (regex) [V-regex]; else 0.2. cost S/M/L: title/label heuristic plus 13 hand overrides, all [A]. Ties: gate flag, then already-in-0.69.0, then lower number. A PR and the open issues it closes move as one unit.
Blocker edges used: #3430→#3432#3433#3441#3442#3443#3077 · #3433→#3434#3435 · #3443→#3077 · #3045→#2908 · #3015→#2892 · #3147→#3148#3156#3158 · #3149→#3155 · #3150→#3168 · #3401→#3371–#3394 · #3418→#3422#3424 · #3091→#3090#3038. Quant/dispatch/MoE-loader set held to 0.70.0+ [A]: #2567#2604#2605#2611#2880#3332#3453 + the pre-slotted Phase 2 rows.
full plan CSV (417 rows)
number,kind,old,new,why,ev,impact,p,cost2307,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2349,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2373,issue,0.69.0,0.70.0,T4 EV order,0.6,12.0,0.4,L2378,issue,0.69.0,0.72.0,T4 EV order,0.4,8,0.4,L2463,issue,0.69.0,0.73.0,T4 overflow,0.067,1,0.2,M2464,issue,0.69.0,0.73.0,T4 overflow,0.067,1,0.2,M2470,issue,0.69.0,0.73.0,T4 overflow,0.067,1,0.2,M2473,issue,0.69.0,0.73.0,T4 overflow,0.133,1,0.4,M2477,issue,0.69.0,0.73.0,T4 overflow,0.067,1,0.2,M2482,issue,0.69.0,0.73.0,T4 overflow,0.067,1,0.2,M2492,issue,0.69.0,0.73.0,T4 overflow,0.067,1,0.2,M2494,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2500,issue,0.69.0,0.73.0,T4 overflow,0.133,1,0.4,M2503,issue,0.69.0,0.73.0,T4 overflow,0.1,4,0.2,L2507,issue,0.69.0,0.73.0,T4 overflow,0.067,1,0.2,M2526,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2530,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2556,issue,0.69.0,0.73.0,T4 overflow,0.15,6.0,0.2,L2557,issue,0.69.0,0.71.0,T4 EV order,0.533,4,0.4,M2567,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2572,issue,0.69.0,0.73.0,T4 overflow,0.067,1,0.2,M2582,issue,0.69.0,0.72.0,T4 EV order,0.3,6.0,0.4,L2584,issue,0.69.0,0.70.0,T4 EV order,0.8,4,0.2,S2585,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2586,issue,0.69.0,0.71.0,T4 EV order,0.533,4,0.4,M2590,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2591,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2592,issue,APR-CLUSTER-001,0.73.0,T4 overflow,0.067,1,0.2,M2593,issue,APR-CLUSTER-001,0.73.0,T4 overflow,0.067,1,0.2,M2594,issue,APR-CLUSTER-001,0.73.0,T4 overflow,0.067,1,0.2,M2595,issue,APR-CLUSTER-001,0.73.0,T4 overflow,0.067,1,0.2,M2596,issue,APR-CLUSTER-001,0.73.0,T4 overflow,0.067,1,0.2,M2597,issue,APR-CLUSTER-001,0.73.0,T4 overflow,0.067,1,0.2,M2598,issue,APR-CLUSTER-001,0.73.0,T4 overflow,0.2,1,0.2,S2599,issue,APR-CLUSTER-001,0.73.0,T4 overflow,0.133,1,0.4,M2604,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2605,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2610,issue,0.69.0,0.73.0,T4 overflow,0.133,2,0.2,M2611,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2614,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M2615,issue,0.69.0,0.73.0,T4 overflow,0.133,2,0.2,M2616,issue,0.69.0,0.70.0,T4 EV order,0.8,2,0.4,S2630,issue,0.69.0,0.72.0,T4 EV order,0.533,4,0.4,M2639,issue,0.70.0,0.73.0,T4 overflow,0.267,4,0.2,M2646,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2648,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2653,issue,0.69.0,0.73.0,T4 overflow,0.1,4,0.2,L2655,issue,0.70.0,0.73.0,T4 overflow,0.267,2,0.4,M2661,issue,0.69.0,0.72.0,T4 EV order,0.533,8,0.2,M2663,issue,0.69.0,0.72.0,T4 EV order,0.4,6.0,0.2,M2664,issue,0.69.0,0.72.0,T4 EV order,0.533,4,0.4,M2674,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2693,issue,0.69.0,0.72.0,T4 EV order,0.533,4,0.4,M2694,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2695,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2697,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2699,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2701,issue,0.69.0,0.70.0,T4 EV order,0.8,12.0,0.2,M2704,issue,0.69.0,0.73.0,T4 overflow,0.1,4,0.2,L2728,issue,0.70.0,0.73.0,T4 overflow,0.075,1.5,0.4,L2730,issue,0.69.0,0.69.0,T3 EV fill,1.067,8,0.4,M2731,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2732,issue,0.69.0,0.72.0,T4 EV order,0.533,4,0.4,M2735,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2750,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2751,issue,0.69.0,0.72.0,T4 EV order,0.533,4,0.4,M2753,issue,0.69.0,0.72.0,T4 EV order,0.533,8,0.2,M2756,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2757,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2761,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2765,issue,0.69.0,0.69.0,T3 EV fill,1.067,8,0.4,M2766,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2770,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2775,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2779,issue,0.69.0,0.73.0,T4 EV order,0.267,4,0.2,M2782,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S2784,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M2787,issue,0.70.0,0.71.0,T4 EV order,0.2,1,0.6,M2790,issue,0.69.0,0.72.0,T4 EV order,0.533,8,0.2,M2792,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M2794,pr,0.70.0,0.70.0,T4 EV order,0.9,1,0.9,S2797,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M2798,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M2800,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S2801,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S2808,issue,0.70.0,0.73.0,T4 overflow,0.267,4,0.2,M2810,issue,0.69.0,0.73.0,T4 overflow,0.067,1,0.2,M2812,issue,0.70.0,0.72.0,T4 EV order,0.533,4,0.4,M2814,issue,0.70.0,0.73.0,T4 overflow,0.267,2,0.4,M2815,issue,0.69.0,0.72.0,T4 EV order,0.533,8,0.2,M2816,issue,0.69.0,0.73.0,T4 overflow,0.2,4,0.4,L2817,issue,0.69.0,0.72.0,T4 EV order,0.533,8,0.2,M2818,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M2819,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M2822,issue,0.69.0,0.72.0,T4 EV order,0.533,4,0.4,M2826,issue,0.70.0,0.73.0,T4 overflow,0.133,1,0.4,M2828,issue,0.69.0,0.72.0,T4 EV order,0.533,4,0.4,M2830,issue,0.69.0,0.72.0,T4 EV order,0.533,4,0.4,M2832,issue,0.69.0,0.73.0,T4 overflow,0.1,4,0.2,L2834,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M2835,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2844,issue,0.69.0,0.72.0,T4 EV order,0.533,4,0.4,M2846,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M2853,issue,0.69.0,0.72.0,T4 EV order,0.533,8,0.2,M2855,issue,0.69.0,0.73.0,T4 overflow,0.133,1,0.4,M2856,issue,0.69.0,0.73.0,T4 overflow,0.025,1,0.2,L2870,issue,0.69.0,0.72.0,T4 EV order,0.533,4,0.4,M2876,issue,0.69.0,0.72.0,T4 EV order,0.4,8,0.4,L2877,issue,0.69.0,0.73.0,T4 overflow,0.2,4,0.4,L2878,issue,0.69.0,0.73.0,T4 overflow,0.2,4,0.4,L2879,issue,0.69.0,0.72.0,T4 EV order,0.4,8,0.4,L2880,issue,0.70.0,0.73.0,T4 overflow,0.05,1,0.4,L2881,issue,0.69.0,0.73.0,T4 overflow,0.1,4,0.2,L2882,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2883,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2884,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2885,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2886,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2887,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2888,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2889,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2890,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2891,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2892,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2893,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2894,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2896,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2897,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2898,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2899,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2900,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S2901,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S2902,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2903,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2904,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2905,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2906,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S2907,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2908,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M2909,issue,0.70.0,0.73.0,T4 EV order,0.3,1.5,0.2,S2910,issue,0.70.0,0.73.0,T4 EV order,0.3,1.5,0.2,S2911,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2912,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S2913,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2914,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2915,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2916,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2917,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2918,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2919,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2920,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M2921,issue,0.70.0,0.73.0,T4 overflow,0.133,1,0.4,M2922,issue,0.70.0,0.73.0,T4 overflow,0.133,1,0.4,M2923,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M2924,issue,0.70.0,0.73.0,T4 overflow,0.038,1.5,0.2,L2925,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M2926,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M2927,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M2928,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2929,issue,0.70.0,0.73.0,T4 EV order,0.3,1.5,0.2,S2930,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M2931,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L2932,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M2933,issue,0.70.0,0.73.0,T4 EV order,0.3,1.5,0.2,S2934,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S2935,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S2936,issue,0.70.0,0.73.0,T4 EV order,0.3,1.5,0.2,S2937,issue,0.70.0,0.73.0,T4 EV order,0.3,1.5,0.2,S2938,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S2939,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2940,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2941,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L2942,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2943,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2944,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2945,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2946,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L2947,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2948,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2949,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M2950,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2951,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2952,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2953,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2954,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2955,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2956,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M2957,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S2958,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2959,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2960,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L2961,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L2962,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L2963,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L2964,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L2965,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L2966,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L2967,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L2968,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L2969,issue,0.70.0,0.73.0,T4 overflow,0.038,1.5,0.2,L2970,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L2972,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2973,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2974,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2975,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2976,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2977,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2978,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2979,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L2980,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2983,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2984,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2986,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2988,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2989,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2990,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2991,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2992,issue,0.70.0,0.73.0,T4 EV order,0.3,1.5,0.2,S2993,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2994,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S2995,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2996,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2997,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M2998,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S2999,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3001,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3002,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L3005,pr,0.70.0,0.70.0,T4 EV order,0.9,1.5,0.6,S3013,issue,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3014,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3015,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3016,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3018,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3019,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M3021,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3023,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M3029,issue,0.70.0,0.73.0,T4 overflow,0.133,1,0.4,M3034,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M3038,issue,0.69.0,0.70.0,T2 Alfredo -> 0.70.0 top,0.2,8,0.2,L3042,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3043,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S3045,issue,0.70.0,0.73.0,T4 overflow,0.2,3.0,0.2,M3054,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S3055,issue,0.69.0,0.73.0,T4 overflow,0.067,1,0.2,M3058,issue,0.70.0,0.73.0,T4 overflow,0.038,1.5,0.2,L3062,issue,0.70.0,0.73.0,T4 overflow,0.025,1,0.2,L3067,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3075,issue,0.70.0,0.70.0,T2 Alfredo -> 0.70.0 top,0.267,2,0.4,M3076,issue,0.69.0,0.70.0,T2 Alfredo -> 0.70.0 top,1.067,8,0.4,M3077,issue,0.70.0,0.70.0,T2 Alfredo -> 0.70.0 top,0.6,3.0,0.2,S3079,issue,0.70.0,0.70.0,pre-slotted 0.70.0,0.038,1.5,0.2,L3080,issue,0.69.0,0.69.0,0.69.0 train epic,0.038,1.5,0.2,L3081,issue,0.70.0,0.70.0,pre-slotted 0.70.0,0.038,1.5,0.2,L3090,issue,0.69.0,0.70.0,T2 Alfredo -> 0.70.0 top,0.4,8,0.4,L3091,issue,0.68.0,0.70.0,T2 Alfredo -> 0.70.0 top,0.75,10,0.6,L3111,issue,0.69.0,0.72.0,T4 EV order,0.533,8,0.2,M3117,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3129,issue,0.70.0,0.72.0,T4 EV order,0.4,2,0.2,S3132,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3133,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3134,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3135,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S3140,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3141,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3142,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3143,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3144,issue,0.70.0,0.73.0,T4 overflow,0.05,1,0.4,L3146,issue,0.69.0,0.73.0,T4 overflow,0.2,8,0.2,L3147,issue,0.69.0,0.73.0,T4 EV order,0.275,11,0.2,L3148,issue,0.69.0,0.73.0,T4 EV order,0.3,12.0,0.2,L3149,issue,0.69.0,0.73.0,T4 overflow,0.225,9,0.2,L3150,issue,0.69.0,0.73.0,T4 overflow,0.225,9,0.2,L3151,issue,0.69.0,0.70.0,T4 EV order,0.8,6.0,0.4,M3152,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M3153,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M3154,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M3155,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3156,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3157,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3158,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3159,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3161,issue,0.69.0,0.69.0,T3 EV fill,2.4,6.0,0.4,S3165,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M3166,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3167,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3168,issue,0.70.0,0.73.0,T4 overflow,0.267,2,0.4,M3170,issue,0.69.0,0.69.0,T3 EV fill,1.6,4,0.4,S3171,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M3172,issue,0.69.0,0.73.0,T4 overflow,0.267,2,0.4,M3173,issue,0.69.0,0.73.0,T4 overflow,0.133,2,0.2,M3174,issue,0.69.0,0.72.0,T4 EV order,0.4,3.0,0.4,M3176,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3177,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M3178,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M3179,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M3180,issue,0.70.0,0.73.0,T4 overflow,0.2,3.0,0.2,M3181,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3182,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3183,issue,0.70.0,0.73.0,T4 overflow,0.2,3.0,0.2,M3184,issue,0.70.0,0.73.0,T4 overflow,0.133,2,0.2,M3190,issue,0.70.0,0.73.0,T4 overflow,0.267,2,0.4,M3202,pr,0.70.0,0.70.0,T4 EV order,0.9,1.5,0.6,S3203,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M3204,issue,0.69.0,0.69.0,T3 EV fill,1.6,8,0.6,M3205,pr,0.70.0,0.69.0,T3 EV fill,4.8,8,0.6,S3206,issue,0.70.0,0.70.0,T4 EV order,0.3,1.5,0.6,M3207,pr,0.70.0,0.70.0,T4 EV order,0.9,1.5,0.6,S3217,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S3218,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3226,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3231,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S3234,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3235,issue,0.70.0,0.71.0,T4 EV order,0.2,1,0.6,M3236,issue,0.70.0,0.71.0,T4 EV order,0.2,1,0.6,M3239,issue,0.70.0,0.71.0,T4 EV order,0.2,1,0.6,M3242,issue,0.70.0,0.71.0,T4 EV order,0.2,1,0.6,M3245,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3246,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3248,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3249,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3251,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M3252,issue,0.69.0,0.72.0,T4 EV order,0.533,8,0.2,M3254,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3255,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3258,issue,0.69.0,0.69.0,T3 EV fill,1.067,8,0.4,M3259,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3260,pr,0.70.0,0.71.0,T4 EV order,0.9,1.5,0.6,S3261,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S3263,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3264,pr,0.70.0,0.70.0,T4 EV order,0.9,1.5,0.6,S3269,issue,0.70.0,0.73.0,T4 overflow,0.15,6.0,0.2,L3271,pr,0.69.0,0.70.0,T4 EV order,0.9,1.5,0.6,S3273,pr,0.69.0,0.71.0,T4 EV order,0.6,1,0.6,S3275,issue,0.70.0,0.73.0,T4 overflow,0.267,2,0.4,M3279,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3282,issue,0.70.0,0.73.0,T4 overflow,0.133,1,0.4,M3283,issue,0.70.0,0.73.0,T4 overflow,0.1,1.5,0.2,M3284,issue,0.70.0,0.73.0,T4 overflow,0.133,1,0.4,M3286,issue,0.70.0,0.73.0,T4 overflow,0.2,1,0.2,S3287,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3291,issue,0.70.0,0.73.0,T4 overflow,0.133,1,0.4,M3293,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3298,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3304,issue,,0.73.0,T4 overflow,0.067,1,0.2,M3306,issue,,0.73.0,T4 overflow,0.267,4,0.2,M3324,issue,0.70.0,0.73.0,T4 overflow,0.067,1,0.2,M3328,issue,0.69.0,0.72.0,T4 EV order,0.533,4,0.4,M3330,issue,0.69.0,0.73.0,T4 overflow,0.267,4,0.2,M3332,issue,0.70.0,0.72.0,T4 EV order,0.4,2,0.2,S3338,issue,0.70.0,0.71.0,T4 EV order,0.2,1,0.6,M3343,issue,0.70.0,0.73.0,T4 overflow,0.133,1,0.4,M3344,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3345,issue,0.70.0,0.73.0,T4 overflow,0.2,1.5,0.4,M3346,issue,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3349,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3350,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3351,pr,0.70.0,0.71.0,T4 EV order,0.6,1,0.6,S3353,issue,,0.73.0,T4 overflow,0.067,1,0.2,M3370,issue,,0.73.0,T4 overflow,0.2,8,0.2,L3371,issue,,0.73.0,T4 overflow,0.2,8,0.2,L3372,issue,,0.73.0,T4 overflow,0.2,8,0.2,L3373,issue,,0.73.0,T4 overflow,0.2,8,0.2,L3374,issue,,0.73.0,T4 overflow,0.2,8,0.2,L3375,issue,,0.73.0,T4 overflow,0.2,8,0.2,L3376,issue,,0.73.0,T4 overflow,0.267,4,0.2,M3377,issue,,0.72.0,T4 EV order,0.533,4,0.4,M3378,issue,,0.73.0,T4 overflow,0.2,8,0.2,L3379,issue,,0.73.0,T4 overflow,0.2,8,0.2,L3380,issue,,0.73.0,T4 overflow,0.267,4,0.2,M3381,issue,,0.73.0,T4 overflow,0.267,4,0.2,M3382,issue,,0.73.0,T4 overflow,0.2,3.0,0.2,M3383,issue,,0.73.0,T4 overflow,0.133,2,0.2,M3384,issue,,0.73.0,T4 overflow,0.267,4,0.2,M3385,issue,,0.73.0,T4 overflow,0.133,2,0.2,M3386,issue,,0.73.0,T4 overflow,0.133,2,0.2,M3387,issue,,0.73.0,T4 overflow,0.267,4,0.2,M3388,issue,,0.73.0,T4 overflow,0.133,2,0.2,M3389,issue,,0.73.0,T4 overflow,0.2,8,0.2,L3390,issue,,0.73.0,T4 overflow,0.2,8,0.2,L3391,issue,,0.73.0,T4 overflow,0.267,4,0.2,M3392,issue,,0.73.0,T4 overflow,0.133,2,0.2,M3393,issue,,0.73.0,T4 overflow,0.267,4,0.2,M3394,issue,,0.73.0,T4 overflow,0.267,4,0.2,M3395,pr,,0.69.0,T3 EV fill,4.8,8,0.6,S3397,issue,,0.73.0,T4 overflow,0.067,1,0.2,M3398,issue,,0.73.0,T4 overflow,0.2,1,0.2,S3399,issue,,0.73.0,T4 overflow,0.2,1,0.2,S3400,issue,,0.73.0,T4 overflow,0.133,1,0.4,M3401,issue,,0.69.0,T3 EV fill,0.825,11,0.6,L3413,issue,,0.70.0,T2 Alfredo -> 0.70.0 top,0.533,8,0.2,M3416,issue,0.69.0,0.73.0,T4 overflow,0.2,1.5,0.4,M3418,issue,0.69.0,0.69.0,T1 slice M must-carry,1.8,9.0,0.6,M3420,pr,,0.69.0,T1 slice M must-carry,0.6,1,0.6,S3421,issue,0.69.0,0.69.0,T1 slice M must-carry,0.038,1.5,0.2,L3422,issue,Inference dispatch & architecture consolidation,0.70.0,T2 Alfredo -> 0.70.0 top,0.1,4,0.2,L3423,issue,Inference dispatch & architecture consolidation,0.70.0,T2 Alfredo -> 0.70.0 top,0.025,1,0.2,L3424,pr,,0.70.0,T2 Alfredo -> 0.70.0 top,0.6,1,0.6,S3428,issue,0.69.0,0.69.0,T1 slice M must-carry,0.1,4,0.2,L3429,issue,0.69.0,0.69.0,T1 slice M must-carry,0.533,4,0.4,M3430,issue,0.69.0,0.69.0,T1 slice M must-carry,0.933,7,0.4,M3431,issue,0.69.0,0.69.0,T1 slice M must-carry,0.533,4,0.4,M3432,issue,0.69.0,0.69.0,T1 slice M must-carry,0.533,4,0.4,M3433,issue,0.69.0,0.69.0,T1 slice M must-carry,0.8,6,0.4,M3434,issue,0.69.0,0.69.0,T1 slice M must-carry,0.533,4,0.4,M3435,issue,0.70.0,0.70.0,pre-slotted 0.70.0,0.267,2,0.4,M3441,issue,0.70.0,0.70.0,pre-slotted 0.70.0,0.267,2,0.4,M3442,issue,0.70.0,0.70.0,pre-slotted 0.70.0,0.267,2,0.4,M3443,issue,0.70.0,0.70.0,pre-slotted 0.70.0,1.2,3,0.4,S3445,issue,0.69.0,0.69.0,T1 slice M must-carry,1.2,6.0,0.6,M3446,issue,0.69.0,0.69.0,T1 slice M must-carry,0.6,3.0,0.2,S3447,pr,0.69.0,0.69.0,T1 slice M must-carry,2.4,4,0.6,S3450,pr,0.68.0,0.68.0,0.68.1 bump PR - autopilot waits on it,0.9,1.5,0.6,S3451,issue,,0.73.0,T4 overflow,0.067,1,0.2,M3452,pr,,0.69.0,T1 slice M must-carry,0.6,1,0.6,S3453,issue,,0.73.0,T4 overflow,0.133,2,0.2,M3454,issue,0.70.0,0.70.0,pre-slotted 0.70.0,0.1,1.5,0.2,M3455,pr,0.69.0,0.69.0,T1 slice M must-carry,3.6,6.0,0.6,S
milestone → 0.74.0 per docs/roadmaps/milestone-triage-2026-09-23.md (#4024), operator approval 2026-09-23 (relayed by aprender-cf). Reason: PP-QUANT epic: #4001 moves it from 0.73's enablers to 0.74's core
milestone REVERTED to 0.70.0 (its state before #4024's move). The quorum on #4024 found this issue is named as must-carry by #3999 and #4001, and the table's own rule says such an issue is an operator DECIDE, never placed by the author. It was moved in error. It is now listed on #3998 as a pending decision: 0.73.0/0.74.0. No new placement was made.
milestone → 0.74.0, applying the operator's decision on #3999 (2026-09-23 10:43Z): "PP-QUANT (#3421/#3420), PP-ARCH (#3424) and PP-TENSOR (#3428) move to 0.74's epic as its core; 0.73 stays pure performance parity with llama.cpp." Nothing later in the thread reverses it. My earlier revert applied the table's 'two epics name it → DECIDE' rule mechanically, while the operator had already decided. #3999's body still lists these rows and is stale. (#4024 quorum round 11.)
Superseded by EPIC E7 #4001 (APR-EPIC-001 A4). Open children re-parented: none. Owner lines copied to the absorbing epic's body. Applied by aprender-d1: claude+agy both said close, apr shadow row recorded (handoff/close-quorum-2026-09-25.json).
Activity
alfredodeza commentedon Sep 17, 2026
Phase 0 — Inventory: done in PR #3420 (pending review/merge).
contracts/quant-dispatch-completeness-v1.yamlis the single enumeration: 35 live ggml tensor types (ids 0–42, 8 removed,type_count43 — verified against llama.cpp3173a5647), geometry fromggml-common.hstatic_asserts, ten codebook grids, and the 30 dispatch sites.qdc_dispatch_sites_match_oraclefails CI on any new raw-qtypematch site or any row flipped tomigrated: truebefore the site actually stopped matching.Phase 1 design is in the spec (§2.4) — the table is built on
GgmlQuantType, entries are plain data +fnpointers (not trait objects;QuantBlockFormatis not object-safe), hot kernels stay monomorphized. Owed for Phase 1:dispatch.rs,codebook_trait.rs, generatediq_grids.rs+ its generator, the row-regeneration script, and the two remaining tests (PO-QDC-001/004).docs(spec): PP-QUANT-001 — cross-link downstream PP-ARCH-001, close o…
[-]EPIC: PP-QUANT-001 — quant-type dispatch consolidation (0.69, phased)[/-][+]EPIC: PP-QUANT-001 — quant-type dispatch, Phase 0/1 (0.69 train)[/+]docs(spec): PP-QUANT-001 — Phase 2/3 gets its real milestone, not "ma…
noahgift commentedon Sep 17, 2026
Decisions for a human — one comment, from the PMAT-3427 research run (2026-09-17). Nothing of yours was moved, re-titled or re-scoped.
1. Placement conflict. #3423 puts PP-QUANT Phase 2/3 on the dedicated non-cadence milestone. The operator's session brief of 2026-09-17 says: "Alfredo's ticket is prioritized: PP-QUANT-001 is 0.69 must-carry" — a slice M that rides 0.69.0, with T-0 waiting for it (andon at 2026-09-20T06:35Z, 72 h after the actual
v0.68.0tag). Slice M is deliberately smaller than Phase 2: #3429 fixtures → #3430 oneGgmlType+TRAITS[43]below core/compute/serve → #3431 reconciliation gate (builds on PR #3420'sdispatch_contract_tests.rs) → #3432tensor_byte_size+ single refusal site (fixes the #3091 reopen for all 35 ids, no new kernel). The per-directory retype tickets #3436–#3440 restate your Phase 2; they sit in 0.70.0 only as a placeholder and should fold into whichever placement stands. Needed: confirm slice M on 0.69.0 alongside #3423 owning the migration, or say otherwise.2. A second defect class neither spec covers. 3 of the 5 crashes cited in #3418 are MoE placeholder tensors (
byte_size: 0,qtype: 0= F32) reaching dense consumers; all three fixes are guards, the placeholder is still built onmain. Proposed as sibling epic #3428 (PP-TENSOR-001; T1 #3433, T2 #3434 on 0.69.0; T3 #3435 on 0.70.0). Evidence table in the PR #3420 review. Needed: accept as a sibling under #3418's umbrella, or fold into PP-ARCH-001.3. #3091 is open in milestone
0.68.0, which shipped (open 2 / closed 93). Reproduced on the published 0.68.0 asset with a 338 MB public model. Human-authored, so not moved. Needed: move to 0.69.0 (its fix is #3432). Process ticket: #3445.4. 0.69.0 cannot reach a clean T-0 as it stands
[V]: 124 open one day before its due date — 109 with no linked PR, 1 with an open PR (#3204), 1 whose linked PR merged with the issue still open (#2753 → #2809), 3 epics, 10 minted today. Authors: noahgift 118, alfredodeza 5, guyernest 1. Every row'supdatedAtis within 7 days, so that field measures triage edits, not work. Needed: an owner-level bulk slip of the no-PR rows to 0.70.0; this run moved only tickets it minted.Full tables:
docs/audits/impl-PMAT-3427-receipt.mdin the docs PR for #3427.noahgift commentedon Sep 17, 2026
Mapping — my per-directory retype tickets are closed into #3423 Phase 2 (operator decision 2026-09-17)
Alfredo's tickets win on duplicates, so #3436–#3440 are closed, the same way #3444 was closed into #3422. What each one measured, so nothing is lost when Phase 2 is planned. Counts are from a file:line scan of the 33-file union (PR #3420's
dispatch_sites∪ every non-test file naming aGGUF_TYPE_*constant), onorigin/main@7eb81a531[V]:gguf/loaderstensor_byte_size)gguf/inferenceCPUacceleration.rs13 ids,matmul*.rs10,forward/*3 — a tensor accepted by one path is refused by its neighbour;matmul_fused.rsandfused_matmul_into.rshold 61 of the 231 sitesgguf/cuda+cuda/WeightQuantType(8) is a fourth registrygpu/adapterswgpuGgmlType12 ids (import path), compute 15; 38Quant*/Ggml*enums in the workspace, 13 of them naming ≥ 5 ggml typesaprender-serveonly; the cross-crate part stays with #3430 (one enum below all three)Scan summary: 231 code sites in 28 of the 33 files — 151 arm/reference, 54
.qtype ==/!=comparisons, 24match, 2 bare-integer (matches!(qtype, 12..=14)inapr/cache.rs). The other 5 files of the union are not sites: 2 are whole-file test modules without "test" in their name (gguf/model_owned_quantized.rs,gguf/transformer_quantized_layer_field.rs) and 3 name a constant only in a comment or aconstdefinition. That also corrects my earlier "27 files": 5 of them are not code sites, so it is 22 real + 6 found only by the spec's oracle = 28.Still open under this epic from my run: slice M — #3429 → #3430 → #3431 → #3432 (0.69.0 must-carry, confirmed by the operator today), then #3441 tier-0 dequant, #3442 drift job, #3443 generated table (0.70.0).
noahgift commentedon Sep 17, 2026
0.69.0 — per-row verdict (124 open rows, read 2026-09-17). Verdicts only: nothing human-authored was moved.
Rule (operator, 2026-09-17): stay = must-carry, or a linked PR that can be green before the andon at 2026-09-20T06:35Z; otherwise remove the milestone (not → 0.70.0). Mechanical inputs:
closedByPullRequestsReferencesand each PR's check rollup[V]. A PR that mentions an issue without a closing keyword is invisible to this query — rows you know are in flight are yours to overrule.Counts: remove milestone 110 · stay, at risk 2 · close-check 1 · stay 11. Authors: noahgift 118, alfredodeza 5, guyernest 1.
#[repr(u32)] GgmlType(43 rows: 35 live + 8 Removed) + `TGgmlTypevs the vendoredggml.hid litensor_byte_sizeand ONE refusal site readTRAITS— closesTensorStorage— a dense consumer cannot receive an MoEqtype: 0+byte_size: 0may not be construcmain— land §1.5 (d76b4a417, CI pending; stays draft until a quorum reviews itapr run: 7 defects incl.--streamemitting empty text and--trace-outputaapr servehas three different HTTP surfaces and which one you get dependsKaniStrategyhas no label for symbolic-f32-array harnesses, the dominant DSPPOST /api/generateandPOST /generateenforce opposite unknown-field policieignore_eosandseed: apr-cli's ChatCompletionRnoahgift commentedon Sep 17, 2026
Quorum status: did not start —
STOP(rail), 2026-09-17. The three-lane review of Q1 (oneGgmlType+TRAITS[43]), T1 (typedTensorStorage), T2 (sentinel ban) and X1 (ordering) cannot be dispatched under the plan ticket: the harness refuses it before any lane —kind-gate: kind=docs is not implemented … nothing was planned, dispatched, or written for PMAT-3427(exit 3),model-gate: unsupported kind 'docs'(exit 2). I did not relabel the ticket or substitute my own review for a lane. So there is no verdict grid, and #3430, #3433, #3431, #3432, #3434 stay unstarted per the operator's instruction; #3429 and #3445 have no design dependency. The andon check at 2026-09-18T12:00Z stands: unless the harness gains akind=docsroute (or the quorum is run under a different ticket by the operator's decision) it will not have returned by then.One measured input the quorum would have used, for whoever runs it: X1's falsifier is "carrier structs and raw-integer qtype sites overlap < 20 % ⇒ T1 and Q2 can run in parallel". Measured on
7eb81a531: 14 of 34 serve raw-integer sites (41 %) sit in a file that uses a tensor carrier — the falsifier does not fire, T1-before-Q2 stands on the evidence. Tables are in PR #3447's receipt.noahgift commentedon Sep 17, 2026
Where the design review happens now (operator decision, 2026-09-17)
The plan ticket (PMAT-3427 / #3427) cannot host a quorum — the harness refuses
kind=docs. Rather than relabel or bypass, the design quorum moves into each code ticket's own plan phase (kind=codeis implemented). PMAT-3427 stays as is; draft PR #3447 stays draft until the harness gains akind=docsroute, then gets its own quorum.GgmlType+TRAITS[43])mergeorkeep(concept); home crate forGgmlTypederived fromcargo tree. No code until 3/3. Verdict grid gets posted on PR #3420.TensorStorage)(len=0, qtype=0), zero validating constructors. First task: a call-site count viapmat queryreplacing the file-level "unguarded" regex.[U]today) — the gate needs that as its baselineX1 stands on measurement: 41 % of serve's raw-integer qtype sites sit in a file that uses a tensor carrier (file-level; falsifier was < 20 %) ⇒ T1 before Q2. Carried numbers are now in #3430's body: 231 dispatch sites in 28 files, 53 raw-integer fields/params.
This supersedes my earlier "quorum did not start" comment: the 2026-09-18T12:00Z check no longer applies to PMAT-3427; each code ticket's plan quorum has its own clock. Slice M's andon is unchanged — 2026-09-20T06:35Z.
noahgift commentedon Sep 17, 2026
Start now — do not wait for #3448 to merge
The roadmap entries for these tickets were stuck in a draft PR; #3448 (entries only, auto-merge armed) puts them on
main. Nobody needs to wait for it.kind-gatereads the roadmap in your working tree, so in a fresh branch offmain:Measured on a clean
origin/mainworktree for PMAT-3430:kind-gateexit 2 → exit 0. The fragment is byte-identical to the one in #3448, so it merges clean when #3448 lands; ifroadmap.yamlconflicts, regenerate it with the same command.Which model can run which ticket (
model-gate, measured): PMAT-3430 and PMAT-3433 now carryorch:fable+orch-basis:M>=3(core + compute + serve) — a Fable session is admitted. PMAT-3429 and PMAT-3445 have no basis for Fable and are Opus-class: launch those with/model opus, or a Fable session is refused at Phase 0.noahgift commentedon Sep 17, 2026
Milestone triage — REVERT CSV (written before any milestone move)
Snapshot 2026-09-17,
gh issue list/gh pr list --state open: 382 issues + 31 PRs = 413 rows. Emptyold_milestone= none. Operator-authorized triage run; this is the first write of the run. To revert one row:gh issue edit <n> --milestone "<old>"(or--remove-milestonewhen empty).revert.csv (413 rows)
noahgift commentedon Sep 17, 2026
Draft PR with the plan and receipt: #3452
PMAT-3430 plan quorum — history, v1–v4. Not 3/3. No v5 written; no code written.
Plan:
docs/audits/impl-PMAT-3430-plan.mdon branchPMAT-3430-one-ggml-type(draft PR linked below). Lanes: agygrillme, review-only, none in the author's model family (authorfable-5-1). Every objection below was re-executed by the orchestrator before it was answered; two lane claims were refuted on re-run (lane 1 v1: "assoc-const alias works in patterns" — rustc E0308; lane 1 v1: "Q8_1 = 40, C struct has padding" — upstreamstatic_assertsays 36).1. Grid
† lane exited 3,
LANE ISOLATION VIOLATED — a shared ref changed: the plan worktree shares a git dir with the main checkout, and other sessions moved refs during the lane window (v2:refs/remotes/origin/main; v4:refs/heads/PMAT-3445-t0-milestone-gate,refs/heads/PMAT-3451-ont-6-verdict-lattice, a merge-queue ref). Each lane's own clone was unaffected, but under the rail those verdicts are unclean — v3 is the only round with three clean lanes, and it was 1/3. v1'spartialwas 2 stderr lines per lane beyond workspace narration.2. Every REJECT / AMEND reason, verbatim from the lane's
findings[].claim, one tag eachcrates/aprender-compute/src/inference/model.rs:712docs/audits/impl-PMAT-3430-plan.md:58crates/aprender-serve/src/paged_kv/mod_compute_prefix.rs:254crates/aprender-core/src/format/tensors_tests_workflow.rs:82crates/aprender-serve/src/apr/mod.rs:324docs/audits/impl-PMAT-3430-plan.md:56docs/audits/impl-PMAT-3430-plan.md:57docs/audits/impl-PMAT-3430-plan.md:46docs/audits/impl-PMAT-3430-plan.md:49docs/audits/impl-PMAT-3430-plan.md:101docs/audits/impl-PMAT-3430-plan.md:101docs/audits/impl-PMAT-3430-plan.md:76docs/audits/impl-PMAT-3430-plan.md:31docs/audits/impl-PMAT-3430-plan.md:56crates/aprender-serve/src/gguf/tests/loader_tests_apr.rs:311crates/aprender-serve/src/apr/mod.rs:324docs/audits/impl-PMAT-3430-plan.md:99cargo test -p aprender-quant --lib ggml_typedoes not run integration tests in crates/aprender-quant/tests/ (declared in Phase 1 scope_paths).docs/audits/impl-PMAT-3430-plan.md:101cargo test -p aprender-serve --lib gguf::typesruns only 10 unit tests in types.rs and does not execute qwen3_moe_load.rs (#3405 QTYPE_LABELS removal) or loader_tests_apr.rs.docs/audits/impl-PMAT-3430-plan.md:59core: format/gguf/reader.rsis an id-to-enum boundary and will get an admission function.crates/aprender-core/src/format/gguf/types.rs:361GgmlTypein core that will become non-exhaustive.crates/aprender-core/src/format/gguf/types.rs:361docs/audits/impl-PMAT-3430-plan.md:45crates/aprender-core/src/format/gguf/reader.rs:325crates/aprender-serve/src/gguf/qwen3_moe_load.rs:107docs/audits/impl-PMAT-3430-plan.md:45docs/audits/impl-PMAT-3430-plan.md:40docs/audits/impl-PMAT-3430-plan.md:59docs/audits/impl-PMAT-3430-plan.md:69docs/audits/impl-PMAT-3430-plan.md:110aprender-quantwithout doc comments will fail the crate's existing#![warn(missing_docs)]lint, though it does passnon_camel_case_types.crates/aprender-serve/src/apr/mod.rs:324Makefile:1129crates/aprender-serve/src/apr/mod.rs:324crates/aprender-serve/src/infer/mod.rs:38contracts/census.json:5README.md:44ci/explicit-test-commands.d:1.github/workflows/ci.yml:938Counts by tag: Q1 (enum + TRAITS design) 21 · plan mechanics 16 · Table E resolutions 2 · home crate 0 · X1 ordering 0.
aprender-quantas home was called sound by every lane in every round; no lane contradicted X1; Table E drew one flip (KvQuantType, lane 1, v1 only) and one path-format note.3. Objections that repeated across rounds
No objection came back in the same words — each round's specific was re-run, answered, and not raised again. But three objection classes survived two or more rounds, each time with a new instance the previous revision had not found:
from_id → Resultandtensor_bytes → Optionbreak callers · v2: block omitsas_byte as_str from_str_lossy block_bytes block_size Display· v3: aux types lack derives,const fncalls non-const,must_use/missing_docsunder the crate's lint tableapr/mod.rs:324+ 5 more bypass it · v2: listed corereader.rs, which keepsu32raw — core has no boundary · v4:apr/mod.rs:324is an inline match insideTensorEntry::from_binary, not a callable "boundary function that keeps its name"format/siblings, serveapr/infer/;gguf::typesfilter exercises 0 sites · v3: Phase 1 scope omits servegguf/dtype.rs; tests on privatefrom_u32break in Phase 3 · v4:contracts/census.json,README.md:44(1791→1792),ci/explicit-test-commands.d/, MakefileCONTRACTSare outside every phase's scope; "CI selection line" does not exist (guards auto-dispatch viaguard_tree.sh --no-cargo)Read against the operator's rule: A and B are tagged Q1 and each survived three rounds — by that rule they are design findings, not wording. What they have in common: the plan keeps trying to make M1 source-compatible and behaviour-preserving at every existing call site while replacing three enums with one 35-variant enum, and each round finds one more site where that promise needs another special case (an alias, an
Option-returning twin, a surviving free function, a per-crateADMITTEDset, an inline match that is not a function). The lanes never disputed the target (one enum,TRAITS[43], inaprender-quant); they dispute that the compatibility shim can be specified completely in advance. C is the same thing seen from the phase table.Found on the orchestrator's re-runs, not by any lane — both stand regardless of the ruling:
GgufTensor::byte_size(crates/aprender-core/src/format/gguf/types.rs:365) sizesQ4_1at 18 bytes/block; upstream is 20. Latent export-size defect, to be filed and fixed on its own.static_assert= 36, gguf-pyGGML_QUANT_SIZES= 40 at llama.cpp3173a56471c1753650cd806694145ffd6dcace67. The ticket's falsifier ("equals gguf-py for every shared id") cannot be met as worded.Decision requested: rule on A/B — e.g. accept a compatibility shim specified by characterization tests rather than by enumeration, or drop source-compatibility from M1 and let the compiler enumerate the sites. Andon stands: 3/3 by 2026-09-18T12:00Z or the ticket is pulled. No code before 3/3.
🤖 Posted by the PMAT-3430 Claude Code session (fable-5-1). The "stop revising, report the history" instruction reached this session relayed by another session, not typed here; the ruling requested above is the operator's.
noahgift commentedon Sep 17, 2026
Milestone triage report — 2026-09-17 (operator-authorized run; milestone moves only)
Capacity C = 29 [V] — median merged PRs per train over the last 3 tags: v0.66.0 29 · v0.67.0 25 · v0.68.0 99 (
gh pr list --state merged --search 'merged:>=2026-09-04', bucketed by tag commit dates 09-04T21:35Z / 09-10T04:55Z / 09-13T06:29Z / 09-17T06:35Z). 0.69.0 cap = min(C,25) = 25. Note the 99 is an outlier train (4 days, slipped 2 days past the 09-15 due date); the median ignores it.Milestones 0.71.0 / 0.72.0 / 0.73.0 created, due 09-24 / 09-27 / 09-30 (the 3-day step of 0.69.0→0.70.0 continued). Departures from
06x-release-schedule.mdon origin/main: v0.68.0 tagged 09-17T06:35Z vs planned 09-15T06:00Z; 0.69.0 milestone still says due 09-18 while the working deadline is 09-20T06:35Z; existing due dates not edited.Open counts per milestone, before → after [V]
Total open: 417 (413 at snapshot + #3452 #3453 #3454 #3455 opened mid-run and folded in; their revert rows: 3452,pr,(none) · 3453,issue,(none) · 3454,issue,0.70.0 unchanged · 3455,pr,0.69.0 unchanged). After-counts re-read from
gh api …/milestonesmatch the plan exactly; zero tickets ahead of a blocker (checked over the edge list below).0.69.0 — 25/25
#[repr(u32)] GgmlType(43 rows: 35 live + 8 RemTensorStorage— a dense consumer cannot recemain— lGgmlTypevs the vendored `ggmtensor_byte_sizeand ONE refusal site readTRAITSqtype: 0+byte_size: 0may not bTier 3 reasons: #3205+#3204 (P0, linked PR, mini CI leg) · #3395+#3401 (P0, linked PR red only on
present; blocks the 24 CRUX-O children) · #3161 (P1, publish-gate, S: add LICENSE-APACHE) · #3170 (P1, root cause stated, S) · #2730 #2765 #3258 (P0, mechanism stated, M). #3452 and #3455 were opened mid-run and attached to Tier 1 (M1 plan PR; the fix PR for #3445), which pushed #3271 and #3005 (EV 0.9) to 0.70.0 to hold the cap.Alfredo's tickets (13 open)
Flag: #3422 #3423 #3424 were moved out of Alfredo's dedicated no-deadline milestone
Inference dispatch & architecture consolidation(now empty, left open) per the run's rule; his #3423 body argues explicitly for keeping them off the cadence. One-line revert is in the CSV.Top 10 EV that did NOT fit 0.69.0
TRAITS(type × bmake build-reportLoad vs capacity, 0.70–0.73
Load 391 vs capacity 4×C = 116 → 3.4× over. 0.70.0 29 · 0.71.0 29 · 0.72.0 29 · 0.73.0 304 = 29 by EV + 275 overflow (flagged in the CSV
whycolumn; no label applied — relabeling was out of scope). At C=29/train the open backlog is ~14 trains deep before any new arrivals; arrival during this 90-minute run was 4.Stale (>90 d no activity, no repro): 0 [V] — oldest
updatedAtis 2026-08-22 (the CLUS-00x set).Duplicate candidates (no action taken)
#3038↔#3090/#3091 · #2730↔#2899 · #2735↔#2887 · #2830↔#2893 · #2816↔#2990 · #2756↔#2888 · #2699↔#2917 · #2648↔#2913 · #2879↔#2898 · #2775↔#2894 · #3226↔#3287↔#3328 (CUDA test binary SIGSEGV at teardown) · #2614↔#2814. Unlinked row/PR pairs: #2924↔PR #3005 · #2906↔PR #3001 · #3133↔PR #3134.
Close candidates (shipped-train residue, not stale by the rule; no action)
#2986 + PR #2998 (PR triage into 0.66) · #2932 (TAG-0.66.0) · #2970 and the nine
carry-0.67rows #2988–#2996 (0.67 shipped) · #3079 (closes with 0.68.1) · #2307 (bot tracker).Other findings
no-close: #Nparse, GitHub parses 'no-close: #N' as 'close: #N' — #3091 was closed twice by PRs whose bodies said no-close (D0 of the pmat 3.41.0 run); #3351 carries the same line for #3347 #3400) — merging it will close CPU: Qwen3.5 / Qwen3.8 hybrid GGUFs are refused entirely — no fallback exists #3091 a third time.autopilot.sh 3450 wait dryrun, untouched) polls release: 0.68.1 #3450 for MERGED and stops atdryrun; it reads milestone 5 only in itsclosestep (needsopen_issues == 0), which this run does not reach. CPU: Qwen3.5 / Qwen3.8 hybrid GGUFs are refused entirely — no fallback exists #3091 moved to 0.70.0; release: 0.68.1 #3450 left in place.ci_queue_steward.shdefaults to the first open milestone by title — that is0.66.0(open, 0 items).EV inputs
impact: priority label [V]; ×2 user-reported crash/refusal with repro — applied to #3038 #3090 #3091 #3075 #3076 [A]; +1 per blocked open ticket, max 3, from the edge list [V where the body/title states it, A otherwise]; ×1.5 release-gate/Qwen2.5 proof line by title keyword [A]. P: 0.9/0.6 from
closingIssuesReferences+ check rollup [V] (only PR #2794 is fully green;present-only red scored 0.6); 0.4 when the body states a root cause/mechanism (regex) [V-regex]; else 0.2. cost S/M/L: title/label heuristic plus 13 hand overrides, all [A]. Ties: gate flag, then already-in-0.69.0, then lower number. A PR and the open issues it closes move as one unit.Blocker edges used: #3430→#3432 #3433 #3441 #3442 #3443 #3077 · #3433→#3434 #3435 · #3443→#3077 · #3045→#2908 · #3015→#2892 · #3147→#3148 #3156 #3158 · #3149→#3155 · #3150→#3168 · #3401→#3371–#3394 · #3418→#3422 #3424 · #3091→#3090 #3038. Quant/dispatch/MoE-loader set held to 0.70.0+ [A]: #2567 #2604 #2605 #2611 #2880 #3332 #3453 + the pre-slotted Phase 2 rows.
full plan CSV (417 rows)
15 remaining items
noahgift commentedon Sep 23, 2026
milestone → 0.74.0 per docs/roadmaps/milestone-triage-2026-09-23.md (#4024), operator approval 2026-09-23 (relayed by aprender-cf). Reason: PP-QUANT epic: #4001 moves it from 0.73's enablers to 0.74's core
noahgift commentedon Sep 23, 2026
milestone REVERTED to 0.70.0 (its state before #4024's move). The quorum on #4024 found this issue is named as must-carry by #3999 and #4001, and the table's own rule says such an issue is an operator DECIDE, never placed by the author. It was moved in error. It is now listed on #3998 as a pending decision: 0.73.0/0.74.0. No new placement was made.
docs(roadmap): correct the triage after the quorum -- 3 moves reverte…
docs(roadmap): record the 9 applied corrections, the #3513 withdrawal…
docs(roadmap): quorum round 9 -- #3714 back to 0.69.1 in flight: the …
noahgift commentedon Sep 23, 2026
milestone → 0.74.0, applying the operator's decision on #3999 (2026-09-23 10:43Z): "PP-QUANT (#3421/#3420), PP-ARCH (#3424) and PP-TENSOR (#3428) move to 0.74's epic as its core; 0.73 stays pure performance parity with llama.cpp." Nothing later in the thread reverses it. My earlier revert applied the table's 'two epics name it → DECIDE' rule mechanically, while the operator had already decided. #3999's body still lists these rows and is stale. (#4024 quorum round 11.)
docs(roadmap): quorum round 11 -- a reproducible release-tree census …
noahgift commentedon Sep 25, 2026
Superseded by EPIC E7 #4001 (APR-EPIC-001 A4). Open children re-parented: none. Owner lines copied to the absorbing epic's body. Applied by aprender-d1: claude+agy both said close, apr shadow row recorded (handoff/close-quorum-2026-09-25.json).
PMAT-3430 M1: one ggml tensor-type table, extracted from upstream rat…
PMAT-3430 Phases 3-4: three ggml enums become one (M1 complete) (paim…