Skip to content

docs(devbook): record the meeting transcription decision (ADR 0049) - #1711

Merged
github-actions[bot] merged 2 commits into
plan/meeting-recordingfrom
meeting-recording/78334a1c-f50b-429a-b21b-17781572cacf
Nov 10, 2026
Merged

github-actions[bot] merged 2 commits into
plan/meeting-recordingfrom
meeting-recording/78334a1c-f50b-429a-b21b-17781572cacf

Conversation

@JSdotNet

@JSdotNet JSdotNet commented Nov 10, 2026 •

Copy link
Copy Markdown
Owner

What changed

File Change
.devbook/arc42/adr/0049-…-removes-the-audio.md New local ADR 0049 (proposed): the desktop transcribes a downloaded meeting recording through gpt-4o-transcribe, once per sha256, appends ## Transcript and ## Summary, then removes the audio.
.devbook/tech/cloud.md New ## gpt-4o-transcribe chapter (trial, depends on Azure AI Foundry), and a third use under Azure AI Foundry. The Foundry entries live in cloud.md, not desktop.md.
.devbook/arc42/adr/0023-… Exception note and History row: a recording is sent on intake with no press.
.devbook/arc42/adr/0014-… Lifecycle bullet: a note edit that drops a file releases its blob.
.devbook/arc42/adr/README.md Index line for 0049.

What the research found (Microsoft Learn, read 2026-11-10):

  • AAC in ADTS is not accepted. The documented formats are mp3, mp4, mpeg, mpga, m4a, wav and webm, and "other formats return an error". So the desktop remuxes to M4A without re-encoding.
  • The limit is 25 MB per request. The transparency note also gives a length limit of 15 to 30 minutes per synchronous request. That is why the ADR sends a recording in remuxed parts of at most 5 minutes.
  • gpt-4o-transcribe supports only json output, with no verbose_json and so no segment timestamps. The required timestamps come from each part's offset instead.

Acceptance criteria

Criterion Verified by
ADR at the next free number 0049. 0048 is left for entry 1's recording-format ADR (see Assumptions).
Auto-transcribe on download, once per sha256, through gpt-4o-transcribe beside the existing Foundry client (JS-AI, Sponsorship) ADR §1 and §2
Language detected by the model, no setting; timestamps, no speaker labels ADR §4
Re-read and append ## Transcript / ## Summary (with action items), never replace ADR §5
Audio removed once the transcript is written, never on failure ADR §6
Audio leaving the device recorded as the consequence ADR Consequences, first block
ADTS acceptance and size limit checked from Microsoft docs, remux when not accepted ADR Context table and §3
Model added to the tech file holding the Foundry entries tech/cloud.md#gpt-4o-transcribe

Build & Test

This is a devbook-only change with nothing runnable, so no build or test ran.

  • node .devbook/_tools/devbook-meta/build.mjs --check exited 0.
  • node tools/devbook/check-metadata.mjs reported 217 files, 0 blocking. The advisory counts are unchanged and none of them are on the touched files.

Review findings left open

None. One fresh-context review found 1 blocker, 4 majors and 6 minors, and all were fixed. The blocker: a phone edit made on the body from before the transcript would overwrite the whole note after the audio was already gone. The fix is that the desktop keeps the sections it wrote, by sha256, and appends them again on pull.

What could not be proved

  • The format claims were not tested against the live deployment. No ADTS file was sent to Foundry to confirm it is refused. The 15–30-minute length limit comes from the transparency note, not from a measurement. The 5-minute part length is a judgement inside that limit.
  • Timestamps are coarse, about every 5 minutes. The decision asked for timestamps, and the model gives none. Validate that part-offset timestamps are good enough.
  • The repair on pull (§6) goes beyond the decision you gave me. It was added to keep the "never replaces" promise once the audio is gone. A second desktop that never wrote the sections cannot repair them.
  • The settled decision says nothing about consent. The ADR says configuring Foundry on the desktop is the only consent, and names the three ADR 0023 rules this reverses.

Assumptions

  • ADR number 0049, not 0048. 0048 was left for plan entry 1's recording-format ADR. Entry 1 landed it on plan/meeting-recording as "Meeting audio is recorded as AAC in an ADTS stream", and the merge of that base lists both. 0049 now cites 0048 for the phone's format (ADTS, audio/aac, 24 MB parts) and for the audio types a note accepts.
  • The desktop reuses AzureFoundryTranscriptionClient, adding an API-key credential. It does not add a second client.
  • The summary uses the existing chat deployment, so "configured" means AzureFoundrySettings.IsConfigured.

An unattended execute-plan run opened this draft for plan entry 78334a1c-f50b-429a-b21b-17781572cacf (+meeting-recording, spec-transcription). Personal Validation is pending: validate on this draft.

🤖 Generated with Claude Code

The desktop transcribes a downloaded meeting recording through the
gpt-4o-transcribe Foundry deployment once per sha256, remuxing ADTS to
M4A in parts of at most 5 minutes, appends Transcript and Summary to the
note, then removes the audio. Adds the model to tech/cloud.md and the
amendment notes to ADRs 0023 and 0014.

Plan entry 78334a1c-f50b-429a-b21b-17781572cacf (spec-transcription).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…a-b21b-17781572cacf

Resolve the ADR index conflict by listing 0048 (entry 1) before 0049, and
point 0049's Context and audio types at ADR 0048 now that it has landed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@JSdotNet
JSdotNet marked this pull request as ready for review November 10, 2026 21:25
@github-actions
github-actions Bot merged commit 73b28b3 into plan/meeting-recording Nov 10, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant