record(ORACLE-LLAMACPP-REPIN-STOCK): the pin named a tree that exists nowhere (#857) - #1051
Merged
Conversation
…rk, 65 perf commits deep (#1003, #857) `.agents/oracles/llama-cpp.md` defines this comparator as "the CPU and GGUF k-quant speed and memory numbers a user can actually get today" and then pins `237ad9b96`, a local-only commit on branch `localai-paged` in the developer's checkout. `git branch -r --contains 237ad9b96` is empty. Both statements cannot be true. `git describe --tags 237ad9b96` returns `b9827-65-g237ad9b96`. Those 65 commits are ours: native NVFP4 W4A4 prefill GEMM, Marlin-style W4A16 grouped MoE prefill GEMM, default-on MoE-decode CUDA graph, paged decode-graph reuse, fused residual-add plus RMSNorm, chunked parallel-scan GDN prefill, a TTFT scheduler mode. The recorded `pin_label = b9892` came from `git rev-list --count`, which returns 9892. That is worse than imprecise. Stock reached tag `b9892` exactly 65 commits after the same base `b9827`, so the real upstream `b9892` also counts 9892 and resolves to `ee445f93d`. `git merge-base 237ad9b96 b9892` is `b9827` and neither is an ancestor of the other. The label names a real, fetchable, different tree at the same depth, and a reader checking out `b9892` to reproduce a number cannot notice. That already happened here. `rpi5-a76-llamacpp-20260806.md` recorded the pin as unobtainable and substituted stock `b9892`. `cpu-x86-llamacpp-20260811.md` recorded "local fork `237ad9b96`, build number 9892, the recorded pin". Two evidence files, one label, two trees. The contamination is not confined to CUDA, which is what makes it a CPU-oracle defect rather than a filing error. Six of the 65 touch `ggml/src/ggml-cpu/`, adding 320 net lines to `ops.cpp` in `ssm_conv_f32`, `gated_delta_net_*`, `flash_attn_ext_f16*` and `scale`. `570aadd7a` states that the fused GDN op and the discriminated SSM_CONV decode op are emitted DEFAULT-ON and implemented for the CUDA family "and the CPU reference ONLY". `git grep ssm_conv_update origin/master` returns nothing. The CPU floor arm built that fork with `GGML_CUDA=OFF` and ran a `qwen35` model, whose CPU graph reaches exactly those ops. The spec selects stock `b10451` (`10bf611e5`), argues it against `b9892` and against the fork's own base `b9827`, enumerates all nine contaminated measurements with a re-take verdict each, states the direction of the error, and names the one recorded conclusion that can flip unfavourably. Spec only. No record edit and no pin change in this commit, so the tree still says `237ad9b96` until the next one. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code]
… gateable=no (#857, #1003) The oracle moves from our local-only fork `237ad9b96` to stock upstream tag `b10451` (`10bf611e533d81f739128304991c5e133c6aebd8`), and `gateable` drops from `yes` to `no`. `gateable = no` is the substance of this commit, not a formality. AGENTS.md admits `yes` only once an oracle demonstrably builds and runs the model, and stock upstream has never been built or run on this project's hardware. Carrying `yes` across a repin would assert a measurement nobody took, which is the defect this row exists to fix. `evidence = #857`, whose acceptance already reads "build and run the replacement on dgx.casa", so the ungateable lane is visible debt with a named owner. Why the newest release rather than something nearer the fork's `b9827` base. The file's own first sentence defines this comparator as the numbers "a user can actually get today", and a user installs a release. The competing argument, minimise behavioural drift from existing evidence, buys nothing, because no llama.cpp-side number survives the repin: all nine are enumerated in the spec and every one is owed a re-take whichever stock revision is chosen. Repinning to the real `b9892` would additionally make two distinct objects both correctly called `b9892` inside one repository history, which is the collision this row removes. `b9827` keeps a job as the base of the stock-versus-fork A/B that isolates our own 65 commits, recorded in #1003. Two factual errors are fixed regardless of the repin, because both would have survived a pin advance. The label was derived from `git rev-list --count`, and the justification argued the pin from the pin ("the fork is what `237ad9b96` names") while naming no property of the fork that upstream lacks. Stock `origin/master` carries `src/models/qwen35.cpp`, `qwen35moe.cpp`, the arch strings at `src/llama-arch.cpp:41-42`, the eight NEXTN entries at `:525-531`, and `common_speculative_impl_draft_mtp` at `common/speculative.cpp:1274`. The record now also requires asserting the TREE, not only the commit. The superseded measurements came from a directory somebody develops in, carrying 27 uncommitted entries at +2279/-762. A pin names a commit and a commit cannot tell you what was built, so the obligation sits in prose at the point of use: build from a fresh `git archive` or clone, or assert `git status --porcelain` empty, and record the binary's sha256 either way. `docs/BENCHMARKS.md` marks the GB10 CPU floor denominator SUPERSEDED on all three axes, states in §"How we measure" that every llama.cpp figure on the page ran the former pin, and names the prefill `1.18x` as the only recorded verdict the re-take can flip against us. The Pi 5 row gets its own marker, because its denominator is stock `b9892`, substituted when the pin proved unobtainable, so it is neither the old pin nor the new one. No number is deleted. `.agents/upstream-inventory.json` is deliberately NOT edited. Its `pins.llamacpp` looks like a second transcription of the oracle pin and is not one: `scripts/upstream-inventory.py:206` emits `head_of(path)[:9]` over `$LLAMACPP_SOURCE`, so it is a derived snapshot of the developer's checkout HEAD. The two coincide today only because that checkout sits on `localai-paged`. No matrix row changes lifecycle state, so no `docs/STATUS.md` edit is owed. Whether `BACKEND-GATE-CPU-LLAMACPP` should leave its closed state is a judgement for the re-measurement, not for a record edit that has measured nothing. `check-env-doc` and `test_check_env_doc` are inherited red from `3005447f8` (#993, filed as #1000, PR #997 in flight). They fail identically on a pristine `origin/main` tree with `git status --porcelain` empty, and this branch touches nothing under `src/` or `include/`. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code]
Brings the branch onto 332aed7 so the commit-trailer gate has origin/main as an ancestor of HEAD and actually executes rather than silently skipping. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code]
…ed (#1003, #857) A fresh review reproduced this row's factual core exactly and returned ten findings in the claims layered on top of it. Every one is re-derived here rather than accepted, and three of them were wrong in a way that would have shaped later work. The scoping error is the expensive one. Both `docs/BENCHMARKS.md` and this spec said the GB10 prefill `1.18x` was "the only llama.cpp verdict recorded as a win, so the only one the re-take can flip against us". #1003 is scoped by that sentence, so an agent reading it would have re-taken prefill and stopped. The counterexamples are on the same page. `BENCH-VK-LLAMA` decode is 4.36 versus 4.35 tok/s `MET`, a 0.23% margin, and its own source puts the 7-leg spread at 0.69% and calls it "a narrow pass, not a comfortable one". That verdict already sits inside its own noise floor, which makes it far more exposed than an 18% prefill margin, and this spec had already listed it as row 7 owed a re-take. The Pi 5 peak RSS is a second favourable comparison at 2.841 versus 3.747 GiB. Both passages now enumerate all four favourable verdicts ordered by fragility, which is the margin measured against its own noise floor, not by the size of the margin. The issue-index row for #1003 carries the same ordering. The universal in §"How we measure" was contradicted by the same page. It read "Every llama.cpp figure here ran the former pin `237ad9b96`, our own fork". The Pi 5 arm did not, and the row eleven lines above says so. Fixed, because asserting a universal the tree disproves is the exact defect class this row exists to remove. Half of Design item 2 had not executed. It names two Vulkan sites, and only the `Reproduce` recipe got its marker. The `BENCH-VK-LLAMA` result row, which is the one carrying the `MET` verdict, was unmarked. It now says `denominator SUPERSEDED`, and its `21.5x` prefill is labelled a SELF-ratio, because the source JSON says "Prefill is 21.5x its pre-campaign value on the same model" and this spec's row 7 had filed it as a llama.cpp number. The authoritative records were untouched, so the public projection read SUPERSEDED while the record it projects read closed. `.agents/backend-matrix.md:261` stated the pin as `237ad9b96` and linked to the oracle file this row repinned. `:266` carried the live "at OR ahead of llama.cpp on every axis" verdict, all of it against the fork, and `.agents/quantization-matrix.md` names that cell as "the one place this gate's live position lives". `.agents/feature-matrix.md:176` repeats the claim. All three now mark the denominator. No lifecycle state moves, because marking a denominator is not a state change and the re-measurement owns that judgement. The quantization matrix needs no edit: its cell already defers to the backend matrix. The claimed gate mechanism does not exist, and this is mutation-disproved rather than reasoned. This spec said editing `.agents/upstream-inventory.json`'s `pins.llamacpp` "would turn the `upstream-inventory --check` gate red". Setting it to `10bf611e5` and running the checker printed `OK: the agent record matches the upstream inventory snapshot` and returned `rc=0`, with `git diff --stat` confirming the edit had applied. `--check` compares `registry.missing_count`, `arch_floor.supported`, `arch_floor.supported_with_no_row` and the two `devices.*_uncovered` lists, and never reads `pins`. The decision not to edit the file stands and its primary justification verified, but the truth is worse than written: nothing gates that field, so only the prose protects it. Four measurements corrected. `src/llama-arch.cpp:525-531` is `:525-532` at `b10451`, eight entries over eight lines. "adding 320 net lines to `ops.cpp`" is neither: `git diff --numstat b9827 237ad9b96 -- ggml/src/ggml-cpu/` returns `ops.cpp` at +318/-13 and `ggml-cpu.c` at +2/-1, so 320 is the insertion total across both files and `ops.cpp` is net +305. "roughly 50 files carrying `file:line @ 237ad9b96`" undercounts the owed sweep: 109 files mention the SHA, 67 attribute a path or a tree to it in the `@ <sha>` form, and 52 carry a `path.ext:LINE` anchor within three lines of the mention. Each replacement states what was counted. The `docs/BENCHMARKS.md:479` and `:504` anchors went stale inside this pull request, because the diff added eight lines above them, and `:479` now lands on a MiniMax-H3 row. They are replaced with row names rather than re-numbered, and every other repo-local anchor in the spec was re-derived against HEAD. §Gates named two inherited reds while runs produce three. `test_cpu_x86_llamacpp_floor` is the third, filed as #618 and owned by `BACKEND-GATE-CPU-LLAMACPP`, the row this spec defers its lifecycle judgement to. It reproduced here at loadavg 61: the contended-leg case exits `NO_QUIET_WINDOW` (4) instead of the `GIVING_UP` (2) it asserts. `docs/FEATURES.md` carries both Vulkan defects too: it reads "parity met narrowly" with an unmarked denominator and quotes the `21.5x` as though it were a llama.cpp ratio. Both are marked. That edit is separately owed, because `scripts/check-doc-checkpoint.py` classifies an edit to either matrix as `feature_surface` and a `feature_surface` change owes `docs/FEATURES.md`. `scripts/check-public-doc-tables.py` holds `docs/BENCHMARKS.md` at 35 of 35 prose paragraphs, so the fragility ranking lands as a table, which costs no paragraph. The `BENCH-VK-LLAMA` row paid for its own new marker inside the 220-character cell cap by moving its `[source]` link into the key cell, which is what that checker's `MAX_ROW_CHARS` comment asks for, and the `docs/FEATURES.md` paragraph was trimmed elsewhere to stay under its 700-character cap. No checker was weakened and no budget was raised. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code]
PR #997 landed the `docs/ENVIRONMENT.md` entries for the three expert-streaming knobs, which clears the `check-env-doc` and `test_check_env_doc` reds this branch inherited from `3005447f8` (#993, #995, #1000). The gate is rerun on the merge commit rather than on the pre-merge head, so the result reported is the one that would land. `.agents/issue-index.md` changed on both sides and carries `merge=union`, so both appends survive. The union result is verified row by row rather than assumed. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code]
…the tree now has three others (#1003) The re-derivation commit reported §Gates as it stood at that moment. `origin/main` moved twice under this branch while the work was in flight, so the section is brought back onto the tree rather than left asserting a state the gate disproves. That is the same defect class this row exists to remove, applied to its own record. `check-env-doc` and `test_check_env_doc` are no longer red. PR #997 landed as `45b022cdc`, `origin/main` was merged again, and both pass here. The waiver is retired instead of carried, because a stale exception outlives the condition that justified it. `check-agent-record` and `test_agent_record` are red, and they are red on `origin/main` itself. `.agents/issue-index.md` now holds two rows for #995, one from this branch's base and one from `45b022cdc`, and the checker refuses that with "under `merge=union` a duplicate is what two branches appending the same issue look like". Proved rather than attributed: on a pristine detached worktree at `45b022cdc` with `git status --porcelain` empty, `python3 scripts/check-agent-record.py` returns `rc=1` with the identical message. Not repaired here. The index is append-only, a landed row may not be edited or deleted, and which of the two #995 texts survives is a judgement for `ENG-EXPERT-STREAM`, which owns both rows. `test_cpu_x86_llamacpp_floor` (#618) is now recorded with the measurement that makes its load-dependence falsifiable instead of a claim about it: it PASSED at loadavg 12.47 and FAILED at 46, 61 and 216, and each failure names the load it saw. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code]
…ead of listing it, and the sweep finds a fifth win, a third revision and a shallow clone (#1003, #857) Two successive fresh reviews each found one favourable llama.cpp verdict this row's hand enumeration had missed: the Vulkan `MET` and the Pi 5 RSS in the first, Muse Glimmer in the second. A third hand pass would fail the same way, so the set is no longer written from reading. It is the output of a three-stage sweep that the spec carries in full, and the spec now says how the set was produced rather than only what it contains. The sweep is short enough to live in the spec rather than become another file the tree has to keep true. Stage 1 marks a line in `docs/`, `.agents/` or `benchmarks/` as a candidate when it carries a comparison token and llama.cpp is attributed to it, where attribution means the line names llama.cpp, OR a line within three names it, OR the line is a markdown table body row whose HEADER names it. That third clause is the one a `git grep -C` cannot express, and it is what catches `| Prefill | 223.8 tok/s | 177.3 | 1.18x | PASS |`, whose own text never says llama.cpp. Stage 2 filters to a ratio at or above 1.0 or a favourable verdict word, which is the page's own rule at `docs/BENCHMARKS.md:32-34`. Stage 3 reads each survivor's revision off the evidence record that produced it. On this commit's tree the stages print 960 candidate lines over 651 files and 719 favourable ones, and the block in the spec was executed as written to produce those two numbers. Muse Glimmer is the fifth favourable verdict, and by this row's own criterion it ranks second. `docs/BENCHMARKS.md:29` records in128 prefill `1.023x`, the page's rule at `:32-34` calls 1.0 or higher a win everywhere, and the source at `.agents/benchmark-record.md:19231` puts our arm at 13.455 with a 4.5% leg spread over n=4 against llama.cpp's 13.158 at 0.7%. More than half the margin is inside our own arm's spread before the denominator moves. The criterion is margin against noise floor, not margin size, so it outranks the 18% prefill and the 24.2% Pi 5 RSS. The honest other half is that its denominator is already stock, 84 commits from the pin, so what exposes it is the noise and not the denominator. That is stated where it is ranked. `docs/STATUS.md:502` restated the same number unmarked and now carries the denominator too. The replacement universal was still false. `docs/BENCHMARKS.md:419-421` said all figures but the Pi 5 arm ran `237ad9b96` and the Pi 5 arm ran stock `b9892`. The Muse Glimmer and #391 arm ran neither: `.agents/benchmark-record.md:18996` names llama.cpp master `704485942ab54bbbbf1f241b3550ffba35f5f37e`, and that object appeared nowhere in `docs/`, in this spec, or in the issue index. A fourth revision, stock `030ebb5` at `b10358`, carries one explicitly NON-BINDING datapoint at `:18159`. The page stops asserting a universal and points at a Reproduce row that names the three binding revisions, which costs no prose paragraph on a page that sits at 35 of 35. The 122-commit window was an instrument defect, not arithmetic, and it is 624. `git rev-list --count b9827..b10451` returns 122 in the developer's clone because that clone is SHALLOW: `.git/shallow` grafts at `687e77892`, so `git rev-list --count b10451` returns 122 where a full clone returns 10451, and `git merge-base --is-ancestor b9827 b10451` answers no for the same reason. Every distance and ancestry answer crossing the graft is wrong and looks exactly like a correct one. The real distance comes from llama.cpp's build-number convention, which this row already established when it showed the old `pin_label` was a commit count: tag `bN` sits at depth N, verified in-clone for `b9827` and `b9892`. Cross-checked on a distance the graft does not truncate, `704485942` describes as `b10362-5`, predicting 84 commits to `b10451`, and the direct measurement is 84. Prediction and measurement agree, which is what licenses the convention. The spec's Tests section now names the precondition so the next reader asserts it before trusting any of these commands. The F9 counts went stale inside this pull request, so the spec records the commands and not only the numbers. `a2ede63a1` measured 109 and 67; `24e47f265` moved them to 110 and 66 in the act of recording them, by adding a mention to `.agents/feature-matrix.md` and rewriting the #1003 row out of the `@ <sha>` form. This commit moves the first to 111, because `docs/BUILD.md` now names the fork it was measured against. Three commands are recorded, all runnable, and the `path.ext:LINE` one is a loop rather than a claim. A bare count in a spec is a measurement of one file stored inside another, which AGENTS.md Records names as the coupling to avoid. `## Owed` carried the retired "roughly 50" while `:116` called it an undercount and `:260` gave the measured figures. It now points at the counting command, names eleven contaminated measurements rather than nine, and says re-taking the GB10 prefill alone does not discharge #1003. Two sites the sweep found that no earlier pass named. `docs/BUILD.md:247` tells a reader building the project that CPU is "at or ahead of llama.cpp on every GGUF axis" against an unmarked fork denominator. `.agents/kernel-matrix.md:162` is not a restatement at all: `KERNEL-GEMM-CPU-TILED` records a MEASUREMENT against ggml built from the same fork tree with `GGML_LLAMAFILE=OFF`, 216-242 against 208-215 GFLOP/s, "at parity and slightly ahead on four of six shapes". It enters the enumeration as row 11 and the fragility ranking as the sixth verdict, because it is what attributes the Arm 16-bit deficit to an absent capability rather than to that kernel. `.agents/feature-matrix.md:286` `BACKEND-CPU` and `docs/STATUS.md:159` carried the same claim unmarked and now say so. `docs/FEATURES.md` pays the `feature_surface` obligation `scripts/check-doc-checkpoint.py` imposes. One discrepancy is reported and deliberately NOT repaired. Row 11's evidence at `.agents/benchmark-record.md:13771-13777` shows our kernel ahead on FIVE of six Arm shapes, not the four both that record's prose and the kernel matrix state. The narrowest of the five is 216.8 against 215.4 GFLOP/s, 0.6%, which a reader may reasonably have called a tie. Quietly changing another row's recorded count on that guess is the silent re-derivation this row exists to stop, so it is listed under `## Owed` for `KERNEL-GEMM-CPU-TILED` and settled by the row 11 re-take. No number is re-taken, no row changes lifecycle state, and no checker was weakened or budget raised. `docs/BENCHMARKS.md` stays inside its 35-paragraph, 600-character-row and 220-character-cell limits, each new marker paid for by shortening its own row: the Muse Glimmer row moved its `#391` link into the key cell, and the pin paragraph delegates the revision list to a Reproduce row. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code]
…record re-applied by hand Brings in `ff264cb82` (#1025, issue #1022), which repairs the duplicate #995 rows in `.agents/issue-index.md`, and `4f2d91756` (#1026). The duplicate was the inherited red this branch recorded under §Gates, so merging clears it here rather than leaving a stale waiver in the spec. Merged before the gate run so that `scripts/agent-preflight.sh` finds `origin/main` an ancestor of HEAD and its commit-trailer block executes instead of silently skipping. `.agents/issue-index.md` was NOT taken from the automatic merge. The three-way result reinstated the very duplicate `ff264cb82` had just removed: `merge=union` plus a deletion on one side and an untouched copy on the other reproduces the row, and the merge reported clean while carrying two #995 rows again. That is the failure AGENTS.md Records describes, so the file was rebuilt the way that section requires: take the complete target-branch version, then apply this branch's scoped edit again. The result is `origin/main`'s file plus exactly the two rows this branch appends, for #857 and #1003, and `git diff origin/main` on that path now shows two additions and nothing else, so every unrelated key is byte-for-byte equal. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code]
…nd the anchor count moved a third time without an edit (#1003, #857) Three record repairs on the merged head, all of them things the merge itself changed. The two inherited reds are gone. `check-agent-record` and `test_agent_record` refused the duplicate #995 rows, PR #1025 (issue #1022) landed as `ff264cb82` and removed the malformed copy, and merging `origin/main` brings the repair in. §Gates says so instead of keeping a waiver for a red that no longer reproduces, which is the same discipline this row applies to the oracle record itself. It also records what the merge did to the keyed index on the way through: a clean union merge reinstated the duplicate, and the file was rebuilt from the target-branch version with this branch's two appended rows re-applied. The anchor counts moved for a third time, and this time nothing in this branch edited anything. `origin/main` brought `tests/vt/iq1_golden_vectors.h` and 64 new lines of `.agents/specs/expert-streaming.md`, both citing `237ad9b96` in the `@ <sha>` form, and the restored index carries that form too, so the sweep goes from 111 and 66 to 112 and 69 while 52 holds. That is a stronger version of the point the previous commit made about stale counts: a number in this spec goes stale when somebody else's pull request lands, not only when its own author edits. The commands stay the authority and the numbers are labelled as this commit's tree. §Gates now reports the gate run the way this project asks a gate to report, by block and with the counts: `Session role` 1, `Record gates` 26, `Mutation suites` 44, `Committed range vs origin/main` 3, and `Commit trailers vs origin/main` 2. That is 76 results, all `ok`, zero SKIP. The last block is the reason the merge had to come first: it is guarded on `git merge-base --is-ancestor origin/main HEAD` at `scripts/agent-preflight.sh:226-234`, and before the merge it printed nothing at all rather than reporting a skip. It examined every commit in `origin/main..HEAD`, 9 at this head. `test_cpu_x86_llamacpp_floor` (#618) added four more datapoints on its load threshold during this pass, failing at loadavg 21.07 and passing at 14.82 and 8.36, which is no information about the diff. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code]
…and list, and README.md fell outside it (#1003, #857) The sweep exists because three hand enumerations each missed a favourable verdict. It took its PATH SET from a hand enumeration: `git ls-files docs .agents benchmarks`. README.md is at the repository root, so the front page was outside the instrument built to stop exactly this, and it carries the CPU comparison table, the "1.18x llama.cpp's prefill" headline, and the "matches llama.cpp" 4.36 vs 4.35 Vulkan claim, which is the most fragile verdict in the whole enumeration. Adding one path would be the same hand list one level up. Stage 0 is now `git ls-files` with no path arguments: 651 files become 4514, candidates 961 become 1008 over 117 files rather than 93, and stage-2 favourable 719 becomes 752, all measured at bf62128 on a clean detached worktree. Scanning everything costs 47 lines of adjudication and needs no exclusion list, because a candidate requires a comparison token AND llama.cpp attributed within three lines, which the 1089 binary fixtures never satisfy. A fifth hole came with it. CMP had no token for the word this project uses in its own headline, so README.md:310 "decode matches llama.cpp Vulkan" was invisible to both path sets. Adding match(es|ed) takes candidates to 1095 over 141 files and favourable to 842. Twelve contaminated measurements now, and seven favourable verdicts. The twelfth is keep-f16's L7, whose llama.cpp denominators are quoted in gguf_keep_quant.cpp as the justification for VT_GGUF_KEEP_F16 shipping default ON. That is the only place the contamination reaches shipped behaviour. It was visible to the OLD sweep and missed by three adjudications, which is a different failure from the path set and is recorded as such. Also repairs this row's headline evidence. "The pin is on no remote" rested on `git branch -r --contains 237ad9b96` returning empty, and the developer's clone is shallow. Disproved with a control rather than doubted: `--contains b9827`, for an upstream release tag beyond argument on origin/master, lists 68 remote branches and omits origin/master. Re-derived where a graft cannot reach, with a positive control on the same call shape: the GitHub API answers 422 for 237ad9b96 in both repositories, resolves 10bf611e5, and binds tag b10451 to the new pin on the remote. Every other row of the Measured facts table is checked one at a time and stated to survive. Upstream's latest release is now b10453, recorded, and the pin stays at b10451 because the criterion is newest at selection time. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
… denominator that reaches a shipped default (#1003) The widened sweep surfaced 47 lines the three-directory path set could not see. Every one is adjudicated in the spec. Two classes needed marking. README.md, six sites. The Vulkan news bullet and hardware row (4.36 vs 4.35, stated as "matches"), the "1.18x llama.cpp's prefill" headline, the whole "vs llama.cpp, on CPU, from the same GGUF file" table with its byte-identical-tokens claim, and the two "at or ahead of llama.cpp on every GGUF axis" restatements. Every number is kept and none is softened. What changes is that the denominator is now named as our own local-only fork and marked owed a re-take. The landing page had never named the object its figures were measured against, which is why it was invisible to the SHA-mention count as well as to the sweep. The README budget is not raised. Each addition is paid for inside the paragraph it marks, by dropping restatements the page already makes elsewhere: the concurrency ties are two sections below, opt-125m token-exactness is in the hardware table, and the four capability labels are in docs/STATUS.md, which the same sentence links. 29970 chars before, 29989 after, against a 30000 cap. benchmarks/demo/vulkan_27b_llamacpp.json is the BENCH-VK-LLAMA demo's own source and what check-doc-checkpoint recognises as a landing source, so the denominator is marked there too. That is the correct place for it and it is what makes the README edit a projection of a source change rather than churn. gguf_keep_quant.cpp and test_gguf_keep_quant.cpp are enumeration row 12, and the reason the widening was worth doing. keep-f16's llama.cpp denominators (pp128 173.2, peak RSS 2.798 GiB) are quoted in a production comment as the justification for VT_GGUF_KEEP_F16 shipping DEFAULT ON. No behaviour changes and no assertion moves: the default stands because its acceptance is a same-binary ours-versus-ours A/B, 3.885 to 2.832 GiB with tokens byte-identical, which no denominator move touches. The comments now say so, so a later reader does not re-derive the default from a ratio nobody can reproduce. docs/BENCHMARKS.md and the #1003 index row move from six favourable verdicts to seven and from eleven contaminated measurements to twelve. The new fragility row is fourth, on the same 2.798 GiB denominator as the GB10 ties. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
…, and it hid a fifth llama.cpp revision (#1003, #857) Seven review findings, each re-derived here rather than taken on report. F1, the sweep's `CMP` read `[0-9]+(?:\.[0-9]+)? *[x×]\b`. U+00D7 is not a `\w` character, so the `\b` after it is satisfied only by a FOLLOWING word character. Measured on the numeric-ratio alternative in isolation: `1.18x llama.cpp` HIT, `1.18× llama.cpp` MISS, `| 1.023× |` MISS, `2× over llama.cpp` MISS, `3.9×decode` HIT. The one live shape is the one nobody writes. The stage-2 filter spells the same idea without the trailing `\b` and was live all along, so the two expressions disagreed and only the narrower one gated, which is why five drafts of re-reading the token list could not find it. Repaired to `(?:x\b|×)`: stage 1 moves 1118 to 1225 candidates over 141 to 144 files at 85a9a7a, a bigger correction than the `match(es|ed)` token that prompted the previous pass. The sweep now SELF-TESTS before it scans, and that is the actual fix. A token list can be WRONG as well as SHORT, and only executing it against known-positive strings tells the two apart, because a dead branch prints the same clean output whether it is unreachable or the tree is clean. Red-before/green-after, treated like a checker change: the spec's python block was EXTRACTED from the committed markdown and run, giving rc=0; the same extraction with `(?:x\b|×)` mutated back to `[x×]\b` exits rc=1 with `CMP self-test FAILED on ['1.18× llama.cpp', '| 1.023× |', '2× over llama.cpp']`. The mutation was diffed against the original before running, because a mutation that never applied reads as a passing test. What it hid: a FIFTH llama.cpp revision, now row 13. Laguna-S-2.1's 27.8 tok/s came from a Poolside FORK on branch `laguna`, and `git grep -i poolside` returns no SHA for it anywhere in this tree. A branch is a moving reference, so that denominator was never reproducible and cannot simply be re-run: re-taking it means choosing a revision first. It drives the campaign's 15x/18x target and the 18x-to-4.7x and 18x-to-3.6x W8/W9 claims. No verdict there is favourable to us, so seven favourable verdicts stays seven. The section titled "Four llama.cpp revisions are in play, not two" existed to replace a universal a sweep disproved and was itself an undercount; it now says five and says why it was wrong twice. F2 corrects this row's own earlier answer, which was wrong on the one finding that reaches shipped behaviour. It reported the VT_GGUF_KEEP_F16 default as resting on a same-binary ours-versus-ours A/B. That reads one row of a three-row table. The binding L7 A/B has three axes and TWO regress: prefill about 10% worse (224 to 204 t/s, TTFT 571 to 625 ms) and decode about 1.4% worse (TPOT 40.4 to 40.95 ms), bought for 1.05 GiB of peak RSS. The recorded reason the PREFILL loss is acceptable is stated in the contaminated floor's own terms at gguf-keep-quant-loader.md:595, "comfortably above the competitor floor", and that floor is the fork's pp128 173.2. Since b10451 is 624 commits past b9827 with its own fused_gdn the direction is not established, so a re-taken stock pp128 above 204 t/s removes the default's only recorded justification for its prefill regression. #1003's index row said "no" to revisiting the default and now says the default is owed a DECISION, so the re-taking agent is not told to skip it. The default itself is NOT changed: that is QUANT-GGUF-KEEPQ-LOADER's call and it needs the re-take first. The general lesson is recorded with it: when asked whether a denominator is load-bearing, find the axis that REGRESSED and read why that was accepted, because the denominator is usually hiding there. F3, gguf_keep_quant.cpp claimed "~205 t/s = 1.16x AHEAD of pp128 176.6" while the owning spec says "204 t/s = 1.18x AHEAD of pp128 173.2". `git grep 176.6` returns only an unrelated MoE microbenchmark mean in MICROSECONDS, and no arm of ours recorded 205 t/s. The pair is self-consistent (205/176.6 = 1.16) so it was computed, not mistyped, but neither operand appears in any evidence file. Not reconciled by picking one, which would assert an attribution nobody measured. The comment now says the figures cannot be traced to any recorded run, names what the binding record does say, and leaves one re-measured pair owed to #1003. F4, oracles/llama-cpp.md said "All nine affected measurements are enumerated" while the spec had twelve and now thirteen. Fixed so it cannot go stale again: it names the spec as the single source of truth and states no count at all, which is the rule the spec quotes at itself. It is the first surface a reader of the pin hits, so it also records that the set has grown three times purely from widening instruments, making any remembered number a lower bound. F5, environment.md:435 is named in row 7's Evidence column, told a reader llama.cpp "at pin 237ad9b96" is unpacked at ~/lcpp-vk, is one of the 113 mentions but NOT in the 69 `@ <sha>` subset, and produces zero sweep candidates because it carries no comparison token. An agent taking #1003's Vulkan re-take, the most fragile verdict in the enumeration, would rebuild the superseded fork believing it followed the pin. Marked. The spec now also states the boundary the sweep does not cover: at 85a9a7a with the repaired token, 286 tracked files name llama.cpp and the sweep hits 144, so 142 name it and are invisible, correctly, because a recipe states no verdict. Verdicts and recipes are two surfaces and the pin reaches a reader through both. F6, the spec claimed "the sweep runs in under two seconds" inside a paragraph headed "Two objections, both measured rather than argued". Six timed runs: 40.4 and 40.9 s at loadavg 15, then 43.1, 45.5, 51.2 and 54.4 s at loadavg 62 falling to 30. The old three-directory path set runs in 3.1 to 3.4 s. So it is 40 to 55 s and more than an order of magnitude slower than the set it replaced, not "about the same". Still cheap for a once-per-pass instrument, which is what the objection was about, but a stated measurement wrong by 20x in a section arguing it measured rather than argued has to be corrected. F7, three counts re-derived at this head: `origin/main..HEAD` is 11 commits, not the 9 recorded (it read 9 two commits earlier and was not updated, the same stored-measurement coupling at the smallest possible scale); `git branch -r --contains b9827` lists 70, not 68, and the total reads a clone outside our control so the load-bearing half is the OMISSION of origin/master, which reproduces exactly; and `rev-list --count` over 237ad9b96, b9827, b9892 returns 9892, 9827, 9892, not the transposed "9827, 9892 and 9892", which had lost the very collision that section exists to explain. The docs/BENCHMARKS.md edits pay their own way: the fragility row 4 was shortened to stay under MAX_CELL_CHARS, and the five-revisions fact went into a Reproduce table ROW rather than the "Oracle pin" paragraph, because that page is at 35 of 35 prose paragraphs and a row costs none. No checker was weakened and no budget raised. The two #1003 and #857 index rows amended here were appended by this branch and are absent from origin/main, so this is not an edit to a landed keyed record. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
Brings in d1b0ea3 (LTX25 decode dtype) and 6621576 (preflight skip reporting), so the commit-trailer block executes against origin/main rather than skipping the guard at scripts/agent-preflight.sh:226-234. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
…ir SHA now, and the flake gets a control pair (#1003, #618) The gate section is re-derived on the merged head rather than carried over. Blocks now read Session role 1, Record gates 26, Mutation suites 45, Committed range 3, Commit trailers 2: 77 results, 76 ok, 1 FAIL, ZERO SKIP. Mutation suites moved 44 to 45 because origin/main landed test_agent_preflight_skip_report with #1030, which is one more count in this file that somebody else's merge changes. That same landing (6621576) makes the last two block headings name the SHA they gated against, "... vs origin/main d1b0ea3", which is the direct repair for what this bullet was written about. This pass reproduced the original failure mode once more before merging: origin/main advanced two commits mid-session, the is-ancestor guard went false, and the trailer block printed NOTHING. A gate that is silent is not a gate that passed. The one FAIL is the inherited #618 flake, and it is attributed with a control rather than by assertion. It FAILED in the full gate at loadavg 64.88 and again at 84.95, the failure text carrying "waiting for quiet: 15s busy=109%", which is the NO_QUIET_WINDOW path by name. It PASSED standalone on this branch at loadavg 26.48, and PASSED on a pristine detached origin/main worktree at d1b0ea3 with git status --porcelain empty at loadavg 54.45. Both arms pass and fail on load, not on tree. The structural half is stronger than either run: `git diff --stat origin/main..HEAD -- scripts/ tests/scripts/` is EMPTY, so this branch changes neither the harness nor the script it exercises and cannot be the cause. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
…5 and red at load 65 (#618, #1003) The gate bullet said 76 ok and 1 FAIL. On a quiet box the identical commit returns rc=0 and "All gates green", 77 of 77 ok, zero SKIP, at loadavg 15.47. The same head returned rc=1 with the test_cpu_x86_llamacpp_floor FAIL at loadavg 64.88 and again at 84.95. Recording both is the point rather than keeping the green one. It is the cleanest available statement of what #618 costs: a gate whose verdict depends on who else is using the machine is reporting on the machine, not on the diff. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
…kens, and stage 2 was a second spelling of stage 1 (#1003) The previous pass gave the sweep a self-test because its U+00D7 token was present and dead. The self-test it got was a flat MUST list run against the whole of CMP, which is a claim about the union and not about any alternative in it. Measured by deleting each alternative in turn: 12 of the 18 could be removed with the self-test still passing, because a neighbouring token rescued the string. Writing the percentage token as `[0-9]+(?:\.[0-9]+)? ?%\b`, the exact shape of the defect one token over, would have passed and silently dropped 176 of 1253 candidate lines across 42 files at 2f0cd62. Every alternative now carries controls that no other alternative in its own list matches, so a dead token leaves its own control unmatched and the assertion names it. The two dict lengths are asserted beside them, because deleting an entry outright would take its control with it. Proved by mutation on the block extracted from the committed markdown: each of the 19 alternatives neutered to `(?!)` in place and then deleted outright, 38 mutations, every one rc=1, the unmutated block rc=0. The harness prints applied and compiled beside each result, and its own first run reported 19 clean passes while every mutation had failed to apply. The same defect was live one level over. Stage 1 and stage 2 were two hand lists of one idea, and the narrower one sat downstream where under-counting is the direction that matters. Stage 2 dropped 11 `faster`, 11 `wins`, 3 bare `less` and 2 `ties`, so a future "ours is 24% faster than llama.cpp" would never have reached adjudication as favourable. Its `\b[1-9]` prefix exclusion never worked either: in `0.204x` the boundary is satisfied after the decimal point, so the deficit counted as a win. Both are removed rather than patched. Stage 2 is now compiled from the same FAV dict stage 1's union is compiled from, the block prints both counts, and the restructured CMP returns 1225 candidates in 144 files at 85a9a7a, identical to the expression it replaces. The stage-2 counts in both comparison tables were not reproducible by the documented pipe, in two different ways nobody had written down: the first table was taken on the printed `path:lineno:body` with a list that silently tracked each row's CMP, the second on the body with a third list. All five rows are re-measured under one rule at their own SHAs, the stage-1 columns are unmoved, and the derived pair is added as a control row. Three sets of anchors had gone stale, two of them from this branch's own insertion. The Laguna W7 mark cited five line numbers in the file it was inserted into, which its own 16 lines had already moved, and row 13 cited the same pre-insertion numbers. The mark now names sections, because a citation into the file it is written in is stale before it is saved. README `:155`, `:308` and `:310` were each one line short, and `:310` is the Metal row while the spec called it the Vulkan one. Every repo-local anchor was re-derived at this head, 82 of them, and three bare `record :N` continuations that a reader could attach to the wrong path are now spelled out. Two overstated claims are corrected. The oracle file restates no count now, one paragraph after saying it deliberately does not. And `git grep '176.6'` does not return "exactly one other site": as a regex the dot matches anything and it returns about 360 lines, and as a literal it returns four other files, none of them a llama.cpp prefill number. The conclusion is unchanged and its evidence was wrong, which is the same shape as the `--contains` result this spec already corrects. The whole-tree sweep timing is stated as load-sensitive rather than as a range, because a later run at loadavg 54.6 took 72.0 s and left the recorded "roughly 40 to 55 seconds" behind. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
…ot shape coverage, and the attribution half had no control (#1003) The per-alternative control installed last pass proves that every token FIRES. It does not prove that a token still matches the shapes it exists for, and the defect that started this whole thread was a narrowing rather than a death: the old `[x×]\b` was live, on `3.9×decode`, and on nothing else this tree writes. Measured at `fa94b10ae` on a clean detached worktree against a baseline of 1263 candidates in 145 files and 1033 favourable, five one-token narrowings left the self-test GREEN: an integer-only ratio drops 32 candidates and 40 favourable lines, a space-requiring percentage drops 132, narrowing the attribution window to the line itself drops 803 of 1263, narrowing `SEP` so the table-header clause stops firing drops 34, and dropping `llama-bench` from `LLAMA` drops 5. Nineteen alternatives were guarded and the half of the sweep that decides which lines they apply to was guarded by nothing. Both cheap known-live shapes now carry controls, `15x` from row 13's Laguna target and `0.69%` from this spec's own argument, and `scan()` is extracted so three line fixtures bind the attribution half: the window in both directions and its far edge, the header clause with llama.cpp out of window reach, and `llama-bench` as a spelling of `LLAMA`. All five narrowings now exit `rc=1` and the 38 token mutations still do, so the pass is 43 red and one green. The extraction moves neither stage: the new block returns the same 1263 in 145 and 1033 on the `fa94b10ae` tree. The residual is stated rather than closed. Exhaustive shape coverage is not reachable for a token set whose purpose is to match prose nobody has written yet, this is the fifth defect found in this one instrument, and every pass has found the previous pass incomplete. A new `## Owed` entry says so and names the two concrete pieces it leaves. Second finding, and it is the conclusion-right, evidence-wrong shape again. The 49-line stage-2 delta did not decompose as recorded. The 27 word-token lines reproduce exactly, but of the other 22 only 4 carry a ratio below 1.0. The 18 remaining carry no ratio at all: `C2x`, `C3x`, `sm_12x`, `sm8x` and `Q8_0 x Q8_0` are architecture names and a quantization type. The cause is not the value rule but the retired pipe's leading `\b`, which `FAV` does not carry, so dropping it was a stage-2 precision regression this spec never named. Counted on the same candidate set, the `\b[1-9]` exclusion admitted 201 of 208 sub-1.0 ratios, which is a rule that is not there rather than a weak one. No obligation is lost, since over-counting is the safe direction downstream, and the tightening is recorded as owed with its measured cost of 18 lines each way. Three smaller corrections. `test_cpu_x86_llamacpp_floor` FAILED at loadavg 11.99, below every load this section records as a failure and below three it records as passes, so the threshold reading of that list is retired. The bare `:502` after a `docs/BUILD.md` reference resolved mechanically to a line that file does not have, and both `STATUS` anchors are written in full. The Tests section counted 12 alternatives against 38 mutations. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
FOLLOWING_AGENTS_PROTOCOL Landing merge. Any keyed record is resolved to main's version with this row's scoped additions re-applied, since merge=union is right for an append-only log and wrong for a deletion. Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code]
localai-bot
pushed a commit
that referenced
this pull request
Aug 16, 2026
…rom main, not the driver Three commits landed while this row was being gated: `283c7e492` (#1051, the llama.cpp repin record), `e34d71379` (#1054, an AppleClang capture fix in qwen3.5) and `0f8580e26` (#1043, configurable MTP speculation depth). None touches `src/vllm/model_executor/models/ltx2_video_vae.cpp`, which is this row's only product file. `.agents/issue-index.md` overlapped, and its clean auto-merge is not trustworthy: `merge=union` silently interleaves, and on a sibling branch today it also reinstated a row `main` had just deleted. Taken from `origin/main` wholesale with this row's single `#1044` row re-appended, then verified -- `origin/main`'s file is a byte-identical prefix, 275 rows carry 275 unique ids, and `#1044` appears exactly once. The three keyed public records were verified by key rather than accepted: `docs/FEATURES.md` gains exactly one key (`LTX-2.5 Conv VAE decode threading`), `docs/BENCHMARKS.md` changes exactly one (`LTX-2.5 axes`), `docs/USAGE.md` changes none, and nothing is added or removed elsewhere in any of the three. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
localai-bot
pushed a commit
that referenced
this pull request
Aug 16, 2026
…om main Four commits landed while this row was in CI: `283c7e492` (#1051), `e34d71379` (#1054), `0f8580e26` (#1043) and `b493f4981` (#1035). None touches a `src/`, `include/` or `tests/` file this row touches -- the only overlaps are `CMakeLists.txt`, the two keyed public records, and the issue index. `.agents/issue-index.md` was rebuilt rather than merged: `origin/main`'s file taken wholesale with this branch's own 8 rows re-appended (#1005, #1013, #1031, #1039, #1048, #1049, #1050, #1052), then verified -- main's bytes are a byte-identical prefix, and 283 rows carry 283 unique ids. The union driver's clean result is not trusted here: on a sibling branch today it interleaved rows at a measured byte offset and, separately, reinstated a row `main` had deleted. `CMakeLists.txt` merged to a single added line and still carries exactly one `ltx2_t2a` reference, so the new translation unit is registered once. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
localai-bot
pushed a commit
that referenced
this pull request
Aug 16, 2026
`main` advanced to b493f49 (#1035, #1043, #1054, #1051 and others) while this row was gating, and GitHub reported CONFLICTING on `.agents/issue-index.md` again. GitHub does not run the `merge=union` driver that `.gitattributes:7` sets for that file, so every branch touching it re-conflicts each time main appends a row, and the resolution has to happen locally where the driver runs. The union auto-merge of the index was DISCARDED rather than trusted, for the second time on this branch: took b493f49's file wholesale, then re-appended only this row's own two rows (#960, #989). A clean union merge INTERLEAVES, which preserves well-formedness, uniqueness and presence and fails only the PREFIX property -- the one property `check-issue-index-append-only.py` does not test. Verified rather than assumed: 277 rows, zero duplicate keys, and main's file asserted to be a strict PREFIX of the result. The verification also found ONE malformed row, #1003, which is INHERITED -- it is already on origin/main, arrived with #1051, and splits into 10 parts where a well-formed 4-column row splits into 6 (four unescaped pipes in the Title cell). It is NOT repaired here: it is not this row's work, and repairing it without a gate only resets the clock. Filed as #1059 with the fix, because it is the third malformed row today and no checker measures cell count. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [claude-code]
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.
FOLLOWING_AGENTS_PROTOCOL
Repins the llama.cpp oracle from a local fork to stock upstream and enumerates
every measurement the fork contaminated. Owning issue
#857; the re-measurement is
#1003.
Records and a spec only. No product behaviour changes.
The pin named a tree that exists nowhere
.agents/oracles/llama-cpp.mdrecordedpin = 237ad9b96,pin_label = b9892,gateable = yes. All three were wrong:237ad9b96is on no remote. GitHub returnsNo commit found for SHAforboth
mudler/llama.cppandggml-org/llama.cpp. It is a local-only commit,and the working tree carried 27 uncommitted files on top of it, so builds from
that directory measured a tree in no repository at all.
b9892is not a label, it is a collision.git rev-list --countreturns9892 for the fork, and upstream tag
b9892(ee445f93d) is ALSO 65 commitspast
b9827and ALSO counts 9892. Neither is an ancestor of the other. So areader checking out
b9892to reproduce a number silently gets stock upstream.That already happened in-tree:
rpi5-a76-llamacpp-20260806.mdused stockb9892whilecpu-x86-llamacpp-20260811.mdbuilt the fork under the samelabel. Two evidence files, one label, two trees.
prefill GEMM, Marlin-style W4A16 grouped MoE GEMM, MoE-decode CUDA graph,
decode-graph reuse, fused residual-add plus RMSNorm, chunked GDN prefill, a
TTFT prefill-first scheduler mode. Six of them touch
ggml/src/ggml-cpu/, and570aadd7aemits its fused GDN and discriminated SSM_CONV ops default-onwith a CPU reference implementation, so the CPU floor built
GGML_CUDA=OFFhitthem too.
The oracle file defined this comparator as "the numbers a user can actually get
today" and then pinned a local fork carrying 65 of our own optimisations. Both
cannot be true.
Now pinned to stock
b10451/10bf611e5, reachable, with the tag bound tothe commit on the remote — a check the old label would have failed.
gateable = no, because stock has never been built or run on this hardware, with#857 owning the measurement. Carrying
yesacross the repin would have been thedefect this row exists to remove.
Enumeration by sweep, because hand-enumeration failed three times
Round one listed the set by hand and missed the Vulkan
METand the Pi 5 RSS.Round two missed Muse Glimmer. Round three missed
README.mdbecause the sweep'spath set excluded the repo root.
The spec now carries a runnable three-stage sweep with
git ls-filesand nopath arguments — no include list to fall behind the tree, no exclusion list to
justify. Stage 1 marks a line when it carries a comparison token and llama.cpp is
attributed to it: the line names it, or a line within three does, or the line is
a table body row whose HEADER does. That third clause is what no
git grep -Ccan express, and it is what catches
| Prefill | 223.8 tok/s | 177.3 | 1.18x |whose own text never says llama.cpp. Stage 2 filters by the page's own rule at
docs/BENCHMARKS.md:32-34. Stage 3 reads each survivor's revision off itsevidence record.
Twelve contaminated measurements, seven favourable verdicts, ordered by
margin against their own noise floor rather than by margin size. That ordering
matters: the Vulkan decode
METat 4.36 versus 4.35 is a 0.23% margin insideits own 0.69% spread, so it is far more fragile than the 18% prefill, and
README.mdstates it publicly as "matches llama.cpp".Five llama.cpp revisions, and one of them is not a revision
The record twice asserted a universal the same page disproved. Measured, the
tree carries the fork, stock
b9892, stock704485942, stock030ebb5, anda Poolside fork on branch
lagunawith no SHA recorded anywhere. A branch isa moving reference, so Laguna's
27.8 tok/swas never reproducible and cannotsimply be re-run: re-taking it means choosing a revision first. That figure
drives the campaign's "15x to 18x behind" statements.
Contamination reaching a shipped default
gguf_keep_quant.cppquotes llama.cpp denominators in source as thejustification for
VT_GGUF_KEEP_F16shipping default ON. The owning A/B hasthree axes and two regress: prefill about 10% worse, decode about 1.4% worse,
bought for 1.05 GiB. The recorded tie-break is stated in the floor's own terms,
"comfortably above the competitor floor".
So the default is owed a decision, not just a re-take, and #1003 says so. If a
re-taken stock pp128 lands above 204 t/s, that clause fails and the default's
only recorded justification is gone. The default itself is unchanged here, since
changing a shipped default on a contaminated justification would be the same
error in the other direction.
Two figures in that comment,
pp128 176.6and205 t/s, appear in no recordedrun. They are self-consistent (205/176.6 = 1.16), so they were computed rather
than mistyped. Recorded as untraceable rather than reconciled to the spec's
173.2/1.18x, because picking one would invent a provenance.
The instrument was wrong five times, and the fifth is stated rather than fixed
Each round hardened the sweep and the next found a new hole, so the record now
says to assume a residual rather than trust the green.
×was present but silently dead:×is not\w, so\bafter it needs aFOLLOWING word character, and only
3.9×decodematched. A token list can beWRONG as well as short.
\b, so two expressionsdisagreed and only the narrower one gated. Stage 2 is now compiled from the
same dict.
\b[1-9]never excluded sub-1.0 ratios, because in0.204xtheboundary is satisfied after the decimal point. Two defects were cancelling, and
the rule was wrong anyway since
0.758xis the Pi 5 RSS win.19 alternatives is live, 43 mutations all red. It does NOT prove shape
coverage: narrowing the ratio branch to require a decimal passes green and
silently drops 32 candidates, and narrowing the attribution window to
range(n, n+1)passes green while deleting 64% of the instrument's output,because every control was a string and the attribution half is not a string.
Controls added for the two live shapes and for the attribution half; the
residual is stated with its measured table and carried under
## Owed.Evidence
scripts/agent-preflight.sh: 77 results, 77 ok, 0 FAIL, 0 SKIP, exit 0,gated against
origin/main d1b0ea3a8, named in both range headings.The sweep is reproducible from the committed markdown: extract the fenced block
and run it.
1263 candidates in 145 files, 1033 favourableat this head; theself-test exits 1 naming the strings it can no longer see.
test_cpu_x86_llamacpp_floor(#618) is load-dependent and passed here at an idlebox. It has now been observed failing at a one-minute loadavg of 11.99, below
three loads at which it passed, so the threshold reading of that list is retired.
Owed
alone does not discharge it.
at all.
\bto the ratio branches(measured cost 18 lines either way), and decide whether per-shape controls
belong on every alternative or whether the instrument should stop living in a
document.
.agents/environment.mdstill carries the recipe that rebuilds the supersededfork; it is marked, and recipes are a surface the sweep does not cover by
design.
Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]