ELA · arrival celebration · OBV2-004

Round 3.6 — The WatchSigned off

the box becomes the barper-tier ring: thirds / halvessigned off with the 3.6 amendment2026-08-18
What 3.6 changes — signed off with this amendment

Founder correction after the 3.5 sign-off (2026-08-18): the ring division is per-tier. Shield/Family draw THREE segments — each standing-by row, including Insurance application submitted, draws a third: the ring is the tier’s roster assembling, and the title commits at ring close, after the third leg (≈3.5 s, riding the insurance stamp — the accepted cost). Essential draws two halves, unchanged, committing at ≈2.9 s. This supersedes 3.5’s fork-A halves-always reasoning; within a tier the ring is consistent. Everything else in 3.5 stands: the box composition, the trifecta and its honesty-checked verb, the ≥2 s read hold, the fold, the readiness residue. Status: SIGNED OFF.

01

Decision ledger

RINGRing division — per-tier ruling (founder, 2026-08-18): Shield thirds / Essential halves. Supersedes fork-A’s halves-always (which had briefly resolved the old A/B fork earlier the same day). On Shield/Family every standing-by row — including Insurance application submitted — draws a third: the ring is the tier’s roster assembling, and the title commits at ring close, after the third leg. Essential’s two protection legs draw halves, unchanged. Within a tier the ring is consistent; the noted cost — the commit rides the insurance stamp on Shield, ≈+0.5 s — accepted. The retired A/B fork strip stays retired; this ruling replaces its answer.
BOXThe standing-by box + the trifecta (founder’s composition, 2026-08-18). Attested rows render inside a bordered container headed WHO’S STANDING BY — the shipped sheet’s vocabulary; the box IS the standing-by surface in expanded preview form, present from the first frame. First word names the actor: Law firm on call · Consulate route ready · Insurance application submitted (Shield/Family Shield only — honesty-checked: “notified”/“activating” would overclaim, submitted is true at payment; Essential members see two rows). Trusted contact is NOT a row — it stays the first readiness item exactly as ruled; the opened sheet shows all four rows incl. contact status (already true in the shipped app).
ORDERReadiness order ruled: trusted contact (when missing) → documents → medical notes. Copy verbatim from the shipped checklist resolver: Add a trusted contact · They’re alerted the moment you arm · Capture your documents · Identity check needed before cover attaches (Shield wording; Essential reads They confirm your identity for responders) · Add medical notes · Optional — responders see them on dispatch. Correction: document capture is post-payment homework (OBV2-003 moved it out of the pre-payment path; the readiness item OBV2-007 owns the ask) — 3.1’s claim of pre-payment STP capture was wrong, and the primary residue now shows the documents row.
CAPResidue cap: the arrival residue shows at most three readiness rows; further open items (a Family Shield member can hold contact + documents + medical + family roster + practice) collapse into a quiet line that opens home’s full list: +2 more in Readiness. The frame stays light; nothing is hidden — the full self-draining list lives one tap away, exactly as home already works.
ABSORBThe condensation gesture — full ruling history. Label flash on receive (3.1) → resident dots seated on the bar (3.2 — rejected: read as a UI control, count carried no legible meaning) → absorbed dots that flew the rail and sank into the bar’s edge (3.3) → CUT (founder, 2026-08-18): “the dots falling… and then just disappearing — what’s with the animation of them at all?” — with no resident mark at the destination, the flight tells no story → superseded the same day by the founder’s own composition (3.5): the box folds into the bar. No particles, no label dip — the box becoming the bar IS the story, and the header-into-label morph is the only receipt the landing needs.
CARRIEDOne notificationSuccess at ring close · no sound · no confetti · no gold · no score · first-render-only; the settled layout persists as the new normal of the protected home.
The heavy case, rendered

Family Shield, five open items — trusted contact, documents, medical notes, family roster and practice-the-hold all open. Under the 3.5 composition its box held the full trifecta (Family Shield carries the insurance row) and has already folded into the bar below; what remains is the readiness residue. The residue caps at the ruled three (contact → documents → medical); the remaining two collapse to the quiet line, which opens home’s full readiness list. Collapsed here, verbatim from the shipped rows: Add the people Family Shield protects · Adults and dependants your cover includes. and Practice the hold · Rehearse the arm gesture — nothing is sent.

