From 54c53396485ee6107e84a689eef59a28d7f15c2f Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sun, 16 Aug 2026 18:34:18 +0000 Subject: [PATCH 1/3] docs: add missing CHANGELOG entry for round 46's installer fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Round 46 fixed install.sh's ffprobe-install gap and a missing curl -f flag on the whisper.cpp model-download recipe, but left CHANGELOG.md untouched for both fixes — its only edit that round was an unrelated rescope of a released bullet. Backfilled, matching the repo's existing practice for this exact gap (rounds 27 and 30's PR #47). Assisted-by: Claude:claude-sonnet-5 --- .abcd/work/DECISIONS.md | 29 +++++++++++++++++++++++++++++ CHANGELOG.md | 11 +++++++++++ 2 files changed, 40 insertions(+) diff --git a/.abcd/work/DECISIONS.md b/.abcd/work/DECISIONS.md index 5494f74..96aa808 100644 --- a/.abcd/work/DECISIONS.md +++ b/.abcd/work/DECISIONS.md @@ -1581,3 +1581,32 @@ Architecture-shaping decisions graduate to an ADR under name the qualifier that actually distinguishes them. Rescoped the CHANGELOG bullet's subject to `analyze`, true of it, without altering the historical record's substance. + +- 2026-08-16 — Bug-hunt round 47: one confirmed nitpick, six refuted. Round + 46's `install.sh` ffprobe-install fix and the `curl -fL` model-download + recipe fix had no `CHANGELOG.md` entry anywhere (the round's only edit to + that file was an unrelated rescope of an existing `[0.2.0]` bullet); + matching this repo's established practice of backfilling exactly this gap + (rounds 27 and 30's PR #47), a bullet was added to `[Unreleased]`'s + "Checks and installer:" group. Six candidates were refuted: `record`'s + Ctrl+C handling during macOS device probing (the ordering is a documented, + tested, deliberate fix for a worse defect, and the claimed misdiagnosis is + a pre-existing gap unrelated to the probe window); `demo`'s case-sensitive + `loopbackHost` "localhost" match (no real caller — browser and Node URL + parsers lowercase hosts before any header is written); `WriteFileAtomicNoFollow` + replacing a non-regular file its sibling refuses (already adjudicated + refuted in round 30 — `rename(2)` never opens the target, so the hazard + the sibling's stricter check guards against is absent by construction; a + planted FIFO/socket carries no real threat and the sidecar's own repair + path depends on the replace succeeding); and, on split verdicts (discarded + per the loop's tie-breaking rule): `transcribe-a-recording.md` omitting + `ffprobe` as a dependency (Homebrew's `ffmpeg` formula bundles it, narrowing + the exposed population to the tutorial's no-Homebrew macOS path); the same + macOS `install.sh` branch lacking a residual-gap warning message (round + 46's own commit called the branch "untouched" as a considered decision, but + the message-only fix was judged separately fixable by the other refuter); + and the `[0.4.0]` CHANGELOG entry's `audio.wav` file-mode claim being made + stale by round 45's existing-file mode preservation (both refuters held + that a released section's entry is only corrected when it was already + wrong at release time — round 46's own precedent for editing a released + entry — and this one was true on the day it was written). diff --git a/CHANGELOG.md b/CHANGELOG.md index 12111f8..6e7d336 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -284,6 +284,17 @@ Checks and installer: `--help` works through the documented pipe invocation; `--dir`/`--version` without a value are refused cleanly; the whisper.cpp model recipe downloads into a directory `-model NAME` actually searches. +- `install.sh`'s Linux local-ffmpeg branch now installs `ffprobe` alongside + `ffmpeg` from the same tarball: `transcribe -audio`'s offset derivation + shells out to `ffprobe` to read a recording's `creation_time` tag, and + without it on PATH every external recording silently fell back to a 0 + offset, indistinguishable from a genuinely missing or unreadable tag (the + macOS local-install branch still lacks `ffprobe`, a residual gap). The + whisper.cpp model-download recipe, printed by `resolveModel` and mirrored + in the how-to guide, now uses `curl -fL` instead of `curl -L`: without + `-f`, an HTTP error response for a moved or withdrawn model asset was + written into the destination `.bin` file at exit 0, failing only later, + confusingly, at whisper-cli load time. Documentation: From e4c9b395da8c499fbd5716899de1581894678d47 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Sun, 16 Aug 2026 18:41:08 +0000 Subject: [PATCH 2/3] fix: correct round 47's misclassified verdict in DECISIONS.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adversarial review of this PR caught that the audio.wav CHANGELOG staleness finding was filed under "split verdicts" while its own parenthetical said both refuters agreed to refute it — a unanimous refutation, not a split. Reclassified with the header count corrected to match (four refuted, two discarded on split verdicts). Also tightens two CHANGELOG wording nits the same review raised: the offset fallback is reported, not silent, and the curl -f fix's failure description no longer has a dangling participle. Assisted-by: Claude:claude-sonnet-5 --- .abcd/work/DECISIONS.md | 57 +++++++++++++++++++++-------------------- CHANGELOG.md | 17 ++++++------ 2 files changed, 38 insertions(+), 36 deletions(-) diff --git a/.abcd/work/DECISIONS.md b/.abcd/work/DECISIONS.md index 96aa808..c05be0b 100644 --- a/.abcd/work/DECISIONS.md +++ b/.abcd/work/DECISIONS.md @@ -1582,31 +1582,32 @@ Architecture-shaping decisions graduate to an ADR under CHANGELOG bullet's subject to `analyze`, true of it, without altering the historical record's substance. -- 2026-08-16 — Bug-hunt round 47: one confirmed nitpick, six refuted. Round - 46's `install.sh` ffprobe-install fix and the `curl -fL` model-download - recipe fix had no `CHANGELOG.md` entry anywhere (the round's only edit to - that file was an unrelated rescope of an existing `[0.2.0]` bullet); - matching this repo's established practice of backfilling exactly this gap - (rounds 27 and 30's PR #47), a bullet was added to `[Unreleased]`'s - "Checks and installer:" group. Six candidates were refuted: `record`'s - Ctrl+C handling during macOS device probing (the ordering is a documented, - tested, deliberate fix for a worse defect, and the claimed misdiagnosis is - a pre-existing gap unrelated to the probe window); `demo`'s case-sensitive - `loopbackHost` "localhost" match (no real caller — browser and Node URL - parsers lowercase hosts before any header is written); `WriteFileAtomicNoFollow` - replacing a non-regular file its sibling refuses (already adjudicated - refuted in round 30 — `rename(2)` never opens the target, so the hazard - the sibling's stricter check guards against is absent by construction; a - planted FIFO/socket carries no real threat and the sidecar's own repair - path depends on the replace succeeding); and, on split verdicts (discarded - per the loop's tie-breaking rule): `transcribe-a-recording.md` omitting - `ffprobe` as a dependency (Homebrew's `ffmpeg` formula bundles it, narrowing - the exposed population to the tutorial's no-Homebrew macOS path); the same - macOS `install.sh` branch lacking a residual-gap warning message (round - 46's own commit called the branch "untouched" as a considered decision, but - the message-only fix was judged separately fixable by the other refuter); - and the `[0.4.0]` CHANGELOG entry's `audio.wav` file-mode claim being made - stale by round 45's existing-file mode preservation (both refuters held - that a released section's entry is only corrected when it was already - wrong at release time — round 46's own precedent for editing a released - entry — and this one was true on the day it was written). +- 2026-08-16 — Bug-hunt round 47: one confirmed nitpick, four refuted, two + discarded on split verdicts. Round 46's `install.sh` ffprobe-install fix + and the `curl -fL` model-download recipe fix had no `CHANGELOG.md` entry + anywhere (the round's only edit to that file was an unrelated rescope of + an existing `[0.2.0]` bullet); matching this repo's established practice + of backfilling exactly this gap (rounds 27 and 30's PR #47), a bullet was + added to `[Unreleased]`'s "Checks and installer:" group. Four candidates + were refuted: `record`'s Ctrl+C handling during macOS device probing (the + ordering is a documented, tested, deliberate fix for a worse defect, and + the claimed misdiagnosis is a pre-existing gap unrelated to the probe + window); `demo`'s case-sensitive `loopbackHost` "localhost" match (no real + caller — browser and Node URL parsers lowercase hosts before any header is + written); `WriteFileAtomicNoFollow` replacing a non-regular file its + sibling refuses (already adjudicated refuted in round 30 — `rename(2)` + never opens the target, so the hazard the sibling's stricter check guards + against is absent by construction; a planted FIFO/socket carries no real + threat and the sidecar's own repair path depends on the replace + succeeding); and the `[0.4.0]` CHANGELOG entry's `audio.wav` file-mode + claim being made stale by round 45's existing-file mode preservation (both + refuters held that a released section's entry is only corrected when it + was already wrong at release time — round 46's own precedent for editing a + released entry — and this one was true on the day it was written). Two + candidates were discarded on split verdicts (per the loop's tie-breaking + rule): `transcribe-a-recording.md` omitting `ffprobe` as a dependency + (Homebrew's `ffmpeg` formula bundles it, narrowing the exposed population + to the tutorial's no-Homebrew macOS path); and the same macOS `install.sh` + branch lacking a residual-gap warning message (round 46's own commit + called the branch "untouched" as a considered decision, but the + message-only fix was judged separately fixable by the other refuter). diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e7d336..7501de8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -287,14 +287,15 @@ Checks and installer: - `install.sh`'s Linux local-ffmpeg branch now installs `ffprobe` alongside `ffmpeg` from the same tarball: `transcribe -audio`'s offset derivation shells out to `ffprobe` to read a recording's `creation_time` tag, and - without it on PATH every external recording silently fell back to a 0 - offset, indistinguishable from a genuinely missing or unreadable tag (the - macOS local-install branch still lacks `ffprobe`, a residual gap). The - whisper.cpp model-download recipe, printed by `resolveModel` and mirrored - in the how-to guide, now uses `curl -fL` instead of `curl -L`: without - `-f`, an HTTP error response for a moved or withdrawn model asset was - written into the destination `.bin` file at exit 0, failing only later, - confusingly, at whisper-cli load time. + without it on PATH external-recording offset derivation fell back to 0, + reported with the same provenance as a genuinely missing or unreadable tag + (the macOS local-install branch still lacks `ffprobe`, a residual gap). + The whisper.cpp model-download recipe, printed by `resolveModel` and + mirrored in the how-to guide, now uses `curl -fL` instead of `curl -L`: + without `-f`, an HTTP error response for a moved or withdrawn model asset + used to be written into the destination `.bin` file at exit 0, a + "successful" download whisper-cli only rejects later, confusingly, at + load time. Documentation: From ee5cc32edc9c61cf10efa84b8a0c057063d1c538 Mon Sep 17 00:00:00 2001 From: REPPL <77722411+REPPL@users.noreply.github.com> Date: Mon, 17 Aug 2026 01:07:45 +0000 Subject: [PATCH 3/3] docs: tighten round-47 DECISIONS entry per merge-gate review Both merge-gate reviewers of PR #66 (correctness, docs accuracy) independently flagged the "rounds 27 and 30's PR #47" precedent attribution as ambiguous: PR #47 backfilled round 30's fix only, placed beside round 27's separate pre-existing entry, not both. Reworded to say so directly. Also drops the blank line the entry was preceded by, matching the one-line-per-entry convention every prior entry but round 46's followed. Assisted-by: Claude:claude-sonnet-5 --- .abcd/work/DECISIONS.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.abcd/work/DECISIONS.md b/.abcd/work/DECISIONS.md index c05be0b..fe1f50a 100644 --- a/.abcd/work/DECISIONS.md +++ b/.abcd/work/DECISIONS.md @@ -1581,14 +1581,14 @@ Architecture-shaping decisions graduate to an ADR under name the qualifier that actually distinguishes them. Rescoped the CHANGELOG bullet's subject to `analyze`, true of it, without altering the historical record's substance. - - 2026-08-16 — Bug-hunt round 47: one confirmed nitpick, four refuted, two discarded on split verdicts. Round 46's `install.sh` ffprobe-install fix and the `curl -fL` model-download recipe fix had no `CHANGELOG.md` entry anywhere (the round's only edit to that file was an unrelated rescope of an existing `[0.2.0]` bullet); matching this repo's established practice - of backfilling exactly this gap (rounds 27 and 30's PR #47), a bullet was - added to `[Unreleased]`'s "Checks and installer:" group. Four candidates + of backfilling exactly this gap (round 27's own entry, and round 31's + PR #47 backfilling round 30's fix), a bullet was added to `[Unreleased]`'s + "Checks and installer:" group. Four candidates were refuted: `record`'s Ctrl+C handling during macOS device probing (the ordering is a documented, tested, deliberate fix for a worse defect, and the claimed misdiagnosis is a pre-existing gap unrelated to the probe