From 8c5fb5950d0878f6ddda726f00de3cf566911860 Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Fri, 31 Jul 2026 22:43:37 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20the=20matcher=20implements=20a=20supers?= =?UTF-8?q?eded=20version=20of=20=C2=A73?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit JRay-public-server UR-009 changed the §3 score to count a frame as agreeing within ±1 frame, on scene-actor-extraction VR-014's measurement: over 40 correctly recovered offsets on real film audio the exact-frame rule scored 27 of them below 0.85 and demoted them to `loose`, because the two windows are cut on their own file's frame grid and those grids do not coincide. `AudioSignatureMatcher` still implements the exact rule. Nothing is misaligned by the divergence — the recovered offset is unaffected, and JR-047 makes the local answer supersede the server's — but the plugin will show a caveat for a match that is not in doubt. Recorded against JR-044 rather than fixed here, so the gap is findable. TRACES: JR-044 | SR-003 --- docs/requirements.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/requirements.md b/docs/requirements.md index 7cca3b7..f8c1663 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -240,6 +240,22 @@ end-to-end mechanism. | JR-045 | Emit and honour the signature's own `v1:` prefix, so a DSP change is detectable rather than silently non-matching | SR-003 | Low | **Done** (UT-047…049) — `AudioSignatureMatcher.TryParseFrames` refuses any prefix but `v1:`, and refuses malformed or structurally invalid payloads, so a future producer's `v2:` drops the item to the runtime tier instead of scoring as if it were understood | | JR-047 | **A fetched manifest is aligned against the local file before its windows are stored**, and the alignment is recorded beside the truth data | SR-003 | High | **Done** (UT-053…057) — `ManifestAligner` runs on the fetch path. A local alignment supersedes the server's offset, since the server has never seen this file; every unavailable path degrades to the server's offset rather than refusing, and a genuine signature disagreement is recorded and surfaced as a caveat without failing the fetch | +> **Outstanding: §3's score gained ±1 frame of tolerance and this matcher has +> not.** `AudioSignatureMatcher` implements the exact-frame rule §3 carried +> until `JRay-public-server` UR-009 landed. The change was +> `scene-actor-extraction` VR-014's measurement: over 40 correctly recovered +> offsets on real film audio the exact rule scored 27 of them below 0.85 and +> demoted them to `loose`, because the two windows are cut on their own file's +> frame grid and those grids do not coincide. With ±1 frame all 40 reach +> `audio` and the strongest false match is unmoved at 0.16. +> +> **Nothing is misaligned by the divergence** — the offset the matcher recovers +> is unaffected, and JR-047 makes the local answer supersede the server's — but +> the plugin will label as `loose` alignments the server calls `audio`, which is +> a caveat shown to a user for a match that is not in doubt. JR-044's matcher +> and [`audio-alignment.md`](audio-alignment.md)'s scoring table both need the +> revised rule. Until then this repo implements a superseded version of §3. + ## Human-in-the-loop association (JR-046) | ID | Requirement | Traces to | Priority | Status |