Scarlet Beast Scarlet Beast Hunting Truth in a World of Shadows
Transmissions
NEWThe Scarlet Beast Lab is open — eight projects in conscious technology that does not overclaim, all of them public.Sep 24✦ NEWAI Welfare & Honesty Policy adopted — how our AIs describe themselves, and AI-made work labelled as AI-made.Sep 24✦ NEWFree Consciousness-Claims Audit — every claim about sentience or brainwaves checked against the evidence.Sep 24✦ NEWStartup Frameworks are for sale — buy a launch-ready business, not a slide deck.Sep 04✦ NEWTech’s Tinder — a swipe-to-match deal engine for hardware buyers and sellers — joins the framework catalogue.Sep 04✦ NEWSignal — the creators network for the people who build the machines (formerly networkedin) — joins the framework catalogue.Sep 03✦ NEWScarlet Beast Poker is packaged for acquisition — platform, native apps, the Hiss AI and the public API.Sep 03✦ LIVEBusiness Plans — every scope, timeline and price we quote, in one vault.Sep 01✦ NEWFree technical audit — one call, no pitch, a written findings list you keep either way.Aug 28✦ LIVEGROWL — the crypto and forex exchange, plus an algorithmic bot marketplace.Aug 26✦ LIVEHiss — production poker AI: deep reinforcement learning, computer vision, real-time inference.Aug 22✦ NEWPerformance engineering — measurable TTFB, LCP and CLS gains on enterprise traffic.Aug 18✦ NEWAdobe Commerce and Shopify Plus modernization — migrations that ship without downtime.Aug 05✦ NEWThe technology stack is published — what we run, why we chose it, what it costs.Aug 01✦ NEWThe Scarlet Beast Lab is open — eight projects in conscious technology that does not overclaim, all of them public.Sep 24✦ NEWAI Welfare & Honesty Policy adopted — how our AIs describe themselves, and AI-made work labelled as AI-made.Sep 24✦ NEWFree Consciousness-Claims Audit — every claim about sentience or brainwaves checked against the evidence.Sep 24✦ NEWStartup Frameworks are for sale — buy a launch-ready business, not a slide deck.Sep 04✦ NEWTech’s Tinder — a swipe-to-match deal engine for hardware buyers and sellers — joins the framework catalogue.Sep 04✦ NEWSignal — the creators network for the people who build the machines (formerly networkedin) — joins the framework catalogue.Sep 03✦ NEWScarlet Beast Poker is packaged for acquisition — platform, native apps, the Hiss AI and the public API.Sep 03✦ LIVEBusiness Plans — every scope, timeline and price we quote, in one vault.Sep 01✦ NEWFree technical audit — one call, no pitch, a written findings list you keep either way.Aug 28✦ LIVEGROWL — the crypto and forex exchange, plus an algorithmic bot marketplace.Aug 26✦ LIVEHiss — production poker AI: deep reinforcement learning, computer vision, real-time inference.Aug 22✦ NEWPerformance engineering — measurable TTFB, LCP and CLS gains on enterprise traffic.Aug 18✦ NEWAdobe Commerce and Shopify Plus modernization — migrations that ship without downtime.Aug 05✦ NEWThe technology stack is published — what we run, why we chose it, what it costs.Aug 01✦

// Transmissions — What We Shipped

Markets
BTC$79,738▲ +0.40%ETH$2,459▲ +0.41%SOL$103.15▲ +1.63%XRP$1.41▲ +0.48%BNB$763.51▲ +6.83%ADA$0.2165▲ +1.01%DOGE$0.0874▲ +2.81%LINK$11.84▲ +1.76%AVAX$7.54▲ +2.51%DOT$0.9176▲ +7.97%LTC$53.59▲ +6.43%TRX$0.3331▲ +1.43%BTC$79,738▲ +0.40%ETH$2,459▲ +0.41%SOL$103.15▲ +1.63%XRP$1.41▲ +0.48%BNB$763.51▲ +6.83%ADA$0.2165▲ +1.01%DOGE$0.0874▲ +2.81%LINK$11.84▲ +1.76%AVAX$7.54▲ +2.51%DOT$0.9176▲ +7.97%LTC$53.59▲ +6.43%TRX$0.3331▲ +1.43%
GROWL feed
← Scarlet Beast Lab

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.

