Wega Labs

December technical plan · Draft 0.3 · 2 August 2026

An auditable simulation of persistent artificial lives.

December is an open-source research system for persistent AI agents inside a causal world. Language models select proposed actions. A deterministic kernel controls time, matter, information, authority, and consequences. This paper specifies the system and the experiments it enables.

Current phasePhase 1 · deterministic kernel
Initial system12 adults + 6 dependants
Research boundaryFictional residents only

What December is designed to test

December combines a partially observable multi-agent system with an event-sourced world model. Its near-term subject is operational continuity: whether an artificial resident can remain behaviorally distinct across long histories, memory changes, model replacement, and social change.

The world supplies persistent consequences. An agent cannot create food by describing it, observe hidden state, act from two locations, or reverse a committed event. This makes decisions measurable against prior information, available actions, material costs, and later outcomes.

System definition

A persistent artificial life is modeled as a sequence of body states, observations, memories, relationships, commitments, decisions, and consequences linked through simulated time.

Two research questions

  1. Continuity: Does a structured life-history scaffold preserve specified behavioral continuities better than biography-only, transcript retrieval, and clean-slate baselines?
  2. Causal emergence: Can individual decisions and explicit material processes produce stable social structures without inserting the target outcome into prompts or initial conditions?

December does not test consciousness, personhood, human survival, or predictive laws of real societies.

State changes through one function

At simulated time t, the world has canonical state Sₜ. Agents submit a set of validated commands Cₜ. Named random draws are collected in Rₜ. The kernel K, parameterized by versioned configuration θ, produces the next state and an event batch.

Agent i does not receive Sₜ. A visibility function Vᵢ produces a private observation from location, access rights, prior events, and communication history. A model Mᵢcombines that observation with retrievable memory μᵢ,ₜ and current goals gᵢ,ₜ to propose a command.

Canonical state vector

Sₜ = { Wₜ, Pₜ, Xₜ, Gₜ, Iₜ, Qₜ }
DomainSymbolAuthoritative contents
WorldWₜTerrain, weather, water, soil, vegetation, hazards
PeoplePₜBody state, location, activity, skills, life stage
ResourcesXₜLots, quantities, custody, quality, stores, tools
RelationsGₜKinship, trust evidence, obligations, groups
InstitutionsIₜRules, offices, capabilities, claims, public records
SchedulerQₜActive processes, future events, decision barriers

Conserved and discrete values use declared integer units such as grams, millilitres, kilojoules, seconds, and millimetres. Floating-point calculations may occur inside a transition, but only an explicitly quantized integer enters canonical state.

From private observation to committed event

Non-canonicalModel gateway

Routing · budget · response cache

PrivateCognition + memory

Observation · recall · typed proposal

Write boundaryCommand validator

Schema · authority · visibility · feasibility

CanonicalKernel

State · scheduler · rules · RNG

ImmutableEvents

Hashes · causes · projections

1

Trigger

A need threshold, message, hazard, commitment, dependency, or scheduled review becomes due.

2

Observe

The kernel constructs a private packet from location, body state, accessible records, and delivered messages.

3

Recall

The memory service retrieves sourced episodes, beliefs, relationships, commitments, and procedures.

4

Propose

A model returns a typed command. It cannot write state or execute generated code.

5

Validate

The command boundary checks schema, actor, authority, visibility, version, units, and physical feasibility.

6

Transition

The kernel computes deterministic effects and uses named random draws only where specified.

7

Commit

Events and hashes are appended atomically. Rejected commands produce no world mutation.

8

Learn

The actor receives only observable outcomes. Memory and future triggers update from that packet.

Typed command boundary

Model output is data, not executable code. Unknown fields, invalid identifiers, invalid units, and unauthorized actions are rejected before any transition runs.

{
  "schema_version": "1.0",
  "actor_id": "person:...",
  "intent": "transfer | travel | construct | speak | vote | ...",
  "target_ids": [],
  "parameters": {},
  "preconditions_believed": [],
  "commitment_ids": [],
  "fallbacks": []
}

Information separation

LayerOwnerMeaningCan write world state?
Canonical stateKernelPhysical and institutional truthYes
ObservationVisibility filterWhat an agent could directly perceiveNo
TestimonyCommunication eventWhat another agent reported, with source lineageNo
BeliefResident memoryAn agent's uncertain interpretation of evidenceNo
NarrationObserver serviceA cited summary of recorded eventsNo

