Record Disting NT auditions and promote passing modules to hardware-validated #16

Merged
peterswimm merged 1 commit from hardware-record into main 2026-10-22 14:57:04 +00:00
Owner

Scope

This PR adds the last piece needed before Disting NT hardware tests: a way to record an audition so that it can promote modules to hardware-validated. Until now the approval docs described that level, but nothing in the code could reach it.

  • hardware-record. The new command takes the auditioned .o plug-in, its patch, device, firmware, pass/fail result, listening notes and an optional date. It appends a record to the private evidence registry's new hardware_auditions list. The record stores hashes of the plug-in and patch, not their paths. Re-recording the same plug-in on the same device, firmware and date replaces the earlier record.
  • Gate. The patch must pass preflight-disting against the same registry. A recording can therefore only promote modules that are already reference-compared, and never replaces their reference cases. A fail record is kept and promotes nothing. Device, firmware and notes are required.
  • Status. effective_module_status returns hardware-validated for a release-status module with a passing audition. catalog-audit --reference-evidence now counts both release statuses.
  • Docs. docs/PARITY_ROADMAP.md phase 4 explains how to build, install and record an audition. The current-focus section now says that phase 1 is done.

Testing

  • 151 tests pass (python3 -m unittest discover -s tests). The new test covers:
    • an unverified patch (OscA) is refused by preflight and writes nothing;
    • blank notes are refused;
    • a fail record leaves Delay at reference-compared;
    • a pass record makes Delay and 2Output hardware-validated, keeps one record per plug-in/device/firmware/date, and leaves OscA unchanged.
  • tools/export_public.py into an empty directory is clean.
  • I checked by hand that the OscA refusal comes from the Disting preflight gate and not from some other error.
  • The twelve private audition plug-ins were rebuilt from main 9ae683c. Their generated Faust is identical to the audited builds except for the description string. Their undefined symbols (NT_globals, GOT, memset, tanf) are a subset of those in the official distingNT_API Faust examples built with the same flags.

Impact Statement

  • Existing features: no change to rendering, export, sweeps or preflight decisions for registries that have no hardware_auditions.
  • Public APIs / contracts: new hardware-record command.
  • Schemas: the private nardwahl-reference-evidence-v1 registry gains an optional hardware_auditions list. Older registries load unchanged.
  • Data / artifacts: none in the repository. Audition records stay private under ~/.nardwahl.
  • Integrations: none.
  • Mappings: no expected impact.
  • Backward compatibility: fully compatible. hardware-validated is already a release status, so preflight accepts it like reference-compared.
## Scope This PR adds the last piece needed before Disting NT hardware tests: a way to record an audition so that it can promote modules to `hardware-validated`. Until now the approval docs described that level, but nothing in the code could reach it. - **`hardware-record`.** The new command takes the auditioned `.o` plug-in, its patch, device, firmware, `pass`/`fail` result, listening notes and an optional date. It appends a record to the private evidence registry's new `hardware_auditions` list. The record stores hashes of the plug-in and patch, not their paths. Re-recording the same plug-in on the same device, firmware and date replaces the earlier record. - **Gate.** The patch must pass `preflight-disting` against the same registry. A recording can therefore only promote modules that are already `reference-compared`, and never replaces their reference cases. A `fail` record is kept and promotes nothing. Device, firmware and notes are required. - **Status.** `effective_module_status` returns `hardware-validated` for a release-status module with a passing audition. `catalog-audit --reference-evidence` now counts both release statuses. - **Docs.** `docs/PARITY_ROADMAP.md` phase 4 explains how to build, install and record an audition. The current-focus section now says that phase 1 is done. ## Testing - 151 tests pass (`python3 -m unittest discover -s tests`). The new test covers: - an unverified patch (OscA) is refused by preflight and writes nothing; - blank notes are refused; - a `fail` record leaves Delay at `reference-compared`; - a `pass` record makes Delay and 2Output `hardware-validated`, keeps one record per plug-in/device/firmware/date, and leaves OscA unchanged. - `tools/export_public.py` into an empty directory is clean. - I checked by hand that the OscA refusal comes from the Disting preflight gate and not from some other error. - The twelve private audition plug-ins were rebuilt from main 9ae683c. Their generated Faust is identical to the audited builds except for the description string. Their undefined symbols (`NT_globals`, GOT, `memset`, `tanf`) are a subset of those in the official distingNT_API Faust examples built with the same flags. ## Impact Statement - Existing features: no change to rendering, export, sweeps or preflight decisions for registries that have no `hardware_auditions`. - Public APIs / contracts: new `hardware-record` command. - Schemas: the private `nardwahl-reference-evidence-v1` registry gains an optional `hardware_auditions` list. Older registries load unchanged. - Data / artifacts: none in the repository. Audition records stay private under `~/.nardwahl`. - Integrations: none. - Mappings: no expected impact. - Backward compatibility: fully compatible. `hardware-validated` is already a release status, so preflight accepts it like `reference-compared`.
Record Disting NT auditions and promote passing modules to hardware-validated
All checks were successful
PR policy check / policy-gate (pull_request) Successful in 0s
acd6ef2b97
Add hardware-record, which stores a pass or fail audition (device, firmware,
date, listening notes, plug-in and patch hashes) in the private evidence
registry. A passing record makes the patch's modules hardware-validated, but
only when the patch passes Disting preflight, so an audition can never stand in
for missing reference cases. catalog-audit counts both release statuses.
peterswimm deleted branch hardware-record 2026-10-22 14:57:04 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
peter-swimm/nardwahl!16
No description provided.