Honest flag: the shipped cap keep-priority (documents → family_shield_roster → trusted_contact → medical) predates the 3.2 order ruling and would pick a different three — the build aligns it to the ruled order, one-line change in resolveReadinessChecklist.

STATIC SAMPLE · POST-FOLD RESIDUE · FAMILY SHIELD · 5 OPEN
Readiness
Add a trusted contact They’re alerted the moment you arm
Add
Capture your documents Identity check needed before cover attaches
Add medical notes Optional — responders see them on dispatch
+2 more in Readiness
Who’s standing by
02

The decided loop, running

Left: primary — Shield, three facts in the box each drawing a third of the ring, contact missing. Right: Essential, two facts, two halves — same fold choreography, per-tier ring arithmetic. Live CSS loops, shipped disc geometry and home furniture. Each frame is labelled with the demo-loop boundary — in the app this plays once; stamps and the settled layout persist. Opened, the standing-by sheet lists all four rows including trusted-contact status (already true in the shipped app) — the contact-present case needs no separate frame.

WThe Watch — Shieldprimary loop · 3-row box · contact missing
The standing-by surface is present from the first frame: facts ignite inside the labeled box, each drawing a third of the ring — the tier’s roster assembling — and after a read hold the box itself folds down to become the bar. The missing contact stays the first readiness ask, and nothing ever scores.
9:41
ProtectedYou’re protected
Confirming with server… Shield active
Hold to arm
Who’s standing byWho’s standing by
Law firm on call21:42:07
Consulate route ready21:42:08
Insurance application submitted21:42:09
Readiness
Add a trusted contactThey’re alerted the moment you arm
Add
Capture your documentsIdentity check needed before cover attaches
Add medical notesOptional — responders see them on dispatch
notificationSuccess
demo loop · plays once in the app · stamps & settled layout persist
The loop

Beat 1 — cold (0–1.0 s). The real confirming-with-server frame: ghost title, grey dot, dark track ring — and the labeled box already framing three dim rows: WHO’S STANDING BY, the shipped sheet’s surface in expanded preview form, present from the first frame. Beat 2 — protection attests (1.0–2.6 s). Law firm on call and Consulate route ready ignite on server confirmations inside the box: dot, label, mono stamp; on Shield each draws a third of the ring. Beat 3 — insurance attests (2.8–3.3 s). Insurance application submitted ignites and draws the final third — per-tier ruling: the ring is the tier’s roster assembling. Essential never renders the row; its two legs draw halves. Beat 4 — the ring closes (3.3–3.6 s). Bloom, the haptic, and the title commits at ≈3.5 s — after the insurance stamp, the accepted cost of the per-tier ring (Essential commits at ≈2.9 s). Beat 5 — the read hold (3.3–5.9 s). Stillness, ≥2 s after the last ignition (2.5 s here). Nothing may vanish while it is being read. Beat 6 — the fold (5.9–7.0 s). The box folds down into the peek bar — a true shared-element transition: the header morphs into the bar’s label (same words, the type ramp travels), rows fade as the container compresses, and the bar is the landed residue. The box becoming the bar IS the story. Beat 7 — home settles (7.2–8.7 s). READINESS, the contact ask first, then documents (post-payment homework) and medical notes fade up into the freed space. The residue IS the home.

Honest notes

No score, no ticks unearned: facts get timestamps, the gap gets an ask. Honesty check: the insurance row says submitted — “notified” or “activating” would overclaim at payment; submitted is true the moment it is rendered. The sheet shows four: tapping the landed bar opens the standing-by sheet listing all four rows including trusted-contact status — already true in the shipped app — so the contact-present case needs no separate frame. Residue cap: at most three readiness rows; further open items collapse to a quiet +N more in Readiness line (see 01). Build: ignitions are Animated opacity; the arc is one react-native-svg dashoffset via Reanimated; the fold is a single shared-element layout transition — box height/position + label morph on Reanimated shared values, rows clipped by the folding container. Read hold: the fold may not start until ≈2 s after the last ignition (founder read-speed rule) — late server acks push the fold later, never sooner. Battery: nil — no idle motion. Reduce-motion: one cross-fade from cold to settled home + the haptic. Timing: cold→commit ≈3.5 s (the commit rides the insurance stamp — per-tier ruling cost, accepted; Essential commits ≈2.9 s); fold lands ≈7.0 s; settle completes ≈8.7 s. Commit-beat option: C2’s seal-press haptic weight (archived) may replace the ring-close beat.