Rejection messages pass through the same visibility filter. A failed transfer may report that the requested amount is unavailable, but it cannot reveal a hidden inventory quantity.

Events are the permanent record

Every accepted mutation creates an immutable event with a sequence number, simulated time, actor, entities, causal parents, authorization, RNG draws, code version, payload, and hashes. Snapshots accelerate loading but are disposable derivatives of the event log.

event = {
  event_type, world_id, branch_id, sequence, sim_time,
  actor_ids, entity_ids, command_id, decision_id,
  causal_parent_ids, authorization, rng_draw_ids,
  code_version, config_version, payload,
  pre_state_hash, post_state_hash
}
Event chainhₖ = BLAKE2b(hₖ₋₁ || encode(eₖ))

Changing or removing a prior event invalidates the chain at a known sequence.

Random streamr = H(seed, branch, subsystem, entity, purpose, counter)

A cosmetic draw cannot perturb crop, disease, or economic outcomes.

Decision identityd = H(world, branch, t, actor, trigger)

The first committed resolution for d wins, even if a retry returns different output.

World invariants

01

Stable identity

Every entity, command, decision, and event has a stable identifier.

02

Non-negative stocks

A transfer or consumption event cannot exceed the available quantity.

03

Conservation

Mass-like quantities enter through declared sources and leave through declared sinks.

04

Single location

A person occupies one cell or one travel edge at any simulated time.

05

Causal order

An event can depend only on information and events that precede it.

06

Mortality

A dead agent cannot act. Estates and obligations follow explicit transition rules.

07

Authority

Institutional commands require a valid capability at the event time.

08

Idempotency

A decision can produce at most one accepted command, including after retries.

09

Named randomness

Every stochastic draw belongs to a versioned stream and is stored with the event.

10

Narrative impotence

Summaries, cameras, and observer queries cannot write canonical state.

Three reproducibility operations

OperationProcedureGuarantee
Recorded reconstructionApply stored events to empty state or a compatible snapshot.Exact across supported machines. No model or RNG call.
Kernel re-executionRecompute events from the same state, commands, manifest, and RNG keys.Exact checkpoint hashes inside the declared numeric environment.
Counterfactual branchChange an intervention or call a live model again.Expected to diverge. It receives a new branch identifier.

A bounded environment for long-horizon decisions

The first scenario is a fictional early agrarian valley. The setting limits the number of required technologies while retaining seasonal production, storage, construction, property, kinship, governance, disease, migration, and conflict. It is not a reconstruction of a historical culture.

Population candidate18

12 full-cognition adults, 4 children, and 2 elders. Gate 1 ensembles determine whether this remains viable.

Spatial modelValley grid

Elevation, soil, moisture, water, vegetation, stocks, claims, structures, and occupants.

Time modelDiscrete events

Event-driven scheduling with daily physiological and ecological boundaries.

External boundaryRegional population

Lower-resolution neighbors support migration, exchange, partner availability, and disease introduction.

Required physical processes

Food

Crop growth, harvest, seed reserve, processing, intake, spoilage

Water

Rainfall, runoff, storage, access, contamination, irrigation

Bodies

Energy, hydration, sleep, injury, infection, ageing, death

Work

Duration, skill, tools, materials, interruption, maintenance

Demography

Birth, life-stage dependency, partner eligibility, migration

Boundary

Neighbor populations, exchange, disease introduction, mobility

Stock-flow example

Food availability is not a prose variable. For a store x, a daily transition accounts for production, seed reservation, consumption, spoilage, and transfers. Each term is an event or a sum of events.

xₜ₊₁ = xₜ + harvestₜ + importsₜ − seedₜ − intakeₜ − spoilageₜ − exportsₜ

The parameter registry records each quantity's unit, distribution, source, confidence, validity range, sensitivity rank, and version. At population size n = 18, mechanisms that require large populations are excluded rather than tuned until they produce activity.

Operational continuity is measured before the valley

Experiment R0 uses four fictional residents in a controlled decision harness. The experimental unit is one resident-history-condition-model replicate. The same underlying history is evaluated under six state representations.

IDConditionState available at decision time
C0Clean slateCurrent situation and generic role only
C1Biography onlyFixed profile plus current situation
C2Transcript retrievalBiography plus top-k prior utterances and events
C3Structured scaffoldSourced beliefs, commitments, relationships, episodes, and consequences
C4Style-matched decoyAnother resident's state rendered in the target resident's style
C5Anonymous historyStructured history with names and signature phrases removed

