Skip to content

it_loopback_ir's daemon clamps at the -10 dBFS default, not the rig ceiling, when driving real ports #442

Description

@mkovero

Problem

When it_loopback_ir is routed through real ports (AC_LOOPBACK_OUT / AC_LOOPBACK_IN set), the daemon it spawns runs under an isolated HOME whose config is written by write_loopback_config (ac-rs/crates/ac-daemon/tests/it_loopback_ir.rs:270). That config sets no drive_max_dbfs, so the daemon falls back to the default ceiling of −10 dBFS (ac-rs/crates/ac-core/src/config.rs:18-19). The rig's own ceiling in ~/.config/ac/config.json is never read.

So on a rig, the only thing holding the sweep at the standing −40 dBFS is the request (AC_LOOPBACK_LEVEL_DBFS). .agents/rig.md → hard constraints says a request-side-only limit is not the interlock: the clamp must live in the config of the daemon actually running the session. plot_ir has honoured that clamp since #360, but this test's daemon gets it set 30 dB higher than the rig allows.

Observed 2026-09-14 on pupu (192.168.9.27) while verifying PR #441: AC_LOOPBACK_LEVEL_DBFS=-40 was the effective limit. scripts/rig/run-loopback-ir.sh in that PR adds a request-side refusal above the rig ceiling. That is a convenience, not the interlock, and does not fix this.

What must be true

  • When the test drives real ports, its daemon's config carries a drive_max_dbfs that is not above the rig's standing ceiling. Where the value comes from (env var, reading the rig config, fixed −40) is a design choice for this issue.
  • The self-loop route (jackd -d dummy, no port variables) keeps working unchanged.

What makes the check fail

A test must show that with real ports named and AC_LOOPBACK_LEVEL_DBFS set above the intended ceiling, the level that reaches the engine is the ceiling, not the request. A test that only asserts a key exists in the written config cannot go red on the harm case.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent:triageTriage agent acted on itbugSomething isn't workingdrive-pathStimulus/drive safety checklist applies (qa.md)ready-to-implementSpec complete, developer can pick upscope-nonedaemon, CLI, wire, build, docs — nothing a standard governstestingTest suite

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions