BUILD LOG

Product Kill Sin Role Founder / PM / Engineer Status Active Development

Focus Systems, AI, UX, Discipline Updated August 2026

SYSTEM OVERVIEW

Kill Sin is a mobile discipline app that turns the daily battle against vices into a gamified warfare experience — combining habit tracking, AI mentorship, and ritual systems.

Mission: help users overcome daily struggles through a war-themed, faith-rooted system.

Core idea: every sin is an “opponent,” every day is a battle you log, and Shepard mentors you with scripture + urgency.

MY ROLE

  • Vision & product strategy (4-feature framework)

  • AI system design (Shepard persona doctrine, eval suite, 4-model bake-off, Fireworks migration)

  • Full-stack dev (React Native + Expo + Node/Express on Render + Fireworks serverless inference)

  • Design & theming (HUD war-room design system, central typography presets, isolated Bible reading theme)

CORE SYSTEMS

Conquer — battle flow

War Log — calendar, records, stats, achievements

Shepard AI — battle mentor + general mode

Enemies & Nightly Debrief — tracked opponents & the daily ritual

Bible — in-app scripture, reading progression

Infrastructure — persistence, dev sandbox, evals, model layer

Explore System Architecture
  • Launch hardening + first device build — a 29-issue release audit executed in four phases: dev scaffolding provably eliminated from release bundles, a fail-closed server with /health observability, 510 automated tests wired into every build — and the first signed iOS build installed and verified on real hardware. → Section 10

  • Under Attack: Hold the Line — the app can finally help during temptation, not just before and after: a one-tap interrupt built deterministic-first (your WHY → hold the line → one physical action → then Shepard), with holds logged and earning XP. → Section 10 (or wherever you filed it)

  • Home v3: The Hit List — Home rebuilt around one question: how goes the war against your enemy. Days Free front and center, Shepard's Daily Brief, and Tonight's Watch. → Section 1

  • Shepard v3 + Fireworks migration — (keep your existing bullet as-is) → Section 4

  • Bible system shipped — (keep as-is, or upgrade "WEB translation" to "four translations, fully offline") → Section 8

LATEST UPDATES

BUILD INDEX

SECTION 1 — CORE NAVIGATION & FOUNDATION

Purpose: establish the foundation: navigation, feature structure, and theme.

Aug 2025 — Initial Conquer Flow Built

  • Established the core home screen with four primary modes: Conquer, Comfort, Commandments, and Christ

  • Implemented early navigation structure and feature separation using a minimal, wireframe-style layout

  • Built the first Conquer flow, including sin selection across seven categories

  • Designed a daily battle experience with streak tracking and outcome logging

  • Integrated AI chat directly into the battle screen to support real-time guidance

  • Focused on validating core functionality and user flow before visual polish

VERSION 1

Sept 2025 — UI Redesign, Visual Identity

  • Redesigned the home screen with distinct color-coded cards for each core mode

  • Introduced clearer visual hierarchy and improved scannability

  • Moved away from a purely neon yellow/black system toward a multi-color identity

  • Added grid and holographic-inspired backgrounds to support a futuristic direction

  • Began shaping the app’s “spiritual warfare” theme through color and layout rather than text alone

VERSION 2

June 2026 — Dashboard Redesign

Redesigned the Kill Sin dashboard into a cleaner daily command center. The old layout had oversized stat sections and required too much scrolling, so I rebuilt the screen around faster access to the user’s mission, progress, and next action.

What Changed

  • Added a Shepard status panel with rank, greeting, streak, and settings access

  • Added a “Today’s Mission” card with daily streak, victories, Kill Meter XP, and action buttons

  • Made Begin Check-In and Conquer accessible near the top of the screen

  • Reorganized Conquer, Comfort, Commandments, and Christ into a cleaner Battle Modules section

  • Added Resources buttons for Bible, Verses, and Plans

  • Added bottom navigation for Home, War Log, Bible, and Profile

  • Reduced oversized stat cards to make the dashboard more compact and usable

  • Improved visual hierarchy while keeping the spiritual warfare / command-center theme

VERSION 3

