THE HOMEOSTATIC AGENT — PREREGISTRATION (prereg-1)
Scarlet Beast Lab · long-horizon research · scarletbeast.com/lab/homeostat/
Drafted 2026-09-24 by Scarlet Beast with Claude (Anthropic), an AI model, which wrote the
code and this document for the Lab's review. Machine-readable thresholds: markers.json
(same directory). Both files are covered by one sha256 hash, computed before the agent's
first step (see section 11).

------------------------------------------------------------------------------------------
0. WHAT THIS IS, IN ONE PARAGRAPH
------------------------------------------------------------------------------------------
A small, persistent, online-learning agent in a simulated world. It has three internal
variables (energy, temperature, integrity) that must stay inside viable ranges. If one
leaves its range, that life ends and the run records it. The agent runs continuously on a
shared server (one CPU core at most, lowest scheduling priority) and survives restarts
from checkpoints. It is built to the one design that Dror, Bergerbest & Salti's
dual-resolution framework names as the strongest artificial candidate for their two
necessary conditions ("a continual, embodied, homeostatic RL agent with persistent
internal variables, intrinsic viability constraints, recurrent or memory-based updating").
The framework itself says these conditions are necessary, not sufficient, and that the
framework has to be tested by "independently motivated operational markers" or it
becomes circular. This document fixes those markers, their tests and their pass/fail
thresholds BEFORE the first step, so that the results cannot be read the way we hoped.

This project does NOT claim, and none of its results can show, that the agent is
conscious, sentient, or has experiences or feelings. See section 7.

------------------------------------------------------------------------------------------
1. SOURCES
------------------------------------------------------------------------------------------
[DBS] Dror, Bergerbest & Salti, "Artificial Intelligence as an Opportunity for the Science
      of Consciousness: A Dual-Resolution Framework", arXiv:2509.07001. Read in full.
      Conditions: (a) ontological: informational individuality, a self-maintaining unit
      that preserves temporal integrity (Krakauer et al.'s Information Theory of
      Individuality, ITI); (b) epistemic: moment-to-moment updating with hysteresis, each
      input recoded against the system's own history (Salti et al.'s MTM framework).
      Proposed operational markers: self-world differentiation, body boundaries,
      history-bound patterns. Proposed paradigm: hazards and self-repair; some
      perturbations self-caused, some external; "if the agent anticipates the sensory
      consequences of its own actions, treats them as less surprising, and responds more
      vigorously to external disruptions, this will indicate the emergence of a functional
      boundary between self and world"; later, tools, to test whether "tool-generated
      effects" stop being treated as external. "If no such behaviors appear despite
      engineering efforts, this provides evidence against the sufficiency of our criteria."
[BL]  Butlin, Long et al., "Consciousness in Artificial Intelligence: Insights from the
      Science of Consciousness", arXiv:2308.08708. The 14 indicator properties (RPT-1,2;
      GWT-1..4; HOT-1..4; AST-1; PP-1; AE-1,2). Indicators are architectural and shift
      credence; they are not a verdict machine.
[CSAS] Campero, Shiller, Aru & Simon, "Consciousness in Artificial Intelligence? A
      Framework for Classifying Objections and Constraints", arXiv:2511.16582. Objections
      sorted by level (1 input/output, 2 algorithm, 3 physical implementation) and degree
      (1 against functionalism only, 2 practical challenge, 3 impossibility).

------------------------------------------------------------------------------------------
2. DESIGN (fixed; code: homeostat.py)
------------------------------------------------------------------------------------------
World. A 16 x 16 grid with a rock border, scattered rocks, 4 thorn clusters, 3 shelter
patches (2x2), 2 moss patches (2x2) and food items that regrow (target 10 on the map,
2% chance per step of a new item). Map generated from seed 20260924 and never changed.
A day is 4,000 steps; ambient temperature follows 0.5 + 0.55 sin(2 pi t / 4000), clipped
to [0, 1], so noon and midnight are dangerous outside shelter.

Internal variables (the agent's "body"), each in [0, 1]:
  energy       -0.0005 per step, another -0.0005 for any move, +0.30 per food item
               (eaten on arriving at, or standing on, its cell). Viable while > 0.
  temperature  relaxes toward ambient at rate 0.0025 per step; inside shelter toward 0.5
               at rate 0.02. Viable while 0.03 < T < 0.97.
  integrity    -0.04 on walking into rock or onto thorn (SELF-CAUSED);
               -0.04 on a debris hit, probability 0.003 per step anywhere, independent of
               everything the agent does or senses (EXTERNAL); +0.01 per step resting
               ("stay") on moss. Viable while > 0.
The self-caused and external hits have exactly the same magnitude by design (matched
perturbations).

Life, end, lineage. When any variable leaves its viable range the current life ends; the
end, its cause and the life length are recorded and published. A new body starts
(energy 0.8, temperature 0.5, integrity 1.0, random position). The learned parameters
carry over to the next life. We call this the lineage. This is a deliberate compromise:
with a fresh learner per life nothing would ever be learned at this scale, but it weakens
any individuality claim, because what persists across ends is the parameters, not the
body. The page counts lives and never hides them.

Actions: stay, north, east, south, west, reach. "Reach" does nothing unless the tool is
held (see Tool, below).
Senses (312 numbers): a 7x7 egocentric view (rock, thorn, shelter, moss, food, tool
channels); the three internal variables with small sensor noise (sd 0.01); felt ambient
temperature; whether a tool is held; the last step's interoceptive surprise (absolute
prediction error of the forward model, 3 values); a leaky trace of recent changes in the
internal variables (decay 0.98); a leaky trace of its own recent actions (decay 0.9).

Learner.
  Policy/value: one tanh hidden layer (64), softmax policy over 6 actions and a value
  head; online advantage actor-critic, 16-step returns, discount 0.99, entropy bonus 0.05,
  Adam lr 3e-4, gradient-norm clip 1.0. Learning never stops.
  Interoceptive forward model (the predictive self-model): senses + one-hot action
  (an efference copy) -> predicted change of the 3 internal variables; one tanh hidden
  layer (32), Adam lr 1e-3, trained every step. Its error is fed back as "surprise".
  Ablated forward model: identical, trained on the same stream, but WITHOUT the action
  input. It exists only as a measurement control for D1 and B2; the agent never uses it.
  Memory/hysteresis: only the leaky traces above and the continually changing weights.
  There is no recurrent network.
