Skip to content

rational: the streaming ratchet rows re-recorded, with the reason (A1) - #80

Merged
tap merged 1 commit into
mainfrom
claude/sample-rate-solutions-comparison-mqc190
Oct 11, 2026
Merged

tap merged 1 commit into
mainfrom
claude/sample-rate-solutions-comparison-mqc190

Conversation

@tap

@tap tap commented Oct 10, 2026

Copy link
Copy Markdown
Owner

What this changes

Re-records rational's thirteen streaming ratchet rows on M33, M55 and Hexagon (rational/bench/baselines.json; the README table regenerated; rational/PLAN.md v0.15 carries the record beside its hand-kept table). bridge/CLAUDE.md's ratchet sentence now says "beyond tolerance", the family rule in the root CLAUDE.md. The roadmap's A1 entry is marked landed. Block A's first item (docs/ROADMAP.md A1).

Why

The rows were the 2026-10-02 record, and three commits since moved them inside the ±3 % gate without re-recording, so the gate measured from a tree other than the one it guards (the one M55 row at +1.93 % left the gate 1.07 % of headroom for a real regression). The precedent for an in-band re-record with a stated reason is bridge/PLAN.md M7e and async/docs/PERFORMANCE.md "Hexagon harness isolation". Re-recording rational alone follows the roadmap's Q3 recommendation; it is also what the measurements say, since bridge and async re-measure exact.

Verification

  • Toolchains installed fresh in this session (arm-none-eabi-gcc 13.2.1, CodeLinaro 19.1.5, qemu 8.2.2 with the tree's plugin; the Hexagon emulator built plugin-enabled from the pinned source, every digest matching ci.yml's pins). They reproduce every committed row: bridge's twelve and async's eight rows pass --exact on all three targets, and rational's construct row is +0 everywhere.
  • The reason is measured, not inferred: the M55 workloads rebuilt at every commit from 4eb1180 to e71d0b1. ab8fea3 (v0.11) carries the whole ratio23_q15_eco move (+355,117 on the M55, +1.93 %, stated as +1.9 % in its commit; +7,346 on the M33, −224 on Hexagon). d4fff5c (v0.13) adds a construction-side constant per workload (M55 +76 by-2, +112 by-3 and 2/3, +196 transparent, +128 the chain; M33 +192 / +158 / +545 / +1,102; Hexagon +52 / +69 / +132 / +2,201). The DspTap bump to chain: stages reset at construction and read-only through the chain DspTap#57 (82cd646) adds +798 to the chain's construction on the M55. Every other commit re-measures identically; the sweep also shows The 2026-10 adversarial audit and its response: S0 to S5, family version 0.6.0 #72's S1 sitting +3.5 to +8.8 % until 391145d took it back, as that commit records.
  • scripts/check_retired_words.py clean. Prose and JSON only: no C++ changed, so no build.
  • CI's three ratchet jobs are the gate that the committed rows match the runners to the instruction; the local harness has matched them on every row so far.

Notes for the reviewer

  • No contract point moves: the counts are the tree's, re-recorded.
  • The Hexagon chain row (+2,201) was not in the roadmap's statement; it is the same residue as the other targets'.

🤖 Generated with Claude Code

https://claude.ai/code/session_016GKzq1VSdcMYCRMhddiMaf


Generated by Claude Code

The thirteen streaming rows of rational/bench/baselines.json were the
2026-10-02 record (v0.10); three commits since moved them inside the ±3 %
gate without re-recording, so the gate measured from a tree other than
the one it guards. Re-recorded on all three targets from main at c120bc9
(arm-none-eabi-gcc 13.2.1, CodeLinaro 19.1.5, qemu 8.2.2 with the tree's
plugin: the toolchains that reproduce the committed rows to the
instruction, and bridge's twelve and async's eight rows --exact on M33,
M55 and Hexagon, so only rational moves). The construct row, recorded
2026-10-10, is unchanged.

The reason, traced by rebuilding the M55 workloads at every commit from
4eb1180 to e71d0b1: ab8fea3 (v0.11, the power-of-two row gain for the
Q15 mixed ratios going down) is the one visible move, ratio23_q15_eco
+355,117 on the M55 (+1.93 %, stated as +1.9 % in its commit), +7,346 on
the M33 and -224 on Hexagon; d4fff5c (v0.13, the mirror-exact designer,
the stage.h snap removed) added a construction-side constant per
workload (M55 +76 by-2, +112 by-3 and 2/3, +196 transparent, +128 the
chain; M33 +192 / +158 / +545 / +1,102; Hexagon +52 / +69 / +132 /
+2,201); the DspTap bump to tap/DspTap#57 (82cd646) added +798 to the
chain's construction on the M55. Every other commit re-measures
identically; the sweep also shows #72's S1 sitting +3.5 ... +8.8 % until
391145d took it back, as that commit records. rational/PLAN.md carries
the record (v0.15) beside the hand-kept table; the README table is
regenerated.

bridge/CLAUDE.md's ratchet sentence now says "beyond tolerance", the
family rule in the root CLAUDE.md: a count that moves inside the gate is
re-recorded when the record is corrected, as here, not on every change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016GKzq1VSdcMYCRMhddiMaf
@tap
tap merged commit 442a09b into main Oct 11, 2026
30 checks passed
@tap
tap deleted the claude/sample-rate-solutions-comparison-mqc190 branch October 11, 2026 08:44
tap pushed a commit that referenced this pull request Oct 12, 2026
Q1: the bench is USB asynchronous mode, with the Pico 2 as the
asynchronous-mode device on its own crystal (its USB audio firmware joins
A11), and it runs twice, so the timestamp servo is a 1.0 item (B3, C1, the
verdict rule). Q2: no outside consumer links a C ABI; MAJOR is the ABI;
FetchContent and add_subdirectory are the only supported consumption at
1.0 (C3). Q3: as landed in A1 (#80). Q4: DspTap tagged independently, the
minimum asserted (A9). Q5: probably our own Pico 2 firmware, by the
maintainer's recollection, unconfirmed; A3 landed regardless (#81). Q6: the
host ratchet is a hard gate at ±3 % (A8). Each question stays as asked,
with its decision beneath it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016GKzq1VSdcMYCRMhddiMaf
tap pushed a commit that referenced this pull request Oct 12, 2026
Q1: the bench is USB asynchronous mode, with the Pico 2 as the
asynchronous-mode device on its own crystal (its USB audio firmware joins
A11), and it runs twice, so the timestamp servo is a 1.0 item (B3, C1, the
verdict rule). Q2: no outside consumer links a C ABI; MAJOR is the ABI;
FetchContent and add_subdirectory are the only supported consumption at
1.0 (C3). Q3: as landed in A1 (#80). Q4: DspTap tagged independently, the
minimum asserted (A9). Q5: probably our own Pico 2 firmware, by the
maintainer's recollection, unconfirmed; A3 landed regardless (#81). Q6: the
host ratchet is a hard gate at ±3 % (A8). Each question stays as asked,
with its decision beneath it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016GKzq1VSdcMYCRMhddiMaf
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.

2 participants