Skip to content

fix(#3715 B1): release-readiness ENFORCES at T-1/T-4; report arm deleted (R10) - #4603

Merged
noahgift merged 26 commits into
split/ont10-rest-0.70from
0d/3715-b1-main
Sep 29, 2026
Merged

noahgift merged 26 commits into
split/ont10-rest-0.70from
0d/3715-b1-main

Conversation

@noahgift

Copy link
Copy Markdown
Member

Refs #3715 (B1, the release-readiness gate). Stacked on #4588 (#4502 PR-2), which carries the cells producer. The base retargets to main when #4588 lands.

BLOCKED on the gate pv. Released pv 0.69.2 has neither --surface nor --crux-receipts. Both arrive with #4587 (#4502 PR-1) and are not released yet. The 0.69.2 release-readiness-v1 shape also requires a surface (minCount 1). Measured on intel with pv 0.69.2 (mac-server): green fixture rc 1, drop-one-cell rc 1, restored rc 1, so 0.69.2 is RED on every input. The operator decides which pv the gate uses. The PR stays draft until then.

What it does

R9 proof

(a) Planted failing check leads to RED, and (b) a clean pass leads to GREEN. falsify.sh runs the real wrapper and the real cut_tag over pv's green fixture:

green     readiness_rc=0 cut_tag_rc=0 tag=CUT      log_sha256=8c73e91e13beaa51
red       readiness_rc=1 cut_tag_rc=1 tag=REFUSED  log_sha256=7cd8a93441f7f097   (one lambda cell dropped)
restored  readiness_rc=0 cut_tag_rc=0 tag=CUT      log_sha256=2acdf4a92d0766d8

This run used pv built at dev 8d021f6. With released pv 0.69.2 the gate cannot pass (see BLOCKED above). The receipt will be re-run on whichever pv the operator picks.

Selftests on this head: release_readiness.sh --selftest 30/30, check_publish_preflight.sh --selftest 57/57, and check_release_models_t1.sh --selftest green. Each new refusal row is killed by its mutant:

  • dropping the preflight WARN check or the ENFORCE check breaks r8_report_mode_warn_refuses and r8_rc0_without_enforce_pass_refuses;
  • dropping the autopilot WARN die breaks readiness-warn-stops.

(c) The gate runs only on the release path (L21).

  • No workflow runs the gate itself. CI only runs fixture selftests: ci/sections.yml:2256 runs check_publish_preflight.sh --selftest, and the pv unit test ont_release_readiness runs too.
  • The real gate is called only from scripts/release/autopilot.sh (T-1) and scripts/check_publish_preflight.sh R8 (T-4).
  • A normal PR's check list (fix(guard): silicon coverage — a short API listing is NO-GO, never STALE (PMAT-4594) #4598) has no readiness check: determinism, gpu-touched, gx10, mac-check, present, workspace-test-shard (1/2/3), x86-main, yoga.

Final proof is still owed: the rc.1 and FINAL release-decision run IDs showing the #3715 step ran in ENFORCE and passed.

🤖 Generated with Claude Code

noahgift and others added 16 commits September 28, 2026 16:02
…s, size prompts per mode (PMAT-3715, PMAT-3712)

Quorum 2 on 0d/3715-cells-at-t1 was not agreed: 2 FAIL (sonnet-5 x2), 1 PASS (haiku). Every concrete finding is fixed:
- an --only that names no inventory model wrote 0 cells at rc 0; now it refuses, rc 2 (case only-rung, mutant only-vacuity)
- load_rungs failures were discarded; now a named refusal, rc 1 (case rungs-empty, mutant rungs-silent)
- an off-mode prompt was sized by the thinking budget; now it is sized per mode (case offmode, mutant offmode-budget)
- the receipt cited evidence from another diff; section 7 now cites this branch's own

check_ladder_cells_producer.sh: 12 cases, 9/9 mutants killed. bashrs head vs base: errors and warnings equal.
Round-1 artifact committed as evidence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 0265c13)
)

