VoiceDebrief iOS / built

What is built

The reality file for this repository. If it is not listed here as built, it does not exist. The plan describes intentions; this page describes facts, and it is updated in the same commit as the code it describes.

Status words, as the VoiceDebrief family uses them: built is in the repository and tested; unverified is written but has not yet been proven by a run; proposed does not exist.

Built

WhatWhereHow it is tested
The app skeleton builtApps/VoiceDebrief/: a universal iPhone and iPad target, iOS 26.0, SwiftUI, bundle ai.voicedebrief.appUnit tests in Apps/VoiceDebrief/Tests/, run by CI on an iPhone and an iPad simulator
Record or open a voice note unverifiedEngine/VoiceRecorder.swift, DebriefView: record to a temporary .m4a, or choose an audio file. .m4a, .mp3 and .wav; not WhatsApp's Ogg OpusRecording worked in the same first run on a Mac. Choosing a file has not been tried
Transcript on the device unverifiedEngine/SpeechFileTranscriber.swift: SpeechAnalyzer with a SpeechTranscriber, the model downloaded on first use, one line per phrase with its time. The language is chosen before the runFirst real run, 13 November 2026, build 0.1.1 (5) on an Apple silicon Mac: a 22.6-second English note recorded in the app was transcribed in 0.6 seconds, two lines, accurate bar small slips. One note, one language, one device: not yet a judgement
Debrief on the device unverifiedEngine/OnDeviceModel.swift, DebriefSession: Apple's Foundation Models, the three-section prompt from voicedebrief.ai, a long note read in parts sized from the model's reported context and merged. A refusal or a missing model leaves the transcript standingThe chunking, prompts and format check have unit tests. The model's output has none. On a Mac with Apple Intelligence switched off the app said so and kept the transcript, as designed. First debrief, 13 November 2026, build 0.1.1 (5) on an iPhone: a short English note came back with the three headings and nothing invented, though it turned "let's see if we recorded fine" into an action. A second, one-line note on a Mac showed the model's habits: quotation marks copied from the prompt, a renamed heading (which the app flagged), the note repeated back as a key point. The prompt was changed for 0.1.2 and notes under 25 words are no longer summarised. Long notes and Portuguese are untried
Live text and a level display while recording unverifiedEngine/LiveTranscriber.swift: the microphone through AVAudioEngine into a second SpeechAnalyzer with the progressive preset, shown as it changes; bars from the recorder's meter. A preview only: the kept transcript is still made from the recorded fileCompiles in CI; the level mapping has a unit test. Never run on a device. If the live text cannot start the recording carries on and says why
Send a note to the developer unverifiedEngine/DeveloperLane.swift, LaneCrypto.swift (copied from PrompTugal__App__iOS): with an sgi1. lane link pasted in, a button after a run sends the audio in parts and the run as JSON to an sgit append lane on dev.send.sgraph.ai, each message encrypted to the link's RSA key with sgit's hybrid envelope. A lane is built into the test build (a vault id, a write-only token and a public key, committed on purpose); a pasted link takes its place. Nothing is sent without the buttonUnit tests: the link, the parts, the message format, and a round trip through the encryption with a throwaway key. The receiving end was proven on 13 November 2026 with a message sealed the same way and read back. No note has been sent from the app yet
Create a vault unverifiedPackages/SGitVault/Sources/SGitVault/VaultCreate.swift: a random key (24 and 8 characters, as sgit generates them) or a given one; an empty tree, one signed commit, the branch current at its derived address, the branch index. No clone branchUnit tests against a folder; and ios-vault.yml has sgit clone the vault Swift created and verify its signatures. Never run against the live server from Swift
Vaults in the app unverifiedEngine/VaultBook.swift, SecretStore.swift, UI/VaultsView.swift: the access token, vault keys and the commit-signing key in the Keychain (this device only); create, add by key, forget; head, files, history, branches; a file fetched and decrypted when opened; the engine's traffic logUnit tests with an in-memory store: token, signing key, the folder a debrief becomes. Nothing here has run on a device
Save a debrief to a vault unverifiedVaultBook.save: debriefs/YYYY/MM/DD/<id>/ with debrief.md, transcript.md, run.json and the audio (up to 3.8 MB), one signed commit on currentThe file layout has a unit test. No debrief has been saved yet
Diagnostics unverifiedDiagnosticsView: speech languages, model status, context size and languages, the last run's timings; exported as JSON without the words of the transcript or debriefThe export's "no words" rule has a unit test
The About screen builtStatusView: what the build holds, what is in test and what does not exist, the version, linksThe list it shows is checked by tests: the transcript and debrief may not be called built before they are proven
The vault engine builtPackages/SGitVault/, copied from PrompTugal__App__iOS (see SOURCE.md there): read and write sgit vaults, key derivation, the passkey door, account unlockIts own tests on the CI Mac, against fixture vaults and vectors generated by sgit's Python
A door on any site builtVaultDoor.door(fromSecret:site:): the derivation of door.js with the site constant as a parameter, and VaultDoor.pkiSiteThe vector published at newsroom.sgit.ai/passkey/vectors.json: passphrase, vault id, read key and write key
The build pipeline built.github/workflows/ios.yml: the vault tests, a simulator build, a Release device build, unit tests on iPhone and iPadIt is the test
TestFlight upload builtscripts/release/testflight.sh and the last step of ios.yml: on a green push to dev that touches the app, archive unsigned, sign, and upload with automatic signingRun 4 of ios.yml (13 November 2026) uploaded 0.1.0 (4) and App Store Connect accepted it. The owner installed it from TestFlight on an iPhone the same day and it opened
Vault interop built.github/workflows/ios-vault.yml: Swift writes vaults, sgit-ai clones and verifies them; on changes to the write path and weeklyIt is the test
The site builtwebsite/: markdown pages, a builder and a gate with no dependenciesnode website/admin/validate.mjs: pages current, links, no key-shaped strings, house style

Not built

Most of what a user would call the product.

WhatStatus
Receiving a voice note from the share sheet (WhatsApp)proposed
Decoding WhatsApp's Ogg Opusproposed
A library: listing and reopening saved debriefs in the appproposed
Translation, classification, citations of time in the debriefproposed
The passkey ceremony, the account, the recovery codeproposed
Creating an account, adding a door, merge, audio over 3.8 MB in a vaultproposed
The key bundle (PKIKit) and signed debriefsproposed
Saving a debrief, sync between devicesproposed
The share extension, App Intentsproposed
Credit, charging per minute, top-upproposed
A build confirmed on an iPadunverified: confirmed on an iPhone and a Mac
The App Storeproposed

Known limits of what is built

Open work

Tracked as files under issues/ in the repository.