release: 0.69.0 - #3698
Merged
Merged
release: 0.69.0#3698
Conversation
bump-version.sh 0.69.0 (every workspace, facades included; --check green) and the CHANGELOG [0.69.0] section, per docs/specifications/06x-release-schedule.md §4.2. After this merges, scripts/release/autopilot.sh runs APR-RELEASE-001 §4 T-1..T-4 + close: deep (T-1, local), pre-publish dogfood, tag + release, clean-room.yml dispatched on the tag (T-3, run id recorded), assets by command, preflight, cascade (T-4, automated), install, host + installer receipts, close. Pmat-Ticket: PMAT-3080 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
§13.11 rung 1 — quorum shadow verdict Shadow mode: this records a verdict and merges nothing. A refusal |
Contributor
Author
|
Review ruling for arming (cop, non-author of the bump). This PR is the mechanical §4.2 bump produced by
Operator, 2026-09-21: "just by these optimization you should be able to release 0.69 today, ensure this happens". — aprender-04 (cop) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release bump for 0.69.0 (06x release schedule §4.2):
bump-version.sh 0.69.0across every workspace, and the CHANGELOG section below.When this merges,
scripts/release/autopilot.shruns the rest of the train, fail-closed (APR-RELEASE-001 §4): T-1 deep run, pre-publish dogfood, tag + release,clean-room.ymldispatched on the tag with the run id recorded (T-3), all release assets checked withscripts/check_release_assets.sh, publish preflight, the crates.io cascade (T-4, automated per operator 2026-09-13),install.sh --versionreceipts on intel and gx10 plus the CUDA asset receipts on gx10 and yoga, and the epic and milestone close.0.69.0 folds every remaining 0.68.x row into one train (EPIC #3080). The headline goal is Qwen models usable on pure CUDA. This release makes the CUDA path honest and routable:
apr servenow routes the Qwen3.5 hybrid to the modelapr runalready used.apr run --gpuno longer reports a CPU fallback as success.apr devicesno longer tells a CUDA build that CUDA is unavailable.Underneath, the must-carry quantization work (PP-QUANT-001 M1) is complete: one ggml tensor-type table, extracted from upstream, replaces the hand-typed copies. The release train itself now lives in the repository. The tag step cannot be reached while the milestone holds an open item, and the version is the scripts' only input. The logit-parity receipts are under contract, and the shapes gate runs with the fleet-pinned
pv. A run of gates that were measured reporting the wrong thing were fixed. It is also the first release assembled as an integration batch (#3669): 17 receipted PRs and one andon fix in one CI run and one queue slot.Qwen on CUDA — headline (Band 3)
apr serveroutes the Qwen3.5 hybrid toQwen35Model, asapr runhas since CPU: Qwen3.5 / Qwen3.8 hybrid GGUFs are refused entirely — no fallback exists #3091 (apr serve cannot load Qwen3.5 at all — 'Architecture qwen35 … runs through Qwen35Model'; goal A's floor and the P0 decide-lane design both name apr serve #3571 layer 1) (#3571 layer 1: apr serve routes the Qwen3.5 hybrid to Qwen35Model, as apr run has since #3091 #3608)apr run --gputhat fell back to the CPU now reports a refusal, not a success; the refusal had no production caller (refs apr run --gpu is 2-3x SLOWER than --no-gpu on the dense path: the GPU result fails correctness (cosine 0.4153) and falls back to CPU after the user has paid for it #3602) (#3602: apr run --gpu reported a CPU fallback as success — the refusal was written, tested, and never called #3638)apr devicestold every user CUDA was unavailable on a binary that runs CUDA; one flag now decides both (apr devices reports 'cuda unavailable reason=NotCompiled' on a binary that demonstrably runs CUDA — the first screen a user sees is wrong #3545) (#3545: apr devices told every user CUDA was unavailable on a binary that runs CUDA — one flag now decides both #3619)apr run --revalidatere-runs it (f2_validate_qwen35 runs a full CPU reference forward on EVERY call (67% of a 14s TTFT) — run it once per (model sha256, apr version, device) and receipt it #3604) (PMAT-3604: the F2 hybrid guard runs once per (model, apr version, device) — 9.7 s off TTFT, measured #3634)ModelConstraintskeeps the gated-DeltaNet shape keys (refs QE2E-INV-001 asserts Qwen3.5-9B ∈ [9.0B, 9.2B] but the repo's own 9b descriptor sums to 8.209B — the descriptor declares no DeltaNet tensors #3346) (fix(format): ModelConstraints dropped the gated-DeltaNet shape, so 18 of every 24 Qwen3.5 layers were counted as if their tensors did not exist #3350)One ggml tensor-type table — PP-QUANT-001 M1, must-carry (Band 0)
The release train, in the repository (Band 0b and Band 4)
scripts/release/(PMAT-3459 parts 1–2) (PMAT-3459 (part 1): port the release train's movable half into scripts/release/ — 7 declared deltas #3582, PMAT-3459 (part 2): port the tag path into the repo — autopilot.sh + 2, 14 declared deltas #3599)cut_tag(), and three mutants are killed (PMAT-3459) (PMAT-3459: the tag step cannot be reached without a clean milestone — gate inside cut_tag(), 3 mutants killed #3617)scripts/release/(Release scripts still carry 0.68.2's V/T/MS/EPIC and AP=/mnt/... — and the hardcoded-path ratchet does not match /mnt, so nothing catches it #3618) (fix(release): the train's identity is derived — release scripts carried 0.68.2's V/MS/EPIC/LAST_TAG and an out-of-repo AP (PMAT-3618) #3655)make publish" check-in is withdrawn, because T-4 is unattended (docs(CLAUDE.md): withdraw the "always ask beforemake publish" check-in — T-4 is unattended #3566)Ontology and SHACL (Band 3b)
pvon the runner it executes on, resolved the way forjar installs it, with the version checked against the pin (PMAT-3567) (PMAT-3567: the shapes gate on the FLEET-PINNED pv, on the runner it executes on — resolved the way forjar installs it, version proved against the pin #3633)parity-receipt-v2) and counted as their own entity type (PMAT-3577) (PMAT-3577: the logit-parity receipts under contract — parity-receipt-v2, extract:parity-receipt, and the 7 back-filled #3600)removed_bygets a shape:refusal-receipt-v1(removed_by has no shape, no schema and no validator — 0 occurrences tree-wide; settle it as a pv contract BEFORE any refusal is written (blocks #3597) #3605) (#3605: removed_by gets a shape — refusal-receipt-v1, with a closed sentinel set so the required field manufactures nothing #3613)kind:says the kind was assumed, on the first error the default caused (ONT-6b, PMAT-3537) (ONT-6b: a kind-less contract says the kind was assumed, on the first error the default caused (PMAT-3537) #3538)pvL2's column counts links, not an index, and--tableno longer panics on a byte-cut (pv proof-status --table panics on the real corpus: byte-index truncation inside a multi-byte char (obligation_matrix.rs:169) #3338) (fix(pv): the L2 column counted an INDEX, not a link — 3,573 of 3,753 obligations ticked without a test citing them #3351)Gates that were measured reporting the wrong thing (Band 1)
[profile.ci]setsfail-fast = false; 3 of 6 verdicts had been discarded, measured (PMAT-3587 (nextest half): [profile.ci] fail-fast = false — 3 of 6 verdicts discarded, measured #3626) (PMAT-3587)fleet_utilization.sh --selftestread a MATCH as a FAIL under pipefail (EPIPE) (PMAT-3629) (PMAT-3629: fleet_utilization --selftest read a MATCH as FAIL under pipefail (EPIPE) — no producer process, ratchet 75→74 #3632)ci_resolve_dirty.shselected every DIRTY PR, not the roadmap class: 14 where 8 qualified (ci_resolve_dirty.sh selected every DIRTY PR, not the roadmap class — 14 where 8 qualified #3623)guard_tree.shnow shows a passing guard'sUNMEASUREDandSUMMARYlines, so "not measured here" no longer reads as PASS (guard_tree.sh drops a passing guard's output — an UNMEASURED exit-0 reads as PASS in every CI log, so #3567's verdict can never be observed #3651) (fix(guard_tree): a passing guard's UNMEASURED / SUMMARY lines reach the log — a bare PASS could not say "not measured here" (PMAT-3651) #3653)pvshapes guard reports fleet state asUNMEASURED, never FAIL: a pin mismatch, apvthat returns no verdict, a missing parser, binary or capability. Intel's rewritten pin had turnedguard-treered on main (release(0.69): batch — 15 receipted PRs + fleet-pv andon fix, one CI run, one queue slot #3669)apr paritytold the user "parity disproven" (exit 5) for a model whose quant type the CUDA capability gate refuses (F16, IQ*); it now REFUSES with exit 12 and names the quant, which the pre-publish C14 row reports rather than fails (apr parity exits 5 ("parity disproven") when CUDA init REFUSES the model's quant type (F16/IQ*, PMAT-785): a tool limit read as a model defect; turns pre-publish dogfood C14 NO-GO #3685) (PMAT-3685: apr parity REFUSES (exit 12) a model the CUDA capability gate turns down, instead of "parity disproven" (5) #3689)python3as "the tree holds 0". Both now reportUNMEASUREDnaming the runner and the missing tool; a tool that is present and crashes stays red (guard-tree is RED on every intel runner since the 0.69 batch: check_pathonly_devdeps_unused_in_src.sh exits ENV for a missing TOML reader — fleet state must be UNMEASURED #3692, workspace-test RED on python-free runners: parity_receipt_denominator.sh scores a missing python3 as "the tree holds 0" #3695) (PMAT-3685: apr parity REFUSES (exit 12) a model the CUDA capability gate turns down, instead of "parity disproven" (5) #3689)CI throughput
HEAD^1..HEADinstead of requiring a second parent. A docs/roadmap/audit-only change runs no workspace tests, and renames are listed on both sides (Every merge-group run is tier=full: ci_test_tier.sh requires HEAD^2 but the queue is SQUASH (one parent) — a text-only PR runs ~2 runner-hours of unit tests; HEAD^1..HEAD is already the PR diff #3658) (PMAT-3658: merge groups stop paying the full hour (HEAD^2 gate vs a SQUASH queue); docs-only changes run no workspace tests #3664)book-contracts.ymldrops the three rust-cache steps (PMAT-3539) (book-contracts.yml: delete the three rust-cache steps — cache-bin false was never the fix (PMAT-3539) #3540)🤖 Generated with Claude Code
keep-open: #3080 #3545 #3571 #3602 #3658 are cited by the CHANGELOG for context only. Each closes through its own PR or row; EPIC #3080 closes at T-4 publish (autopilot
closestep).