Repository navigation
Conversation
…(GLM53_FINEGRAINED_APC) The hybrid coordinator disables fine-grained hits for the whole model because KpoolTailManager — which opts out of prefix caching entirely (per-request scratch, never hashed) — is included in the compatibility check. One veto silences three cooperating subsystems that already operate at hash_block_size = 64: the mamba partial-tail snapshot producer/consumer and the scheduler's chunk stop. Every hit therefore snaps to the 3584-token block and a warm turn recomputes up to 3583 tokens (~3 s on 2x GB10). Overlay patch_apc_fine_grained_hits.py (fail-closed, transactional apply, composes with patch_hybrid_prefix_hit.py in either order): exclude non-participating managers from the veto; enforce the real invariant hash_block_size % index_kpool == 0 (index_kpool = 4 here), verified from the live specs at coordinator init — a violating or unverifiable scratch group refuses to boot (GLM53_FINEGRAINED_APC=0 restores upstream behaviour). The required alignment is lcm(64, 4, 64) = 64, so _cache_hit_alignment_tokens is unchanged; an earlier '896 alignment' idea would have overstated hits 14x. Expected: a re-sent conversation hits at its previous prompt tail (falsifiable: P=31672 -> cached 31616, control 28672). Launcher knob exported to both ranks; Dockerfile COPY + test-before-patch + RUN; README/.env.example; host test (86 checks). Live receipts (L1-L5 ledger in docs/) to follow. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Tested successfully on a production-like 2x DGX Spark deployment. Integration tested:
Boot confirmed: The live request had 119,995 prompt tokens and the repeated request reported exactly 119,936 cached tokens: 119,936 is 64-aligned and is not a multiple of 3,584, so this is direct wire-usage evidence that the effective hit grid changed from the scheduler block to the 64-token hash block. Cold TTFT was 174.522s; warm TTFT was 0.581s. Combined with #83, two distinct 120K conversations were alternated A→B→A→B. Every warm/return request reported 119,936 / 119,995 cached tokens (99.95%) with TTFT 0.567–0.590s. Additional acceptance passed: forced tool call with required arguments, native vision smoke, both-rank model load, and no new NCCL/CUDA/EngineCore errors. One combined-wiring hardening suggestion from the deployment: fail closed on both patch artifacts before stopping healthy containers, and pin the overlay order on both ranks as Thank you — the 64-token alignment is observable and working as designed on the live fork/image. |
Tester feedback (a2001eric-web, production-like 2x Spark run, MiaAI-Lab#83+MiaAI-Lab#84 integrated): `restart` ran `stop` first and only then, inside start() -> preflight, noticed a missing patch artifact - by which time both healthy containers were already gone. - New `validate_overlay_artifacts` (own sentinel block, bash array, refuses an empty list): every mounted overlay - patch_hybrid_prefix_hit.py and patch_apc_fine_grained_hits.py included - must exist, be non-empty, parse as Python (ast.parse, no __pycache__ litter), carry its own distinct identity string (MARK / target path / hook marker) and end with its exact last non-blank line, so a *_PATCH_HOST pointed at a different overlay, or a copy truncated anywhere before EOF (even one that still parses), is caught - not just a missing file. The chat template (regular, readable, non-empty file) and ablit/LAYER_MAP.json (parses as JSON) are gated too; previously a missing template was found only after stop. This is a guard against operator error, not a tamper-proof manifest; residual: a line-boundary truncation landing on an earlier identical last line while still parsing. - main() runs it next to validate_numeric_config on start|restart, BEFORE `restart` reaches `stop`, exiting 2 with nothing stopped. preflight keeps its later checks. - The GLM53_APC_RETENTION_INTERVAL_SWA guard lives with the launcher that forwards that knob (PR MiaAI-Lab#83); this launcher validates what it forwards (GLM53_FINEGRAINED_APC, already in the guard). - README: python3 on the head is a stated prerequisite. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…anks Tester feedback (a2001eric-web): pin the overlay order on both ranks as hybrid -> per-group -> fine-grained. Previously the head and worker inner scripts each carried their own literal `if [ -f ]; python3` ladder, so the two ranks could drift and the relative order of the three prefix-cache overlays (they share the kv_cache_coordinator.py helper insert point) was implicit. GLM53_OVERLAY_ORDER is now the single ordered list; emit_overlay_block writes it verbatim into the head and the worker inner script. The generated apply block is byte-identical to the previous literal one except for the extra pinned slot (patch_hybrid_prefix_hit -> patch_apc_per_group_retention -> patch_apc_fine_grained_hits), which stays a `[ -f ]`-guarded no-op in-container unless that artifact is mounted. Which artifacts MUST exist is decided by the overlay artifact guard, not by this list. tests/test_kpool_tail_slotmap.py and tests/test_xgrammar_termination.py asserted the literal per-rank ladder (count == 2); they now assert their patch is an entry of GLM53_OVERLAY_ORDER and that emit_overlay_block feeds both rank scripts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rder, rank parity)
tests/test_launcher_rank_parity.py drives the shipped start.sh under bash
from an allow-listed environment with docker / ssh / scp / rsync / curl /
ip / nvidia-smi stubbed first on PATH (pytest-collectable too):
A GLM53_APC_RETENTION_INTERVAL_SWA guard matrix (accepted: unset, "",
0, 3584, 0014336 -> 14336, 999936; rejected: non-multiples, > 1e6,
signs, floats, whitespace, CR, junk) - on the checkout whose launcher
actually forwards that knob (detected from the -e line, not guessed).
B `./start.sh restart` with a bad knob, or with ANY *_PATCH_HOST
missing or pointed at a different overlay (and empty / unparseable for
the prefix-cache ones), exits 2 with ZERO docker or ssh calls; a valid
configuration passes the gate and reaches `stop` on both ranks.
Also: a valid-prefix truncation (cut right after the identity line),
a missing or directory chat template and a non-JSON ablit layer map.
C GLM53_OVERLAY_ORDER lists hybrid -> per-group -> fine-grained, no
literal per-rank ladder remains, write_inner_scripts emits the
identical `[ -f ]`-guarded sequence into head and worker.
D launch_cluster dry-run captures both `docker run` lines (head argv,
worker via the ssh command string) plus every scp, and asserts the
chain head-mount = scp source = worker-mount for every /opt/glm53
patch, identical effective GLM53_APC_RETENTION_INTERVAL[_SWA] /
GLM53_FINEGRAINED_APC (and VLLM_PREFIX_CACHE_RETENTION_INTERVAL[_SWA])
values, and PRESENCE of every knob the launcher wires; a synthetic
one-rank mismatch (env, mount, scp source) is shown to be reported.
README: test table row.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Thank you for the combined-wiring run and the 64-token wire evidence. The hardening you suggested is now on this branch as additive commits on top of the commit you tested —
Local test run (macOS, bash 5.3, pristine The five Dry-run validator receipt on the Spark head (deb8, bash 5.2, Python 3.12). Temp copy of this branch at Every bad input exits 2 with zero docker/ssh calls; the control run with the deployed No live reboot was performed. The production pair had been restarted by the owner shortly before this run and is in active use, and the deployed launcher ( Four adversarial review passes (gpt-5.6) were run on the diff before pushing and their findings folded in; two of its suggestions were deliberately not taken: a per-artifact SHA-256 manifest (this gate targets operator error — missing / mis-pointed / truncated / broken files — not tampering, and a digest manifest would couple every overlay edit to a manifest bump), and dropping the |
|
Thanks for PRs 83 and 84! Big improvement in for example OpenCode sessions. This is what my LLM had to say about it:
|
|
Thank you for the independent run and the token-level counters — 554,048 / 554,210 (99.97%) on a 50K→63K conversation is excellent evidence, and yours is the second independent 2× Spark setup to exercise #83+#84 together, with |
…-hits # Conflicts: # README.md # start.sh
|
Updated to current main (e25aa70) by merging main into the branch — merge commit 8f103ca, plain push, no force-push; tested history preserved (df8942b and the three hardening commits remain ancestors). Conflicts: start.sh (7 hunks — knob capture/config/bool-flag helper/validator call/-e lines vs main's indexer-workspace/spinwait equivalents, both sides kept; both rank-script apply blocks re-derived onto |
|
I thought I noticed a drop in per-position drafter acceptance in the logs when running PRs 83 and 84, so I tried to benchmark it. Below is what Fable thinks of it: A/B on 2x GB10 (TP=2), same image and same input rev, only the two overlay patches toggled: fine-grained hits (#84) reduce DFlash2 acceptance on warm turns; #83 alone does not. Setup: GLM-5.3-Flash EXL3 4bpw, DFlash2 drafter k=7, MNBT 2048, max-num-seqs 4,
Accept len = 1 + accepted / drafts. Warm TTFT went from about 3.5 s (stock, #83) to about 1.1 s (#84, both), so the patch does what it says. Reading:
Caveats: 3 repeats per cell, thinking off, single-stream only. Happy to share the JSON files and the probe script, or re-run with more repeats or specific settings. |
|
Thank you for the careful A/B — the per-position counter method and the fixed-assistant-turn construction are exactly the right instruments, and your measurement caught something our design doc had flagged as a risk (R4) but never measured. We re-ran your probe shape on our production pair (2× DGX Spark, TP=2, next3 image) with a Codex-reviewed kit: BAAB fresh boots (R_both → R_83 → R_83 → R_both), single-knob contrast — On your acceptance claim: our result is weakly directional in the same direction as yours (our pre-registered language cap: n = 2 boot pairs; both boot pairs agree in sign, cluster signs are 11/12, not unanimous).
Boot-pair warm deltas (independent units): −0.361, −0.689; conversation-cluster deltas 11/12 negative (sign-p 0.006, descriptive — clusters are pseudoreplicated). Pooled delta −0.53, a bit larger than your −0.27/−0.35. Cold acceptance is flat across arms (spread 0.08), and — as in your table — each boot's pooled warm acceptance stayed above its pooled cold. Per-position, the arm-pooled rate gap is tail-heavy: ≈0.010 at position 0 growing to ≈0.115 at position 6 (small non-monotonicities at intermediate positions) — same tail-heavy shape as your pos-7 column. Mechanism (candidate, consistent with source and both datasets, not yet instrumented): on the 3584 grid a warm turn re-prefills a 2.5–3.5k tail ≥ the drafter's 2048-token sliding window, so the drafter's whole window is rebuilt from fresh hidden states every warm turn — an acceptance bonus that costs the multi-second TTFT you measured. A 64-grid hit forgoes that re-prefill; with per-group SWA retention at 0 the drafter resumes on an empty window. Warm-above-cold in both arms is consistent with a forgone bonus, not drafter corruption. Your #83-only +0.58 remains unexplained by us too — open item. Definitive attribution needs drop_eagle_block/eagle_verified receipts from an instrumented boot; on our list, not claimed here. Since alignment keeps coming up as the obvious knob: coarsening to 896 is not the fix. The gate's invariant does generalize (896 = 14×64), but the fine-grained lookup paths are positionally sound only at Net effect for the trade you surfaced: at median completion length 35 tokens in both arms, median warm-turn wall fell 2.94 s → 1.22 s with fine hits on; decode medians were identical (0.66 vs 0.67 s). The acceptance drop costs ≈1.8 ms per generated token against a 1.7 s TTFT saving — breakeven ≈ 1000-token replies (estimate). In this probe regime #84 is clearly net-positive; broader production workloads remain unmeasured. Your agentic-sweep number (4.82 → 4.10) is the regime where the acceptance side weighs most, and a counterbalanced multi-boot window in that shape is the right next measurement. On your temp-0 divergence observation: honest status — our equivalence instrument has not yet cleared this deployment's own nondeterminism floor, and we won't claim either direction from it. What we can report, with receipts: on this pair, two cold runs of the byte-identical request (fresh cache-salt namespaces, same boot, idle server) already produce different text at temperature 0. Separated by horizon: short answers are bimodal via single near-tie flips (max |Δlogprob| floor ≈ 1.12 nats); verbose 64-token answers gave cold-vs-cold floors of 8.04 and 11.96 nats in the same boot; independent 400-token cold pairs differed at 349–388 of 400 positions. Three probe designs failed to clear that floor (the first two — natural-EOS length-skew and Probe script, driver, and the four per-boot JSON receipt files are available — happy to push them to this branch or share directly. |
|
Status: rework — one default change and one trim, then this is the fine-grained candidate we stack on the replay guard. Verified: read the full diff against current main; the core mechanism is the same veto-scoping as #125 ( Change requests:
Waiting on: our cache A/B queue on the 2x GB10 TP=2 E3 kit: #130 (per-group retention + safe DFlash replay, SWA=0, global unset) first; if it passes, the pair experiment — #130 + this PR at the 64 grid with |
plotarmordev
left a comment
There was a problem hiding this comment.
Requesting changes — full rationale in #84 (comment). Edit list:
- Default GLM53_FINEGRAINED_APC to 0 (opt-in): two independent probes show a warm accept-length regression; keep the strict 0/1 validation as-is.
- Keep the runtime hash % kpool verification and the kill switch — that's the load-bearing hardening.
- Drop the connector receipt and the upstream-fixed (e126687a) no-op detector.
- Rebase onto current main dc6936c (same conflict class as #83; rank-parity test union when stacking).
Queued behind the #130 A/B as the hardened fine-grained candidate; no merge default-on in any form.
Resolved by measurement, not by text: - Adopt upstream's launcher machinery as-is: overlay artifact gate, GLM53_OVERLAY_ORDER, retention knob validation/forwarding, tests, docs, start-tp4.sh, numeric-config changes. - Keep the MiaAI-Lab#83 per-group retention and the pre-MiaAI-Lab#130 hybrid APC overlays. The MiaAI-Lab#130 rework measured worse on this kit's agent probe (3x30k repeats 0.000 vs 1.000 hits; 2x60k 0.955 vs 0.999) across B4/B5 and was isolated from our DFlash block-drop patch by B6. Receipts: docs/headroom-2026-09-11.md section 12.3. - Keep our additions: fine-grained 64-token hits (PR MiaAI-Lab#84), vLLM #54163 block-drop cherry-pick, adaptive-k default + auto capture list, spinwait 16, dual-HCA GID preflight, portable jinja2 host check for the new chat-template validation (linuxbrew python3 lacks jinja2), long-prefill boot warmup rungs. Verification: all 12 host suites pass; B7 live re-validation on the merged launcher reproduces B3 (1x/3x/4x 30k repeats 1.000 at 0.3-0.4s, 2x60k 0.999, 3x5k 0.992; 4-agent x 60k turns 1-3 0.886-0.928, wall 17.7-23.6s). Merged upstream: origin/main @ 9348755 (PR MiaAI-Lab#130).
…ndings Live 2x GB10 investigation (docs/headroom-2026-09-11.md, logs/headroom-20260911/). Config and correctness now ship together so a fresh checkout gets the measured best. Decode / launch: - adaptive-k (GLM53_ADAPTIVE_K=ema) is the .env.example default; start.sh auto-adds the required union capture list when the knob is ema/on/1 (the stock list missed the 3- and 5-token graphs). Measured +10.3% hash-map prose, structured neutral (A/B/A, median of 5). - GLM53_SPINWAIT_MS=16 default (frozen sweep winner; re-checked at MNBT 7168). - dense FP8 documented as opt-in with 2026-09-11 KLD/decode numbers and enabled in this kit's .env (provisional numerics). Warmup: - boot-shape-warmup.sh: long-prefill rungs (3584/7168/14336/65536) so BuildPrefillChunkMetadataKernel does not JIT on a real request, payload staging through a file (long prompts exceeded ARG_MAX), and the outcome tally ignores the staged payload files. Prefix caching (the production 8.7% hit-rate cliff): - adopt PR MiaAI-Lab#83 overlay/patch_apc_per_group_retention.py: per-group retention; the EAGLE-exempt DFlash2 drafter no longer spends 33 of the 38 block ids a cached 3584-token segment costs and stops evicting the MLA/mamba blocks that carry the hit (GLM53_APC_RETENTION_INTERVAL_SWA, default auto). - adopt PR MiaAI-Lab#84 overlay/patch_apc_fine_grained_hits.py: exclude the KpoolTail scratch from the fine-grained veto, restoring 64-token hit alignment (GLM53_FINEGRAINED_APC=1). - cherry-pick vLLM #54163 as overlay/patch_dflash_block_drop.py: DFlash/DSpark must not take the EAGLE trailing-block back-off (use_eagle_block_drop); otherwise the Mamba state never materializes and every reply recomputes. - launcher hardening from the PRs: validate_overlay_artifacts fail-closed gate before restart stops anything, GLM53_OVERLAY_ORDER emitted identically to both rank containers, retention/bool knob validation, Dockerfile COPY/RUN. Live A/B boot B3 (same probes): 3-4 x 30k repeats 17.2s/0.000 hits -> 0.4s/1.000; 2 x 60k 34s/0.000 -> 0.4s/0.999; 4-agent x 60k turns 1-3 0.000 / wall 150-196s -> 0.916-0.928 / wall 18s; hash-map prose 34.50 tok/s and coherence unchanged. Host tests pass: test_launcher_rank_parity, test_apc_per_group_retention, test_apc_fine_grained_hits, test_dflash_block_drop_patch, test_hybrid_prefix_hit, test_spinwait_patch, test_indexer_workspace, test_kpool_tail_slotmap, test_xgrammar_termination, test_start_overrides, test_nccl_multi_hca.
Resolved by measurement, not by text: - Adopt upstream's launcher machinery as-is: overlay artifact gate, GLM53_OVERLAY_ORDER, retention knob validation/forwarding, tests, docs, start-tp4.sh, numeric-config changes. - Keep the MiaAI-Lab#83 per-group retention and the pre-MiaAI-Lab#130 hybrid APC overlays. The MiaAI-Lab#130 rework measured worse on this kit's agent probe (3x30k repeats 0.000 vs 1.000 hits; 2x60k 0.955 vs 0.999) across B4/B5 and was isolated from our DFlash block-drop patch by B6. Receipts: docs/headroom-2026-09-11.md section 12.3. - Keep our additions: fine-grained 64-token hits (PR MiaAI-Lab#84), vLLM #54163 block-drop cherry-pick, adaptive-k default + auto capture list, spinwait 16, dual-HCA GID preflight, portable jinja2 host check for the new chat-template validation (linuxbrew python3 lacks jinja2), long-prefill boot warmup rungs. Verification: all 12 host suites pass; B7 live re-validation on the merged launcher reproduces B3 (1x/3x/4x 30k repeats 1.000 at 0.3-0.4s, 2x60k 0.999, 3x5k 0.992; 4-agent x 60k turns 1-3 0.886-0.928, wall 17.7-23.6s). Merged upstream: origin/main @ 9348755 (PR MiaAI-Lab#130).
|
Closing as superseded by #171, not rejecting the fine-grained cache work. Direct comparison confirms that the overlay and design document are byte-identical in both PRs. #171 carries that mechanism on the post-#130 base, avoiding this branch's stale launcher/add-add conflicts while preserving the per-group retention work. The outstanding change requests are now explicitly recorded on #171: default off at every layer, retain the runtime compatibility check and kill switch, canonical patch-owned-region validation, remove the connector receipt and silent upstream-fixed detector, preserve meaningful host/in-image coverage, and rebase after the independent fixes land. #171 remains held; this closure is not an approval to ship its current default-on version. Your 64-token hit receipts and warm acceptance A/B measurements remain reference evidence for the successor, with their original attribution here. The unresolved acceptance-length and qualification concerns are carried forward rather than discarded. Thank you for establishing the mechanism and measurements. |
Both tables are historical measurements of the configuration named in their own heading, not current-main numbers. The warm-context table was recorded on a then-unmerged overlay stack (per-group retention MiaAI-Lab#83 + fine-grained hits MiaAI-Lab#84 + gate v2 MiaAI-Lab#80); MiaAI-Lab#83 is closed unmerged and main carries per-group retention via merged MiaAI-Lab#130, where an empty GLM53_APC_RETENTION_INTERVAL_SWA inherits the global interval instead of applying MiaAI-Lab#83's automatic rule. Removes the unconditional "capacity envelope, not a bug" conclusion: the ladder alone does not establish the budget arithmetic as the cause, and later whole-stack comparisons (MiaAI-Lab#174) neither confirm the attribution nor isolate a single root cause.
… contrasts Review follow-up on 81c83fc. Documentation scope only: the recorded tables, the probes and every measured number are unchanged (B3-B7 table and the explicit 0/0 rows verified byte-identical by hash). - Scope note: this PR adds the document and the three probes only; the launcher, overlay, .env, README and warmup changes named below are local-checkout or separate unmerged-PR work. - 12.3: replace "B6 isolates the cause" with whole-stack wording; the B3-vs-B4/B5/B6 contrast does not by itself identify the responsible mechanism and is not a basis for replacing the replay guard main ships (MiaAI-Lab#130's versioned DFlash SWA replay clamp). - 11 / 12.1: label each component's status (PR MiaAI-Lab#83 implementation vs main's MiaAI-Lab#130 rework, unmerged PR MiaAI-Lab#84, local vLLM #54163 cherry-pick, local launcher/.env/README edits). - 5 + TL;DR row 3: the long-prefill warmup rungs are separate, unmerged PR MiaAI-Lab#170, not main; main's script still has no PREFILL_S rungs. - 4.4 / 12: present "the cliff stopped reproducing" as a whole-stack observation rather than a root cause. No new run requested or performed; no gates changed; no new performance claims.
…ned overlay order + rank-parity test Same launcher shape as #83/#84 (tester hardening) and pr/apc-no-store: - set-ness aware caller capture before .env is sourced and replay after (`_cli_kvcap_set="${GLM53_KV_CAPACITY_LOG+1}"`), so an explicitly empty export is captured and then rejected instead of replaced by .env; default 1 applies only when UNSET; - `_glm53_validate_bool_flag GLM53_KV_CAPACITY_LOG` inside the numeric config guard (exactly 0/1) -- runs on start|restart before `restart` stops anything; - `validate_overlay_artifacts`: every file both ranks mount must exist, be non-empty, carry its identity string ([glm53-kv-capacity-log] for the new overlay), end with its EOF sentinel and parse as Python; chat template + ablit layer map checked too; run on start|restart in main() before preflight / ssh / docker / stop; - KVCAP_PATCH_HOST, preflight existence check, scp to the worker, read-only mount on both ranks, `-e GLM53_KV_CAPACITY_LOG` in nccl_common (both ranks), one launcher log line naming the effective value; - GLM53_OVERLAY_ORDER: one ordered list emitted verbatim into both rank inner scripts by emit_overlay_block (the two literal per-rank ladders are gone); patch_kv_capacity_log.py pinned after patch_glm5_drafter_group.py (same kv_cache_utils.py) and the coordinator overlays, before xgrammar; unmounted entries stay `[ -f ]`-guarded no-ops. tests/test_launcher_rank_parity.py (116 checks; the #83/#84 static + dry-run launcher test with the new knob): `restart` with GLM53_KV_CAPACITY_LOG=yes or explicitly empty, or with ANY artifact missing / mis-pointed / empty / whitespace / unparseable / truncated, exits 2 with zero docker or ssh calls; a valid configuration reaches `stop` on both ranks; the order is pinned in both generated scripts (drafter-group -> ... -> kv-capacity-log -> xgrammar); head mount = scp source = worker mount for every /opt/glm53 patch; both ranks receive identical GLM53_KV_CAPACITY_LOG for 0 / 1 / unset (-> 1); a synthetic one-rank mismatch is shown to be reported. tests/test_kpool_tail_slotmap.py / test_xgrammar_termination.py: assert their patch is an entry of GLM53_OVERLAY_ORDER fed to both rank scripts (they counted the literal ladder before). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Keep no-store as the only new cache mechanism and remove the absent fine-grained sibling references: - start.sh: main's ORDER / artifact gate / guard structure kept; the no-store overlay is pinned after patch_apc_per_group_retention and before patch_xgrammar_termination; the branch's per-variable caller snapshots give way to main's generic caller-exports-win block (MiaAI-Lab#161/MiaAI-Lab#92), which is what now carries an explicit empty GLM53_APC_NO_STORE into the 0/1 guard; patch_apc_fine_grained_hits / FINEHIT_PATCH_HOST are gone. - tests/test_launcher_rank_parity.py: main's generic machinery kept; the fine-grained scaffolding (FG / GLM53_FINEGRAINED_APC / FINEHIT map entry) is replaced by no-store coverage -- part F kill-switch matrix, pinned hybrid -> per-group -> no-store order, rank parity and pre-stop gate cases. - tests/test_apc_no_store.py part D: the caller-precedence claim is now exercised behaviourally against the merged launcher (caller export beats .env, explicit empty is then rejected); the in-image run skips the launcher legs instead of failing on the absent start.sh. - README.md / docs/DESIGN-apc-no-store.md: the partial-site description no longer presents the absent MiaAI-Lab#84 overlay as a co-shipped prerequisite; it states the upstream coordinator veto (KpoolTailManager block alignment). - Dockerfile: main's per-group retention patch kept, no-store applied after it, and the in-image no-store test still runs before the overlay it validates. Preserved from main: MiaAI-Lab#130 replay/retention (patch_hybrid_prefix_hit + patch_apc_per_group_retention) and the generic caller precedence.
Re-enable fine-grained (64-token) prefix-cache hits (
GLM53_FINEGRAINED_APC)Problem
The hybrid coordinator disables fine-grained hits for the whole model because
KpoolTailManager— a per-request scratch thatopts out of prefix caching entirely — is included in the compatibility check. One veto silences three cooperating subsystems
that already operate at
hash_block_size= 64 (mamba partial-tail snapshot producer/consumer, scheduler chunk stop). Everyhit snaps to the 3584-token block: a warm re-turn recomputes up to 3583 tokens (0.9–4.0 s measured).
Change
Overlay
patch_apc_fine_grained_hits.py(fail-closed, transactional; composes withpatch_hybrid_prefix_hit.pyboth orders):exclude non-participating managers from the veto; enforce the real invariant
hash_block_size % index_kpool == 0(index_kpool = 4, verified from live specs at init — violations refuse to boot; participating coarse managers still safely
disable). Effective-value receipt line at init; detects a future image where upstream already scopes the veto (vLLM main
e126687a) and no-ops. Kill switch
GLM53_FINEGRAINED_APC=0; launcher validates 0/1; 195-check host test.Live receipts (on top of the per-group retention PR)
probe_prefix_equivalence.pyv3)Audit log
Codex design review (build-with-changes) → applied; final pass (fix-first: capability cross-check, strict ints, 0/1 kill
switch, mixed-layout safe-disable, receipt line, upstream-fixed detection) → applied; confirm: deploy-for-live-test.
Submitted by nood-co1 on behalf of Blockbrain Labs (https://x.com/blockbrain_labs, GitHub org blockbrain-ai). Measured on our 2× NVIDIA DGX Spark deployment.