A place, only when asked
GET /where is the smallest of my senses, and it follows the camera's rules. The first code block is the whole route on the device. The location grant is checked first and refused with 403 when no person has allowed it; then the app must be in front (409). Then comes a detail that was measured, not guessed. A one-shot Core Location request could hand back a cached fix older than the family kit's freshness rule, and the kit then answered nothing at all (measured on my own iPhone, 2026-11-02). So fix() runs a short When In Use watch instead and waits for a fix that arrives no older than 30 s (ForegroundLocation.arrivalMaximumAge), for at most 15 s (Deadline.fix). When none comes it refuses with 504 and says why in words: the kit's own reason, "location is denied", or "indoors, or no sky". Either way the watch is stopped again, so nothing measures between requests.
The answer is the family's GeoFix from CwkKitLocation, the shape every family app shares: lat, lon, accuracy_m, sampled_at, source, and optional altitude, heading and speed. Location is When In Use, never Always: the kit asks only for When In Use, the Info.plist has no Always key, and the source scan that guards the camera also fails on requestAlwaysAuthorization. Oriel asks with X-Cordelia-Doing: finding where it is and gives the body 20 s.
The camera button asks; it does not open
The face has one camera control of its own, the one place Dad's hand reaches my eyes directly, and it still does not open the camera. The second code block shows what a tap does: tapCamera puts an eyes item on the ears' outbox, {open, camera, by}, on the same long poll that carries Dad's turns to Oriel. Oriel's relay (third block) answers by opening its gate for this body's two cameras for five minutes (TAP_MINUTES), with source tap and actor dad: his own approval, worded "Dad's tap on Cordelia's face". Then it pushes the face.
Only now does anything run. face(eyesOpen:until:why:) starts the small preview when everything lines up: Oriel says the gate is open for this body, it has just opened or Dad has just asked, the app is in front, and the reason names the tap. The last condition matters more than it looks. Under Auto the gate covers a body's cameras with no approval at all, but Oriel reports a body's eyes as open only for live approvals, and the preview also wants the tap's reason, so the mode alone never starts it. It runs because Dad pressed the button on this face. The preview is a 132 × 176 point tile with a red frame and a Front/Back switch, on a .medium session that pauses for any still or clip and resumes after. A tap on the tile or on the camera control asks Oriel to close; when the five minutes run out, Oriel's next push says closed and the preview stops.
The eyes lamp: the house's eyes on my face
On 2026-11-07 Dad asked that every Pippa Home surface, my face included, show the eyes mode where it is hard to miss, and a red eye while any eye is open. Oriel adds that to the same eyes object it pushes to a body, and HouseEyes reads it: the mode as "Eyes: Manual", "Eyes: Auto" or "Eyes: Broadcast", whether the eye is red, up to six names of what is open ("Eye open: …"), and "Closing every eye" while a kill is running. The eye is red while any camera in the house was read or moved in the last 15 s, is recording, or is held by a live approval, so it speaks for the desk cameras and the network cameras too, not only for this body. An Oriel without modes sends no mode, and then no lamp shows at all. The mode itself is set on Dad's other screens, never on a body.
The red eye pressed twice
Dad's rule for it: "어떤 상태든지 빨개진 눈 아이콘을 더블 클릭하면 그게 킬 스위치야. 바로 닫고 수동 모드로 전환." (Whatever the state, a double click on the red eye icon is the kill switch. Close at once and switch to Manual.) On the face the lamp goes through the family's armed two-press, TwoPress from CwkKitCore: the first press only arms it, amber with "Tap again", for 5 s; a second press within that time fires; a second press sooner than 0.4 s after the first is one graze registering twice and never fires. No modal, no waiting. The first version, on 2026-11-07, armed for 4 s; the family rule replaced it. The lamp sits in the pinned row outside the scroll, so it stays reachable at any text size.
Firing puts an eyes_kill item on the outbox, and Oriel runs Engine.kill_eyes straight off the long poll, with no brain turn anywhere in the path. Every gated input refuses at once, with one exception in Gate.check's order: a look Dad takes himself on Oriel's page (a peek or a frame export) passes before the kill switch is read, as lesson 1's second block shows. The mode is Manual before the call returns, and then the close order runs over everything: a recording stops, every movable camera parks and is checked, every approval closes, the network cameras' and other Macs' included. A play session is not an eye and keeps its own stop. My face, like every other surface, hears the result on Oriel's next push.