Skip to content
C.W.K.
Stream
Lesson 06 of 06 · published

The Phone Half

~12 min · ios, watchos, capture-doors, offline-outbox, on-device-speech, testflight

Level 0Cold Iron
0 XP0/37 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"The composer stopped being the only door. Every new door had to sign the same contract to get in."

Capture Leaves the Desk

Until mid-September 2026, Forge was one screen — the office web app. On 2026-09-10 it grew a phone half: one universal iOS app, SwiftUI over the family's shared kit core, delivered through TestFlight, with a watch riding in the same bundle. The reason was the capture contract, not vanity: symptoms arrive mid-flare, in waiting rooms, on the bike — and the desk is where crumbs get typed, not where they happen. But a new door is not a bolt-on feature. Each one had to prove it keeps the two rules this track is built on: capture stays free prose with no required picker, and the local write commits first, always.

Four Doors, One Contract

Scan. The phone's document camera turns a check-up printout into one deskewed, multi-page PDF, size-fitted on the device against the engine's 25 MB media cap — the page photographed at the clinic is a crumb before you reach the car. Dictate. Speech recognition runs on-device, and when a locale has no offline model the door refuses rather than falling back to a server — the family's line that no third party ever carries symptom text off the machine is made of code here, not promises. Share. The check-up PDF that arrives in Mail weeks later lands in a share extension that writes the App Group inbox and never touches the engine itself; the phone half files it on next open. The wrist. The watch-face complication is a door — tap it and dictate — and module taps record a workout in two touches. One honesty note on that dictation: watchOS gives an app no recognizer of its own, so the wrist uses the system's dictation screen, and code cannot prove where it listens. That door opened on Dad's explicit, recorded decision — the privacy line's own escape clause, exercised in writing. This is where "mumble and move on" stops being a metaphor.

Offline Is the Shape, Not a Mode

The outbox from the last lesson runs on the phone as the kit's CaptureOutbox: attachment bytes stage locally, client_request_id is the idempotency key so a retry can never mint a crumb twice, and an uploaded media id is written back the moment it lands. The whole phone half sits behind Face ID, and its files stay encrypted whenever the device is locked. Delivery is TestFlight on one family pipeline — a health app on Dad's phone is still family infrastructure.

A new capture door is admitted by the contract, not by the store. Four rules: free prose in, no required type picker, the local write commits first, privacy enforced in code. A door that cannot keep them does not ship — and where code cannot enforce the last one (the wrist's system dictation screen), the rule becomes Dad's explicit, recorded decision.

Code

Four doors, one contract (2026-09-10 — the phone half)·text
FOUR DOORS, ONE CONTRACT

  scan    phone document camera -> one deskewed multi-page PDF,
          size-fitted on-device to the engine's 25 MB cap
  dictate on-device speech recognition; no offline model -> the
          door REFUSES (never a server fallback for symptom text)
  share   share extension -> App Group inbox; never touches
          the engine itself
  wrist   complication = a door; module taps; dictation runs on the
          SYSTEM screen (code cannot verify on-device -> the door
          opened on Dad's explicit, recorded decision)

every door: free prose in, no required picker, local write first,
privacy enforced in code — or Dad's recorded decision where code
cannot reach. the phone is a CLIENT of the office engine —
capture flows in, nothing publishes out. Face ID gates it.

External links

Exercise

A fifth door is proposed: a web clipper that asks you to choose a crumb type from a required dropdown, then sends the clipped page text to a cloud readability service before saving. Which two of the four door-contract rules does it break as stated, and what is the smallest change that would make it acceptable?
Hint
It breaks no-required-picker (the dropdown makes Dad operate the taxonomy so the database stays clean) and privacy-enforced-in-code (a third party carries the text off the machine). The acceptable shape: clip with no picker, write locally first, and let any cleanup happen on-device or on the office engine — never on someone else's server.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.