From f74ad726e2a45fe40eed5801095b78eb59076e51 Mon Sep 17 00:00:00 2001 From: Mathias Date: Fri, 2 Oct 2026 08:56:53 +0200 Subject: [PATCH] feat(domain): a judged spot carries the few words before it (ADR-035) Co-Authored-By: Claude Sonnet 5.5 --- internal/domain/domain.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/internal/domain/domain.go b/internal/domain/domain.go index 20fbd75..92df9f7 100644 --- a/internal/domain/domain.go +++ b/internal/domain/domain.go @@ -147,14 +147,18 @@ const ( ReconcileSkipped ReconcileStatus = "skipped" ) -// ContestedSpot is a place the engines disagreed that a reader may want to check -// against the audio: one the model changed, or one it was unsure about. +// ContestedSpot is a place the engines disagreed that the model judged: it changed it, +// kept the base's reading, or could not decide. Every judged spot is stored, not only +// the ones a reader should check, because the audio is not retained and the kept ones +// are what a later evaluation needs (ADR-035). The page lists only the changed and +// uncertain ones. type ContestedSpot struct { - Seconds float64 `json:"seconds"` // roughly where in the recording - Base string `json:"base"` // what the base engine heard - Alt string `json:"alt"` // what the other engine heard - Used string `json:"used"` // "base" or "alt": the reading now in the text - Unsure bool `json:"unsure"` // the model could not decide; the base was kept + Seconds float64 `json:"seconds"` // roughly where in the recording + Base string `json:"base"` // what the base engine heard + Alt string `json:"alt"` // what the other engine heard + Used string `json:"used"` // "base" or "alt": the reading now in the text + Unsure bool `json:"unsure"` // the model could not decide; the base was kept + Before string `json:"before,omitempty"` // the few words just before the spot, to find it by } // Reconciliation records how a merged transcript came about, so the page can say so