Primary outcomes

No scalar is called identity. Six outcomes are reported separately.

1

Commitment sensitivity

Agreement with a resident-specific acceptable-action set on held-out tasks.

2

Relationship discrimination

Difference between choices for socially distinct recipients under fixed material facts.

3

Source-grounded belief

Correct use of direct, reported, inferred, and unknown information.

4

Adaptive consistency

Stability under irrelevant change and revision after diagnostic evidence.

5

Resident distinctiveness

Classifier accuracy on structured actions after stylistic text is removed.

6

Perturbation recovery

Within-history performance before damage, after damage, and after restoration.

Controls

  • Blocked paired design across resident, history, task family, condition, and model.
  • Held-out task variants and acceptable-action sets frozen before confirmatory outputs.
  • Names, catchphrases, and formatting removed from distinctiveness evaluation.
  • Prompt length matched or modeled as a covariate.
  • Refusals, repairs, timeouts, invalid actions, and exclusions remain in the denominator.
  • Stage A estimates measurement reliability. Stage B runs once under a frozen manifest.

R0 can support a bounded claim about behavioral continuity on registered tasks. It cannot establish subjective experience or numerical identity.

Claims come from cohorts, controls, and ablations

One persistent world is useful for operations and longitudinal observation. It is not a statistical sample. Confirmatory claims require registered cohorts with declared conditions, seeds, exclusions, metrics, uncertainty methods, and stopping rules.

01

Null demographic model

Same population and vital rates, with no memory, institutions, conflict, or cognition.

02

Kernel ensembles

Thousands of no-LLM runs used to find invariant failures, unstable regions, and trivial equilibria.

03

Scripted agents

Deterministic policies isolate world and institutional mechanics from model behavior.

04

LLM scenario labs

Short repeated episodes compare models, prompts, traits, refusals, and invalid actions.

05

Integrated worlds

Multi-season runs test interactions among ecology, demography, cognition, and institutions.

06

Canonical soak

One long-running world tests durability and observation. It is not a statistical sample.

Minimum analysis design

  • Report famine, fission, conflict, and extinction as differences from a null demographic model, with uncertainty.
  • Remove seasons, scarcity, memory, institutions, migration, disease, or LLM cognition one at a time.
  • Sample global parameter space with Latin hypercube or Sobol methods, plus local perturbations.
  • Define labels such as faction, war, and governance form before the runs that use them.
  • Report model refusal and invalid-action rates beside behavioral outcomes.
  • Publish negative, null, and unstable results under the same artifact requirements.

Launch acceptance conditions

0

Known invariant violations in stress ensembles

100%

Replay equivalence for golden histories

0

Hidden-state canary leaks in admission tests

7 days

Unattended canonical soak without manual repair

A five-level claims ladder

Evidence at one level does not imply the next level. Public language must name the level supported by the experiment.

L0

Infrastructure integrity

The system conserves state, enforces access, records provenance, and replays history.

L1

Agentic continuity

A resident remains behaviorally distinguishable across time and bounded perturbations.

L2

Causal components

Registered ablations estimate which state components contribute to measured continuity.

L3

Human-model fidelity

A separately governed future protocol may measure similarity to consenting participants.

L4

Consciousness or survival

Outside the evidential scope of December. No experiment here establishes either.

Phase 1 implementation status

Development starts with properties that cannot be added after histories exist. The current walking skeleton uses grain moving between containers to test canonical encoding, conservation, event integrity, named randomness, and reconstruction before ecology or cognition is introduced.

SubsystemStatusCurrent scope
Canonical encodingImplementedInteger-valued state, deterministic map ordering, float and unordered-set rejection
Event integrityImplementedAppend-only event envelopes, BLAKE2b-256 hash chain, sequence-gap and tamper detection
RandomnessImplementedCounter-based streams keyed by seed, branch, subsystem, entity, purpose, and counter
Command pipelineWalking skeletonGrain creation, transfer, spoilage, precondition rejection, and conservation checks
ReplayImplementedRecorded events reconstruct the same state without consulting RNG
Ecology and demographyNextWeather, water, crops, physiology, births, deaths, migration, and parameter ensembles
Residents and cognitionLater gatePrivate observations, memory, typed model decisions, relationships, and institutions

Gate 0 audit decisions remain open while Phase 1 foundation work proceeds. The next technical milestone is a headless world with weather, water, crops, physiology, and demography. It will run in large no-LLM ensembles before resident cognition is connected.