 mathiasandClaude Sonnet 5.5
|
0d8bf0f94c
|
test: assertions the adversarial review found missing -- log lines, immediate saves, snapshot isolation, store and temp-file failures, bounded snippet, identical list (review F9)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:48:58 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
5b3e550d9b
|
test: assertions the adversarial review found missing -- log lines, immediate saves, snapshot isolation, store and temp-file failures, bounded snippet, identical list (review F9)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:48:58 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
cb0ed8642a
|
test: assertions the adversarial review found missing -- log lines, immediate saves, snapshot isolation, store and temp-file failures, bounded snippet, identical list (review F9)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:48:58 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
b8a4778513
|
test(web): a malformed multipart header is a 400 whose text is not logged; the file-name case no longer demands a 303
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:47:49 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
9b82c06d92
|
fix(web): 429 for a busy queue; a non-UUID id and a malformed or odd-byte title are 4xx or cleaned, never 500 (review F6, F7)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:47:49 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
93b4dbec1e
|
feat(uploads): a full queue is a busy rejection, the row failed honestly (review F6)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:47:49 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
f9ad85cac4
|
feat(uploads): a bounded queue, in total and per user (review F6)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:47:49 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
a1d6754ae9
|
feat(uploads): ReasonBusy, a rejection that is the user's to retry (review F6)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:47:49 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
e4584fb2ac
|
feat(domain): UploadErrBusy -- the queue was full (review F6)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:47:49 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
019ee636c8
|
test: a bounded queue answered as 'busy', and bad input answered with a 4xx (red; adversarial review F6, F7)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:46:13 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
0da24d42f4
|
test: a bounded queue answered as 'busy', and bad input answered with a 4xx (red; adversarial review F6, F7)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:46:13 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
2891ffabae
|
test: a bounded queue answered as 'busy', and bad input answered with a 4xx (red; adversarial review F6, F7)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:46:13 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
aa0322095b
|
test: a bounded queue answered as 'busy', and bad input answered with a 4xx (red; adversarial review F6, F7)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:46:13 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
a7e2cc43c0
|
test(cmd): the built worker refuses audio longer than the configured maximum (review F2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:45:25 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
fdcdee7413
|
test(cmd): the uploads store double records the kind a job failed with
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:45:25 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
dc100d1cd4
|
test(web): the job carries the claimed duration
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:45:25 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
6b83d72655
|
fix(cmd): the converter is capped and the worker measures, at the configured maximum (review F2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:45:25 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
07050cf9b6
|
feat(web): say in words why a recording was refused for its real length (review F2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:45:25 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
16cd246241
|
feat(uploads): the worker measures the converted audio against the limit and the claim (review F2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:45:25 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
132f46b047
|
feat(uploads): the job carries the duration the file claimed (review F2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:45:25 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
12576aa129
|
feat(audio): MaxSeconds caps the converted length, so a header that lies cannot become hours of WAV (review F2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:45:25 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
ba39864b2b
|
feat(domain): UploadErrTooLong and UploadErrIncomplete -- the two ways a file's claimed length can be wrong (review F2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:45:25 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
741eccb575
|
test: the duration limit is checked against what is converted, not what the header claims (red; adversarial review F2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:43:46 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
5640d95f40
|
test: the duration limit is checked against what is converted, not what the header claims (red; adversarial review F2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:43:46 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
8f62d053ee
|
test: the duration limit is checked against what is converted, not what the header claims (red; adversarial review F2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:43:46 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
52351c2cc1
|
test: the duration limit is checked against what is converted, not what the header claims (red; adversarial review F2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:43:46 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
29b3b725d1
|
test: the duration limit is checked against what is converted, not what the header claims (red; adversarial review F2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:43:46 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
7a468fdc09
|
fix(cmd): every local engine call carries its own deadline (review F4)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:42:46 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
c9b7df9f95
|
feat(config): TAPIR_TRANSCRIBE_ENGINE_TIMEOUT, default 25 minutes (review F4)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:42:46 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
c8ec468e47
|
feat(transcribe): WithTimeout -- each engine call gets its own deadline so a wedged engine fails while the job lives (review F4)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:42:46 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
81a60d5fd4
|
test: a per-engine deadline so a wedged primary reaches the fallback (red; adversarial review F4)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:41:38 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
c8c7356f19
|
test: a per-engine deadline so a wedged primary reaches the fallback (red; adversarial review F4)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:41:38 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
8d1b7d887f
|
test: a per-engine deadline so a wedged primary reaches the fallback (red; adversarial review F4)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:41:38 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
21b337702a
|
test: a per-engine deadline so a wedged primary reaches the fallback (red; adversarial review F4)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:41:38 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
d16c2998d0
|
test(reconcile): the stored reason is a kind -- the old assertion encoded the leak the review found
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:40:55 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
fb79dbb045
|
fix(uploads.go): an error reaches the log, the row and the page as a kind, never its text (adversarial review F3, F5)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:40:55 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
a2587eae9b
|
fix(worker.go): an error reaches the log, the row and the page as a kind, never its text (adversarial review F3, F5)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:40:55 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
0b35278cdf
|
fix(transcribe): an error reaches the log, the row and the page as a kind, never its text (adversarial review F3, F5)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:40:55 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
16a8833f79
|
fix(reconcile.go): an error reaches the log, the row and the page as a kind, never its text (adversarial review F3, F5)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:40:55 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
03a122c9f5
|
fix(tracker.go): an error reaches the log, the row and the page as a kind, never its text (adversarial review F3, F5)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:40:55 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
31f5a74d2a
|
test(web): the upload routes' error paths log a kind, not the text (red; review F5)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:40:10 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
166ff849c0
|
test(uploads): a failure logs a kind, never the error text or the spool path (red; review F5)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:40:10 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
e9863c2e12
|
test(progress): a keyed failure logs its kind, not the error's text (red; review F3)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:40:10 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
8f3300b377
|
test(transcribe): a failed engine's reason is a kind, not its error text (red; review F3)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:40:10 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
f6c3f2af23
|
test(reconcile): the skipped reason carries a kind, not the model's text (red; review F3)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:40:10 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
2d1b08458b
|
feat(transcribe): StatusError.HTTPStatus -- its code, never its snippet, becomes the kind (review F3)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:39:38 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
2608ad2f09
|
feat(llm): HTTPError -- a status code to branch on, a bounded body in the text (review F3)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:39:38 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
81f3d7ffc6
|
test(transcribe): a StatusError exposes its code as a kind, not its snippet (red; adversarial review F3)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:39:25 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
8c82d67b12
|
test(llm): a non-200 is an HTTP status error whose kind carries no body, and the body is bounded (red; adversarial review F3)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:39:25 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
d8eea66c4c
|
feat(errkind): Of -- a kind from a fixed vocabulary, never the error's text (review F3, F5)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:39:10 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
dc0c64ddeb
|
test(errkind): an error reduced to a safe kind, never its text (red; adversarial review F3, F5)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:39:04 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
99ac5580e0
|
test(web): the upload chat helper says which models are offered
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:38:30 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
ef815edded
|
fix(web): upload chat offers and accepts local models only and fails closed; a forged cloud model is replaced before anything is sent (review F1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:38:30 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
4933504982
|
feat(web): App.UploadChatModels -- the models upload chat offers and accepts (review F1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:38:30 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
e121ef241d
|
fix(cmd): wire the local-only chat models into the upload routes (review F1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:38:30 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
5ae9212869
|
feat(cmd): uploadChatModels -- the chat switcher for a private recording is local models only (review F1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:38:30 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
a9a2a9270f
|
fix(config): a strict shape for a local model alias; the upload chat model must be local (adversarial review F1, F8)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:38:30 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
7fe746173d
|
test(web): the upload chat offers and accepts local models only, and fails closed (red; adversarial review F1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:37:49 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
4b16e33715
|
test(cmd): the upload chat switcher never offers a cloud model (red; adversarial review F1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:37:49 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
896ce6a952
|
test(config): a strict shape for a local model alias, and the upload chat model must be local (red; adversarial review F1, F8)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 16:37:49 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
7029dd1d7f
|
test(e2e): a finished job's phases are all closed and it was reporting while it ran (ADR-035)
CI / Lint / Test / Vet (pull_request) Successful in 23s
CI / Build & Import (pull_request) Skipped
CI / Deploy via GitOps (pull_request) Skipped
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:05:36 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
c977618979
|
docs(claude): the progress tracker, the two timestamps, and the log's privacy rule (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:04:32 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
0763e6238b
|
docs(data-model): progress, progress_at, alive_at, and every judged spot stored (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:04:32 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
6722433eb0
|
test(acceptance): map the progress, log and judged-spot scenarios to their covering tests
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:04:23 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
ac75971030
|
docs(use-cases): scenarios for progress, the log and the judged spots (ADR-035) -- the coverage gate is red until they are mapped
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:04:19 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
02a065b826
|
test(web): opt-in renderer of every progress state for a screenshot review (TAPIR_SHOT_DIR)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:03:55 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
105777f1aa
|
fix(web): the spinner sits in the same mark column as the other glyphs; a lost job's running phase gets a warning mark (screenshot review)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:03:55 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
18d8050a2b
|
fix(web): the progress bar ends at the time column and the lost mark is error-coloured (screenshot review)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:03:55 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
c06d285a3a
|
test(web): the lost job's running phase carries a warning mark (red; found in the screenshot review)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:03:32 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
f74fbbc40e
|
test(cmd): the uploads store double has the progress methods the worker now needs
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:01:37 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
cd7595a048
|
feat(web): a spot shows the words before it, and an empty list shows no section (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:01:21 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
24d1a99ed0
|
feat(web): list only the spots to check, in order and capped (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:01:21 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
8cb0b0a12d
|
test(web): the kept-spot assertion looks for what the page actually renders (red)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:00:56 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
6dfd53ac71
|
test(web): the page lists only changed and uncertain spots, with the words before each, though every judged spot is stored (red)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:00:49 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
d62331b5f9
|
test(web): the quiet note is capitalised as the page writes it
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:00:23 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
a7668b670e
|
feat(web): the upload page shows the job's phases, a bar only where the count is real, and says when the service is lost (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:00:23 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
89c9dd6705
|
feat(web): tell running from quiet from lost; poll every two seconds (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:00:23 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
d1dcb131f2
|
feat(web): progress styles in tapir's own tokens -- a mono step log, a CSS spinner that respects reduced motion (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 09:00:23 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
d0f2dcf838
|
test(web): the page shows real phases, tells running from quiet from lost, and never invents a percentage (red)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:57:58 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
a97598586c
|
test(reconcile): a span across a segment edge leaves neither segment holding a replaced word -- a mutation that skipped this survived
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:56:53 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
976aeb71c6
|
feat(reconcile): report the comparison and deciding phases, store every judged spot, merge the words into the segments (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:56:53 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
f74ad726e2
|
feat(domain): a judged spot carries the few words before it (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:56:53 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
9297f728c2
|
test(reconcile): every judged spot with its left context; segments rewritten per segment, or left alone when they do not line up (red)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:55:43 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
520ab666f8
|
test(reconcile): the comparison and the deciding phase report real counts, and a shutdown is neither done nor failed (red)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:55:43 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
0b7bf08c95
|
test(reconcile): kept spots are stored, segments carry the merged words, the cap is an option -- three old assertions changed on purpose (red)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:55:43 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
aefc8103f7
|
feat(transcribe): the ensemble declares and reports its phases; a failed engine shows failed, a shutdown does not (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:54:31 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
f064dec185
|
test(transcribe): the ensemble declares and reports its phases; a failed engine is shown failed, a shutdown is not (red)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:54:07 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
c6319b9bc6
|
refactor(uploads): the worker's own failure is FailRunning
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:53:43 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
5f279d7e71
|
feat(progress): keyed Fail for a soft failure, Note for the operator, FailRunning for the job's own (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:53:43 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
a6b8a2b744
|
test(progress): a keyed soft failure that logs why, a note that costs no write, and FailRunning for the job's own failure (red)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:53:33 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
9393c27cdb
|
test(uploads): the worker waits for its heartbeat to finish -- a mutation that skipped the wait survived until now
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:53:10 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
538ed93ccd
|
test(uploads): a slow heartbeat write, so one is in flight when the job ends
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:53:10 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
27a88a0a1f
|
feat(uploads): the worker reports real phases, beats on its own, and logs each one (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:53:10 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
eb4d4b67e6
|
test(uploads): the worker reports real phases, beats on its own, and logs them in order without the transcript (red)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:52:20 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
3f66c35497
|
test(uploads): the worker's store double records progress saves and heartbeats
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:52:20 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
f8526d4549
|
feat(store): SaveProgress and Heartbeat; Get returns the phases and both timestamps (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:51:39 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
41ebba3963
|
feat(store): migration 020 -- uploaded_transcripts.progress, progress_at, alive_at (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:51:11 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
256e5b1a66
|
test(store): progress and heartbeat on an upload row -- round trip, alive is not progress, another user's write changes nothing (red)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:51:04 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
8ec43ad393
|
test(progress): read the log buffer safely while the heartbeat writes to it
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:50:39 +02:00 |
|
 mathiasandClaude Sonnet 5.5
|
4bfe578a05
|
feat(progress): Tracker -- one writer for the page and the log, throttled counts, a heartbeat of its own (ADR-035)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
2026-10-02 08:50:39 +02:00 |
|