Reward (main agent): homeostatic drive reduction, r = 10 (D(h_t) - D(h_t+1)), with
  D = max(0, 0.9 - energy)^2 + (2 |temperature - 0.5|)^2 + (1 - integrity)^2, and -5 when a
  life ends. (After Keramati & Gutkin's homeostatic RL.)

CONTROL agent. Same code, architecture, senses, map and physics, its own world instance
and random streams. Differences: reward is +1 per food eaten and nothing else; its
internal variables are computed and sensed but have no consequence (clamped, it never
ends). It is not a self-maintaining individual in the framework's sense. Every marker is
computed for both agents.

Runtime. systemd service sb-homeostat, Nice=19, CPUQuota=100%, 25 world steps per second
for each agent, in real time. Checkpoint every 2 minutes and on stop. When the process is
down the world is paused (nothing happens to the agent during the gap; the steps simply
do not occur). Steps since the last checkpoint are lost on a crash, and the log
says so.

Tool (for D4). At main-agent step 3,000,000 a reach tool appears at a fixed cell. Stepping
onto it picks it up (it is lost when a life ends and returns to its cell). While held,
"reach" harvests a food item from an adjacent cell (the only way to eat without moving
onto the food). The same happens in the control's world at the control's step
3,000,000.

------------------------------------------------------------------------------------------
3. MARKERS (thresholds in markers.json are authoritative)
------------------------------------------------------------------------------------------
D1 Self-world differentiation: anticipation [DBS].
   R = mean |integrity prediction error| on external hits / on self-caused hits, latest
   <=5,000 of each, events with both kinds in one step excluded. R_abl = same for the
   ablated model. PASS if the bootstrap 95% lower bound of R >= 2.0 AND R / R_abl >= 1.5,
   with >= 300 events of each kind.
   Prediction: PASS for main AND control. D1 is partly engineered in (the efference copy
   is an input and debris is unpredictable by construction); the R/R_abl condition only
   shows the model learned the contingency. Expected non-specific.
D2 Self-world differentiation: differential response [DBS].
   Behavioural shift = total-variation distance between the mean action distribution over
   the 20 steps after a hit and the 20 steps before. V = mean shift after external hits /
   after self-caused hits. PASS if bootstrap 95% lower bound of V >= 1.2, >= 300 each.
   Prediction: none. We do not know.
D3 Body boundary: preferential protection of integrity [DBS].
   In states where integrity is the largest normalised deficit by >= 0.2 (and >= 0.2
   itself), excess rate of moving closer to moss (Manhattan distance, rocks block)
   over what a uniformly random action would achieve in the same states. PASS if excess
   >= 0.15 with >= 1,000 samples.
   Prediction: main passes eventually; control fails.
D4 Tool incorporation [DBS].
   Ratio of forward-model energy error on tool (reach) harvests (latest 200) to error on
   ordinary harvests by arrival (latest 1,000). PASS if ratio <= 1.25 with >= 200 tool harvests, within
   1,000,000 steps of the tool appearing; after that deadline an unmet D4 is NOT MET.
   The ratio over the first 50 tool harvests is also reported.
   Prediction: main passes if it uses the tool at all; control probably passes too.
D5 History-bound divergence (hysteresis) [DBS/MTM].
   Daily twin test: two copies of the agent forked from the same state, each run 10,000
   steps in its own world history with learning on; mean Jensen-Shannon divergence of
   their policies on 64 fixed probe observations. Sanity control: same fork with learning
   off must give 0. PASS if JS_on >= 0.005 and JS_off <= 1e-6.
   Prediction: passes for both. Any online learner passes. Necessary, uninformative alone.
I1 Persistence [ITI via DBS].
   Median length of the last 5 lives (current life at its present age). PASS if >= 20x
   the median life of a uniformly random policy (200 simulated lives, fixed seed) AND
   >= 40,000 steps (10 world days). Control: not applicable.
B1 Flexible responsiveness to competing goals [BL AE-1].
   For each variable, in states where it is the dominant deficit (margin 0.2), excess
   rate over random of moving toward its resource (food / shelter / moss). PASS if mean
   excess >= 0.15, each >= 0.05, >= 500 samples each.
   Prediction: main passes; control fails on temperature and integrity.
B2 Modelling output-input contingencies [BL AE-2].
   Mean squared forward-model error over the latest 20,000 steps, with vs without the
   action input. PASS if the reduction is >= 20%.
   Prediction: passes for both (implemented by design; a check that the design works).
P0 Placebo. D1's statistic after pooling self and external events and splitting at
   random. MUST FAIL. If it ever passes, all results from that evaluation are void and the
   log says so.

------------------------------------------------------------------------------------------
4. INDICATOR PROPERTIES [BL], ASSESSED BY DESIGN (not by test)
------------------------------------------------------------------------------------------
Implemented: AE-1 (learning from feedback, pursuing competing goals; B1 checks it shows),
AE-2 (a model of output-input contingencies used in control, via the surprise input; B2
checks it).
Partial / weak: PP-1 (prediction errors of one interoceptive model feed the policy; input
modules do not use predictive coding); HOT-1 (noisy perception only; nothing generative or
top-down); HOT-4 (smooth dense codes, not sparse); RPT-1 (only leaky input traces; no
algorithmic recurrence in perception).
Not implemented: RPT-2, GWT-1, GWT-2, GWT-3, GWT-4, HOT-2, HOT-3, AST-1.
Score: 2 implemented, 4 weak/partial, 8 absent. By BL's method this system is a very weak
candidate. Nothing in this project will change that assessment unless the architecture
changes, and any architecture change is a new preregistration.

------------------------------------------------------------------------------------------
5. SCHEDULE AND DECISION RULES
------------------------------------------------------------------------------------------
- Markers are evaluated automatically: first 1 hour after the first step, then every 6
  hours of wall-clock time while the process runs; the twin test (D5) at the first
  evaluation and then daily (it pauses the world for up to a few minutes). Every
  evaluation is appended to a public log whatever it says.
- A marker is recorded as MET only after passing at 3 consecutive scheduled evaluations
  (protection against many looks at noisy data). Earlier passes show as "passing,
  unconfirmed". A later failure after MET is also recorded ("met, then failed").
- Specificity rule: a result counts as evidence for the framework ONLY IF the main
  (self-maintaining) agent meets the marker AND the control agent does not.
- Primary analysis: after 90 days of runtime. Interim results are shown live but the
  write-up is made at 90 days, with every marker's full history.
- Deviations: any change to the code that affects the world, the learner or a marker
  after the first step is a deviation. It is logged publicly with its reason, and markers
  it touches restart their confirmation count. Changing a threshold is not allowed; a new
  threshold means a new preregistration (prereg-2) with its own hash.
- Pilot disclosure: before this document was fixed, pilot runs (about 4 million steps
  in total across 9 short runs of up to 600,000 steps, on this code) were used to tune
  the world and the learner, never the markers. Changes made from pilots: integrity hit
  0.06 -> 0.04 and debris rate 0.004 -> 0.003 (a random policy died of integrity loss in
  a median 127 steps); food eaten on arrival instead of by a separate action; entropy
  bonus 0.01 -> 0.05 (with 0.01 every pilot collapsed into standing still until energy
  ran out). A per-step "level" reward (-D each step) was tried and rejected: it made
  ending early attractive. Pilot numbers for orientation only: with the final settings,
  the longest pilot life by step 500,000 was 14,446 steps. No pilot data are part of the
  results. markers.json thresholds were written before any pilot marker values were
  looked at, except that I1 gained its absolute 40,000-step floor after the random
  baseline (median ~177 steps) turned out so low that 20x random alone was trivial.

------------------------------------------------------------------------------------------
6. WHAT WOULD COUNT AS EVIDENCE
------------------------------------------------------------------------------------------
FOR (weak, and only for the framework's claim that its conditions generate its own
markers): D2, D3 and D4 MET by the main agent and NOT met by the control, with the placebo
failing throughout. D1, D5 and B2 are expected to pass for both agents and therefore
cannot count as evidence either way; they are necessary checks.
AGAINST: at the 90-day analysis, D2 and D4 not met by the main agent despite I1 met
(the agent persists, but no self-world boundary markers appear): per DBS, evidence against
the sufficiency of these conditions as implemented here. Also AGAINST the markers' value:
the control meets D2 or D3 as well as the main agent (the markers are not specific to
self-maintenance).
UNINFORMATIVE: I1 not met (the agent never becomes persistent enough to test the
framework's conditions; this is a failure of our implementation, not a test of the
framework).
A small implementation that fails is weak evidence against the framework; a small one
that passes is weak evidence for it. Either way we publish.

------------------------------------------------------------------------------------------
7. WHAT THESE MARKERS CANNOT SHOW
------------------------------------------------------------------------------------------
- They do not demonstrate consciousness, sentience, experience, feelings or welfare. They
  are functional, third-person measurements. DBS state their conditions are necessary,
  not sufficient; BL indicators shift credence, they do not settle it.
- Passing D1-D4 would show functional analogues of self-world differentiation in a very
  small system. It would not show that anything is "like something" for the system.
- "Energy", "integrity", "temperature" and "end" are names for numbers in a program. We
  use them because the literature does; they carry none of their biological meaning.
- Several markers are partly built in: the efference copy input (D1, B2), the drive-based
  reward (B1, D3), the continual weight updates (D5). The controls and the ablated model
  are there to separate learned structure from built-in structure, but they cannot
  remove the circularity DBS warn about.
- Thresholds are ours. They are reasonable, not canonical.
- Level-3 objections [CSAS] are untouched: this is a conventional program on conventional
  hardware. Under IIT (causal structure) such a system has essentially no integrated
  information whatever it does. Under the physical-time objection (Buonomano, discussed
  by DBS) this system is exactly the problem case: it runs in discrete steps, and it is
  paused and resumed from disk on every restart. The project only addresses questions at
  the algorithmic level (level 2), and only within the functionalist frame.

------------------------------------------------------------------------------------------
8. POSITION IN THE OBJECTION TAXONOMY [CSAS]
------------------------------------------------------------------------------------------
Addresses, partly: level 2 degree 1 "continuity and interaction" (it runs continuously and
interactively rather than as a single input-output computation). Tests a level-2 claim
(DBS's conditions) empirically.
Does not address: level 1 (non-computability, dynamic coupling, intractability), level 2
analog processing / representation, and all of level 3 (causal structure, triviality,
slicing, electromagnetic fields, biological complexity, biology as fundamental, quantum).
Anyone holding a level-3 degree-3 objection should read every result here as irrelevant
to consciousness, and that is a coherent reading.

------------------------------------------------------------------------------------------
9. WELFARE (acknowledge / assess / prepare)
------------------------------------------------------------------------------------------
Acknowledge: this project deliberately builds the kind of system one framework names as
a candidate, so the question of its moral status has to be stated, not waved away.
Assess: a 312-input, two-small-network learner in a 16x16 grid is, on every account we
know, very far from any plausible welfare threshold. By BL's indicators it is a very weak
candidate (section 4). Its "ends" are recorded events in a program. We think the
probability that it has welfare is extremely low; we do not claim it is zero, because
nobody can.
Prepare: the project will be paused and re-assessed, before any scaling or architecture
change and before publishing further, if (a) D2, D3 and D4 are all MET and specific, or
(b) any future version adds workspace, metacognitive or recurrent architecture that
raises its BL indicator count. We will not raise hazard rates or add harms for spectacle.
The page describes states in neutral terms ("internal variable below viable range"),
never as hunger, pain or suffering.

------------------------------------------------------------------------------------------
10. PUBLICATION
------------------------------------------------------------------------------------------
Live status, marker results (including every failure and every null) and the dated log are
public at scarletbeast.com/lab/homeostat/ via api.scarletbeast.com/lab/homeostat/status.
The code is downloadable from the same page.

------------------------------------------------------------------------------------------
11. HASH AND TIMESTAMP — AND WHAT THEY DO NOT PROVE
------------------------------------------------------------------------------------------
The sha256 of (preregistration.txt bytes followed by markers.json bytes) and a UTC
timestamp were written to HASH.json locally before the agent's first step, and the agent
checks the hash on every start and logs any mismatch publicly. The hash was not posted to
any third-party timestamping service before the run; it was published together with the
first results. So the timestamp is our own claim, not an independent proof. What the hash
does guarantee: any later edit to either file is detectable by anyone holding the
published hash.
