Skip to content

release: 0.67.0 - #3145

Merged
noahgift merged 6 commits into
mainfrom
PMAT-1098-release-0.67.0
Sep 12, 2026
Merged

release: 0.67.0#3145
noahgift merged 6 commits into
mainfrom
PMAT-1098-release-0.67.0

Conversation

@noahgift

Copy link
Copy Markdown
Contributor

Release bump for 0.67.0 (06x release schedule §4.2): bump-version.sh 0.67.0 across every workspace, and the CHANGELOG section below.

When this merges, rel-067-autopilot/autopilot.sh runs the rest of the release-day protocol, fail-closed: pre-publish dogfood, tag, release, all sixteen assets checked with scripts/check_release_assets.sh, the crates.io cascade, host receipts on gx10 and yoga, and the epic and milestone close.

0.67.0 is the first train of the 06x schedule (docs/specifications/06x-release-schedule.md, epic #3078): a release every 2–3 days whose PR tier is one build graph and whose CI runs on all three self-hosted boxes. Correctness: every Q5_K tensor decoded wrong on the CPU path, in apr import and in the CUDA GEMV — all three readers had invented a layout; the oracle is now gguf-py on a real block (#3110, #3113). Qwen3.5/Qwen3.8 hybrid GGUFs are refused honestly on both backends instead of promising a CPU fallback (#3099; the CPU forward itself ships in 0.68 behind the parity gate, #3091). aarch64: NEON LZ4 read unwritten output at offsets 16..63 (#3103) and the ARM-only clippy errors that kept gx10 out of ci / lint are gone (#3112). Fleet: arch-neutral jobs run on any clean-room box — intel, yoga, gx10 (#3104); every self-hosted job checks the box's toolset before spending an hour (#3088); guard-cargo/guard-tree fit the 20-minute budget with seven nightly-class steps moved to guards-nightly.yml (#3094); advisory gpu-quick (gx10) and cuda-unit (yoga) PR jobs (#3095); the quick tier is one nextest invocation, 55 min → ~6 min, and the merge queue mirrors the PR (#3089); tree-reader modules cut quick-tier seconds 93 % → 58 %, the 2-h mutant arm sweep is input-gated, and DIRTY roadmap conflicts merge by id (#3115). Release integrity: four apr binaries on every tag ({cuda,cpu} × {x86_64,aarch64}) verified by check_release_assets.sh (#3092); every workspace example must build AND run before a tag, plus apr-cookbook and release-notes gates (#3122); a low-priority nightly coverage run on yoga toward the 95 % target (#3123). Dark targets: the quick tier runs every integration target of a touched crate, which surfaced 77 vacuous spec_checklist rows (#3131), 20 stale aprender-serve rows (GH-438 dtype bytes, PMAT-855 byte glyphs, GH-213 load-time truncation, CRUX-C-34 health codes, GGUF v2 support) and one wall-clock benchmark posing as a test — now behind bench-gates. Triage: every open issue and PR carries a milestone and a type + priority label (#3102, #3125).

The seventeen rows below marked via train #3127 landed as one squash (cb829fc, 2026-09-12T09:12Z, merge-queue run 34684644616); their row PRs are closed as ancestors of the train head, not merged, so a merged-PR listing alone would miss them.

Added

Fixed

Changed

🤖 Generated with Claude Code

bump-version.sh 0.67.0 (every workspace, facades included; --check green) and the CHANGELOG [0.67.0] section,
per docs/specifications/06x-release-schedule.md §4.2. After this merges, rel-067-autopilot runs §4.3-4.8:
pre-publish dogfood, tag, release, the sixteen assets by command, cascade, host receipts, close.

Pmat-Ticket: PMAT-1098
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noahgift noahgift added this to the 0.67.0 milestone Sep 12, 2026
@noahgift
noahgift enabled auto-merge September 12, 2026 10:51
@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown

§13.11 rung 1 — quorum shadow verdict

S13-SHADOW pr=3145 head=aa61219ef8b32232ec1ab8a9ff81f36fac187e0a verdict=REFUSE class=Q1 arm_rc=1

Shadow mode: this records a verdict and merges nothing. A refusal
to arm is not a block (§13 adds zero rows to §7) — the pull request is
exactly as green as it was.

…tree: roadmap diff not additive on its group) and cannot precede the cut; it ships in 0.68

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
noahgift and others added 3 commits September 12, 2026 15:26
…t in 0.67.0

