VA.2026.018 · Floor 01 · hall 13
“a person is a body with a schedule; the engine's job is to keep both honest.”
VA-Tick holds a body rather than a story. Five bars — stamina, mood, hunger, focus, location — advance one step at a time, and every other exhibit that needs a person behaving plausibly borrows this body instead of inventing one. A micro-activity is only offered when the body can sustain it; sleep, decay, and hunger close the doors that enthusiasm would otherwise walk through.
The important design decision is absence. Nothing about a specific persona lives here: the character registry is injector-only, so names, occupations, and habits arrive as data from the caller. The engine speaks in neutral types and per-domain taxonomy tags, which is why one household chore is not offered to an office shift and why a dependent's day never inherits adult deep work.
The clock is the quiet centre of the room. A service measures how much simulated time passed between touches, so a gap of hours is answered with hours of consequences rather than a single shrugged step. Most of the module's revisions were corrections of that arithmetic — and of how the package is built, since serverless runtimes trace only what they can resolve.
VA.2026.018
VA-Tick
Agent State Engine · Micro-Activity Taxonomy · Routine & Emotion · TypeScript Library
Base engine: state bars, decay, step transitions, seeded randomness, and a routine template that a body can follow without a plan.
A simulated clock service measures emptiness between touches — a long absence becomes many steps instead of one amnesiac jump.
Persona-specific state and profile names were generalised; the engine stopped assuming one subject and became installable anywhere.
Micro-activities gained per-domain profile tags; household tasks were placed in the right block and care-giving confined to the home domain. Hardcoded seed data removed — the registry is injector-only.
Module convention settled and build output published, after a short disagreement about whether serverless tracers want source or dist.
concepts — kept & discarded
kept — engine holds a body, caller holds an identity
rejected — a persona shipped inside the library
held — richer inner states and a shared clock across a household
archive ref — VA.2026.018/CON
cross ref — timeline fig. 01
curator annotations
a schedule without a body is a wish; a body without a clock is a loop.
an engine that knows someone's name cannot be lent to anyone else.
the build is a promise to the runtime that will trace it.
| materials | stamina, mood, hunger, focus, location · micro-activity taxonomy · routine templates · desire scoring · emotion labels · inner-state mapping · sleep and decay · simulated clock · injector-only registry · packaged output | dimensions | version — 0.1.0 · commits — 10 · built in — 7 days · state bars — 5 · emotion labels — 14 · hardcoded personas — 0 |
|---|---|---|---|
| condition | v0.1.0 · 10 commits · injector-only registry · packaged dist · clock service live | acquired | Oct 2026 |
| revision | Rev. A | archive location | DWG-018 · floor Floor 01 |
| internal reference | VA.2026.018/M | origin | split out of a single-subject simulation into a reusable engine, Oct 2026 |
failed experiments
an early build shipped with one persona's seed inside the library, so every caller inherited the same body. Removed in favour of injection.
exports moved from dist to source and back again — a runtime that traces only resolvable entry points decides this, not taste.
a household task appeared inside an office block because the first tags were too broad; domain tags now narrow each pool.
draft concepts
research notes
— bars beat prose for state: numbers can be decayed, prose can only be rewritten.
— an injector-only registry is the difference between an engine and a fixture.
— elapsed simulated time must be an input, never an assumption inside the step.
Behaviour that ignores hunger, sleep, and place is a puppet with a script. The engine's first duty is to make those constraints real enough that the schedule has to negotiate with them.
Identity belongs outside the engine. Neutral types and an injected registry let one body serve many personas without ever learning who they are — which is also why nothing here needs to be redacted.
A step never assumes how long it has been. Elapsed time arrives from a clock service, and absence is paid for in state rather than skipped — the smallest rule that keeps a simulation from feeling convenient.
within the collection
future vision
The engine stays small and unowned. A shared household clock, richer inner states, and a common taxonomy across rooms are sketched — but the boundary is fixed: bodies here, identities elsewhere.