Skip to content

rational plan v0.2: the ten open questions decided - #54

Merged
tap merged 1 commit into
mainfrom
claude/sample-rate-expansion-strategies-ezqzu6
Oct 1, 2026
Merged

tap merged 1 commit into
mainfrom
claude/sample-rate-expansion-strategies-ezqzu6

Conversation

@tap

@tap tap commented Oct 1, 2026

Copy link
Copy Markdown
Owner

What this changes

rational/PLAN.md goes from v0.1 (draft, ten open questions) to v0.2: every section 9 question is decided by the maintainer as recommended and folded into the decisions it touches (new R13–R16, amended R3/R6/R7/R11), with sections 3.3–3.6 regenerated under the settled rules and stale file:line citations refreshed. One row of the family PLAN.md (the illustrative 48 → 88.2 chain) is corrected to match. No code.

Why

The plan's "Next" entry needs a reviewed plan before M0 lands in DspTap; v0.1 left the ten decisions to the maintainer. Decided (2026-10-01):

  1. bridge at the lowest k (R13): 48 → 88.2 is bridge k = 0 → ↑2 at 62 % of the MACs of ↑2 → bridge k = 1, same (f_pass, A); the family plan's row corrected; transparent needs no exception.
  2. Fewer stages when within 10 % — precisely, 10 % of the rational stages' MACs per output, with bridge's identical stage excluded from the comparison so a bridge-dominated total cannot absorb a worse rational factorization (R3). 17 rows change: 3/1 is one ↑3 (12.0 vs 11.0), 16 → 44.1 is ↑3 · bridge↓ (71.1 vs 70.0), and so on; 8 → 11.025 stays ↑2 · ↑3 · bridge↓ · ↓2 · ↓2.
  3. Dipping rows flagged ⚑ "covered, not recommended" when the bridge stage runs at ≥ 2× the chain's output rate (R14): 38 rows; risk S4 mitigated.
  4. chain<> in DspTap confirmed (R6), proven on decimate.h in M0.
  5. 384 kHz stays (R15).
  6. ↑4 / ↓4 is two half-bands; no single 4th-band stage ships until a latency-first consumer asks (R3). The 1/16 and 1/24 rows it would improve are named, with the cost (1/16 at 133 vs 113 est.).
  7. bridge's four profile names reused, edges as fractions of the pair's lower rate (R5).
  8. Latency as the exact rational plus latency_seconds() (R7); bridge keeps its double.
  9. The C ABI exposes the 34 named within-family chains (R16).
  10. Family version 0.5.0 at M6 (R11).

Verification

Prose only. The matrix tables were regenerated by the scratch generator described in section 3 (Dijkstra over the 2^a·3^b lattice with the harris length estimate, the fewer-stages selection on the rational part around the minimal chain's own bridge stage, the flag, and no 4th-band stage); every ordered pair of the 14 rates is still covered (none excluded). Every number remains labelled est. and owed to M2/M4. pre-commit has no Markdown hook; CI's style and book jobs are the first gate.

Notes for the reviewer

  • Two things the regeneration surfaced, both recorded in the plan rather than hidden: without a single 4th-band stage, long ↓16/↓24 chains cost up to 18 % more (est.) than v0.1's ↓4-first chains, which is exactly the latency-first consumer's reopening point; and the first cut applied the 10 % to the whole chain, which let bridge-dominated rows take worse rational stages (8 → 11.025 would have gone 297 → 326) — hence the precise form in decision 2.
  • No open questions remain; the next step is M0, the DspTap substrate PR (tap/dsp/nyquist.h, tap/dsp/chain.h).

🤖 Generated with Claude Code

https://claude.ai/code/session_015VR1VC4SDGxHZQQsQvPBaA


Generated by Claude Code

Every section 9 question of the v0.1 draft is settled by the maintainer
as recommended (2026-10-01) and folded into the decisions it touches:
bridge at the lowest k (R13; the family plan's illustrative 48 -> 88.2
row corrected to bridge k = 0 -> up 2, 62 % of the MACs at the same
(f_pass, A)); fewer stages when within 10 % of the rational stages' MACs
per output, bridge's identical stage excluded from the comparison (R3,
17 rows change, e.g. 3/1 is one up-by-3 and 16 -> 44.1 is up-by-3 then
bridge at 71.1); dipping rows flagged "covered, not recommended" when the
bridge stage runs at >= 2x the chain's output rate (R14, 38 rows; risk S4
mitigated); chain<> in DspTap confirmed (R6); 384 kHz stays (R15); up/
down by 4 is two half-bands and no single 4th-band stage ships until a
latency-first consumer asks (R3; the 1/16 and 1/24 rows it would improve
are named); bridge's four profile names reused with edges as fractions
(R5); latency as the exact rational plus latency_seconds() (R7); the C ABI
exposes the 34 named within-family chains (R16); family version 0.5.0 at
M6 (R11). Sections 3.3-3.6 regenerated under the rules; stale file:line
citations refreshed. No open questions remain.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015VR1VC4SDGxHZQQsQvPBaA
@tap
tap merged commit 2b1ad65 into main Oct 1, 2026
24 checks passed
@tap
tap deleted the claude/sample-rate-expansion-strategies-ezqzu6 branch October 1, 2026 14:45
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