Verified every `#NNNN` in the 0.67.0 section against `git log v0.66.0..origin/main`
and against each PR's state. Four rows were false:

  #3068  OPEN  — dequeued from the merge queue; guard-tree RED on
                 check_roadmap_diff_additive.sh. Moved to 0.68.0.
  #3139  OPEN  — same guard, same cause. Moved to 0.68.0.
  #3064  MERGED 2026-09-09T22:20Z — its merge commit is an ANCESTOR OF v0.66.0.
                 It shipped in the previous release; listing it here bills it twice.
  #3065  MERGED 2026-09-09T18:00Z — likewise an ancestor of v0.66.0.

The last two are the more interesting defect: "merged after the last CHANGELOG
entry" is not the same predicate as "merged after the last tag", and only the
second one is true of a release. `git merge-base --is-ancestor <merge-sha>
v0.66.0` answers it and is what was run here.

A release note that lists work the release does not contain is a false record,
and it is the kind that survives because nobody re-derives it. The scope rule is
APR-RELEASE-001 §4: a train contains whatever merged before its cut, by
definition -- so the fix is to shrink the list, never to hold the train for it.

Pmat-Ticket: PMAT-1098
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… four false rows

A section heading with no rows under it reads as "nothing was added" only if you notice the heading is empty; more often it reads as a rendering bug. Removing the heading says the same thing without the ambiguity.

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…adings across eight years of history

The previous commit removed every "### " heading with no "- " bullet under it. Thirty of the thirty-one it matched were historical sections whose content is PROSE, not bullets: "### Migration Guide", "### Quality Metrics", "### TOP 10 Algorithms - Complete List". A heading with no bullets is not an empty heading.

