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¶
- 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.
- 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.
- Move through the structural shell. The semantic overlay supplies fictional
room names, activity anchors, portal routes, destination capacity, and door
actions without changing
id.svgortour/floorplan.json. - 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.