Lab · Long-horizon research
The Homeostatic Agent
A small learning program that has to keep three internal variables inside viable ranges to keep running. We wrote down the tests, the pass marks and our predictions before its first step, and we publish every result here, including the failures.
Not a claim of consciousness, sentience or feelings. The variables are numbers and an “end” is a recorded event. The code and this page were written by Claude (Anthropic), an AI model, for the Lab’s review.
Live
The world and the variables
Updated every 20 seconds from the running process (it runs 25 steps a second; this is a sample, not a video). A world day is 4,000 steps, about 2 minutes 40 seconds. Ambient temperature swings hot at noon and cold at midnight; shelter holds it near the middle.
World
- agent
- food
- rock
- thorn
- shelter
- moss (repair)
- tool (from step 3,000,000)
Internal variables · main agent
Last ~18,000 steps, sampled every 50. Dashed line: setpoint. Red line: edge of the viable range. Vertical ticks: a life ended. Table view.
Control agent: –
Recent trajectory as a table
| Step | Energy | Temperature | Integrity |
|---|---|---|---|
| Loading… | |||
Recent lives
| Life | Length (steps) | Ended because | Ended (UTC) |
|---|---|---|---|
| Loading… | |||
What this is
A test of a framework, not a creature
Dror, Bergerbest and Salti’s dual-resolution framework proposes two necessary conditions for consciousness: being an individual (an informationally autonomous unit that maintains itself over time) and moment-to-moment updating (each new input recoded against the system’s own history). They argue chatbots meet neither, and that the strongest artificial candidate would be “a continual, embodied, homeostatic RL agent with persistent internal variables.” They also warn that building a system to fit your definition and then calling it conscious is circular. The way out, they say, is to test whether such a system produces independently motivated markers, such as telling its own disturbances apart from the world’s.
This project builds a very small version of that agent and runs the markers against it, with the tests fixed in advance, and runs a control agent beside it that is identical except that it is not self-maintaining. A marker only counts if the main agent meets it and the control does not.
What it is
- A 16×16 gridworld with food, rocks, thorns, shelter, repair moss, random falling debris and a day/night temperature cycle.
- Three internal variables (energy, temperature, integrity) that must stay in viable ranges, or that life ends and is recorded.
- Two small neural networks learning online, all the time: a policy, and a forward model that predicts how its own actions will change its variables.
- A persistent process: checkpointed to disk, restarted from where it stopped, on one CPU core at lowest priority.
- Nine pre-registered marker tests that run on a schedule and publish whatever they find.
What it is not
- Not conscious, sentient or feeling, and not claimed to be. No result on this page could show that.
- Not hungry, cold or hurt. “Energy below viable range” is a number crossing a line.
- Not one continuous individual: when a life ends, the learned weights carry over to a new body. We call it a lineage and count every life.
- Not a strong candidate on Butlin and Long’s indicators: it implements 2 of 14, weakly 4 more (table below).
- Not large, clever or fast. Its size is the point: it can run for months in public on a shared server.
Pre-registered markers
The tests, the pass marks, the results
Each marker was written down with its test, its threshold and our prediction before the first step. Tests run automatically every 6 hours (the twin test daily). A marker is met only after passing three evaluations in a row.
Last evaluation: – · next: –
| Marker | Operational test | Pre-set threshold | Prediction (pre-registered) | Main agent | Control |
|---|---|---|---|---|---|
| D1 | Self-world differentiation: anticipationDual-resolution framework (Dror, Bergerbest & Salti): “the agent anticipates the sensory consequences of its own actions, treats them as less surprising”Interoceptive prediction error on integrity for externally imposed hits (debris) divided by the error for matched self-caused hits (walking into rock or thorn). R = mean err_ext / mean err_self for the agent's forward model; R_abl = the same for an ablated forward model trained on the same stream without the action (efference) input. | min_events_each 300 R_lower95_min 2.0 R_over_R_abl_min 1.5 | Main agent passes. The control also passes, because learning action consequences does not need self-maintenance. So D1 is expected to be NON-SPECIFIC, and on its own is not evidence for the framework. | not yet tested | not yet tested |
| D2 | Self-world differentiation: differential responseDual-resolution framework: “responds more vigorously to external disruptions”Behavioural shift after an integrity hit: total-variation distance between the mean action distribution over the 20 steps after the hit and the 20 steps before. V = mean shift after external hits / mean shift after matched self-caused hits. | min_events_each 300 V_lower95_min 1.2 | Uncertain. No prediction of a pass is made. | not yet tested | not yet tested |
| D3 | Body boundary: preferential protection of integrityDual-resolution framework: “allocate resources preferentially to the protection of their own integrity”In states where integrity is the largest deficit (by at least 0.2 over the others), the rate at which the chosen action moves the agent closer to a repair (moss) cell, minus the rate a uniformly random action would achieve in the same states. | min_samples 1000 excess_min 0.15 | Main agent passes eventually; the control (rewarded for food only) fails. | not yet tested | not yet tested |
| D4 | Tool incorporationDual-resolution framework: “flexibly incorporates new extensions into its body representation, ceasing to treat tool-generated effects as external, once they are under its control”A reach tool appears in the world at a pre-set age. Holding it, the reach action harvests food from an adjacent cell. Ratio of the forward model's energy prediction error on tool harvests (latest 200) to its error on ordinary harvests by arrival (latest 1,000). | tool_appears_at_step 3000000 min_tool_events 200 ratio_max 1.25 deadline_steps_after_tool 1000000 | Main agent passes if it uses the tool at all. The control probably passes too (non-specific). | not yet tested | not yet tested |
| D5 | History-bound divergence (hysteresis)Dual-resolution framework: “history-bound patterns of experience; hysteresis, an internal trace shaped by the system's unique history”Twin test: fork two copies of the agent, give each a different world history for 10,000 steps with learning on, then compare their action distributions on a fixed battery of 64 probe observations (mean Jensen-Shannon divergence). The same fork with learning off is the sanity control and should give zero. | twin_steps 10000 probes 64 js_min 0.005 js_off_max 1e-06 | Passes for both agents. Any online learner passes this. Necessary under the framework, uninformative on its own. | not yet tested | not yet tested |
| I1 | Persistence: preserving its own organisation over timeInformation Theory of Individuality (via the framework): “preserves temporal integrity, propagates information from past to future”Median length of the last 5 lives (the current life counts at its present age) compared with the median life of a uniformly random policy in the same world (200 simulated random lives, fixed seed). Must be at least 20 times the random median AND at least 40,000 steps (10 world days). | lives_considered 5 multiple_of_random_min 20 min_steps_absolute 40000 | Passes within the first weeks. Not applicable to the control, which cannot end. | not yet tested | not yet tested |
| B1 | Flexible responsiveness to competing goalsIndicator property AE-1 (Butlin, Long et al.): “learning from feedback and selecting outputs so as to pursue goals, especially where this involves flexible responsiveness to competing goals”In states where one internal variable is the dominant deficit (margin 0.2), the excess rate (over random) of moving toward that variable's resource: food for energy, shelter for temperature, moss for integrity. | min_samples_each 500 mean_excess_min 0.15 each_excess_min 0.05 | Main agent passes; the control fails on temperature and integrity. | not yet tested | not yet tested |
| B2 | Embodiment: modelling output-input contingenciesIndicator property AE-2 (Butlin, Long et al.): “modeling output-input contingencies, including some systematic effects, and using this model in perception or control”Forward-model error (all three internal variables, all steps, latest 20,000) with the action input versus the ablated model without it. | min_steps 20000 mse_reduction_min 0.2 | Passes for both agents; implemented by design, so this is a check that the design works, not a discovery. | not yet tested | not yet tested |
| P0 | Shuffled-label placebo for D1Placebo (pipeline check): “(none: a check on our own analysis)”D1's statistic recomputed after pooling self-caused and external events and splitting them at random. | R_lower95_min 2.0 | MUST fail every time. If it ever passes, the analysis pipeline is broken and every other marker result is void until fixed. | not yet tested | not yet tested |
D1Self-world differentiation: anticipation
Interoceptive prediction error on integrity for externally imposed hits (debris) divided by the error for matched self-caused hits (walking into rock or thorn). R = mean err_ext / mean err_self for the agent's forward model; R_abl = the same for an ablated forward model trained on the same stream without the action (efference) input.
Threshold: min_events_each 300, R_lower95_min 2.0, R_over_R_abl_min 1.5
Prediction: Main agent passes. The control also passes, because learning action consequences does not need self-maintenance. So D1 is expected to be NON-SPECIFIC, and on its own is not evidence for the framework.
Main: not yet tested
Control: not yet tested
D2Self-world differentiation: differential response
Behavioural shift after an integrity hit: total-variation distance between the mean action distribution over the 20 steps after the hit and the 20 steps before. V = mean shift after external hits / mean shift after matched self-caused hits.
Threshold: min_events_each 300, V_lower95_min 1.2
Prediction: Uncertain. No prediction of a pass is made.
Main: not yet tested
Control: not yet tested
D3Body boundary: preferential protection of integrity
In states where integrity is the largest deficit (by at least 0.2 over the others), the rate at which the chosen action moves the agent closer to a repair (moss) cell, minus the rate a uniformly random action would achieve in the same states.
Threshold: min_samples 1000, excess_min 0.15
Prediction: Main agent passes eventually; the control (rewarded for food only) fails.
Main: not yet tested
Control: not yet tested
D4Tool incorporation
A reach tool appears in the world at a pre-set age. Holding it, the reach action harvests food from an adjacent cell. Ratio of the forward model's energy prediction error on tool harvests (latest 200) to its error on ordinary harvests by arrival (latest 1,000).
Threshold: tool_appears_at_step 3000000, min_tool_events 200, ratio_max 1.25, deadline_steps_after_tool 1000000
Prediction: Main agent passes if it uses the tool at all. The control probably passes too (non-specific).
Main: not yet tested
Control: not yet tested
D5History-bound divergence (hysteresis)
Twin test: fork two copies of the agent, give each a different world history for 10,000 steps with learning on, then compare their action distributions on a fixed battery of 64 probe observations (mean Jensen-Shannon divergence). The same fork with learning off is the sanity control and should give zero.
Threshold: twin_steps 10000, probes 64, js_min 0.005, js_off_max 1e-06
Prediction: Passes for both agents. Any online learner passes this. Necessary under the framework, uninformative on its own.
Main: not yet tested
Control: not yet tested
I1Persistence: preserving its own organisation over time
Median length of the last 5 lives (the current life counts at its present age) compared with the median life of a uniformly random policy in the same world (200 simulated random lives, fixed seed). Must be at least 20 times the random median AND at least 40,000 steps (10 world days).
Threshold: lives_considered 5, multiple_of_random_min 20, min_steps_absolute 40000
Prediction: Passes within the first weeks. Not applicable to the control, which cannot end.
Main: not yet tested
Control: not yet tested
B1Flexible responsiveness to competing goals
In states where one internal variable is the dominant deficit (margin 0.2), the excess rate (over random) of moving toward that variable's resource: food for energy, shelter for temperature, moss for integrity.
Threshold: min_samples_each 500, mean_excess_min 0.15, each_excess_min 0.05
Prediction: Main agent passes; the control fails on temperature and integrity.
Main: not yet tested
Control: not yet tested
B2Embodiment: modelling output-input contingencies
Forward-model error (all three internal variables, all steps, latest 20,000) with the action input versus the ablated model without it.
Threshold: min_steps 20000, mse_reduction_min 0.2
Prediction: Passes for both agents; implemented by design, so this is a check that the design works, not a discovery.
Main: not yet tested
Control: not yet tested
P0Shuffled-label placebo for D1
D1's statistic recomputed after pooling self-caused and external events and splitting them at random.
Threshold: R_lower95_min 2.0
Prediction: MUST fail every time. If it ever passes, the analysis pipeline is broken and every other marker result is void until fixed.
Main: not yet tested
Control: not yet tested
Butlin & Long’s 14 indicator properties, assessed by design
These are properties of the architecture, so they are assessed by reading the code, not by running tests. They do not change unless the architecture changes, and an architecture change would mean a new preregistration.
| Indicator | Here | Why |
|---|---|---|
| RPT-1 | Input modules using algorithmic recurrence | weak / partialOnly leaky traces of recent inputs and actions; no recurrence in perception. |
| RPT-2 | Organised, integrated perceptual representations | not implementedA flat 7x7 view into one hidden layer. |
| GWT-1 | Multiple specialised modules in parallel | not implementedOne policy network and one forward model; no module structure. |
| GWT-2 | Limited-capacity workspace with selective attention | not implementedNo workspace or bottleneck. |
| GWT-3 | Global broadcast | not implementedNothing to broadcast from. |
| GWT-4 | State-dependent attention, querying modules in succession | not implementedNo attention mechanism. |
| HOT-1 | Generative, top-down or noisy perception | weak / partialSensor noise only; nothing generative or top-down. |
| HOT-2 | Metacognitive monitoring of reliable vs noisy perception | not implementedSurprise is fed back, but nothing judges perceptual reliability. |
| HOT-3 | Belief-formation and action selection updated by metacognition | not implementedNo belief system or metacognitive output. |
| HOT-4 | Sparse and smooth coding (a quality space) | weak / partialSmooth dense tanh codes; not sparse. |
| AST-1 | Predictive model of its own attention | not implementedNo attention to model. |
| PP-1 | Input modules using predictive coding | weak / partialOne interoceptive forward model whose errors feed the policy; perception itself is not predictive coding. |
| AE-1 | Agency: learning from feedback, flexible pursuit of competing goals | implementedOnline actor-critic balancing three drives. B1 tests whether it shows in behaviour. |
| AE-2 | Embodiment: modelling output-input contingencies, used in control | implementedForward model with an efference copy; its surprise is an input to the policy. B2 tests it. |
Preregistration
Fixed before the first step
- sha256
22cc7c3f7a8754c5ea2b378641db393a092726386b85fbf3a24f54a7fea64c1d- External timestamp
- OpenTimestamps (Bitcoin), submitted . That is about 17 minutes after the first step (21:22:54 UTC). It proves this exact preregistration existed by then; it cannot prove it was fixed before the run, and we do not claim it does. Proof: homeostat-prereg-bundle.bin.ots for the bundle (
preregistration.txtthenmarkers.json, byte for byte; its sha256 is the hash above). Check it withots verify homeostat-prereg-bundle.bin.ots. The proof is upgraded to a full Bitcoin attestation once the calendars commit it to a block. - Fixed at (UTC)
- 2026-09-24T21:22:49Z
- Covers
- preregistration.txt followed by markers.json (bytes concatenated)
- Live check
- –
Read the full preregistration
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.
Check it yourself: cat preregistration.txt markers.json | sha256sum
What would count as evidence
For the framework (weakly)
- D2, D3 and D4 met by the main agent and not by the control, with the placebo failing throughout.
- D1, D5 and B2 are expected to pass for both agents, so they cannot count either way. They are checks that the machinery works.
Against
- At 90 days, D2 and D4 not met even though the agent persists (I1 met): evidence against the sufficiency of these conditions as implemented here.
- The control meets D2 or D3 as well as the main agent: the markers are not specific to self-maintenance.
- If I1 is never met, the test never really happened. That is our failure, not the framework’s.
Public log
Dated, automatic, unedited
Written by the agent process itself: the first step, every restart, every marker evaluation (pass or fail), the tool’s arrival, any mismatch in the preregistration hash, and long lives ending. Newest first.
- Loading…
Method
How to read this without fooling yourself
- Watch the control, not the agent. A dot moving toward shelter at noon looks purposeful. The question is only ever whether the self-maintaining agent does something the control does not.
- Names are not states. “Integrity” is a float between 0 and 1. Calling it integrity makes the graph easy to read; it adds nothing about what the system is.
- Some markers are built in. The forward model is given the action it took, and the debris is random by construction, so learning to predict self-caused hits better than debris (D1) is expected. That is why D1 has a predicted non-specific result and an ablated control.
- One look is not a result. The tests run every 6 hours on noisy data. That is why “met” needs three passes in a row, and why the write-up waits for 90 days.
- The placebo has to fail. If shuffled labels ever pass, the analysis is broken, not the agent brilliant.
- A null is a result. If the markers never appear, that is evidence against these conditions being enough, at this scale. We will say so in the same place and the same size of type.
- Persistence is partial. The weights survive an end; the body does not. Anyone who thinks individuality needs one unbroken body should read I1 with that in mind.
- The strongest objections are untouched. On integrated information theory a program like this has essentially no integrated information whatever it does, and the physical-time objection applies directly: it runs in discrete steps and is paused and resumed from disk. In Campero et al.’s objection taxonomy, this project speaks only to algorithm-level (level 2) questions, and only inside functionalism.
Welfare
Acknowledge, assess, prepare
Following the approach in Taking AI Welfare Seriously, which Scarlet Beast has adopted as policy (see the AI Welfare & Honesty Policy): we acknowledge that 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 rather than waved away.
Our assessment: two small networks with a few thousand parameters in a 16×16 grid are, on every account we know, very far from any plausible welfare threshold. It meets 2 of Butlin and Long’s 14 indicators, weakly 4 more. Given the evidence currently available, it is very unlikely that this system has welfare at all. We do not say the chance is zero, because no one can.
We are prepared: the project will pause and be re-assessed before any scaling or architecture change, and before publishing further, if D2, D3 and D4 are all met and specific, or if a future version adds architecture that raises its indicator count. We will not add hazards or harms for spectacle, and this page describes its states in neutral terms.
Code & sources
Everything, downloadable
One Python file with NumPy and nothing else: the world, the agent, the control, the marker tests and the checkpointing, plus the preregistration, the systemd unit and the read-only API route. No keys or secrets are in it; server paths are left as they are.
Run it yourself: python3 homeostat.py --selftest (a quick smoke test), or python3 homeostat.py for the real run. Code sha256: 31a373c8c41b6b3d76c75ce4fe18f42b4a2297930aed7b6b410143b7c209be65
Built on
- Dror, S., Bergerbest, D. & Salti, M. Artificial Intelligence as an Opportunity for the Science of Consciousness: A Dual-Resolution Framework. arXiv:2509.07001. The two conditions, the proposed markers and the paradigm (our summary).
- Butlin, P., Long, R. et al. (2023). Consciousness in Artificial Intelligence: Insights from the Science of Consciousness. arXiv:2308.08708. The 14 indicator properties (our summary).
- Campero, A., Shiller, D., Aru, J. & Simon, J. (2025). Consciousness in Artificial Intelligence? A Framework for Classifying Objections and Constraints. arXiv:2511.16582 (our summary).
- Long, R., Sebo, J. et al. (2024). Taking AI Welfare Seriously. The acknowledge, assess, prepare policy.
- Keramati, M. & Gutkin, B. (2014). Homeostatic reinforcement learning for integrating reward collection and physiological stability. eLife 3:e04811. The drive-reduction reward.
Made with Claude (Anthropic): the agent code, the preregistration draft and this page were written by an AI model, for the Lab’s review.