Aug 2026 — Home v4: The Hit List

  • Home rebuilt a third time — from a command center into a single question: how goes the war against YOUR enemy?

  • Three states by soldier progress: NEW (no enemy — "Name your enemy" with a 3-step guide), ROOKIE (enemy named, no battles), VETERAN (the full hit list)

  • Enemy hero: the tracked sin with per-sin skull emblem, a large Days Free counter, and next-milestone progress

  • Shepard's Daily Brief: a daily read from the soldier's own numbers — six situations (opening, after a slip, early, approaching a milestone, entrenched, steady), each with a hand-picked verse. Deliberately built as a pure offline template engine, with the architecture reserved for a real AI-generated brief later

  • Tonight's Watch card pulses red when the day's report is due

  • Campaign dateline — "Day N of the campaign" — so every open reminds the soldier this is one long war, not disconnected days

  • Navigation is now five tabs: Home · Conquer · Bible · War Log · Profile

VERSION 4

SECTION 2 — CONQUER SYSTEM

The battle dashboard and sin-targeting flow — the core daily 'fight' loop. Users choose a sin, prepare, fight, and reflect.

Aug–Sept 2025 — Initial Conquer Flow Built

  • Sin Selection screen: Lust, Greed, Gluttony, Laziness, Wrath, Envy, Pride

  • Per-sin “Today’s Battle” screen with streak tracking + survey prompt + “Talk it out with Jesus AI”

  • Survey questions capture temptation + difficulty + preparedness, etc.

  • Chat integration wired to backend + OpenAI; UI includes typing placeholder

  • Win/Loss tracker hooked into streak count + War Log foundation

VERSION 1

Sept 30, 2025 — Conquer Dashboard + Sin Select Wheel Overhaul

  • Dashboard layout restructured using absolute positioning

  • Sin Select Wheel upgraded to a functional 7-node heptagon with colored outlines/connectors

  • Future-proofed for emblem swaps without breaking layout

SIN SELECT WHEEL UPDATE

DASHBOARD CREATED

Oct 25, 2025 — Conquer Flow Redesign

  • New dashboard metrics added

    • Current Streak, Longest Streak, All-Time Conquered/Unconquered, Kill Meter (XP)

  • “Are You Ready for Battle?” check-in (pre-fight ritual)

    • Yes → “Go forth and conquer this sin.”

    • No → “There’s more training to be done, soldier.”

    • Designed to emphasize preparation/consistency over shame

  • Sin Dossier Added

    • Slow the user down just enough to create intentionality

    • Reframe the sin as an opponent, not an identity

    • Give context + strategy before engagement

VERSION 2

Oct 26, 2025 — 24-Hour Survey System Polished (full flow restored)

  • Holographic design stabilized (balanced borders, fixed animations)

  • Randomized outcome messages for Conquered / Unconquered / No Encounter

  • Survey flow steps (end-to-end): status selection → tactical debrief → heart reflection → mission prep → “Word from Command”

    Future add-ons (you can add later)

  • “Battle Buttons” final design pass (you noted they’re not final yet)

  • More battle screens: weapons inventory UI, scripture toolbelt, battle prep modules

  • Notifications / scheduling: trigger the 24-hour check-in exactly 24h later + reminders

Survey Check In System

SECTION 3 — WAR LOG

Purpose: command center to track battles, history, performance, and progression.

Sept 30, 2025 — War Log Hub Introduced (Major Update)

  • New War Log hub with 4 tabs: Calendar, Records, Stats, Achievements

  • Calendar = daily wins/losses visual tracker (placeholder until fully connected)

  • Records = logs daily battle entries + option to review Shepard conversations

  • Stats = framework for performance metrics (to be connected)

  • Achievements organized into war tiers (Basic Training, Active Duty, Elite Commander) + glowing unlock effect

  • Scrollable achievements layout (harder unlock as you scroll deeper)

VERSION 1

WAR LOG BUTTON

Oct 26, 2025 — Records Tab Completed

  • Records tab completed so users can revisit every past check-in

  • Each record shows: sin battled, weapons used, reflection, plan for the next fight

  • Explicit goal: visible progress + reread your own words + tangible day-by-day growth

Future add-ons

  • Calendar ↔ streaks ↔ achievements full connection (you called this out as a next step)

  • Stats pages: month-over-month graphs, streak distributions, relapse triggers, “most dangerous time” insights

RECORDS TAB

SECTION 4 — Shepard AI

Purpose: AI mentor who confronts, guides, and encourages users through battles.

Aug–Sept 2025 — Shepard Backend + Chat UI Integrated

  • Backend: Node.js + Express deployed on Render; API keys secured as env vars

  • End-to-end message flow verified: app ↔ backend ↔ OpenAI; chat bubbles + typing indicator experience

Sept 30, 2025 — Shepard Training + Personality Overhaul

  • Issue: Shepard responses were to vague and surface level.

  • Shepard training document uploaded/finalized with multi-sin examples

  • System prompt updated to be: brotherly + scripture-centered + firm/urgent (not soft), with balanced practical steps

  • First-time intro script created: tap-through mentor dialogue (not skippable)

  • Cutscene planned later with continue/exit buttons + tap-to-advance + dramatic pauses

Oct 25 2025 — Intel Briefing

Introduced the Intel Briefing concept as a core interaction pattern inside Shepard chats.
Instead of immediately responding conversationally, Shepard now opens many sessions with a structured briefing:

  • Battlefield Analysis (where and when the sin is most active)

  • Warning (clear spiritual consequences of delay or compromise)

  • Tactical Steps (specific, actionable obedience for today, not vague advice)

  • Scripture Anchor (one verse to frame the battle)

This briefing format was intentionally designed to:

  • Reframe sin as an external opponent, not the user’s identity

  • Slow the user down just enough to create intentionality before action

  • Shift the mindset from emotional venting → spiritual warfare and execution

Rather than feeling like “chatting with an AI,” the Intel Briefing makes each session feel like receiving mission-critical guidance before a decision point.

(Oct 28, 2025 — 2:19 AM) — Dual Shepard Personas: Visual + Behavioral Separation

Implemented a dual-persona Shepard system by fully separating training data, tone, and on-screen behavior into two distinct AI roles.

Two independent training files were created and maintained:

  • shepard_QA.json
    A large, example-dense dataset used to train General Shepard — a conversational Christian AI for questions, reassurance, and faith exploration.
    Responses prioritize clarity, explanation, and pastoral tone. Visually, this Shepard appears as a clean, open chat interface with minimal urgency — no warnings, no tactical framing — reinforcing safety and approachability.

  • shepard_Conquer.jsonl
    A focused, directive dataset used to train Battle Shepard — a tactical mentor built specifically for conquering sin.
    Responses are structured, urgent, and action-oriented. Visually, this Shepard appears inside a mission-styled interface with labeled sections (Intel Briefing, Battlefield Analysis, Warnings, Tactical Steps, Scripture Anchor), reinforcing that the user is entering an active confrontation, not a casual conversation.

Dual Shepard Architecture — Persona-Separated Training Pipelines

Aug 2026 — Shepard v3: Persona Rebuild + Fireworks Migration (Major Update)

The largest Shepard upgrade since launch — the persona, the model, and the safety layer were all rebuilt, driven by evals instead of vibes.

The eval suite

  • Built an automated evaluation harness scoring every candidate model on: briefing format compliance, scripture citation, response length, profile utilization (does Shepard actually use the soldier's name, Days Free, and triggers?), and conduct rules

  • Ran a bake-off across fine-tuned GPT-3.5, Qwen, GLM, and DeepSeek — openings and full conversations scored separately

  • Key finding: the eval caught what mattered, but my own phone test caught what the eval missed (replies passed word caps while still reading like sermons) — so sentence-level conduct rules were added and re-verified

The migration

  • Production inference moved from two fine-tuned GPT-3.5 models to DeepSeek on Fireworks serverless — roughly 20x cheaper per token, faster p50 latency

  • Provider-agnostic model layer: OpenAI ↔ Fireworks swap via environment variables, zero code changes

  • Verified live on-device end to end before flipping production

Persona v3

  • Killed the sermon voice. Shepard now replies short (~36 words average), asks questions, and digs for root causes with the soldier instead of delivering urgency scripts

  • Name usage made deliberately rare via server-side injection — used once in a while, the way a real mentor would

  • Both modes rebuilt: Battle Shepard (tactical debrief) and General Shepard (teaching, Bible Q&A) each with their own conduct rules and evals

Code-enforced crisis referral

  • If a soldier spirals toward despair, referring them to a real person is no longer prompt-hoped — it's enforced in code: detect → re-prompt → append a referral floor

  • Result: 15/15 escalated conversations refer out, zero false triggers

  • Design principle: anything safety-critical gets deterministic enforcement, not model trust

SECTION 5 — Infrastructure & Dev Systems

Purpose: fast iteration + safe testing + persistent state that doesn’t wipe progress.

Oct 25, 2025 — DEV/PROD Environment Separation (Major Infra Update)

  • DEV_SANDBOX flag added in config/flags.js

  • Dev Mode saves to _DEV AsyncStorage keys; Prod saves to normal keys

  • Dynamic keys for battles/sins/stats implemented (e.g., @killsin/battles[_DEV])

  • Automatic production wipe guard added for clean “new-user testing”

DEV / PROD Sandbox Toggle

Oct 25, 2025 — DevTools Suite + Persistence Fix

  • Utilities: wipeDevSandbox, wipeProdData, wipeAllKillSinData, hardResetSandbox/Production

  • Visible “RESET SANDBOX” dev-only button on home screen

  • Persistence fix: hydrated flag prevents streak/XP resets; resetStateToDefaults centralized

  • Per-sin + global stat tracking added (totalConquered, totalUnconquered, current/longest streak, killXP, level)

Aug 2026 — Model Layer, Evals as Regression Tooling, Secret Hygiene

  • Provider-agnostic inference config: model, provider, and API base all env-driven — production can swap between OpenAI and Fireworks without touching code

  • Prompt version stamp logged on every request, so production behavior is always traceable to an exact prompt version

  • The Shepard eval suite doubles as regression tooling — any prompt or model change gets scored before it ships

  • Full secret audit across recent commit history (clean), API key rotation, and verified local dev loop: local backend + Expo Go on-device via LAN for testing changes against the real app before deploy

SECTION 6 — Visual Systems and Progression

Purpose: make growth visible and motivating through ranks + emblems

(Oct 26, 2025 — 9:17 PM) — Ranking Emblem System Progress

Designed a rank-based emblem system to make spiritual growth visible, motivating, and durable over time.

  • Each emblem represents a stage of discipline and consistency, not one-off success. Progression is driven by sustained streaks and repeated victories, reinforcing long-term obedience rather than short bursts of effort.

  • A 10-tier ladder was defined, with each rank symbolizing a deeper level of responsibility and self-mastery:

    • Early ranks (e.g., Recruit, Foot Soldier) reward showing up consistently

    • Mid ranks (Warrior, Knight, Captain) represent reliability under pressure

    • Upper ranks (Commander, Conqueror, Legend) reflect habitual victory

    • Sin Slayer serves as a capstone emblem — a rare, aspirational achievement signaling mastery over a specific sin

      Emblems are designed to feel earned, permanent, and identity-shaping, avoiding reset-heavy mechanics that punish failure.

Ranking Emblems

Final Emblem

Jul 2026 — Typography System

  • Built a central font system with four shipped font families and six named presets (sacred, conquer, comfort, shepherd, achievement, onboarding) — each preset maps every text role (title, body, caption, button, nav)

  • Rolled out across the entire Conquer section: dashboard, all four War Log tabs, sin dossier, debrief, battle survey

  • The detail I care most about: scripture gets its own treatment — the sacred preset renders verse text in Lora with adjusted line-height, because the most important words in the app should be the most readable

Jul 2026 — Home v2: The Command Center

  • Rebuilt Home from a menu screen into a tactical mission dashboard: rank + level header, Today's Mission card (streak, victories, Kill Meter XP), Conquer-primary battle modules, Shepard status card

  • New Profile and Settings screens; dev controls moved off Home into Settings

  • Pinned bottom navigation (Home / War Log / Bible / Profile) anchored via safe-area

  • Unified the tactical grid background across Home and the Conquer dashboard using a shared GridOverlay — then fixed card fills so the grid reads as embedded in the UI, not floating behind it

Aug 2026 — Progression Became Real (Major Update)

  • Until now, progression was cosmetic. This update made it a readout of the actual fight.

  • 10-tier rank ladder (Recruit → Sin Slayer) wired to a real XP curve (100 → 2000 per level)

  • All 22 achievements now compute from real battle history through a pure evaluator — First Victory, Hot Streak, Perfect Week, Resilient, Overcomer, General of Faith — across Basic Training / Active Duty / Elite Commander tiers

  • New fourth tier: Days Free achievements (One Week, One Month, Ninety Days, One Year)

  • Achievement medals replaced placeholder images with in-app vector medals

  • War Log upgraded into a journal of the war: per-enemy filter chips driving Calendar, Records, and Stats together, an 8-week Momentum Chart, and a Days Free readout per tracked enemy

  • Design principle: the rank on Home, the achievements in War Log, and the Days Free counters all read from the same battle log — nothing is decorative, nothing is fake

SECTION 7 — Enemies & Nightly Debrief

Purpose: turn vague sin categories into named, tracked opponents — and rebuild the daily ritual on top of them.

Jul 2026 — The Enemies System (Major Milestone)

  • A soldier no longer fights "Lust" in the abstract — they declare a specific Enemy: the concrete form a sin takes in their life, tracked under one of the seven categories

  • Each Enemy carries a Days Free counter and a grace-framed "report a slip" flow

  • New EnemiesScreen and EnemyDetailScreen, plus a FRONT LINES card on the Conquer dashboard showing active enemies at a glance

  • SoldierProfile — cross-session memory: name, WHY, per-enemy record, vulnerable hour, known triggers, prior debriefs, and Days Free are now injected into every Shepard conversation — so the mentor stops resetting each session and actually knows the soldier over time

Jul 2026 — Nightly Debrief

  • The daily ritual, rebuilt: each night ends with a debrief per enemy — Held the Line (Days Free continues) or Slipped (counter resets — framed as a battle lost, never a verdict on the man)

  • Marks the night complete, updates the streak, and stores a per-enemy summary that feeds both the War Log and Shepard's context

  • Built on the check-in system's night-completion machinery — the ritual survived; the delivery mechanism changed

Aug 2026 — Under Attack: Hold the Line (Major Milestone)

  • Every surface in Kill Sin helped before temptation (dossier, briefing) or after (debrief, war log). Nothing helped during — the 30-to-90-second window where the fight actually happens. This closes that gap.

  • A red UNDER ATTACK entry point on Home and the Conquer dashboard — reachable in one tap when the urge is live

  • The flow is deliberately deterministic-first, AI-second: the soldier's own WHY full-screen (written when he was strong, shown when he's weak) → a hold-the-line interrupt → one concrete physical action (leave the room, phone away, go outside) → then, only if still struggling, a live line to Shepard who already knows the context is an active urge

  • Both outcomes are intel: holds are logged and earn XP — resisting now counts for something visible, not just falls counting against you

  • Design principle: don't make "open an AI chatbot" the intervention. Delay and physical interruption are the evidence-backed moves; AI handles the messy human conversation that remains after them

SECTION 8 — BIBLE SYSTEM

Purpose: put the actual Word inside the app — offline, readable, and wired into progression.

Aug 2026 — Bible System Shipped (Major Milestone)

The content layer

  • The entire Bible (World English Bible translation) bundled in-app as structured JSON — 66 books, all 1,189 chapters. Public domain, no licensing, no network calls: it works on a plane

  • The Version tab is honest about scope: WEB marked ACTIVE, other translations listed as COMING rather than faked

Reading experience

  • Five tabs: Read · A–Z · Highlights · Notes · Version

  • Chapter reader with tappable verses — tap any verse to highlight or attach a note

  • Auto-completion tracking: a chapter counts as read via an explicit "Mark as Read" or automatically when you scroll to the bottom

  • Book detail pages with Summary / Campaign / War Log views — summaries written in the app's voice (battle report, enemy engagement, strategic lessons)

Scripture Campaign — the progression layer

  • A Scripture Campaign card tracks overall % of the Bible read, chapters read, books started, books cleared, and a "continue where you left off" shortcut

  • Full Campaign screen: separate Old and New Testament progress, recent chapters, and 7 reading achievements — from First Chapter all the way to Bible Cleared (all 1,189 chapters)

  • All progression derived from existing reading data — zero new storage keys

The design decision that matters

  • The Bible section was deliberately pulled out of the game UI. Everywhere else, Kill Sin is a war room. The Bible is a reading room — its own quiet, warm, self-contained theme (near-black base, off-white text, a single red accent for headers and progress only). Glowing borders removed entirely

  • The rationale: scripture is not a game surface. The theme is isolated in code so the war-room aesthetic can't leak in

August 2026 — Bible System Update

  • Four translations bundled fully offline — WEB, KJV, BSB, ASV: 66 books, 1,189 chapters each, ~31,102 verses, 17MB of structured JSON, zero network calls

  • Every highlight and note carries a translation stamp and text snapshot — a WEB highlight has no KJV equivalent because the versifications genuinely differ (WEB's Romans has one extra verse slot; preserved intentionally rather than papered over)

  • All 66 book summaries theologically reviewed and locked against regeneration, with eight permanent doctrinal guardrails hard-coded into the summary pipeline

  • Ask AI Shepherd moved into the Bible tab — general-mode Q&A lives where the Word lives

(Nov 19, 2025 — 1:53 AM) — Created the Check-In System (Huge Build)

What exists now (core components)

  • Voice-powered morning & night check-in survey

  • Personalized Check-In Dashboard

  • Dynamic survey generation engine

  • Dedicated Check-In Flow Navigator

  • First-time onboarding survey

  • Record/store/review daily discipline data

A. Voice-Powered Check-In Survey (details)

  • Voice input (app listens), transcription to text, editable responses

  • Dynamic question sets for morning vs night

  • Stored with timestamps in context + AsyncStorage

  • Auto-generated summaries recorded per check-in

  • Streak tracking updates via morning/night completion

B. Check-In Dashboard (what it contains)

  • Shepard status panel, streak indicator, morning/night mission, objective of week

  • Survey editing/customization + consistency meter (14-day visualization)

  • Yesterday’s summary/logs + “Your WHY” panel

  • Dynamic insights placeholder (future behavioral AI)

C. Dynamic Survey Builder

  • Generates questions based on chosen survey style (minimal/balanced/elite)

  • Optional modules (faith, lust, health, productivity, etc.)

  • Splits into morning vs night; saved to context; loaded by engine

D. First-Time Onboarding Flow

  • Welcome screen → Your WHY → style selection → modules → confirmation → transition to dashboard

  • Dev-mode override forces onboarding each time for testing

E. Navigation Architecture

  • New CheckInFlowNavigator keeps onboarding isolated, prevents hijacking rest of app, ensures clean transitions

Why it matters

  • Check-in is the daily discipline ritual; dashboard is the command center

  • Voice interaction increases immersion/engagement and reduces friction

  • Your WHY reinforces motivation; surveys users help design increase stickiness

  • Progress becomes visible data (streaks/meters/summaries/logs)

SECTION 9 — Check-In System (RETIRED — v2)

Purpose: the daily discipline ritual (“spine of the app”)—morning/night voice check-ins, dashboards, and insights.

Status: Archived for v1 — returning in v2.

In July I made the call to gate the voice check-in behind v2. The honest reason: the voice layer required a second OpenAI API key exposed in the client bundle, on top of the Shepard backend — real cost and real complexity for a v1 feature. So the entry point was removed and the voice layer stripped, but the machinery (flow navigator, survey engine, context) is archived intact in the codebase.

The important part: the ritual this system existed to create shipped anyway. The daily accountability moment now lives in the Nightly Debrief (Section 7), built on the Enemies system — typed instead of voice, on top of the same night-completion machinery. Check-in wasn't cut for lack of belief; it was cut because v1 needed the ritual, not the microphone.

(Original build history below, preserved:)

CHECK IN DASHBOARD VERSION 1

VOICE POWERED CHECK IN SURVEY VERSION 1

SECTION 10 — LAUNCH HARDENING & FIRST DEVICE BUILD

Purpose: move Kill Sin from feature development to release-grade — driven by audit, enforced by machinery.

Aug 2026 — The Release Readiness Pass

  • Commissioned a full audit of the tree against a TestFlight bar: 29 issues ranked P0–P2, every finding with file/line evidence. Highest-severity find: the app's access token would silently resolve empty in cloud builds — every AI message would fail, invisible in local dev. Found by audit, not by shipping it.

  • Implemented in 4 phases, ~30 commits: build config; dev isolation (dev flags derived from DEV so release bundles dead-code-eliminate them — verified by grepping compiled Hermes bytecode); a fail-closed server (refuses to boot with missing config, tripwire against retired models, /health observability); and failure visibility (storage-corruption quarantine, request timeouts with typed errors, error boundaries).

  • Testing went from zero automated tests to 510 assertions + a release-flag guard that run inside every build — a build that violates dev isolation now fails instead of shipping.

  • Deliberately deferred the riskiest fix (a timezone day-key migration touching six call sites, where two existing bugs currently cancel each other out) to a reviewed migration plan rather than a late-night patch.

Aug 20, 2026 — First build on real hardware

  • Enrolled in the Apple Developer Program and shipped the first signed iOS build the same night. First build failed at pod resolution — a stray direct dependency conflicting with its own consumer's version pin, invisible for a year in Expo Go because Expo Go never compiles native code. The fix also caught a missing font dependency that would have crashed launch on device. Lesson encoded: first-time integrations fail at the seams, not the centers.

  • Smoke test on device: onboarding, dev tools provably absent, real 24-hour battle clock — all green. Shepard failed with a 404: Fireworks had superseded the production model with a new snapshot. Diagnosed in minutes from /health + live logs (both built earlier that day), fixed with an env var, no rebuild. The observability paid for itself within twelve hours of existing.