`apr serve` holds the GPU lock for its whole life. The producer kept one serve up
across rungs, so the next rung's locked `apr run` waited --lock-wait and was
refused (rc 75), and so was every cell after it (09-28 gx10 pilot). Serve cells
now run LAST per model: still one serve per model, never a wait on ourselves.

check_ladder_cells_producer.sh: new case `selflock` (--lock, --lock-wait 3, all
16 owed rows measured, no rc 75) and mutant `serve-inline` (the old inline serve)
that it kills. Run on intel: 13 cases + 10 mutants as expected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent: aprender-0d
(cherry picked from commit 2ed3599)
…e the owed set (#4590, #3715)

Operator ruling 2026-09-28: Qwen3 on GB10 is correct but 27-34x slower than
Qwen3.5 (8k think-on, sm_121, serial prefill: Qwen3-1.7B 967 s, Qwen3-8B
2163 s vs Qwen3.5-9B 63-80 s). DE-CLAIM it for 0.70; fix in 0.70.1 (#4590).

- contracts/model-capability-ladder-v1.yaml: new `cells.declaimed` entry
  {arch: qwen3, host: gx10, issue: 4590, until: 0.70.1, why}. lambda still owes
  every Qwen3 cell, and the qwen3 long-rung representative is unchanged.
- judge (model_ladder_cells.py): `declaimed()` validates each entry (arch, a
  declared host, issue > 0, until, why) and FAILs a bare one; a matching
  arch x host prints DECLAIMED on every run and is skipped there only.
- producer: `--host`; a de-claimed arch is not measured on its host.
  model_ladder.sh passes --host.
- cases: green-cells-declaimed, red-cells-declaimed-bare (+ mutants
  declaim-skip, declaim-bare); producer case `declaim` (+ mutant).

intel: check_ladder_cells_producer.sh rc 0 (all cases + mutants). Judge
self-test: head 149 cases 1 bad, base 147 cases 1 bad -- the same bad at both,
tomllib missing on intel's python 3.10 (ladder_equiv.py), not this change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent: aprender-0d
(cherry picked from commit 885b5b8)
…te the 0.70 de-claim (#3715)

Operator 12:17: DE-CLAIM Qwen3 on GB10 for 0.70, apr WARNS, release note.
known_issue_warning(arch, cc) is pure and table-tested (9 cases); the two
mutants (prefix match, no cc bound) are killed by qwen35/121 and qwen3/89.
generate_2 prints it once per process beside the prefill-path line.
CHANGELOG Known issues names #4590 and the 0.70.1 fix plan.

clippy -D warnings on aprender-serve --features cuda is red at base in
cuda/executor/residual.rs:314,343 (untouched here).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent: aprender-0d
(cherry picked from commit 474e0cb)
… fixture (#3715)

Rebased onto PR-2 head e9556d9, whose green-cells carries llama.cpp fit
verdicts (#4016); the de-claim fixture predated that rule and went red.
It is now green-cells with the qwen2/gx10 de-claim and gx10's c.gguf cells
removed. Judge self-test on intel: head 151 cases 1 bad = base 149 cases 1
bad (tomllib, py3.10); declaim-skip and declaim-bare mutants killed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent: aprender-0d
(cherry picked from commit 6f0818d)
…by default (#3715)

done_when 4. scripts/release/release_readiness.sh wraps `pv lint --gate shapes
--shape release-readiness-v1`: it earns --receipts-commit only when the receipts
name one 40-hex apr_sha whose tree equals the release commit outside evidence/,
and it maps pv's 0/1/2/3 onto the gate. DEFAULT_MODE=report until #3712's cells[]
producer lands: a Fail is a WARN row, while a decline, caller error or missing pv
stops. RELEASE_READINESS_MODE may only strengthen it to enforce.

- autopilot: a new `readiness` step between models and tag grades the T-1
  receipts plus the newest .dogfood receipt. A non-zero exit STOPs before the tag.
- preflight R8: the same wrapper at T-4 over the committed receipts.
- check_release_models_t1: 5 readiness rows and 2 mutants (37 rows). The rows
  caught the autopilot's R8 regex missing the wrapper's `ok    R8` pass line.

Measured on 0.69.1: pv rc=1, 1101 violations, of which cell=1008.
Selftests: wrapper 17/17, preflight 54/54, models_t1 37/37, with every mutant
killed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 8a16b9a)
)

Cop ruling 2026-09-25 09:15Z: "record the rc and receipt, don't stop".
Under `report`, a pv decline, a missing pv, an exit outside pv's contract, or a
"Fail" with no Fail verdict now prints its FAIL row plus
`WARN  R8 REPORT-ONLY could not judge (rc 2)` and exits 0. Under `enforce`
each is still exit 2. A caller error (3) stops in both modes, because it
means the wrapper itself was called wrong.

Selftest 20/20. Two mutants killed: downgrade under enforce too (16/20), and
downgrade removed (17/20).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 5a425da)
Quorum follow-up (sonnet nit, agy finding). The rc-1-with-no-verdict and
rc-101 branches now have report-mode rows, and the missing-pv report row
greps the REPORT-ONLY WARN line itself. Selftest 23/23; with the downgrade
removed, the mutant fails 5 rows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 5b8eba4)
The gate runs released pv, so a release_evidence.rs fix would never be used.
The de-claim is therefore in what pv reads:
- ladder rungs qwen3-1.7b-q4km and qwen3-8b-q4km: hosts [lambda] until 0.70.1
- model_ladder.sh moves the gx10 Qwen3 files out of inventory[] into
  declaimed_inventory[] (only for a (host, arch) listed in cells.declaimed)
- check_model_ladder.sh hosts floor: a host lost to cells.declaimed prints
  DECLAIMED, any other lost host still FAILs; case declaimed-host-on-rung +
  mutant declaim-host (killed)
- model_ladder_cells.py still judges declaimed_inventory (fail closed)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent: aprender-0d
(cherry picked from commit ca2daad)
… --cells

- release_readiness.sh DEFAULT_MODE=enforce (operator B1, 2026-09-28); env
  may strengthen, never weaken; selftest 23/23
- models_t1.sh runs model_ladder.sh --cells on both hosts, so release receipts
  carry cells[] (the 1008 missing-cell violations)
- check_release_models_t1.sh anchors + no-cells mutants, 39 rows

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent: aprender-0d
(cherry picked from commit d925422)
Operator 2026-09-28: "missing or skipped step -> release refused".
- release_readiness.sh prints, for an ENFORCED Pass only:
  ok    R8 #3715 ENFORCE PASS version=V commit=C pv=<pv --version> out_sha256=<pv output>
- autopilot cut_tag() requires that line in $AP/readiness-t1.log FIRST, ahead of
  the carry and git tag: a run started past readiness, a report-mode pass, a Fail,
  another commit or no log -> no tag
- check_tag_step_gated.sh: rows absent/report/stale -> no tag, mutant 6 killed

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent: aprender-0d
(cherry picked from commit 79a81e0)
… derived and every release is RED

release-readiness-v1 requires release:surface (minCount 1, #3745): no surface, no cells, no pass.
The wrapper never passed --surface, so an enforced R8 could never be green.
- autopilot readiness: re-proves the release-built apr is $MC, writes apr surface --json to
  $AP/surface-t1.json and passes it
- release_readiness.sh --surface; default evidence/release/surface/<V>.json (T-4, committed),
  kept out of the receipts dir because pv reads every *.json there as a host receipt; 27/27

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent: aprender-0d
(cherry picked from commit 997a343)
#3715)

pv reads every entry of evidence/crux/<V>/ as crux-inference-receipt/v1 and
refused the whole grade (rc 3) on prompt-certification-inventory.json, which
is committed beside the receipts on 0.69.1. The wrapper now grades a symlink
view without prompt-certification*, the same names model_ladder_cells.py
skips. Selftest rows certification_beside_crux_runs and
certification_is_not_a_crux_receipt; a filter-removed mutant turns them RED.
On 0.69.1 with the current surface, pv now judges: Fail, 29854 violations.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent: aprender-0d
(cherry picked from commit a0ca667)
…3715)

Quorum lanes 1 and 3 (sonnet, haiku) measured 4 of 39 rows RED: 997a343
made the T-1 readiness step re-prove $REPO_ROOT/target/release/apr against
MC and take its surface, and the harness never put an apr there. ready() now
plants a stub apr at the path autopilot pins; r_goes also requires the
wrapper to receive --surface $AP/surface-t1.json from that binary. New row
readiness-stale-apr-stops (an apr from another commit stops the step before
the wrapper runs) and mutant readiness-any-apr (the check removed -> RED).
41/41 rows; floor 41. Lane 2's minor: the R8 fixture comment still called
report the committed mode.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent: aprender-0d
(cherry picked from commit 57a9497)
…e, and a WARN row stops T-1 and T-4

Operator R10 (2026-09-28): "report-only is not an option". L19: a silent report-only check = hard stop.

- release_readiness.sh: resolve_mode prints enforce or fails; `report` as the env value OR as a committed
  DEFAULT_MODE is a caller error (3). Both WARN R8 REPORT-ONLY arms (the "not a stop until #3712" line)
  are gone. Selftest row mode_has_no_report_arm.
- autopilot.sh T-1: a WARN R8 row from the wrapper is a die, even at rc 0.
- check_publish_preflight.sh T-4 R8: rc 0 is not a pass without "#3715 ENFORCE PASS" for this version
  and HEAD; a WARN R8 row refuses.
- Rows flipped: readiness-warn-continues -> readiness-warn-stops; r8_report_mode_warn_passes ->
  r8_report_mode_warn_refuses; new r8_rc0_without_enforce_pass_refuses. Each killed by its mutant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent: aprender-0d
… de-claimed with qwen3

Operator ruling 2026-09-28 16:15Z widens R1 (Qwen3 only) to every dense model on GB10:
serial prefill is the sm_12x default for every non-hybrid arch (select_prefill_path).

- cells.declaimed: + qwen2 @ gx10 (issue 4590, until 0.70.1); rung qwen2-1.5b-q4km hosts: [lambda]
- README + CHANGELOG: "GB10 dense models: prompt processing unbatched (11.4 tok/s); fixed in 0.70.1 (#4590)"
- enforce-gate proof (ont_release_readiness.rs): withdrawn on gx10 owes nothing; a planted gx10
  claim of the dense model is RED; lambda dropping one dense row is RED (withdrawn != waived)

Agent: aprender-e6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift and others added 4 commits September 28, 2026 22:03
…D — planted RED, qwen3moe@gx10 (#3715)

STAGED, branch-only (cop 20:00Z/20:26Z; operator rules 07:30Z). Not for merge.

cells.declaimed withdrew a (host, arch) from the owed cells, but nothing
failed when a rung's host set (what released pv reads) or a long-rung
representative still claimed it. declaim_still_claimed() in the judge
(enforce: judge rc 1 -> check exits 1):
- a rung whose hosts (or, absent, every required host) name a de-claimed
  (host, its arch) -> FAIL
- a long_rungs_for representative for an arch de-claimed on every required
  host -> FAIL

Case table: red-cells-declaimed-still-claimed (new), green-cells-declaimed
narrowed to hosts: [lambda] (it claimed the de-claimed pair); cmutant
declaim-claimed killed. Self-test 153/153.

Data: cells.declaimed + (gx10, qwen3moe), issue 3715, until 0.70.1 (0d H4
19:54Z: arch-level DATA is clean for qwen3moe only). Real-contract proof in
evidence/3715-declaim-planted-red/: real = 0, planted qwen3moe rung = 1,
narrowed = 0, orphan representative = 1.

Agent: aprender-e6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…or 0.70

Operator D1 (relayed by the cop, 2026-09-28 20:10Z): the qwen3moe-gx10 de-claim
lands with the planted RED and a release-note warning. CHANGELOG Known
issues + README known-issue note, same shape as the #4590 entries.

Agent: aprender-e6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t holds both files

lambda holds Qwen3-30B-A3B-Instruct-2507 and Qwen3-Coder-30B-A3B (~/models, lambda H4 queue), so the
entry now says what withdrawn-not-waived means there: lambda still owes every qwen3moe cell.
Data text only; the judge keys on (host, arch) and is unchanged. Falsifier re-run on the real contract:
entry -> withdrawn rc 0, drop -> owed again, bare -> rc 1.

Refs #3715

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent: aprender-0d
…both files and still owes them

Same false claim 0d fixed in the contract (e59329f); the release note carried it too.

Agent: aprender-e6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ranch

The base carries rebased copies of this branch's older #3715 commits (every base subject touching the
9 conflicted files has a same-subject commit here). This branch adds R10, G2 and D1 on top, so the
conflicted files are taken from this branch: for 7 files ours-vs-base equals exactly those newer
commits; check_publish_preflight.sh differs from the base in one reworded comment and
check_release_models_t1.sh in the R10 warn-stops row, both superseded here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent: aprender-0d
noahgift added a commit that referenced this pull request Sep 29, 2026
…ompts with 400 before the model lock (PMAT-4616)

Quorum @0c2928642d (gemini, haiku) found two remaining 500 paths:
- try_cuda_generate / try_cuda_batch_generate had no pre-flight, so an
  over-context prompt reached the engine. They now call
  preflight_serving_context, the same check chat and completions run
  through fit_serving_context: a 400 "context exceeds N" before the lock.
- gpu_batch_completions_handler's batch_generate_gpu Err arm hard-coded 500;
  it now maps through generation_error_status (ContextLimitExceeded -> 400).

Two tests: no cap -> Ok; cap 3 -> 2 Ok, 3 refused with 400.
Roadmap entry: title and criterion 3 name every covered route; criterion 1
states that the --context-length 32768 -> 200 case is #4603, not this ticket.

Complexity vs main: cyclomatic and cognitive unchanged on all touched fns.
intel: clippy default rc0; cuda only pre-existing residual.rs; d5_/cap_context 13 passed.

Agent: aprender-2e-serve
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift added a commit that referenced this pull request Sep 29, 2026
#4603)

A cuda-only aprender-serve lib test, so yoga's cuda-unit job runs it with
no model file. An 8192-context llama-shaped model (above serve's old fixed
4096) is sized by `for_serving` and served through the real router and the
continuous-batching scheduler:

- the device KV is 8192, the model's context;
- /v1/completions with 8188 prompt tokens + max_tokens 4 answers 200 with
  all 4 tokens (usage 8188/4, finish "length");
- 8192 and 8193 prompt tokens answer 400 "context exceeds 8192 ... refused
  whole, not truncated", not a 500 and not a truncated 200.

The weights are centred Q4_K with an FFN norm and separate Q/K/V. The
shared fixture's all-positive d=1.0 pattern (cosine 0.00) and its missing
FFN norm (cosine 0.54) both fail the CPU/GPU parity gate, correctly.
Without a device it prints "CUDA model init failed", which cuda-unit
counts as a failure, not a pass.

Agent: aprender-00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift added a commit that referenced this pull request Sep 29, 2026
…with a 400 (K1 #4603, D5 #4614)

KV-only vehicle for #4630, folded (moved, not copied) from the ec stack onto main.
Three rows:

- #4603 K1: `apr serve` builds the CUDA model with `for_serving`, which sizes the
  device KV to the model's context capped by free VRAM (two batched slots
  budgeted, never below the old 4096). Before, serve fixed it at 4096 whatever
  the model declared, so a longer prompt overflowed the cache and answered 500.
- #4614 / PMAT-4616 D5: a prompt at or past the serving context is refused
  whole with 400 "context exceeds N", on chat, completions and stream.
- The KV budget core it needs (session_kv.rs, resident.rs).

C25 test: api/tests/serve_kv_limit_k1.rs builds a synthetic 8192-context model,
serves it through the real router and batch scheduler on the device and
asserts KV == 8192, 8188+4 -> 200 with all 4 tokens, 8192 and 8193 -> 400
"refused whole". A return to Fixed(4096) fails the KV assertion.

gx10 (cc 121): aprender-serve --features cuda lib filter
serve_kv_limit_k1|serve_context_d5|session_kv|resident 28/28, apr-cli serve
429/429.

Refs #4603 #4614 #4630

Agent: aprender-00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift added a commit that referenced this pull request Sep 29, 2026
…op 11:03Z)

The tree is exactly devont/k1-kv-only (origin/main + K1 #4603, D5 #4614 and
the KV budget core). The other stack rows (#3715 serial prefill / for_session,
#3413 message, #4620, #4623, #4624) stay on their ec parents for a later PR;
nothing is deleted there. A merge, not a rebase or force-push.

Agent: aprender-00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…4 + PMAT-4633)

Agent: apr-0d-b1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Member Author

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

{
 "ticket": "PMAT-3715",
 "head": "616fd1461e3383ffd9ad94f4998d38fcf555cf18",
 "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": 8
  },
  {
   "lane": 2,
   "verdict": "FAIL",
   "findings": 2
  },
  {
   "lane": 3,
   "verdict": "NO-VERDICT",
   "findings": 0
  }
 ]
}

