Skip to content

docs(roadmap): milestone triage PROPOSAL — 0.70.0 + unmilestoned (nothing moved) - #4024

Closed
noahgift wants to merge 19 commits into
mainfrom
docs/milestone-triage-0.70
Closed

noahgift wants to merge 19 commits into
mainfrom
docs/milestone-triage-0.70

Conversation

@noahgift

@noahgift noahgift commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Summary

A milestone triage of every open issue in 0.70.0 (178) and every open issue with no milestone (136). Each has a milestone and a one-line reason. The operator approved the moves and, later, the corrections (both relayed by the cop session), and they were applied on GitHub with a comment on each issue. The doc records every applied move, correction, and still-pending row. This PR is docs only.

File: docs/roadmaps/milestone-triage-2026-09-23.md

How rows were placed

  1. Named must-carry in a theme epic (EPIC 0.70.0: Fast Train — freeze→publish in ≤4 h; lock scoped to GPU work, sharded sweep, idle same-arch pre-screen #3998, EPIC 0.71.0: Don't Leave Behind — every Qwen, every quant, every verb, on CUDA + CPU + wgpu + Apple Silicon, zero REDs #3994, EPIC 0.72.0: Agent Ready — apr serve is the one gateway for all agents (OpenAI + Anthropic /v1/messages), one conformance suite #4000, EPIC 0.73.0: llama.cpp Parity — decode/prefill/TTFT/memory ≥ llama.cpp across the certified matrix #3999, EPIC 0.74.0: Any Model — unified model support (Alfredo #3423/#3422/#3418), new architecture ≈ config + small delta, llama.cpp as reference #4001, EPIC 0.75.0: CRUX declarative fine-tune/distill for Qwen3.5 — one YAML recipe, certified vs 3–5 competitor engines #4002) → that release. An issue named by two epics becomes DECIDE.
  2. Otherwise → the release whose exit bar the issue blocks.
  3. Debt → a debt-ratchet (EPIC: debt ratchet 0.70→0.74 — 80% of tech debt in 5 equal slices (coverage→95% w/ yoga CUDA shards, pv deepest enforcement, ONT-001 fully merged, zero backlog) #3997) slice by pillar.
  4. Non-milestone outcomes: 0.69.1 (in flight), verify-close (the release tree implements it), close? (superseded epic), none (pinned).
  5. Every row was hand-checked after a keyword pass; about 120 reasons are hand-written.

Operator decisions surfaced

Notable findings

keep-open: this PR records milestone placements and changes no code. Every issue it cites stays open under its own milestone, and the verify-close / close? rows wait on their own re-measurement or operator ruling, never on this merge.

Refs #3998

🤖 Generated with Claude Code

…sues -- nothing moved (#3998)

314 open issues (178 in 0.70.0, 136 with no milestone), each with a proposed milestone and a one-line
reason, placed by each theme epic's named must-carry, then by the exit bar it blocks, then by
debt-ratchet pillar (#3997). Eight rows named by two epics are listed as operator decisions.
Nothing is moved: the operator approves every move.

Refs #3998, #3994, #4000, #3999, #4001, #4002, #3997

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This was referenced Sep 23, 2026
noahgift and others added 8 commits September 23, 2026 17:13
…-duplicate markers, totals labelled as first proposed, rule 1 defines must-carry (#3998)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
#3984/#3989 duplicate listed, reasons and rule 3 corrected (#3998)

Lane 2 (FAIL, blocking): #3845 is the same apr-code backend-selector defect as #3978, an operator DECIDE between
0.71 and 0.72, so placing it in 0.72 settled half of that decision. It was reverted to 0.70.0 with a comment and
listed beside #3978. Non-blocking: #3984/#3989 is added as a duplicate pair for a ruling (not closed);
#3971/#3848/#3583 are flagged for a consistency re-check; #3893's reason no longer cites the #4006 pairing; rule 3
now says these placements park debt in a release and are not #3997's slices; #3995's route_index follow-up is
carried to #3779. Counts re-measured (0.70.0 130); pending 39 (13 DECIDE).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…as 0.69.1 in flight per the operator's fold ruling; criteria amended; rows annotated (#3998)

Lane 3 (FAIL, blocking): #3714 carries the operator ruling of 2026-09-23 07:12Z ("fold in MoE"), making it a 0.69.1
blocker, but the table moved it to 0.71 on a keyword template. It was reverted to 0.70.0 with a comment and is now
0.69.1 (in flight). #3839 ("fold in 88% coverage") was relabelled the same way (never moved). The PMAT-3998
acceptance criteria now state the same-defect DECIDE clause and the separately-approved-actions exception. The
#3848/#3583/#3752/#3991 re-check rows and the #3984/#3989 pair are annotated. Net moves 197; pending 41.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…4Z ruling supersedes 07:12Z's 'fold in MoE'); rulings cited on #3987/#3951/#3567/#3602 (#3998)

Lane 1 (FAIL, blocking): round 7 reverted #3714 on the 07:12Z 'fold in MoE' ruling, but the operator superseded it at
11:44Z on #3987 (MoE out of 0.69.1, into 0.71.0, 'yes push'). The approved 0.71.0 move was re-applied with a comment.
#3839's coverage half of that ruling still stands (its source is cited). #3987's decision entry now cites the 11:44Z
ruling, #3951's cites 07:47Z (and the F9 refutation of its premise), and #3567/#3602 note older rulings for re-check.
A ruling is now checked for a later superseding ruling before use. Net moves 198; pending 40.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…operator's MoE rulings end at 11:49Z 'so keep it in' (#3998)

Lane 1 (FAIL, blocking): round 8 re-applied #3714 to 0.71.0 on the 11:44Z 'yes push' ruling, but on the same
issue at 11:49Z the operator said 'so keep it in': MoE STAYS in 0.69.1. Read to the end, the chain is 07:12Z
fold in, then 11:44Z out, then 11:49Z keep in, and the last is current. #3714 was reverted to its pre-triage
state with a comment giving the full chain. The #3987 decision entry and the #3839 note are corrected. Rule 4 now
says rulings are read to the END of their threads. #3421/#3428 cite the operator's 0.74 ruling. Net moves 197;
pending 41.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…-close candidates (fix commits in c619ddd); more re-checks and reason fixes (#3998)

Lane 2 (FAIL, blocking): the verify-close label covered 6 rows, while 18 more APPLIED rows have their fix
commit in the release tree c619ddd. Each commit was checked as an ancestor of c619ddd that names the
issue: #3727 #3728 #3759 #3947 #3922 #3908 #3869 #3976 #3992 #3868 #3888 #3890 #3955 #3981 #3956 #3917
#4018 #4006. They are annotated per row, disclosed in the header, and not re-moved. #3874's cited commit is
mis-numbered (it fixes a different defect), so #3874 stays open; #3076 is 'possibly fixed'. Non-blocking:
#3838/#3968/#3889 are flagged for re-check with reasons, #3798/#3800/#3968 reasons are corrected, the totals
caption now says 5 reverts, and the counts stamp is in UTC.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…replaces the hand-picked 18; #3421/#3428 re-applied to 0.74 per the operator's latest ruling (#3998)

Lane 3 (PASS, non-blocking findings acted on):
- The verify-close candidate census was partial. It is now reproducible: every row is searched in
  git log origin/main..c619ddd (607 commits) for fix/feat subjects naming #N or PMAT-N. 51 rows are annotated,
  43 of them placed in 0.70-0.75. A commit naming an issue is not proof of closure, so each is marked 'verify at
  the tag'.
- #3421/#3428: the operator's latest ruling (#3999, 10:43Z, 'PP-QUANT/PP-TENSOR move to 0.74 as its core') was
  never reversed, so the round-3 revert was over-cautious. Both were re-applied to 0.74.0 with comments.
Net moves 199; pending 39 (11 DECIDE).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…able (39 rows, 11 DECIDE) and reads in order; full census commit lists; #3513/#3940/#4008 notes (#3998)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…d drift recorded; #4019/#3826 flagged; #3857 reason, ratchet row, census on corrected rows (#3998)

Opus-lane findings, non-blocking, fixed before the Sonnet 5 quorum re-run (the author is Opus 5.5, so Opus lanes
are self-review under the operator's model-id rule):
- The counts said '~16:30Z' but were measured at ~15:58Z. Every such stamp on this branch had been written by hand
  and ran later than its commit. The stamp now states when the counts were measured.
- aprender-dd's post-head triage placed DECIDE rows #3978/#3979/#3997 with no ruling (the cop confirms). This is
  recorded; those decisions are still pending.
- #4019 flagged (its thread found no apr defect), #3826 flagged with #3889, #3857's reason fixed (false-positive
  title), the ratchet row runs 0.70→0.75, and the census note is on the 4 corrected main-table rows.

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

Copy link
Copy Markdown
Contributor Author

Quorum verdict: AGREED 3/3 PASS, degraded: same-family

  • Head judged: 834144822
  • Author: claude-opus-5-5
  • Lanes: 3 × Sonnet 5 (claude-sonnet-5) via Claude Code, a different model id from the author.
  • Why degraded: agy/Gemini quota is exhausted, so the operator's standing rule applies: "if agy quota is ever gone, simply use claude code itself", and same-family quorums "may arm merges, marked degraded: same-family". The first Opus 5.5 lanes were self-review under the operator's model-id rule, so they were discarded and re-run on Sonnet 5.
lane model verdict blocking findings
1: live state, consistency, rulings, census claude-sonnet-5 PASS none
2: placement quality and honesty claude-sonnet-5 PASS none
3: full independent check claude-sonnet-5 PASS none

Non-blocking note from lanes 1 and 3: the post-head drift is large. Other sessions' triage (aprender-dd, from 16:18Z) moved many issues after this snapshot. The doc discloses this, and says the DECIDE rows those passes placed are not rulings.

How the doc got here: earlier rounds (Opus lanes, used as grill passes) found and fixed:

Arming with --match-head-commit 834144822.

@noahgift
noahgift enabled auto-merge September 23, 2026 16:50
@noahgift
noahgift disabled auto-merge September 23, 2026 17:34
…its title (check_no_claim_literals) (#3998)

Co-Authored-By: Claude Opus 5.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-3998",
 "head": "1678c1770b1fe240c68e83a5a78bead99d4ec82d",
 "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": "PASS",
   "findings": 0
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 0
  }
 ]
}

@noahgift

Copy link
Copy Markdown
Contributor Author

PMAT-3998 receipt: milestone triage (PR #4024), head after 1678c17

What changed since the last agreed round

One row: #3981's title column no longer quotes its two rate literals, which
check_no_claim_literals.sh bans on a doc surface. The PR body gained a keep-open: line for R-2
(check_pr_closes_issue.sh). Nothing else.

Answers to round-2 lane 1 (gemini-3.1-pro-high)

  1. "EPIC: PP-QUANT-001 — quant-type dispatch, Phase 0/1 (0.69 train) #3421/EPIC: PP-TENSOR-001 — a tensor that has no bytes is a different type from one that does (MoE / tied-embedding placeholders) #3428 placed by the author, line 185". Line 185 is The fleet-pinned pv is 0.65.2 and has no 'extract' subcommand and no '--gate' flag — every SHACL gate measured on the fleet binary is unrunnable, not merely unmeasured #3567's row. The EPIC: PP-QUANT-001 — quant-type dispatch, Phase 0/1 (0.69 train) #3421/EPIC: PP-TENSOR-001 — a tensor that has no bytes is a different type from one that does (MoE / tied-embedding placeholders) #3428 rows are
    lines 255-256. Their reason column says the placement is the OPERATOR's decision on EPIC 0.73.0: llama.cpp Parity — decode/prefill/TTFT/memory ≥ llama.cpp across the certified matrix #3999
    (2026-09-23 10:43Z, "PP-QUANT/PP-TENSOR move to 0.74"), found in round 11. The author's own
    placement was the one REVERTED in round 3. AC2 forbids the author placing a two-epic row. It
    does not forbid recording the operator's placement.
  2. "AC3: DECIDE/in-flight rows did not stay untouched". Correct as history, and the doc says so
    itself (line 7): EPIC: debt ratchet 0.70→0.74 — 80% of tech debt in 5 equal slices (coverage→95% w/ yoga CUDA shards, pv deepest enforcement, ONT-001 fully merged, zero backlog) #3997/0.70.0: apr code has no backend selector — it spawns its own apr serve, so "code on cpu" vs "code on cuda" is not expressible #3845/qwen3moe (Qwen3-30B-A3B, Qwen3-Coder-30B-A3B, Q4_K_M) has NO working CUDA path: apr run --gpu falls back to CPU (rc 14), apr qa emits no gates — blocks 0.69.1 under the all-Q4_K-CUDA rule #3714 were moved in error and reverted, each with a comment on the
    issue. Every one of them is back in its pre-triage milestone, which is the state AC3 protects;
    the census on the doc shows it. The PR delivers the table and its disclosure, not the error.

@noahgift

Copy link
Copy Markdown
Contributor Author

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

{
 "ticket": "PMAT-3998",
 "head": "1678c1770b1fe240c68e83a5a78bead99d4ec82d",
 "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
  }
 ]
}

@noahgift

Copy link
Copy Markdown
Contributor Author

Armed by the cop (aprender-cf). Round 3 is 3/3 gemini PASS and the artifact reads agreed:true, lint ok. The script's NOT AGREED / exit 1 comes only from partial:true, caused by agy's idle narration line on lane 1's stderr ("root agent idle; waiting up to 25m0s …"). That is the known tooling defect paiml-implement#352, fixed by #356. It is not a verdict.

@noahgift
noahgift added this pull request to the merge queue Sep 23, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 23, 2026
@noahgift noahgift added the needs-owner Open work with no live owner — 0.70 batch triage; pick it up and reassign label Sep 23, 2026
@noahgift noahgift added the kind:docs Docs, spec or changelog work (derived rule, #4159) label Sep 24, 2026
@noahgift

Copy link
Copy Markdown
Contributor Author

superseded by aprender-dd 0.70 triage (2026-09-24)

@noahgift noahgift closed this Sep 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind:docs Docs, spec or changelog work (derived rule, #4159) needs-owner Open work with no live owner — 0.70 batch triage; pick it up and reassign

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant