Project Info
An AI Chief of Staff that helps one meaningful goal survive contact with real life.
Inspiration
Most productivity tools are excellent at the first moment: they create a plan, divide it into tasks, and schedule reminders. The harder moment comes later. What happens when the action is delayed, the method is blocked, the user’s energy changes, or the original commitment no longer fits reality? A static planner usually repeats the same instruction. A general chatbot can discuss the problem, but it may not remember the commitment, notice a pattern, preserve the exact resume point, or return at the agreed time. Time Sovereignty was built for that gap. Its clearest acceptance was unexpectedly small. A user had bought drawing supplies but had not started drawing. She accepted a twenty-minute cup-sketch commitment. A real scheduled check-in returned on her phone, accepted a temporary photo and self-assessment, and GPT-5.6 recognized visible cup structure and the continuous-line approach without pretending to judge more than the evidence showed. She finished a drawing. That small change in real behavior became the product’s reason to exist: not another system that produces plans, but an AI Chief of Staff that stays with the goal when reality changes.
What it does
Time Sovereignty begins with three natural questions: What do you want? When do you want it? Why does it matter? A real GPT-5.6 Goal Architect turns those answers into a specific proposal: the North Star, target window, first milestone, best next action, minimum version for a difficult day, completion criteria, and an appropriate rhythm such as a short sprint, finite project, or ongoing habit. The proposal is not a permanent command. The user reviews it and approves a support agreement covering: check-in rhythm and quiet hours; preferred tone and intervention style; text, photo, and voice progress formats; conditions that should pause support; when firmer follow-up is allowed; what kind of feedback is actually useful. When the action period begins, Cloud Tasks schedules a real follow-up. The private mobile lane can bring that follow-up back through the PWA and, in the final-day V2 branch, through a paired Android channel with FCM escalation and a full-screen incoming check-in. The user can report progress with text, voice transcription, or an ephemeral photo. The system then routes only the Agents the situation requires: Chief of Staff classifies the evidence and chooses the smallest useful response. Goal Architect creates or meaningfully revises the plan. Commitment Recovery joins when the user is blocked, repeatedly delayed, or facing a genuine change in direction. Memory Curator runs after the visible response so memory processing does not add unnecessary mobile latency. Possible outcomes include continuing, reducing the action, rescheduling, recalibrating, retiring a completed goal, or pausing with mercy when the user is sick or handling an emergency. The user sees the structured decision before it is persisted. After confirmation, the system saves an immutable Episode, safe Agent traces, the operational resume point, an appropriately limited memory proposal, and any justified next follow-up. It is a loop, not a one-time answer The core workflow is: goal and consent → scheduled action → real-world evidence → structured judgment → user confirmation → Episode and memory → next intervention Memory is deliberately layered instead of becoming an uncontrolled chat transcript. Immutable Episodes record what happened. Derived summaries are separated into user-level and goal-level memory so one goal cannot contaminate another. Temporary physical or emotional conditions require expiry or later rechecking. One success can create only a tentative Strategy Card; it does not become a permanent claim about the user. In the real two-check-in memory acceptance, a later Chief of Staff call retrieved exactly one relevant Strategy Card, received an explicit LIMITED_EVIDENCE instruction, changed its intervention accordingly, and updated confidence from 0.35 to 0.47 after a later success while preserving tentative status. This is also a Progress Witness and Self-Belief Loop. Recognition is evidence-specific: the assistant explains what visibly worked, asks an optional reflection question when useful, and records the result without manufacturing confidence or generic praise. One product, two proof surfaces Time Sovereignty separates the public evaluator experience from the owner’s private live lane. The original under-three-minute V1 submission video remains the main competition video and truthfully shows the original submission state. The final-day V2 supplemental video documents the protected Android follow-up work completed afterward. Its incoming-call screen is explicitly shown as a native UI replay. That replay demonstrates the interface, choices, stop path, and ring limit; it is not presented as proof that the particular displayed frame was delivered by the cloud. The real cloud-to-phone path is supported separately by redacted server timestamps, physical-device acceptance notes, and protected persistence evidence in the V2 branch. The public Demo Lab is safe for judges to open without an account, credential, API key, or rebuild. The private lane remains owner-only by design. The final day: closing the loop with a real person The final-day V2 work focused on defects found by using the product on a physical phone instead of continuing to polish a script. Voice became an action layer The voice experience previously transcribed the user and read text back. It now supports interruption, retains the relevant conversation context, and merges revisions by meaning. For example, “make it once instead of five” changes the amount, while “do it in ten minutes” changes the timing. Those are two dimensions of one commitment, not two separate commitments. Amount and timing replace prior values; changed circumstances accumulate. When the meaning is genuinely ambiguous, the model must ask instead of guessing. The voice layer is intentionally decisive. An earlier conversational version kept offering alternatives and asking how each one felt. Physical testing showed that this could turn the assistant into another comfortable place to keep deliberating. Time Sovereignty therefore optimizes ordinary intervention calls for a short concrete close: one viable action, a clear confirmation, then go do it. Explanations can still be complete when the user asks for them. It can address a real knowledge gap When a spoken question depends on external or current facts, the voice layer can invoke a bounded look_up tool. The result names sources and describes weak or conflicting evidence honestly. Search is opt-in and capped at two calls per spoken session. It is not used to search for the user’s own goal, history, or personal memory; the product already owns that state. Research results also remain separate from personal memory. It knows the limits of its hands Earlier plans sometimes told the user to set several phone alarms or maintain a repetition counter, even though those interfaces did not exist. The planning boundary now states both what the product can do and what it must not promise. The app can schedule and return its own check-in, escalate through the private Android channel, and process a response. It must not claim that it created phone alarms, calendar entries, or unsupported counters. The “next action” must be the physical action the user performs, not administrative work the assistant should have handled. Failures now explain themselves A goal whose end date had passed could not create another follow-up. The backend rejected the request correctly, but the mobile button appeared to do nothing. That reason now reaches the user in plain language instead of becoming a silent failure. Redacted, test-accelerated physical acceptance On 2026-07-21, Chloe completed a controlled physical acceptance with a real phone and a real glass of water. To finish the full escalation path within the judging window, the private Cloud Run revision used CATCH_V2_TEST_ESCALATION_SECONDS=15. This was an explicit test acceleration, not the intended production cadence. The design cadence is measured in minutes; the fifteen-second override must be removed before ordinary post-competition use. The redacted server timeline was: The final persisted state was CONFIRMED, with memory disposition DEFER, completed curation, no recorded error, and two safe Agent traces. The user drank the water. The assistant recognized the completed action, stored limited evidence, and moved on instead of continuing to nag. This acceptance was physical and end to end, but the public evidence is intentionally redacted. It does not expose the device credential, FCM token, API key, raw private reply, prompt, photo, or private reasoning. How GPT-5.6 is used GPT-5.6 is the structured decision brain of the live product. The backend requests gpt-5.6 through the OpenAI Responses API with strict Zod schemas, store: false, and zero automatic SDK retries. Recorded live calls returned gpt-5.6-sol. GPT-5.6 creates goal plans, classifies progress evidence, determines when Recovery is necessary, proposes adapted commitments, produces bounded memory observations, and returns decisions the application can validate before persistence. gpt-realtime-2.1 has a narrower role. It is activated only when the user starts the live voice experience. It provides the interruptible spoken conversation and transcription layer. It is not invoked for every application request, and it does not replace GPT-5.6 as the structured decision boundary. Developer mode exposes safe operational evidence such as provider, returned model, schema status, token usage, trace identifiers, record identifiers, and deployment revision. It excludes raw prompts, private reasoning, secrets, media, and raw user replies.
How we built it
The mobile-first application uses Next.js, React, TypeScript, Zod, and Vitest. The live backend runs on Google Cloud Run in asia-east1. Cloud Tasks signs callbacks with Google OIDC. Firestore transactions store sessions, check-ins, leases, immutable Episodes, derived memory, and safe traces. Secret Manager supplies the OpenAI key only to the dedicated runtime identity. The Android V2 channel uses protected one-time pairing, Android Keystore storage, FCM data messages, bounded notification escalation, and a visible permanent stop control. Incoming sound and vibration have a hard thirty-second limit, and reopening or leaving the native app stops app-owned alerts. Idempotency is enforced through deterministic task names, one queue attempt, transactional leases, reply identities, completed receipts, and a separate memory-curation lease. Cloud Run is capped during judging, and the OpenAI SDK performs no automatic retries. How the development tools were used Codex was the primary engineering environment from the clean repository through the core agent architecture, state machines, provider contracts, PWA, Cloud Run and Cloud Tasks path, Firestore schemas, protected Android channel, deployments, tests, and evidence chain. Chloe supplied the product intent, performed physical acceptance, and repeatedly challenged assumptions when the interface or AI behavior did not make human sense. When the primary Codex quota was exhausted on the final day, Claude Code continued from a documented handoff rather than recreating the project from conversation memory. It repaired defects found during live use, added the conversation-summary and bounded lookup paths, tightened capability and voice boundaries, and recorded the final physical acceptance. The handoff and resulting commits are preserved in the repository. This distinction is deliberate and documented: Codex was the primary build environment; Claude Code performed a bounded final-day continuation; GPT-5.6 and, only when voice was invoked, gpt-realtime-2.1 are the product’s runtime models. Challenges A polished mock can hide a broken loop. Physical testing found stale installed-PWA code, ignored replies, an expired-goal silent failure, a return-to-PWA navigation defect, and a client schema that allowed fewer safe traces than the server could validly return. Cloud acceptance is not phone acceptance. An FCM provider receipt was never treated as proof of visible ringing or full-screen Android behavior. Device UI outcomes were checked separately. Memory can overgeneralize. Episodes, user memory, goal memory, confidence, effectiveness, expiry, and user confirmation had to remain separate. A persuasive assistant can become manipulative. Quiet hours, pause conditions, bounded escalation, a permanent stop path, and explicit consent are part of the product contract. Voice can become another form of procrastination. The interaction was shortened around a concrete commitment instead of optimized for engagement. Retries can multiply both cost and side effects. Queue and SDK retries, Firestore leases, task naming, and read-after-write recovery had to be designed together. Accomplishments A real phone journey turned unused drawing supplies into a completed cup sketch. A later real check-in retrieved limited memory and updated its effectiveness without promoting it to permanent truth. A protected Android lane reached a physical phone with bounded sound, vibration, full-screen choices, and an always-visible stop path. A redacted final-day run connected Cloud Tasks, Realtime voice, Android response, GPT-5.6 decision, user confirmation, Episode persistence, memory, and follow-up state. Four strict structured Agent contracts maintain mock/live parity. The original V1 submission checkpoint passed 125 routine tests with 9 deliberate live-only tests skipped. The final-day V2 branch passed 215 tests with 10 deliberate live-only tests skipped, plus TypeScript, ESLint, production build, Android build, and targeted physical acceptance. The public Demo Lab provides a one-click evaluator story while making zero OpenAI API calls and reading no private state.
What we learned
Longitudinal AI is a systems problem before it is a prompting problem. The useful unit is not one impressive answer. It is a trustworthy loop across consent, state, time, evidence, recovery, memory, cost, and the next real action. We also learned that recognition is functional. Specific, truthful feedback can help the user believe the next action is possible. But memory must earn confidence through repeated outcomes, not convert one success into a permanent personality claim. Finally, “finding the user” is valuable only when the assistant also knows when to stop. Reachability without consent is surveillance; persistence without an exit is coercion. The product needs both hands: enough presence to protect the commitment, and enough restraint to return control immediately. Try it Open the public Demo Lab: Read the explicit scripted and zero-API boundary. Run the full thirty-day story. Open Journey to inspect delay, recovery, progress, memory, and recalibration. Open Developer to inspect the schema-validated mock traces. Then watch: Original V1 submission video Final-day V2 supplemental video Public MIT repository Final-day V2 source branch The owner-only live lane is intentionally not exposed as a public guest account. Judges do not need a credential or API key to inspect the public proof.
What's next
The immediate post-submission release task is to remove the fifteen-second escalation override and restore a humane production cadence. After the judging snapshot is preserved, the original public branch and private V2 branch can be integrated carefully into one later product line. Longer real-world pilots can then measure which interventions genuinely help different users continue, which memories remain useful, and when an assistant should reduce, recalibrate, pause, or disappear. Future adapters may include wearables, smart speakers, calendars, and richer research support—but only behind the same consent, trace, memory, and stop boundaries.
Time Sovereignty
An AI Chief of Staff that protects a meaningful goal when real life interrupts.
Built with Codex for OpenAI Build Week 2026. GPT-5.6 is the product's structured decision brain—not a decorative chat box.
- Public 30-day Demo Lab: https://live-mobile---time-sovereignty-defqnamrrq-de.a.run.app/demo
- Under-three-minute submission video: https://youtu.be/d0cX1V4R7h4
- Final-day V2 supplemental video (56 seconds): https://youtu.be/XPdfnJ6klu0
- Final-day V2 source and evidence snapshot: https://github.com/rainingsnow0914tw-ship-it/time-sovereignty-2026/tree/codex/v2-private
- Stable app: https://time-sovereignty-defqnamrrq-de.a.run.app
- Source: https://github.com/rainingsnow0914tw-ship-it/time-sovereignty-2026
- License: MIT
- Primary Codex
/feedbackSession ID:019f6085-1e4d-7e23-a0b8-371e6e47bbfa
mainpreserves the original V1 submission shown in the primary video. The labelledcodex/v2-privatebranch documents the protected Android follow-up completed on the final day without replacing the accepted V1 baseline.
Why this exists
Most productivity tools are good at making the first plan. They are much less useful when the action is delayed, the method is blocked, the user's energy changes, or the original goal no longer fits reality.
Time Sovereignty treats those moments as information instead of failure. It keeps the North Star, current commitment, consent boundaries, progress evidence, learned strategies, and exact resume point connected over time.
The clearest real-world acceptance was unexpectedly simple: a user who had bought art supplies but had not started drawing accepted a 20-minute cup-sketch commitment. The physical Android PWA brought the check-in back, accepted a real photo and self-assessment, and GPT-5.6 recognized the visible cup structure and the user's continuous-line approach. The user finished a drawing. The photo was an ephemeral model input and was not stored.
What works
- Three-question onboarding with a real GPT-5.6 Goal Architect.
- Goal-led cadence: short sprint, finite project, or ongoing habit—never a forced thirty-day plan.
- Editable support agreement covering quiet hours, tone, channels, pause conditions, progress formats, and consent for firmer follow-up.
- Real Cloud Tasks check-ins with Google OIDC, open-PWA polling, text, photo, voice transcription, standard TTS, and user-started Realtime voice.
- Need-based Agent routing: Chief of Staff, Goal Architect, Commitment Recovery, and post-response Memory Curator.
- Immutable Episodes plus user-scoped and goal-scoped derived memory.
- A Progress Witness and Self-Belief Loop that gives evidence-specific recognition without turning one success into a permanent claim about the user.
- Safe Developer traces with provider, returned model, schema, token usage, record IDs, and revision—never raw prompts, media, secrets, or private reasoning.
- A separate, public
/demothat compresses a clearly scripted thirty-day illustration story without calling any API or reading the private session.
Real product vs. scripted proof
| Surface | Purpose | Provider and data boundary |
|---|---|---|
| Private Android journey | Real onboarding, scheduled check-in, photo/voice/text reply, GPT-5.6 decision, confirmation, memory, and follow-up | Real Cloud Run, Cloud Tasks, Firestore, GPT-5.6; one paired device; server-side key |
Public /demo | Show the longitudinal Day 1→30 story in under two minutes | Browser-only scripted fixtures; every trace says mock; no /api/*, Firestore, key, or private data |
| Routine tests | Fast, deterministic contract development | Mock provider behind the same strict Zod schemas |
| Recorded evidence | Prove finalized live contracts and cloud behavior | A small number of deliberate real calls, zero SDK retries |
This separation is deliberate. The competition story is fast to inspect, while the real user path remains private and cannot expose Chloe's phone session or the project API key.
Architecture
flowchart LR
USER["One paired phone"] --> PWA["Next.js PWA\nGoal · Check-in · Progress · Developer"]
PWA --> RUN["Cloud Run · asia-east1\nmin/max 1 · concurrency 1"]
RUN --> TASKS["Cloud Tasks\nOIDC · 1/sec · 1 concurrent · 1 attempt"]
TASKS --> RUN
RUN <--> DB["Firestore\ncheck-ins · Episodes · layered memory · safe traces"]
RUN --> SECRETS["Secret Manager\nOpenAI key · pairing · session signing"]
RUN <--> GPT["Responses API · GPT-5.6\nstrict Zod · store false · retries 0"]
PWA <--> VOICE["gpt-realtime-2.1\nuser-started ears and voice"]
DEMO["Public Demo Lab\nscripted · browser-only · no API"] -. "same local schemas" .-> PWA
The action state machine and intervention state machine remain independent. Idempotency is enforced at task name, reply ID, transactional lease, completed receipt, and curation lease boundaries.
How GPT-5.6 is used
The application requests gpt-5.6 through the official Responses API. The
provider returned gpt-5.6-sol in the recorded live runs.
- Goal Architect turns three natural answers into a specific goal plan and defensible cadence.
- Chief of Staff reads current evidence and relevant limited memory, then selects the smallest useful Agent path and returns one structured decision.
- Commitment Recovery joins only when a report is blocked, repeatedly delayed, or directionally changed.
- Memory Curator runs after the user-facing decision so curation does not add mobile latency. It may create a tentative Strategy Card; durable user conclusions still require an explicit user choice.
The required two-check-in memory acceptance used two Chief calls and two
post-response Curator calls, 5,447 tokens total, with zero SDK retries. The
second check-in retrieved exactly one relevant Strategy Card, treated it as
limited evidence, and updated confidence from 0.35 to 0.47 after one later
success while preserving TENTATIVE status.
gpt-realtime-2.1 is a separate, user-started ears/mouth layer. It transcribes
and speaks; GPT-5.6 remains the structured decision brain.
How Codex built it
Codex was the primary engineering environment from clean repository to real phone acceptance. Chloe supplied the product intent and challenged assumptions; Codex implemented, deployed, tested, and maintained the evidence chain.
Codex accelerated the project by:
- translating the PRD and architecture into strict domain schemas, two state machines, four Agent contracts, and mock/live provider parity;
- creating dated decision records before large scope changes and a lightweight
AGENTS.md+docs/PROJECT_STATE.mdhandoff system for long-session safety; - provisioning and inspecting Cloud Run, Firestore, Cloud Tasks, IAM/OIDC, Secret Manager, budgets, and tag-only preview revisions through GCP CLI;
- driving physical Android acceptance through ADB while keeping human judgment for audio quality, photo meaning, and product experience;
- finding production-only defects that local happy paths missed: Firestore REST serialization, swallowed PowerShell JSON, missing standalone task protos, a three-trace client bound, Realtime token cutoff, stale installed-PWA code, completed-journey dead-end, and server/phone hydration timezone mismatch;
- recording every real model call, token count, revision, test result, failure, and repair instead of presenting the final code as a one-prompt artifact.
The chronological proof is in the Codex build log, decisions, and evidence.
Safety, privacy, and cost controls
- The OpenAI key exists only in ignored local configuration and Cloud Secret Manager. It never reaches JavaScript, the PWA, a URL, or the repository.
- Private access uses a signed HttpOnly/Secure/SameSite=Strict cookie, exact origin allowlist, single-device revocation, and a 96-hour session with a seven-day schema maximum.
- Photos are sent only as ephemeral model input. Persisted evidence contains structured kinds and decisions, not raw media or raw replies.
- OpenAI SDK retries are zero. Cloud Tasks uses one attempt, one dispatch per second, one concurrent dispatch, deterministic names, and transactional duplicate suppression.
- Cloud Run stays in
asia-east1with minimum one, maximum one, and container concurrency one during judging. - The public Demo Lab made zero
/api/*requests in both local production and Cloud Run browser acceptance.
Try it without rebuilding
Open the public Demo Lab:
- Read the explicit scripted/no-API boundary.
- Press Run full 30-day story.
- Open Journey to see delay, recovery, memory, progress, and calibration.
- Open Developer to inspect all four schema-validated mock traces.
The private live phone path intentionally requires a one-time pairing code and is not offered as a public guest account. Its real behavior is documented in the evidence files and demonstrated in the submission video.
Run locally
Requirements: Node.js 20+ and npm.
npm ci
npm test
npm run lint
npm run typecheck
npm run build
npm run dev
Then open http://localhost:3000/demo. The Demo Lab and routine test suite do
not need an OpenAI API key.
Live provider checks are deliberately separate and potentially billable:
npm run smoke:openainpm run test:live:goal-architectnpm run test:live:check-innpm run test:live:memory-curatornpm run test:live:phase4-contracts
Do not run them casually. They require OPENAI_API_KEY in ignored local
configuration and preserve zero automatic SDK retries.
Current verified state
- 125 routine tests passed; 9 deliberate live-only tests skipped.
- ESLint, TypeScript, production build, and diff check passed.
- Private memory acceptance revision:
time-sovereignty-00036-qov. - Accepted Demo Lab revision:
time-sovereignty-00038-zey,live-mobiletag, 0% normal traffic. - Stable revision:
time-sovereignty-00024-dih, 100% normal traffic. - Public Demo Lab: HTTP 200, Day 30, mock trace visible, zero
/api/*, zero framework overlays, zero console errors at 390×844.
Evidence map
- Real focus loop and ephemeral photo
- Real multimodal Android correction
- Real memory learning loop
- Cloud Demo Lab browser acceptance
- Live Goal Architect contract
- Realtime Android voice acceptance
- Full dated build log
Honest limitations and next steps
- Real check-in polling currently requires the PWA to remain open near the due time; background push and lock-screen vibration are future integrations.
- The public evaluator path is scripted and local-only by design. A rate-limited live Guest Lane was cut to protect submission time and private data.
- Web Search remains behind a provider interface and was not allowed to delay memory acceptance or submission.
- Future versions can add wearables, smart speakers, calendar/email adapters, and richer research support behind the same consent, trace, and memory boundaries.
Submission package
Copyright © 2026 Chloe. Released under the MIT License.
Analysis
View
Metric
- 46
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- Next.jsIn code
- OpenAIIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
6 of 6 appear in the indexed code.
AI coding agents
- CodexConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
840 KB
Source files
165
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
rainingsnow0914tw-ship-it/time-sovereignty-2026
195 files · 1.8 MB · @ 41a889a
Structure
Interface
6 files · 3%Screens, components and styles rendered to the user.
API & routing
9 files · 5%Request entry points: routes, handlers and controllers.
Application logic
48 files · 25%Domain rules, services and shared utilities.
+1 moreBackground jobs
3 files · 2%Work run outside a request: tasks, workers and schedules.
Data & schema
2 files · 1%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript65%
- Markdown34%
- CSS0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 18- @google-cloud/firestore
- @google-cloud/tasks
- google-auth-library
- next
- openai
- react
- react-dom
- zod
- +10 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.