…; carries main)

Agent: apr-0d-b1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

# Conflicts:
#	docs/roadmaps/roadmap.yaml
@noahgift

Copy link
Copy Markdown
Member Author

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

{
 "ticket": "PMAT-3715",
 "head": "9efceaa0248ab90213ccc1cb1868653eba33aa03",
 "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": 4
  },
  {
   "lane": 2,
   "verdict": "PASS",
   "findings": 0
  },
  {
   "lane": 3,
   "verdict": "NO-VERDICT",
   "findings": 0
  }
 ]
}

…'planned for 0.70.1', not 'fixed' (quorum round 2)

Agent: apr-0d-b1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Member Author

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

{
 "ticket": "PMAT-3715",
 "head": "33b032506af6cb0300815e499ba9109dbda76a2c",
 "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": 2
  },
  {
   "lane": 2,
   "verdict": "PASS",
   "findings": 0
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 0
  }
 ]
}

noahgift and others added 2 commits September 29, 2026 21:13
… gemini-3.1-pro-high; base split/ont10-rest-0.70)

Agent: apr-0d-b1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Agent: apr-0d-b1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@noahgift
noahgift marked this pull request as ready for review September 29, 2026 20:02
@noahgift
noahgift merged commit 9b47d23 into split/ont10-rest-0.70 Sep 29, 2026
1 check failed
@noahgift
noahgift deleted the 0d/3715-b1-main branch September 29, 2026 20:03
noahgift added a commit that referenced this pull request Sep 29, 2026
Pmat-Ticket: PMAT-4502
Agent: aprender-07

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift added a commit that referenced this pull request Oct 4, 2026
… beside chat's session KV

Merges the #4630 branch (devont/k1-serve-kv @ da4f4f9) into this one by merge, so its
commits and its review receipt keep their history.

The two branches share a merge base that already holds this PR's session-KV work, and #4630
later dropped that work to stand alone on main. A plain merge reads that drop as a revert: it
was clean, and it silently took gpu_profile.rs and chat_load_tokenizers.rs back to main and
removed for_session from gguf/cuda/mod.rs. This merge keeps both PRs' changes against main
instead:
- gpu_profile.rs, chat_load_tokenizers.rs: this PR's version (#4630 leaves them as on main).
- gguf/cuda/session_kv.rs: #4630's version, which holds every line of this PR's.
- gguf/cuda/mod.rs: both KV modes side by side -- FitContext with for_session and
  session_kv_len (#4621), FitServing with for_serving and serving_kv_len (K1), both match
  arms, and the QK-norm prefill fit check (#3715).
Against either branch, the result drops no line that branch changed from main.

Refs #4603 #4614 #4616 #4621

Agent: aprender-wprodmodels
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.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