You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
One-line summary: A read-only audit of the whole workspace at main4797a544 for render-path
cost, DSP and math efficiency at the frozen numeric contract, SIMD utilisation, duplicated code, and
crate-boundary scope creep, recorded as self-contained, individually closable findings so that
implementation agents can execute each one from this body alone.
This is an audit tracker, not implementation authority. Every finding below is a candidate for
its own smallest-closable issue (or a small batch of same-crate findings). No cross-cutting "apply
the audit" branch is permitted. Findings are ranked; the ranking is advisory. Class-B findings are
flagged for owner ruling and MUST NOT be implemented from this body.
Current execution status — 2026-09-11
Current restart authority; older sections are historical. Astra LOW implements;
Astra XHIGH scopes/verifies. At most two active issues; five attempts maximum.
Lane B owns artifact qualification/pins. All selected #220/#221/#162 are delivered
and closed. #220 corpus differential: PR728/main c476f5b, PR34551686277 and
main34552159920 PASS. #221 ownership-safe fold rejection/identity and #162 compiler
borrowing: PR729/main92684ea9, PR34555264403 and main34555670528 PASS. Independent
Astra XHIGH source, combined-source, artifact and exact-head reviews PASSED.
Qualified pin a24d0cae reproduces; five companion files unchanged. Three delivered
worktrees removed; histories and external evidence retained. Primary is clean/
synchronized to92684ea9. No active issue slots; 47 issues open (50 before selection).
Earlier #387/#211/#376, RT6/RT7 and resident-meter delivery remain earned. Broader
RT10 remains open; #714 remains superseded without retroactive PASS. Preserve #552/#558/#542 dependency order. No new original-finding or performance credit.
Restart authorities: #559/#560 on origin/codex/audit-349-priority-handoff.
Original finding rows below remain the historical audit snapshot.
Method: seven parallel read-only reviews, one per scope (lane+math; EQ+dynamics; limiter/clip/
transient/delay+references; render path engine/builtins/rack/graph; control plane compilers/
session/host-core; protocol/capi/hosts/source; tools/scripts/CI). Each review was required to
cite exact file:line ranges with verbatim snippets and to check its proposals against the
standing rulings in docs/rulings/. No benchmark was run; no rendered bit was moved.
Standing constraints every finding respects (implementers must too):
Unfused (a*b)+c everywhere; bit identity across scalar/W4/W8/wasm
(docs/rulings/unfused-multiply-add-audit.md). Class A = same arithmetic and operation order,
fewer instructions/loads/stores/copies/branches. Class B = moves a rendered bit; flag only.
No runtime SIMD dispatch; only crates/lane names wide or intrinsics
(scripts/check-lane-policy.sh); unsafe_code = "deny" workspace-wide.
Render is zero alloc/free/lock/syscall/I/O/log/panic-path (scripts/check-realtime-policy.sh, docs/REALTIME_DEPENDENCY_POLICY.md).
Honest-null rulings are not re-proposed without new evidence (docs/rulings/README.md).
Already-named floor gap terms (docs/rulings/effect-floor-accounting.md boundaries 2–5):
(a) bitselect lowering, (b) vbroadcastss re-splat, (c) compressor detector gather,
(d) lookahead rings > L1, (e) AoSoA transpose round trip per bank, (f) elision-gate integer
compares, (g) per-node graph dispatch. Findings that locate the code for a gap term say so.
How to use this issue
Pick a finding (or a same-crate cluster). Create a numbered spec in .github/ISSUE_SPECS/ and
a matching GitHub issue whose body is the finding verbatim plus the gates listed under it.
Implement only that finding. The verification gate named in the finding is the acceptance gate;
for class-A render-path findings the standing bit-identity fixtures and scripts/check-realtime-policy.sh are mandatory in addition.
A finding whose premise turns out false on inspection is closed with a one-paragraph null note
appended to this tracker, not silently skipped.
Do not implement a class-B finding. Open an owner-ruling request that cites it.
Verified in this audit session (facts, not proposals)
cargo test -p lane --release --test g1_op_identityfails on an AArch64 host at main 4797a544 (g1_random_vectors_are_lane_identical: exp2_int differs from the scalar oracle at Simd4 in 7 659 of 8 000 000 lanes, all signalling-NaN inputs, e.g. a=0xff90882d oracle=0x7f000000 actual=0x00800000). The same test passes in debug. The release test
binary contains fmaxnm/fminnm. No CI job executes tests on aarch64. See LANE-3.
crates/capi/src/runtime/control.rs:196 types the production controller as ProtocolController<MockProvider> and compile.rs:485 constructs it. See IO-4.
ProtocolQueues::try_dequeue_automation (crates/protocol/src/queue.rs:832) has no caller
outside crates/protocol and tools/audit; no host or render path drains the accepted-automation
queue. See IO-5.
ArenaLease::set_muted/is_muted/wave (crates/engine/src/realtime/disjoint.rs) have no
production caller; effective() still pays the mute redirect per buffer access. See RT-14.
BankChain::scatter_tiled (crates/rack/src/lib.rs:2034-2095) writes through a staging block and
then copies per lane; ArenaMembers::fold_plane (crates/graph/src/runtime.rs:686-697) does one
master read-modify-write pass per lane; reduce_plane (runtime.rs:88-110) does one pass per
extra input. See RT-1/2/3.
tools/bench/src/session.rs:446 defines a private sha256_hex beside bench_support::digest::sha256_hex. See TOOL-1.
Executive summary
123 findings across seven scopes. The picture is consistent across scopes:
The render-path gap is memory traffic and dispatch, not arithmetic. The floor ruling already
said this for the compressor and EQ; this audit locates the code for every named gap term and
finds the same shape in the plumbing rows. The idle row (18 % of floor) and the plumbing row
(6.7 %) are dominated by: a doubled scatter (RT-1), per-lane master folds (RT-2), per-input
reduction passes (RT-3), three block passes for six lane-ops of fader+matrix (RT-4), per-block
register spills in symmetry bookkeeping (RT-5, refresh_channel_symmetry is O(records×lanes) under sustained per-block record traffic #238), dyn walks over cached flags (RT-6, RT-8,
RT-12/CP-13), and constant splats that lower to a libc memset_pattern16 call on Apple targets
(LANE-1). All are class A.
Gap term (c), the compressor detector gather, is live and has spread. It moved into fill_taps/copy_lane (DYN-1) and the gate/expander (DYN-2) and multiband (DYN-3) carry worse
copies of it. One shared effect_runtime::ring::gather_tap with a uniform-D vector-load arm
fixes all three. Gap term (b), constant re-splat, is written in source in multiband (DYN-4),
gate/expander (DYN-6), transient shaper / soft-clip / limiter (FX-4). Gap term (a), bitselect→vblendvps, is already closed in code but still priced as open in the floor tables
and bench constants (LANE-13).
Three block-invariant decisions are branched per frame in the limiter (FX-1), delay (FX-11)
and the mixed builtins chain (RT-7); soft-clip has no stationary split at all (FX-6). All are const-generic unswitch fixes with no arithmetic change.
Realtime-safety is true but unenforced. No allocation, %, or panic edge was found on the
render path in rack/builtins/graph/effects, but the gate that would prove it scans only crates/engine/src/realtime (RT-16 / IO-14). Live exceptions found: a 2 KB stack zero-fill per
block in delay (FX-10), a (3T+E)-entry fill(0) per block in host-web (IO-7), 512 B of scratch
zeroed per bank per block in the EQ (DYN-9), 16 expect edges in the source pull path (IO-13).
Crate boundaries are inverted in specific, fixable places: the shipped C ABI's control
provider is a conformance mock (IO-4); the accepted-automation queue and the effect control lanes
are two disconnected automation models (IO-5); ~600 lines of transport-neutral console ABI live
only in the wasm host (IO-18); rack exports the planner's vocabulary (RT-15); builtins-compiler holds ten render-path process impls while graph holds the compiler's caps,
diagnostics and lowering pass (CP-12); effect-package restates ~400 lines of effect-contract's descriptor law (CP-8).
DRY debt is concentrated and countable: ~430 lines of identical descriptor boilerplate across
eight effect crates (DYN-12/FX-12), 20 copies of one xorshift generator (LANE-11/FX-15), seven
near-identical determinism.rs files (FX-16), four hand-rolled counting allocators with #![allow(unsafe_code)] (FX-17), four rack enums and two stable-id newtypes (CP-5), three
diagnostic shapes (CP-6/CP-9), 42 hand-written protocol encoders over one table (IO-2), seven
spellings of the 17-message registry (IO-3), nine RIFF writers (TOOL-6/IO-20), seven MANIFEST.tsv implementations (TOOL-5), 21 gate scripts sharing one skeleton and 35 mutation
harnesses with 12 verbatim expect_failure copies (TOOL-11/12).
The control plane allocates by the tens of thousands per compile because the front half is
keyed by heap-String ids that the lowering pass interns to u32 at the end (CP-1), lower
runs three times per plan (CP-2), and the runtime un-flattens the exemplary SoA ExecutionProgram back into per-op boxes (CP-14).
CI builds cold (zero Rust caching, 27 wasm32 builds per PR, the shipped worklet built three
times, cargo-fuzz installed from source three times: TOOL-13), tools/audit carries 4 720
lines no gate invokes (TOOL-3), and the browser artifact ships without wasm-opt (IO-19).
Dependency-ordered program (advisory ranking)
Each wave is independently closable; within a wave, rows are independent unless noted.
Wave 0 — correctness and gate integrity (do first; each is a bounded issue).
LANE-3 (aarch64 D8 max/min fold; add an aarch64 CI execution leg), IO-4 (real control provider in capi), IO-5 (decide and wire the automation drain, or retire one model), IO-9 (= #292),
RT-16/IO-14 (root-agnostic realtime gate; then add markers to rack/builtins), LANE-9
(vectorization allowlist still requires the retired fused FMA), TOOL-11 (= DRY half of #306),
LANE-13 (floor tables/bench constants still price gap term (a) as open).
Wave 1 — render-path class A against the worst floor rows. Measure each with scripts/run-console-benchmark.sh on the row the finding names.
RT-1, RT-2, RT-3, RT-4, RT-5 (= #238), RT-14, LANE-1, LANE-2, DYN-1 → DYN-2 → DYN-3 (share one
kernel), DYN-4, DYN-6, FX-1, FX-10, IO-7, RT-7, FX-4.
Wave 3 — boundaries, DRY, dead code, structure. Pure moves and deletions; gate is cargo test --workspace identical pass count plus the named policy scripts.
RT-13, RT-15, RT-17, CP-5 … CP-12, CP-15 … CP-17, CP-20, DYN-7, DYN-12, DYN-13, DYN-16, FX-5,
FX-12 … FX-19, LANE-7, LANE-8, LANE-10, LANE-11, IO-1, IO-2, IO-3, IO-8, IO-10, IO-11, IO-15,
IO-17, IO-18, IO-20, TOOL-1 … TOOL-10, TOOL-12 … TOOL-16.
Class B — flagged for owner ruling, never implemented from this body.
FX-3 (limiter per-sample div by block-constant window), LANE-12 (soft-clip flushes two
feed-forward FIR history words), RT-10 step 2(b) (an f64 lane type for meter energy), and the
standing compressor-D-in-program-key question from effect-floor-accounting.md.
Cross-references (same defect seen from two scopes — implement once)
pair
note
RT-12 ↔ CP-13
executor block loop double-indexing and observer walk
counting allocators; #332 deferred the consolidation
TOOL-6 ↔ IO-20
RIFF/RF64 fixture writers
RT-10 ↔ IO-8
meters / master-peak fold should be one lane-generic kernel
DYN-7 ↔ FX "already fine"
envelope followers are shared; the branching one-poles and detector links are not
LANE-4 ↔ DYN-1
4 of the compressor's 94 floor ops are exp2_int's redundant clamp
Findings index
Full self-contained findings (current code, proposal, expected effect, rulings checked,
verification gate) are in the comments below, one comment set per scope. Each scope's report also
ends with a "Things I checked that are fine" list — read it before re-auditing a crate.
Tiled bank scatter writes every word twice through a staging block; 2 loads + 2 stores per lane-sample where 1 + 1 suffices
RT-2
A
high
crates/graph/src/runtime.rs:686-697
Route fold accumulates into the master once per lane — 8 read-modify-write passes per cohort per plane
RT-3
A
high
crates/graph/src/runtime.rs:88-110
reduce_plane is n−1 block passes; a fan-in-64 output node costs 126 loads + 63 stores per word
RT-4
A
high
crates/builtins/src/lib.rs:1926-1948, 2170-2181
Fader and matrix are three block passes for six lane-ops; fuse the settled arms into one
RT-5
A
high
crates/builtins/src/lib.rs:1036-1044, 1632-1690
refresh_channel_symmetry spills up to 240 SIMD registers per record and per ramping block (issue #238)
RT-6
A
medium
crates/rack/src/lib.rs:1428-1486
Collapse dispatch makes lanes × slotsdyn calls per block; publish a [u8; 8] per stage
RT-7
A
medium
crates/lane/src/kernels/builtins.rs:857-916
mixed_chain_block reads its plan-invariant elision plan inside the frame loop
RT-8
A
medium
crates/rack/src/lib.rs:1565, 1684, 1709
Delivered:#478/PR #523 replaced the three invariant walks with prepared packed-mask predicates at merge 70ce3d7b; required/post-main runs 34031771524/34032117797 passed
RT-9
A
medium
crates/graph/src/runtime.rs:2686-2731
One armed observer or send tap declines the chain merge and costs two extra whole-block transposes; tee instead
RT-10
A
medium
crates/builtins/src/lib.rs:3625-3663
Meters are a scalar per-track third pass; meter the resident AoSoA block lane-generically instead
RT-11
A
medium
crates/effect-contract/src/lib.rs:234-250
Tile transpose crosses a 256-byte [[f32;8];8] by-value boundary in both directions; add a [L; W] form
Per-lane detector gather is W scalar loads + W scalar stores per channel-frame in both fill_taps and gather_detector; a uniform-D arm makes it one vector load.
DYN-2
A
high
crates/gate-expander/src/kernel.rs:259-293
Four tap gathers per frame: two duplicate each other when the channels' taps agree, and two are dead under DualMono.
70/70 raw/accepted jsonl pairs byte-identical: ~4.5 MB of the 9.85 MB is a second copy
TOOL-16
N/A
medium
sdk/src/internal/session-json.ts:13-62
the canonical-JSON leaf-type tables are hand-transcribed from Rust beside a working Rust→TS codegen pipeline
Non-goals
No rendered bit moves under any class-A row; a row that turns out to need one is re-classed B and
stops.
No new crate names, no renames for their own sake, no runtime SIMD dispatch, no unsafe outside
the existing allowlist without a ruling.
No benchmark-driven tuning loops: one measurement per row on the named workload, recorded, not
chased.
Multicore render, f64 lanes, ADAA, reciprocal divides, and any change to a frozen operation
order are outside this tracker.
Evidence requirements per implemented row
The finding's own verification gate, green.
For render-path rows: scripts/check-realtime-policy.sh and the workspace fixture bit-identity
suite green; the named console-benchmark row re-measured once (descriptive).
A one-paragraph note on this tracker: row id, commit, measured before/after where applicable, or
the null result if the premise did not hold.
Active: #220 route-fold coverage and #162 compiler borrowing; #221 queued. #387/#211/#376 delivered and closed. See current #559/#560 checkpoint before selecting the next bounded issue. Broader audit and
program trackers remain open until their own closure conditions are satisfied.
One-line summary: A read-only audit of the whole workspace at
main4797a544for render-pathcost, DSP and math efficiency at the frozen numeric contract, SIMD utilisation, duplicated code, and
crate-boundary scope creep, recorded as self-contained, individually closable findings so that
implementation agents can execute each one from this body alone.
This is an audit tracker, not implementation authority. Every finding below is a candidate for
its own smallest-closable issue (or a small batch of same-crate findings). No cross-cutting "apply
the audit" branch is permitted. Findings are ranked; the ranking is advisory. Class-B findings are
flagged for owner ruling and MUST NOT be implemented from this body.
Current execution status — 2026-09-11
Current restart authority; older sections are historical. Astra LOW implements;
Astra XHIGH scopes/verifies. At most two active issues; five attempts maximum.
Lane B owns artifact qualification/pins. All selected #220/#221/#162 are delivered
and closed. #220 corpus differential: PR728/main c476f5b, PR34551686277 and
main34552159920 PASS. #221 ownership-safe fold rejection/identity and #162 compiler
borrowing: PR729/main92684ea9, PR34555264403 and main34555670528 PASS. Independent
Astra XHIGH source, combined-source, artifact and exact-head reviews PASSED.
Qualified pin a24d0cae reproduces; five companion files unchanged. Three delivered
worktrees removed; histories and external evidence retained. Primary is clean/
synchronized to92684ea9. No active issue slots; 47 issues open (50 before selection).
Earlier #387/#211/#376, RT6/RT7 and resident-meter delivery remain earned. Broader
RT10 remains open; #714 remains superseded without retroactive PASS. Preserve
#552/#558/#542 dependency order. No new original-finding or performance credit.
Restart authorities: #559/#560 on origin/codex/audit-349-priority-handoff.
Original finding rows below remain the historical audit snapshot.
Authority and baseline
mainat4797a544(merge of fix: make SDK artifact copies portable #346), 2026-09-03.transient/delay+references; render path engine/builtins/rack/graph; control plane compilers/
session/host-core; protocol/capi/hosts/source; tools/scripts/CI). Each review was required to
cite exact file:line ranges with verbatim snippets and to check its proposals against the
standing rulings in
docs/rulings/. No benchmark was run; no rendered bit was moved.(a*b)+ceverywhere; bit identity across scalar/W4/W8/wasm(
docs/rulings/unfused-multiply-add-audit.md). Class A = same arithmetic and operation order,fewer instructions/loads/stores/copies/branches. Class B = moves a rendered bit; flag only.
crates/lanenameswideor intrinsics(
scripts/check-lane-policy.sh);unsafe_code = "deny"workspace-wide.scripts/check-realtime-policy.sh,docs/REALTIME_DEPENDENCY_POLICY.md).docs/rulings/README.md).docs/rulings/effect-floor-accounting.mdboundaries 2–5):(a)
bitselectlowering, (b)vbroadcastssre-splat, (c) compressor detector gather,(d) lookahead rings > L1, (e) AoSoA transpose round trip per bank, (f) elision-gate integer
compares, (g) per-node graph dispatch. Findings that locate the code for a gap term say so.
How to use this issue
.github/ISSUE_SPECS/anda matching GitHub issue whose body is the finding verbatim plus the gates listed under it.
for class-A render-path findings the standing bit-identity fixtures and
scripts/check-realtime-policy.share mandatory in addition.appended to this tracker, not silently skipped.
Verified in this audit session (facts, not proposals)
cargo test -p lane --release --test g1_op_identityfails on an AArch64 host atmain4797a544(g1_random_vectors_are_lane_identical:exp2_intdiffers from the scalar oracle atSimd4in 7 659 of 8 000 000 lanes, all signalling-NaN inputs, e.g.a=0xff90882d oracle=0x7f000000 actual=0x00800000). The same test passes in debug. The release testbinary contains
fmaxnm/fminnm. No CI job executes tests on aarch64. See LANE-3.crates/capi/src/runtime/control.rs:196types the production controller asProtocolController<MockProvider>andcompile.rs:485constructs it. See IO-4.ProtocolQueues::try_dequeue_automation(crates/protocol/src/queue.rs:832) has no calleroutside
crates/protocolandtools/audit; no host or render path drains the accepted-automationqueue. See IO-5.
ArenaLease::set_muted/is_muted/wave(crates/engine/src/realtime/disjoint.rs) have noproduction caller;
effective()still pays the mute redirect per buffer access. See RT-14.BankChain::scatter_tiled(crates/rack/src/lib.rs:2034-2095) writes through a staging block andthen copies per lane;
ArenaMembers::fold_plane(crates/graph/src/runtime.rs:686-697) does onemaster read-modify-write pass per lane;
reduce_plane(runtime.rs:88-110) does one pass perextra input. See RT-1/2/3.
tools/bench/src/session.rs:446defines a privatesha256_hexbesidebench_support::digest::sha256_hex. See TOOL-1.Executive summary
123 findings across seven scopes. The picture is consistent across scopes:
said this for the compressor and EQ; this audit locates the code for every named gap term and
finds the same shape in the plumbing rows. The idle row (18 % of floor) and the plumbing row
(6.7 %) are dominated by: a doubled scatter (RT-1), per-lane master folds (RT-2), per-input
reduction passes (RT-3), three block passes for six lane-ops of fader+matrix (RT-4), per-block
register spills in symmetry bookkeeping (RT-5, refresh_channel_symmetry is O(records×lanes) under sustained per-block record traffic #238),
dynwalks over cached flags (RT-6, RT-8,RT-12/CP-13), and constant splats that lower to a libc
memset_pattern16call on Apple targets(LANE-1). All are class A.
fill_taps/copy_lane(DYN-1) and the gate/expander (DYN-2) and multiband (DYN-3) carry worsecopies of it. One shared
effect_runtime::ring::gather_tapwith a uniform-Dvector-load armfixes all three. Gap term (b), constant re-splat, is written in source in multiband (DYN-4),
gate/expander (DYN-6), transient shaper / soft-clip / limiter (FX-4). Gap term (a),
bitselect→vblendvps, is already closed in code but still priced as open in the floor tablesand bench constants (LANE-13).
and the mixed builtins chain (RT-7); soft-clip has no stationary split at all (FX-6). All are
const-generic unswitch fixes with no arithmetic change.%, or panic edge was found on therender path in
rack/builtins/graph/effects, but the gate that would prove it scans onlycrates/engine/src/realtime(RT-16 / IO-14). Live exceptions found: a 2 KB stack zero-fill perblock in delay (FX-10), a
(3T+E)-entryfill(0)per block in host-web (IO-7), 512 B of scratchzeroed per bank per block in the EQ (DYN-9), 16
expectedges in the source pull path (IO-13).provider is a conformance mock (IO-4); the accepted-automation queue and the effect control lanes
are two disconnected automation models (IO-5); ~600 lines of transport-neutral console ABI live
only in the wasm host (IO-18);
rackexports the planner's vocabulary (RT-15);builtins-compilerholds ten render-pathprocessimpls whilegraphholds the compiler's caps,diagnostics and lowering pass (CP-12);
effect-packagerestates ~400 lines ofeffect-contract's descriptor law (CP-8).eight effect crates (DYN-12/FX-12), 20 copies of one xorshift generator (LANE-11/FX-15), seven
near-identical
determinism.rsfiles (FX-16), four hand-rolled counting allocators with#, four rack enums and two stable-id newtypes (CP-5), threediagnostic shapes (CP-6/CP-9), 42 hand-written protocol encoders over one table (IO-2), seven
spellings of the 17-message registry (IO-3), nine RIFF writers (TOOL-6/IO-20), seven
MANIFEST.tsvimplementations (TOOL-5), 21 gate scripts sharing one skeleton and 35 mutationharnesses with 12 verbatim
expect_failurecopies (TOOL-11/12).keyed by heap-
Stringids that the lowering pass interns tou32at the end (CP-1),lowerruns three times per plan (CP-2), and the runtime un-flattens the exemplary SoA
ExecutionProgramback into per-op boxes (CP-14).times,
cargo-fuzzinstalled from source three times: TOOL-13),tools/auditcarries 4 720lines no gate invokes (TOOL-3), and the browser artifact ships without
wasm-opt(IO-19).Dependency-ordered program (advisory ranking)
Each wave is independently closable; within a wave, rows are independent unless noted.
Wave 0 — correctness and gate integrity (do first; each is a bounded issue).
LANE-3 (aarch64 D8 max/min fold; add an aarch64 CI execution leg), IO-4 (real control provider in
capi), IO-5 (decide and wire the automation drain, or retire one model), IO-9 (= #292),RT-16/IO-14 (root-agnostic realtime gate; then add markers to
rack/builtins), LANE-9(vectorization allowlist still requires the retired fused FMA), TOOL-11 (= DRY half of #306),
LANE-13 (floor tables/bench constants still price gap term (a) as open).
Wave 1 — render-path class A against the worst floor rows. Measure each with
scripts/run-console-benchmark.shon the row the finding names.RT-1, RT-2, RT-3, RT-4, RT-5 (= #238), RT-14, LANE-1, LANE-2, DYN-1 → DYN-2 → DYN-3 (share one
kernel), DYN-4, DYN-6, FX-1, FX-10, IO-7, RT-7, FX-4.
Wave 2 — remaining render-path and compile-path class A.
RT-6, RT-9, RT-10 (step 1 only; step 2(b) is flagged), RT-11, RT-12/CP-13 (one change),
CP-14, DYN-5, DYN-8, DYN-9, DYN-10, DYN-11, DYN-14, DYN-15, DYN-17, FX-2, FX-6, FX-7, FX-8, FX-9,
FX-11, LANE-4, LANE-5, LANE-6, IO-12, IO-13, IO-16, IO-19, CP-1, CP-2, CP-3, CP-4, CP-18, CP-19.
Wave 3 — boundaries, DRY, dead code, structure. Pure moves and deletions; gate is
cargo test --workspaceidentical pass count plus the named policy scripts.RT-13, RT-15, RT-17, CP-5 … CP-12, CP-15 … CP-17, CP-20, DYN-7, DYN-12, DYN-13, DYN-16, FX-5,
FX-12 … FX-19, LANE-7, LANE-8, LANE-10, LANE-11, IO-1, IO-2, IO-3, IO-8, IO-10, IO-11, IO-15,
IO-17, IO-18, IO-20, TOOL-1 … TOOL-10, TOOL-12 … TOOL-16.
Class B — flagged for owner ruling, never implemented from this body.
FX-3 (limiter per-sample
divby block-constant window), LANE-12 (soft-clip flushes twofeed-forward FIR history words), RT-10 step 2(b) (an
f64lane type for meter energy), and thestanding compressor-
D-in-program-key question fromeffect-floor-accounting.md.Cross-references (same defect seen from two scopes — implement once)
engine/src/realtimeexp2_int's redundant clampFindings index
Full self-contained findings (current code, proposal, expected effect, rulings checked,
verification gate) are in the comments below, one comment set per scope. Each scope's report also
ends with a "Things I checked that are fine" list — read it before re-auditing a crate.
Render path (engine / builtins / rack / graph executor) —
RT-*crates/rack/src/lib.rs:2034-2095crates/graph/src/runtime.rs:686-697crates/graph/src/runtime.rs:88-110reduce_planeisn−1block passes; a fan-in-64 output node costs 126 loads + 63 stores per wordcrates/builtins/src/lib.rs:1926-1948, 2170-2181crates/builtins/src/lib.rs:1036-1044, 1632-1690refresh_channel_symmetryspills up to 240 SIMD registers per record and per ramping block (issue #238)crates/rack/src/lib.rs:1428-1486lanes × slotsdyncalls per block; publish a[u8; 8]per stagecrates/lane/src/kernels/builtins.rs:857-916mixed_chain_blockreads its plan-invariant elision plan inside the frame loopcrates/rack/src/lib.rs:1565, 1684, 170970ce3d7b; required/post-main runs34031771524/34032117797passedcrates/graph/src/runtime.rs:2686-2731crates/builtins/src/lib.rs:3625-3663crates/effect-contract/src/lib.rs:234-250[[f32;8];8]by-value boundary in both directions; add a[L; W]formcrates/graph/src/lib.rs:1417-1420,crates/graph/src/runtime.rs:938-953unitsand walks every bank member for observers that are not boundcrates/engine/src/realtime/buffer.rs:36-125BufferArenais allocated, passed torenderand never used by the only production executorcrates/engine/src/realtime/disjoint.rs:208-232crates/rack/src/lib.rs:20-140RackProgram/BankSlotKey/RackLocationare compiler-only vocabulary living in the render cratescripts/check-realtime-policy.sh:14-46engine/src/realtime; the marked regions ingraphand all ofrack/builtinsare ungatedcrates/builtins/src/lib.rs,crates/graph/src/lib.rsgraph/src/lib.rsandprogram.rsis an inline test module%, alloc or panic surface found on the render path — reported as a negative result with two caveatsEffects: parametric EQ, compressor, gate/expander, multiband —
DYN-*crates/compressor/src/kernel.rs:816-878Wscalar loads +Wscalar stores per channel-frame in bothfill_tapsandgather_detector; a uniform-Darm makes it one vector load.crates/gate-expander/src/kernel.rs:259-293DualMono.crates/multiband-compressor/src/lib.rs:865-880,:1000-1006detector_tapruns four times per frame with two distinct index sets and no uniform-offset path.crates/multiband-compressor/src/lib.rs:902-932band_amplituderebuildsGainComputerCoefand re-splats seven constants four times per frame — 28 broadcasts.crates/compressor/src/kernel.rs:906-967,:1066-1074crates/gate-expander/src/kernel.rs:316-357,:392-398Invariantsequivalent.compressor/src/kernel.rs:1028,gate-expander/src/kernel.rs:392,multiband-compressor/src/shim.rs:52,:70effect-runtime::dynamics(the shim's own header says so).crates/parametric-eq/src/lib.rs:822-830bank::check_blockin the vector domain.crates/parametric-eq/src/lib.rs:1858-1863,:1913-1917crates/multiband-compressor/src/lib.rs:694,:1169-1281crates/compressor/src/kernel.rs:258-264advance_cursorruns two integer%on the silent fast path, against the crate's own "no%" rule.crates/*/src/lib.rsdescriptor headerseffect_id/port_id/parameter_id/parameterboilerplate.compressor/src/design.rs:81-118,multiband-compressor/src/lib.rs:425-457,gate-expander/src/lib.rs:326-343ParameterSpectranslation tables routing around a predicate that is now public.crates/parametric-eq/src/lib.rs:1872-1885,:1923-1932bank::finish_channel, whichbank.rs:241-245names as the divergence it exists to stop.crates/compressor/src/kernel.rs:83-104Channel.effect-runtime/src/ramp.rs:31-41,gate-expander/src/kernel.rs:66-89,multiband-compressor/src/lib.rs:662-678crates/parametric-eq/src/lib.rs:1505-1540Effects: true-peak limiter, soft-clip, transient shaper, delay, references, conformance —
FX-*crates/true-peak-limiter/src/lib.rs:1890-1906,:1701-1717,:3086,:3197stationaryhoist is branched per frame inside the innermost loop; make itconst STATIONARY: boolcrates/true-peak-limiter/src/lib.rs:1603-1619crates/true-peak-limiter/src/lib.rs:1551,:1308box_sum.div(hot.window)is avdivpsper lane-frame by a block-constant — the ruling's named class-B residualcrates/transient-shaper/src/lib.rs:292,317-331;crates/soft-clip/src/kernel.rs:150-157;crates/true-peak-limiter/src/lib.rs:1528,1543,1545crates/true-peak-limiter/src/lib.rs:3030-3242vs:1575-1963crates/soft-clip/src/kernel.rs:188-215settleto pay for the hoistcrates/soft-clip/src/kernel.rs:194,204;crates/lane/src/kernels/halfband.rs:126-133crates/lane/src/kernels/halfband.rs:182-197halfband2x_decim_evencompares a counter against a constant on every one of 30 tapscrates/transient-shaper/src/lib.rs:333-335,:513-528bypass/mix == 0terms are block-invariant on the dominant tail loopcrates/delay/src/lib.rs:1266,:729-746PreparedDelaycrates/delay/src/lib.rs:1139-1152tap_samplebranches per sample on two chunk-invariant flags, twenty lines after three siblings were hand-unswitchedcrates/effect-package/src/wire.rs:1929effect_id/port_id/parameter_idconst panic-wrappers; add them toeffect-contractcrates/soft-clip/src/lib.rs:883-890+ 5 morebind_homogeneous_banks hand-roll the checkPrepareEffectBankRequest::validate_shapedocuments as universalcrates/soft-clip/src/lib.rs:903-913width_is_nativere-derives the backend→width law and disagrees withBackend::current()undermiso_wasm_simd8corpus.rsmodules incl.crates/effect-runtime/src/corpus.rs:57-73xorshift64*that drives every determinism corpuscrates/*/tests/determinism.rs(681 L)effect_conformance_test!crates/*/tests/allocation.rs(~950 L) vstools/bench-support/src/alloc.rsGlobalAllocs and four#![allow(unsafe_code)]undercrates/; #332 deferred thiscrates/delay/src/lib.rs:505-522;crates/lane/src/kernels.rs:527-544;crates/true-peak-limiter/src/lib.rs:1042crates/conformance/src/effect.rs:28-660vs:661-1562SIMD foundation and math (lane / math) —
LANE-*crates/lane/src/wide_impl.rs:144-148splat(CONST)emits amemset_pattern16libc call per use on Apple targets; 2 per frame insidesvf_stepcrates/lane/src/kernels.rs:472-491,497-513,563-590debug_assertrelates the slice lengthscrates/lane/src/wide_impl.rs:278-330max/minintofmaxnm/fminnm; G1 is red today and no CI job runs on aarch64crates/lane/src/wide_impl.rs:332-340exp2_intre-clamps an argument both callers already clamped — 4 of the compressor's 94 floor opscrates/lane/src/kernels.rs:450-465ramp_blockevaluates a per-frame vector select of a monotone predicate; split the loopcrates/lane/src/kernels.rs:295-322svf_block_rampedrecomputes-c1and the ramp test on every frame including settled onescrates/lane/src/kernels/builtins.rs:408-1096crates/math/src/fast_db.rs:123,128+ 3 crates20*log10(2)and its inverse declared 4x each in 3 spellings; belongs inmathtools/audit/vectorization-allowlist.tsv:4,7continue-on-errorcrates/math/src/lib.rs:38corpusmodule compiled into every production consumer ofmathcrates/math/src/corpus.rs:70-90+ 19 filescrates/soft-clip/src/kernel.rs:195,199flushapplied to two feed-forward FIR history words; documented but outside the D7 law's wordingdocs/rulings/effect-floor-accounting.md:134-136,183-186Control plane (session, compilers, graph control half, host-core, effect-package) —
CP-*graph-compiler/src/schedule.rs:9-278,ids.rs:50-110StringGraphNodeId; ~15-20k allocations per 64-track compile thatlowerthen interns tou32graph/src/lib.rs:840-868,906,824,1017program::lowerruns 3× per plan; cached program discarded at bind because 8 fields arepubfor testsgraph/src/lib.rs:630-716has_valid_structural_layoutre-runs the topological/permutation checks the compiler andlowerboth already provegraph/src/lib.rs:958-996BTreeSets and then.clone()s one of themsession/src/model.rs:536,effect-compiler/src/prepare.rs:844,graph/src/lib.rs:28,50,rack/src/lib.rs:42Ord), two identical stable-id newtypes, two conversions, two token tableseffect-compiler/src/diagnostic.rs:1-20,builtins-compiler/src/lib.rs:233-250,graph/src/lib.rs:284-303{code, path}diagnostic types; the threesorted()copies already disagree aboutdeduphost-core/src/prepare.rs:382,419,568,613,641,716,747effect-package/src/wire.rs:1303-1633vseffect-contract/src/lib.rs:460-773effect-packagerestates ~400 lines ofeffect-contract's descriptor law; the_partsfix pattern already exists for one ruleeffect-package/src/diagnostic.rs:1-197#[repr(C)]wire diagnostics; only one hasas_strand a frozen-numbering testeffect-package/src/wire.rs:403-470,786-1030graph-compiler/src/lib.rs:264-10166and 3 othersbuiltins-compiler/src/lib.rs:364-666,2963-3131;graph/src/lib.rs:160-303;graph/src/program.rs:487process/observeimpls; render crate holds the compiler's caps, diagnostics and the lowering passgraph/src/lib.rs:1416-1419,graph/src/runtime.rs:890-958graph/src/runtime.rs:415-430,2564-2588vsgraph/src/program.rs:106-124ExecutionProgram's contiguous SoA into threeBox<[..]>per op (~900 small allocations)graph/src/runtime.rs:2618-2637vsgraph/src/program.rs:1624-1643session/src/compile.rs:17-243,graph/src/lib.rs:250-283,host-core/src/prepare.rs:732CompileCapsfields documented-inert; 8/11GraphCompileCapsfields alwaysu64::MAX; unused_sessionparams; speculativeactive_maskgraph-compiler/src/ids.rs:108-138,compile.rs:354-411Option; three unreachablegraph.port.unknownbranches; the real failure is a.expect()panichost-core/src/prepare.rs:656-698,900-906session_structural_symmetrycomputed twice per prepare; each track id heap-allocated three timesgraph-compiler/src/compile.rs:169,553,572,652CompiledSessiondeep-cloned per structural compile (tracked #162);GraphResourceEstimateis 23u64s but notCopygraph-compiler/src/canonical.rs:27-91,363-372+ 12 sitesnode_text/node_text_lentwin kept in step by a test when afmt::Writesink already exists in the fileBoundaries and I/O (protocol, capi, hosts, source, flac sidecar) —
IO-*crates/protocol/src/{lib.rs:74-77,conformance.rs:1-487,controller.rs:618-810}MockProvidership inside the library; 33.8 % of the crate is inline testscrates/protocol/src/message_wire.rs:862-1980MessageSpectable replaces ~350 lineswire.rs:98-165,typed_frame.rs:41-106,controller.rs:1036-1080,:2340-2402,schema.rs:259+crates/capi/src/runtime/compile.rs:485-508,control.rs:196protocol::MockProvider— a conformance fixture — as its production control providercrates/protocol/src/queue.rs:196-283,controller.rs:3643-3675,crates/effect-contract/src/live.rs:44-90crates/protocol/src/queue.rs:243-278,:1098-1211hosts/host-web/src/lib.rs:1244(3T + E)-entryfill(0)on the render thread every block, unconditionallycrates/capi/src/ffi.rs:823-837,hosts/host-web/src/lib.rs:1252-1269host-corekernel replaces bothcrates/host-core/src/shape.rs:26-28,hosts/host-web/src/lib.rs:1091-1109RESULT_INTERNALcrates/capi/src/abi.rs:11-29,hosts/host-web/src/lib.rs:69-100,sidecars/flac-decoder/src/lib.rs:23-39capidiscardsPrepareRejection; two ungenerated JS copieseffect-contract/src/lib.rs:133-142,session/src/model.rs:327-357,protocol/src/message_wire.rs:183-350crates/source/src/native_source.rs:1690-1695,crates/source/src/lib.rs:849-854crates/source/src/lib.rs:1160-1210,:1074-1100expectpanic edges and plan-invariant shape re-derivation in the render pull pathscripts/check-realtime-policy.sh:12-48REALTIME_POLICYmarkers are never scanned by the gate that owns themcrates/capi/src/runtime/compile.rs:106-205,hosts/host-web/src/lib.rs:2362-2434crates/protocol/src/controller.rs:2407-2418,typed_frame.rs:278-314max_response_bytesVecand is serialised twicecrates/engine/src/realtime/spsc.rs:456-556,crates/target-smoke/src/lib.rs:31-41LocalRingis unused by any host and keeps twounsafeblocks alive for a smoke testhosts/host-web/src/lib.rs:1594-2190scripts/build-web-audioworklet.sh:37-60wasm-optpasscrates/host-core/src/prepare.rs:36,:129-133,crates/host-core/src/diagnostics.rs:15host-corere-checks the launch rate with its own array on a path where the check provably cannot fireTools, scripts, CI, artifacts —
TOOL-*tools/bench/src/session.rs:446-585bench_support::digest::sha256_hex; the policy gate's regex cannot see ittools/audit/src/vectorization.rs:293-295json_string*copies the gate's anchor missestools/audit/src/main.rs:31-50tools/audit/src/fixture_builtins.rs:2675-2870scripts/check-effect-runtime-fixtures.sh:5-24MANIFEST.tsvhas 4 Rust owners + 3 shell verifiers; theLC_ALL=Cfix exists in only one copytools/audit/src/source_duration.rs:231-248crates/sourceowns the reader and nothing owns the writertools/native-pcm-runner/src/lib.rs:393-431stem-hasher's wave→canonical-PCM→SHA-256 and the launch bit-depth set without depending on ittools/bench/src/floor.rs:47-131↔scripts/console-benchmark-record-lib.jq:53-72tools/bench/src/console.rs:1678-1712Metadatastructs, 4Percentiles, 4× three formatters, 18 megaformat!record templatestools/wasm-gates/src/lib.rs:251-262↔tools/wasm-console/src/main.rs:299-325scripts/check-workspace-policy.sh:20-50scan_forbiddenfixes #306's bug and 20 sibling gates re-implement the broken form; 5 copies of one awkscripts/test-rack-policy.sh:20expect_failurecopies and no shared harness.github/workflows/ci.yml:68-70,376-388,440cargo-fuzzbuilt 3×fixtures/flac-delivery/v1/generate.py:92,124sweep.shcited 24×artifacts/(scripts/run-console-benchmark.sh:266-268)raw/acceptedjsonl pairs byte-identical: ~4.5 MB of the 9.85 MB is a second copysdk/src/internal/session-json.ts:13-62Non-goals
stops.
unsafeoutsidethe existing allowlist without a ruling.
chased.
f64lanes, ADAA, reciprocal divides, and any change to a frozen operationorder are outside this tracker.
Evidence requirements per implemented row
scripts/check-realtime-policy.shand the workspace fixture bit-identitysuite green; the named console-benchmark row re-measured once (descriptive).
the null result if the premise did not hold.
https://claude.ai/code/session_01LkmW681maQhUqEVSA6vZSj
Active/passive lanes
Active: #220 route-fold coverage and #162 compiler borrowing; #221 queued. #387/#211/#376 delivered and closed. See current
#559/#560 checkpoint before selecting the next bounded issue. Broader audit and
program trackers remain open until their own closure conditions are satisfied.