Skip to content

ITU compliance Stage 5 (core): the preset as library API, the C ABI chain, the claims - #13

Merged
tap merged 2 commits into
mainfrom
claude/itu-stage5-core
Jul 16, 2026
Merged

ITU compliance Stage 5 (core): the preset as library API, the C ABI chain, the claims#13
tap merged 2 commits into
mainfrom
claude/itu-stage5-core

Conversation

@tap

@tap tap commented Jul 16, 2026

Copy link
Copy Markdown
Owner

Summary

The MuTap half of Stage 5 — based directly on main (which now has Stage 4 via #12); no stacked base this time.

mutap::aec_chain_preset<Sample>(block, partitions, fs) (mutap/postfilter.h): the pinned compliance configuration graduates from the test support header into the library. One rule rescales every per-block time constant so the physically calibrated behavior holds at any (block, sample-rate) geometry; the two deliberate exceptions are documented in place — the canceller transition stays 0.9998 per block (rescaling it traded the time-variant-path row to the wire), and the comfort-noise floor bias is calibrated per geometry (interpolated between the two measured points, ratio 1 → 4.0 and ratio 3 → 5.6, clamped to the measured neighborhood, with an explicit "uncalibrated far outside this span" warning).

tests/support/itu_chain.h chain_config() is now one line — a call into the preset — so the compliance suite gates the preset itself: any change to it lands as a failing measured gate, never as silent drift. Full suite re-verified green after the refactor: 156/156.

C ABI: the mutap_aec_* family exposes the full chain (raw FD-Kalman canceller + residual suppressor + comfort noise + initial receive guard) to FFI consumers, built from the preset — create(block, partitions, sample_rate, comfort_noise, receive_guard), process, echo_explained, converged, set_adaptation, reset, clone, with the families' NULL-tolerant contract. Exercised from a plain C driver: deep tail suppression on an echo-only scenario, convergence certification, clone/reset/NULL paths.

Claims: README gains an "ITU-T compliance" section — the requirement/measured/margin table at worst-rate values (TCL +22 dB, echo level +18 dB, spectral mask +13 dB, P.340 full-duplex echo loss +10 dB, …) with the scope caveats stated plainly (G.168-adapted framing, G.167 run-and-reported, synthetic-signal method equivalence pending vector procurement). The book's echo chapter gains "The last 30 dB: @postfilter" — the suppressor/comfort-noise/receive-guard story for non-DSP readers — plus the two new knob entries.

Resolves

The HANDOFF core follow-up filed by the Max half: the external's duplicated scaling rule now has a library home. Remaining after this merges (MuTap-Max): re-pin the submodule and switch mutap.aec~'s make_chain_config to call the preset — that closes the ITU compliance plan, Stages 0–5.

🤖 Generated with Claude Code

https://claude.ai/code/session_01TLE2rvptWxV8catE8vTvgx


Generated by Claude Code

claude added 2 commits July 16, 2026 22:51
mutap::aec_chain_preset<Sample>(block, partitions, fs) moves the pinned
compliance configuration from tests/support/itu_chain.h into
mutap/postfilter.h: one rule rescales every per-block time constant to
hold the physically calibrated behavior at any (block, sample rate)
geometry, with the two deliberate exceptions documented in place (the
canceller transition is not rescaled; the comfort-noise floor bias is
calibrated per geometry, interpolated between the two measured points
and clamped to the measured neighborhood). chain_config() in the test
support header is now a one-line call into the preset, so the suite
gates the preset itself — full suite re-verified green (156/156) after
the refactor.

The C ABI grows the mutap_aec_* family: the full chain (raw FD-Kalman
canceller + residual suppressor + comfort noise + receive guard) built
from the preset, with echo_explained/converged introspection and the
same NULL-tolerant contract as the other families; exercised from a C
driver (deep tail suppression, convergence certification, clone/reset).

Claims land where users read them: README gains the ITU-T compliance
section with the requirement/measured/margin table (worst-rate values)
and the scope caveats stated honestly; the book's echo chapter gains
"The last 30 dB: @PostFilter" and the two new knobs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TLE2rvptWxV8catE8vTvgx
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TLE2rvptWxV8catE8vTvgx
@tap
tap merged commit 7572a56 into main Jul 16, 2026
20 checks passed
@tap
tap deleted the claude/itu-stage5-core branch July 17, 2026 12:55
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