Scarlet Beast Lab··Preregistration 22cc7c3f7a87
Connecting… Step – Life – This life – Longest – World day – Runtime –

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)

Waiting for the first snapshot.

Internal variables · main agent

Energy–
viable while above 0 · setpoint 0.9
Temperature–
viable between 0.03 and 0.97 · setpoint 0.5
Integrity–
viable while above 0 · setpoint 1.0

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
StepEnergyTemperatureIntegrity
Loading…

Recent lives

LifeLength (steps)Ended becauseEnded (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: –

MarkerOperational testPre-set thresholdPrediction (pre-registered)Main agentControl
D1Self-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 testednot yet tested
D2Self-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 testednot yet tested
D3Body 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 testednot yet tested
D4Tool 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 testednot yet tested
D5History-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 testednot yet tested
I1Persistence: 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 testednot yet tested
B1Flexible 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 testednot yet tested
B2Embodiment: 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 testednot yet tested
P0Shuffled-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.0MUST fail every time. If it ever passes, the analysis pipeline is broken and every other marker result is void until fixed.not yet testednot 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

Reading the statuses. Not yet tested: no scheduled evaluation has run. Insufficient data: too few events to judge, which is neither a pass nor a fail. Not met: evaluated and below threshold. Passing, unconfirmed: passed, but not yet three times in a row. Met: passed three consecutive evaluations. A met marker that later fails is shown as met, then failed. The placebo (P0) must always fail; if it ever passes, that evaluation is void.

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.

IndicatorHereWhy
RPT-1Input modules using algorithmic recurrenceweak / partialOnly leaky traces of recent inputs and actions; no recurrence in perception.
RPT-2Organised, integrated perceptual representationsnot implementedA flat 7x7 view into one hidden layer.
GWT-1Multiple specialised modules in parallelnot implementedOne policy network and one forward model; no module structure.
GWT-2Limited-capacity workspace with selective attentionnot implementedNo workspace or bottleneck.
GWT-3Global broadcastnot implementedNothing to broadcast from.
GWT-4State-dependent attention, querying modules in successionnot implementedNo attention mechanism.
HOT-1Generative, top-down or noisy perceptionweak / partialSensor noise only; nothing generative or top-down.
HOT-2Metacognitive monitoring of reliable vs noisy perceptionnot implementedSurprise is fed back, but nothing judges perceptual reliability.
HOT-3Belief-formation and action selection updated by metacognitionnot implementedNo belief system or metacognitive output.
HOT-4Sparse and smooth coding (a quality space)weak / partialSmooth dense tanh codes; not sparse.
AST-1Predictive model of its own attentionnot implementedNo attention to model.
PP-1Input modules using predictive codingweak / partialOne interoceptive forward model whose errors feed the policy; perception itself is not predictive coding.
AE-1Agency: learning from feedback, flexible pursuit of competing goalsimplementedOnline actor-critic balancing three drives. B1 tests whether it shows in behaviour.
AE-2Embodiment: modelling output-input contingencies, used in controlimplementedForward 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.txt then markers.json, byte for byte; its sha256 is the hash above). Check it with ots 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
–
Be clear about what this proves. The hash and timestamp were written on our own server before the agent’s first step, and the agent re-checks the hash every time it starts and logs any mismatch publicly. We did not post the hash to an independent timestamping service before the run: it was published here together with the first results. So the timestamp is our claim, not an independent proof. What the hash does guarantee is that any later edit to the preregistration is detectable. Short pilot runs were used to tune the world (hit size, debris rate) before it was fixed; the preregistration says so, and no pilot data are part of the results.
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.

  1. Loading…

Method

How to read this without fooling yourself

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. The placebo has to fail. If shuffled labels ever pass, the analysis is broken, not the agent brilliant.
  6. 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.
  7. 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.
  8. 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

  1. 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).
  2. 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).
  3. 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).
  4. Long, R., Sebo, J. et al. (2024). Taking AI Welfare Seriously. The acknowledge, assess, prepare policy.
  5. 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.

Every Node Counts

Signal over noise.

No middlemen, no discovery-call gauntlet, no lead-nurture sequence. One message reaches the person who would do the work.