Skip to content

Living-office vertical slice

Goal

Deliver one complete browser-owned week inside the reconstructed office. The player embodies Jesse Rourke, works toward a playable deadline, talks to nearby colleagues, watches five autonomous founders follow schedules and route through the suite, and sees work, relationships, outside pressure, artifacts, D&D, and the office itself change through validated events.

The release is a finite simulation engine rather than a one-conversation demo. It deliberately remains client-only and bounded: the browser owns all durable truth and physical presentation, while optional providers can propose only strictly typed conversation or Curator material.

User journey

  1. Enter Suite 666: A Living Office. The pre-entry Model Setup panel can configure providers, but exploration remains usable with deterministic local behavior and no keys.
  2. Begin or resume a stored seven-day run at Day 1, 9:00 AM. Jesse is the player; the other five founders are visible autonomous characters when present.
  3. Move through the structural shell. The semantic overlay supplies fictional room names, activity anchors, portal routes, destination capacity, and door actions without changing id.svg or tour/floorplan.json.
  4. Inspect the HUD and task drawer. Move Jesse to an eligible task's semantic anchor, focus it to accelerate the authoritative clock, or sleep to the next day.
  5. Approach an available founder and start a proximity conversation. The browser chooses participants from room, distance, visibility, audibility, presence, and interruptibility before building the request. Typed input always works; optional browser speech recognition can fill the same bounded draft.
  6. Deterministic dialogue or DeepSeek returns bounded beats and proposals. The browser rejects stale or invalid output, translates accepted material into finite events, compare-and-appends the batch, and then updates the world. Captions remain primary, with optional browser synthesis for coworker beats.
  7. In the background, schedules, needs, movement, tasks, deadlines, exterior events, weather, music, D&D, and one daily Curator plan advance from the same clock. A remote Curator request holds advancement for no more than 35 seconds before deterministic local planning takes over.
  8. Introduce, hire, or decline Donna only through the dedicated twice-confirmed browser control. A candidate waits at the threshold; a hire follows an authored route to reception and joins regular office scheduling.
  9. Complete the required features by Day 7 to finish the weekly build and launch the fixed 4 by 3 Relay Run playable at the build terminal.
  10. Optionally request the versioned Donna concept prompt. MiniMax returns Base64 that is bounded, fully decoded, structurally checked, natively decoded, and displayed only in memory.

Implemented systems

System Release contract
Campaign Seven days; Day 1 starts at 9:00 AM; Day 7 is a hard clock boundary
Time One browser clock, normally one simulated minute per real second; focused work defaults to 20x
Cast Jesse as player, five autonomous founders, Donna as optional staff
Work Prerequisite tasks, ownership, collaboration, progress, blockers, artifacts, milestone, and weekly build
People Presence, schedules, needs, expression, interruptibility, relationships, commitments, and memories
Space Nine fictional semantic rooms, authored anchors, portal graph, reservations, door actions, and bounded routes
Conversation Proximity-selected participants, deterministic fallback, optional DeepSeek, strict projection into events
Speech Optional browser recognition into the bounded draft and synthesis of captioned coworker beats
Curator One run-local daily seed and bounded plan, optional DeepSeek hook, deterministic timeout/error fallback
Outside Weather, traffic, exterior events, day/night projection, delivery evidence, and observable-room limits
Office Room purposes, placards, inventory, collision props, artifacts, campaign table, and build terminal
Audio Browser-authored daily music genomes projected into the ambient engine
Persistence Versioned localStorage event log, snapshots, replay, expected-head append, corruption discard, and compaction
Lifecycle BFCache suspend/resume and terminal disposal abort provider work and stop runtime authority

Boundaries

The release intentionally excludes:

  • a server, account system, cloud save, or server-side credential store;
  • private model calls for every actor;
  • app-owned microphone recordings, persisted speech audio, or speech-only controls;
  • generated JavaScript, shaders, HTML, or executable scene descriptions;
  • generated mesh insertion;
  • model-selected coordinates, routes, door operations, DOM changes, or network requests;
  • imported character, furniture, or generated mesh assets;
  • cross-run Curator memory;
  • a guarantee that Donna is hired.

Composition

main.ts
├── structural office, world, weather, traffic, and audio
├── presentation controller
└── living-office release
    ├── versioned event store, reducer, invariants, and replay
    ├── clock, schedules, tasks, navigation, and Curator runtime
    ├── deterministic or DeepSeek conversation services
    ├── optional DeepSeek Curator and MiniMax image adapters
    ├── procedural cast, furniture, props, placards, and artifacts
    └── accessible HUD, task, conversation, setup, and playable views

Presentation owns modal leases, focus, player movement, and audio suspension. The simulation owns event authority, time, scheduling, provider orchestration, and world projection. Navigation owns its semantic graph, reservations, and door requests. Provider modules know nothing about A-Frame, coordinates, props, or DOM structure.

Failure behavior

Failure Required behavior
No text key Keep deterministic conversation and local Curator planning active
CORS/network Preserve state and use local Curator fallback; foreground action reports a bounded error
Curator timeout Abort at the authority deadline and create the deterministic daily plan
Foreground timeout/abort Stop waiting and append no conversation events
Invalid or stale text output Reject the proposal before compare-and-append
Event-head conflict Leave both persisted log and published projection unchanged
Corrupt stored run Discard that run safely and create a fresh versioned run
Storage unavailable Continue with an explicit memory-only warning
Blocked or invalid image Keep the reviewed built-in portrait and store no generated data
BFCache navigation Suspend time, abort provider/image work, cancel synthesis, then resume without hidden catch-up
Terminal page exit Dispose runtime, stage, world, audio, speech recognition, requests, and listeners

Completion criteria

The repeatable release gate includes type checking, unit tests, simulation and static validators, isolated development and production-composition browser tests, both Vite builds, the strict MkDocs build, and assembled-site validation. Immutable-image and public route checks complete deployment verification. Paid provider calls are manually authorized evidence, never part of pnpm run validate, pnpm run build, deployment, or an ordinary browser suite.