This reverts it and removes exactly one heading: the 0.67.0 "### Added", which is followed immediately by the next heading with nothing at all between them. The predicate is now "nothing before the next heading", not "no bullets", and it is scoped to the 0.67.0 section.

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… v0.66.0 tag — the CUDA-asset rebuild rows (#3072, #3074, #3086) and the PMAT-1096 receipt (#3085)

T-0 rule: CHANGELOG from merged PR titles since the last tag. Predicate: `git log v0.66.0..origin/main` titles minus CHANGELOG rows = 4 → now 0. Each merge commit is NOT an ancestor of v0.66.0 (`git merge-base --is-ancestor` rc=1 for 2c584a1 43b8d8e 58c3dda a4b27f3). Rows appended to ### Changed; narrative gains one sentence on the glibc 2.31 floor. Headings 224 → 224; 0.67.0 rows 27 → 31. release_notes.md carries the same four rows.

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
noahgift added a commit that referenced this pull request Sep 12, 2026
… 34693750243..34700216664 incl. the discarded #3145 workspace-test (4958 s) and the two cancelled docs-PR runs [skip ci]

Pushes to this docs branch were starting full CI runs on intel next to the train (34694025825, 34700216664, 34701097504 — all cancelled by hand); until v0.67.0 is tagged every push here carries [skip ci]. The final push before merge does not.

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@noahgift
noahgift added this pull request to the merge queue Sep 12, 2026
Merged via the queue into main with commit f431665 Sep 12, 2026
17 of 24 checks passed
@noahgift
noahgift deleted the PMAT-1098-release-0.67.0 branch September 12, 2026 17:02
noahgift added a commit to guyernest/aprender that referenced this pull request Sep 14, 2026
… — the 0.67.0 train (paiml#3164)

* docs(release): APR-RELEASE-001 — the release train + build kaizen spec, and the R-17 model-movement row for PMAT-1098

The spec was dropped by the operator on 2026-09-12 and is untracked until this commit; the routing row records the orchestrator model moving opus->fable-5-1 at phase 4 (phase-boundary.sh).

Pmat-Ticket: PMAT-1098

* docs(audits): PMAT-1098 receipt-so-far for APR-RELEASE-001 session 1 (the 0.67.0 train) + the two agy lane receipts

Andon obligation: K=240 was crossed at k_measured=312 when the operator issued the spec run; WIP committed and this draft PR carries the receipt-so-far. Amended at phase 5.

Pmat-Ticket: PMAT-1098

* ledger(APR-RELEASE-001 §3.6): 182 measured gate-job records — intel is the bottleneck, gx10 is 2.3x faster and half idle

One append-only JSON per (sha, host, job) from the Actions REST API: queue_wait_s
(created->started), exec_s, total_s, host, conclusion. peak_rss_mb and
free_disk_gb are null with an explicit "[U]" in unmeasured[]: the REST API does
not expose them, and an absent measurement must never read as a zero.

What the 182 records say (p50 / p95 exec_s, this repo, 2026-09-12):

  workspace-test   intel 1790 / 4148 s   gx10  790 / 790 s   yoga  259 / 3167 s
  guard-cargo      intel 1201 / 1820 s   gx10  422 / 516 s   yoga  830 / 1046 s
  guard-tree       intel  604 /  879 s   gx10  192 / 213 s   yoga  379 /  379 s

  queue wait p95   intel 2995 s          gx10  233 s         yoga 1654 s

Per-run required-check wall clock, grouped by which boxes the run touched:

  gx10 only          n=4    mean  9.4 min
  gx10 + yoga        n=4    mean 11.3 min
  gx10 + intel       n=10   mean 42.6 min
  gx10 + intel + yoga n=11  mean 31.6 min

Every run that touched intel cost 32-43 min; no run that avoided it cost more
than 11.3. intel took 15 of the 22 workspace-test records because that job is
pinned to X64 -- and it is the job whose p95 is 69 minutes. paiml#3139 unpins it.

§1 coupling, no longer [U]: p95 gate = 72.3 min, so max PRs per train = 72h /
72.3 min = 59.7. §8's "stop cutting trains below 10" does not fire.

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

* receipt(PMAT-1098): the orchestrator model moved mid-phase-4, and the ledger answered §1

Three things the receipt did not yet carry:

1. orch_model. The harness moved this session from claude-fable-5-1 to
   claude-opus-5 in the middle of phase 4. A model change mid-session is a
   recorded event, never a silent one: route.sh record-event wrote the row to
   docs/audits/impl-routing.jsonl and the frontmatter now names the live model.
   fable_binding drops to false with the reason, rather than asserting a binding
   that no longer holds.

2. The build ledger, 182 records, and what they say about which box to fill.

3. §1's max-PRs-per-train, measured at 59.7 from 29 runs, so it stops being [U]
   and §8's stop condition can be evaluated instead of guessed.

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

* dogfood(G3.EX): 981 examples run for the first time on a release — 6 real defects, 38 classifier gaps

The gate paiml#3121/paiml#3122 added during this cycle had never been executed against a
tag. Its first run says 23 fail + 21 timeout, and that number is wrong in the
interesting direction: re-running all 44 with each target's own required-features
and keeping the logs leaves SIX genuine defects.

  9 rows pass once the feature they name at runtime is enabled (cuda,
    compression, embeddings, tensor, shell-autocomplete). They declare no
    required-features and gate themselves in code, so the sweep ran them wrong.
 20 rows are servers, TUIs and unbounded benchmarks. Killing them at 120 s and
    calling it `timeout` -- a class the skill defines as a defect -- is wrong on
    all twenty.
  6 rows are a missing model or a missing argument worded outside the regexes.
  1 is a TTY, 1 is this box's glibc against a prebuilt ort artifact, 1 is a
    wall-clock perf assertion failing under load.

Verdict GO. Every one of the six defects is byte-identical at v0.66.0: the
expect() on weight.rs:356, the five PinnedBuffer imports, the three
cwd-relative config literals in llama2/train.rs. §3.1 skips a train whose CUT
cannot go green; this cut did not cause any of them, the previous tag shipped
them all, and a new instrument finding a backlog is not the same event as a
regression. They are paiml#3178 paiml#3179 paiml#3180 paiml#3181, and the classifier gaps are paiml#3182.

Not claimed: that the 20 timeouts are healthy. They were not individually
verified and the gate cannot yet tell a serving server from a wedged one.

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

* docs(audits): PMAT-1098 receipt — four missing CHANGELOG rows (aa61219), paiml#3068/paiml#3139/paiml#3175 dequeues, the T-0 correction table, G3.EX GO, and the model return (opus -> fable) recorded

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* docs(ledger): 49 more APR-RELEASE-001 §3.6 records (231 total) — runs 34693750243..34700216664 incl. the discarded paiml#3145 workspace-test (4958 s) and the two cancelled docs-PR runs [skip ci]

Pushes to this docs branch were starting full CI runs on intel next to the train (34694025825, 34700216664, 34701097504 — all cancelled by hand); until v0.67.0 is tagged every push here carries [skip ci]. The final push before merge does not.

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* docs(evidence): the ph4 teamwork delegate receipt carried two absolute checkout paths — the shipped-tier machine-specific-path ratchet went RED on paiml#3164 (+2 vs 81da9bc) [skip ci]

check_hardcoded_paths.sh --full-if-capable, run 34700216664 step 43: evidence/release/0.67.0/agy/ph4-teamwork/delegate-receipt.json|/home/noah/src/aprender and |/home/noah/src/aprender/.git/config. Replaced with <repo_root>; the receipt is this session's artifact, not a tool output anyone re-reads by path.

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* docs(audits): PMAT-1098 receipt — T-1 stand-in dispatched on the idle GPU hosts, cuda-nightly standing-RED since the v0.66.0 sha, why gx10 idles (X64 pin, paiml#3139 795 s, ENOSPC), §6 triage to untriaged=0, one-at-a-time drain [skip ci]

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* spec(APR-RELEASE-001): packing rule — yoga and gx10 ≥80% full of aprender PR work under any intel queue pressure is P0 (selector row 0, §1, §3.4, §3.5 SSH, §5 P0·Pack + P0·Reap, §7 pack: line, §8 stops) [skip ci]

Operator 2026-09-12, verbatim in §1. §3.4 no longer says one PR at a time: the queue builds 3 by design, dequeue only a KNOWN-RED group. §3.5 distinguishes durable config (forjar) from measurement/unclogging over SSH. Ground truth (§2) gains the measured X64 pin and the gx10/yoga disk layout.

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* docs(audits): PMAT-1098 receipt — the four operator rulings and what changed (SSH measurement, 146 GB reclaimed, forjar P0·Reap live on gx10+yoga via infra#549, packing rule, spec e874769), the stacked-merge-group resolver defect paiml#3186paiml#3187, 16 ledger records incl. fleet-pack samples [skip ci]

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* docs(ledger): 15 more §3.6 records — the two stacked merge groups RED on paiml#3186, the GPU-host nightlies on the cut, fleet-pack samples [skip ci]

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* docs(receipt): session 2 — the cut's own bashrs red (paiml#3188), the clean-room gate that discriminates nothing (paiml#3189), the steward's unreachable live path (paiml#3190), and the packing denominator [skip ci]

Pmat-Ticket: PMAT-1098

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

* docs(spec): APR-RELEASE-001 T-4 is automated, never attended — operator ruling 2026-09-13; the train publishes itself after dogfood GO + assets + preflight [skip ci]

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* docs(spec): APR-RELEASE-001 T-5 Reconcile is a HARD gate — measured 308 open / 424:124 arrival:closure / 95 fixed-but-open / 847 PR-less branches; five predicates, receipt in the ledger, no DONE without it (operator 2026-09-13, kaizen) [skip ci]

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* docs(ledger): T-5 reconcile receipt for v0.67.0 — R1 0 / R2 28 / R3 0 (776 branches archived) / R4 1 / closure:arrival 22:61; 2 issues closed, 3 dirty PRs resolved, 1 closed, 10 verdicts pending [skip ci]

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* docs(ledger): the v0.67.0 train record and 818 §3.6 collector records — 3 bashrs NO-GO(s), then GO + tag at e45eaab

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Noah Gift <claude@noahgift.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant