Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .abcd/work/DECISIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -1581,3 +1581,33 @@ 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 (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
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).
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,18 @@ 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 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:

Expand Down