WThe Watch — Essentialsecondary · 2-row box · halves ring
Same fold choreography with the tier’s own ring arithmetic: an Essential member’s two protection legs each draw half, and within the tier the ring is always consistent (per-tier ruling, 2026-08-18).
9:41
ProtectedYou’re protected
Confirming with server… Shield active
Hold to arm
Who’s standing byWho’s standing by
Law firm on call21:42:07
Consulate route ready21:42:08
Readiness
Add a trusted contactThey’re alerted the moment you arm
Add
Capture your documentsThey confirm your identity for responders
Add medical notesOptional — responders see them on dispatch
notificationSuccess
demo loop · plays once in the app · stamps & settled layout persist
The loop

The same choreography with the tier’s own ring count: both protection legs ignite (1.0–2.6 s) drawing halves, the ring closes and the title commits at ≈2.9 s — earlier than Shield, whose commit rides the insurance stamp — the read hold runs 2.6→4.7 s, and the box folds 4.7→5.8 s. No insurance row — Essential self-pays; rendering a third row would overclaim. Readiness settles 6.1→7.5 s with the Essential documents wording: They confirm your identity for responders.

Honest notes

One choreography, server-shaped: the client renders whatever rows the confirmation read attests, and the ring divides by the tier’s roster count — thirds on Shield/Family, halves on Essential; consistent within a tier. Presentation queue staggers acks ≥140 ms, caps total wait ≈1.2 s; the read hold then runs from the final ack.

03

The server-fact contract

Every ignition renders a fact the arrival confirmation read returns. What exists today vs. what the beat asks the server to add.

Leg / factExists todayThe arrival read needs
Entitlement active — gates the whole beat Entitlement read after webhook (own Postgres table, Stripe-fed) — tier, status activated_at (server timestamp) — likely already stored; expose it
Law firm on call — row 1 Standing-by leg status, server-derived (JQ-014 stakeholder readiness; emirate-roster matching) firm_on_call_at per-row timestamp (new)
Consulate route ready — row 2 Nationality → consulate duty-desk mapping, server-side (standing-by sheet rows) consulate_route_at per-row timestamp (new)
Insurance application submitted — row 3, Shield/Family Shield only Entitlement tier (own Postgres table, Stripe-fed) + the Sukoon application record created at payment insurance_application_submitted_at stamp (new); render the row only when the tier carries insurance — the verb stays submitted until the carrier confirms; on Shield/Family this row draws the ring’s final third (per-tier ruling) and the commit follows it
Trusted contact — NOT a row; first readiness ask + a standing-by sheet line Contact roster count via stakeholder-readiness read (refreshTrustedContactReadiness) contact_count — already exists; nothing new for the arrival beat
Readiness residue — rows after the beat resolveReadinessChecklist — self-emptying, fail-closed per item, max 3 rows Nothing new — the residue renders the shipped resolver’s output in the ruled order, plus the +N overflow line when it returns more than fits
v1 fallback, zero new endpoints: stamp every attested leg with the entitlement’s activated_at — one server truth on all rows, still mono, still honest. Per-leg stamps are the ideal; the beat does not block on them. The client never invents a timestamp (hydration law: normalize timestamptz via toISOString()).
04

Rejected — kept for the record

C2The SealRejectedREJECTED · one carry-forward
Rejected as the arrival: pure object-weight, but the moment’s content — who is standing by — never appears.
9:41
ProtectedYou’re protected
Confirming with server… Shield active
Hold to arm
Who’s standing by
notificationSuccess
The loop

Kept animated for one reason: the seal-press commit beat — room dims, disc presses, haptic strikes at full press, release lands one stop brighter. If C1’s ring-close beat tests thin on device, this press is the approved escalation for that single beat.

C4EngagedRejectedREJECTED
Rejected: the most brand-literal mechanism, but it decorates the symbol rather than transforming the member’s standing.
9:41
ProtectedYou’re protected
Confirming with server… Shield active
Hold to arm
Who’s standing by
notificationSuccess
The loop

Archived for the record. No carry-forward.