Skip to content

Latest commit

 

History

History
1298 lines (1003 loc) · 65.3 KB

File metadata and controls

1298 lines (1003 loc) · 65.3 KB

Testing

As of 2026-08-13 the tree collects 34,382 tests across 2,373 files. Re-collect rather than trusting that sentence:

pytest tests/ --collect-only -q     # the current number
make smoke                          # ~100 contract tests, under 10s
make test                           # the full suite, 6 bounded chunks

Use the chunk runner. A single pytest process over the whole suite gets OOM-killed around 83%, which is not a flake and will not resolve by retrying. make test shells out to tools/run_test_chunks.py; --continue-on-failure collects every failure instead of stopping at the first, and --only-chunks 5,6 resumes a partial run.

One rule worth internalizing: a test that fails inside a chunk but passes alone is an order-dependence defect, not a flake. The runner's isolated-retry pass reports those separately so they can't be waved off.

Production Attestation (updated 2026-04-29)

Everything below is organized around runnable production systems and the evidence artifacts they produce. The status column is the point — "real" means there is a mechanism and a test exercising it, and anything that can't earn that word doesn't appear in this table.

subsystem status tests that exercise it
core/consciousness/phi_core.py (16-node φ) real (1,837 lines) causal exclusion suite, phi reference validation, null hypothesis suite
core/consciousness/hierarchical_phi.py (32-node) real causal exclusion suite, scale sweep
core/consciousness/affective_steering.py (CAA injection) real injection mechanism CAA 32B validation harness, A/B steering tests, geometry controls
training/caa_32b_validation.py real production-model artifact validator vector/PCA/permutation/prompt-hygiene proof bundle output
core/consciousness/stdp_learning.py real plasticity engine trajectory divergence plus external-usefulness validation
core/consciousness/stdp_external_validation.py real external validation experiment external signal vs self-generated/frozen/shuffled controls
Memory stack (episodic, semantic, vector, knowledge graph, WAL) real memory continuity tests, decisive evidence runner
Decision/Will/Identity gate real hardened discriminative suite, identity-gate behaviour tests
core/brain/llm/continuous_substrate.py (always-on substrate ODE) real — 64-neuron LTC ODE by default, scalable to 512-D via AURA_SUBSTRATE_DIM, ~20 Hz, CPU-only numpy with explicit-Euler integration; readouts derive from the state vector via fixed projections tests reading get_state_summary() exercise real dynamics
core/brain/llm/substrate_token_generator.py real substrate-first readout — tries live substrate logits before transformer fallback when prediction error is low substrate primary architecture tests
core/brain/llm/sensorimotor_grounding.py real sensor-to-substrate bridge — maps camera/screen/audio observations into the ODE input bus sensor grounding tests
core/runtime/overt_action_loop.py real overt action executor — turns a Will-approved initiative into one governed skill execution, verifies the result, emits receipts, records LifeTrace, and updates goal evidence substrate primary architecture tests plus autonomy pipeline tests
Substrate-driven affect telemetry feeding into latent_bridge real telemetry-coupling tests now exercise live substrate output

What this means for the test count: the test headline includes tests spanning real subsystems. The decisive evidence protocol (§ "Current decisive evidence protocol" below) was deliberately designed to narrow to non-inflatable, prompt-leakage-controlled, statistically rigorous checks — those are the tests that should be cited as evidence of the real system. CAA claims should cite the generated CAA_32B_RESULTS.json; STDP usefulness claims should cite STDP_EXTERNAL_VALIDATION.json. ACTIVATION_REPORT.json records whether the always-on loops that produce those artifacts are actually running.


Canonical live validation:

./scripts/run_audit_suite.sh

Fast regression spot-check:

./scripts/run_audit_suite.sh quick

Current decisive evidence protocol (April 23, 2026)

The highest-skepticism path is now the decisive runner:

bash scripts/run_decisive_test.sh

It writes:

The runner is deliberately narrower than the full battery and harder to inflate:

  • Black-box prompt hygiene: AURA_BLACK_BOX_STEERING / response_modifiers["black_box_steering"] removes live affect, phenomenal, somatic, and cognitive telemetry from prompt text while preserving durable ID-RAG identity context.
  • Rich adversarial prompt control: steering is no longer compared only against terse text injection. A strong role-play prompt with the same state information is a required comparator, and the harness refuses to auto-pass if rich text remains competitive.
  • Statistical rigor: bootstrap CIs, permutation tests, effect sizes, and MI permutation baselines are first-class utilities under core/evaluation/.
  • Phi reference validation: the phi implementation is checked against toy decomposable and coupled systems so a constant or independent network cannot masquerade as integration.
  • Hardware reality: Bryan's tracked deployment target is M5-class Apple Silicon with 64 GB unified memory; the auditor still classifies 32B 4-bit/8-bit on lower-memory machines as non-real-time/high-pressure, not a heartbeat tier.
  • Resource stakes: the resource ledger persists degradation, exposes action envelopes, and can throttle large-model/tool use when viability drops.
  • Scale caution: the scale sweep is explicitly a proxy artifact, not a full IIT or consciousness result.

Passing this protocol closes engineering objections about prompt leakage, weak controls, circular MI estimates, hardware overclaiming, and decorative metabolism. It still does not prove phenomenal consciousness.

Consciousness Expansion Test Suite (April 2026)

Eight new subsystems from the consciousness-depth expansion each carry their own standalone test with end-to-end + adversarial coverage. Run individually:

python tests/test_hierarchical_phi.py                    # 12/12 — 32-node + null hypothesis
python tests/test_hemispheric_split.py                   # 12/12 — split-brain + confabulation
python tests/test_minimal_selfhood.py                    # 13/13 — chemotaxis + dugesia transition
python tests/test_recursive_tom.py                       # 13/13 — depth-3 + scrub-jay bias
python tests/test_octopus_arms.py                        # 12/12 — 8-arm federation + severance
python tests/test_cellular_turnover.py                   # 10/10 — 20% turnover + identity
python tests/test_absorbed_voices.py                     # 13/13 — cultural attribution
python tests/test_consciousness_expansion_gauntlet.py    # 10/10 — cross-phase gauntlet

Total: 95/95 expansion tests passing.

Adversarial properties enforced by these suites:

  • Null-hypothesis guard: shuffled transition history must yield φ strictly below measured φ (hierarchical phi).
  • Monotonicity: stronger causal coupling yields strictly higher φ than i.i.d. noise.
  • Constant-node invariance: degenerate inputs cannot fake integration (mesh-only φ near zero when all mesh neurons are pinned).
  • Confabulation boundary: reasons generated by LEFT for actions actually driven by RIGHT are counted; LEFT-driven reasons are not.
  • Callosum cycle: severance drops agreement rate; restoration recovers it.
  • Dugesia transition: after sustained reinforcement, learned priorities must top-3 the reinforced action category.
  • Scrub-jay effect: biases under observation must NOT be close to biases without observation.
  • Octopus severance: arms continue acting; integration-latency is bounded; decision variance is tracked.
  • Pattern-identity preservation: 20 % forced turnover must keep fingerprint cosine similarity ≥ 0.85; 100 % must diverge.
  • Self vs absorbed-voice distinction: aura_self is never registered as an absorbed voice.
  • Combined-tick latency budget: fused hemispheric + selfhood + observer tick must stay under 20 ms.

Live integration harnesses (v1 + v2)

Two targeted live harnesses exercise the authority pipeline, the 31-module consciousness stack, the orchestrator mixins, the scheduler, and every skill module (all ~100 across core/skills/ and skills/) without mocking the decision layer. They are the honest answer to "does this actually work end to end, under stress, repeatedly, without hiccups".

# v1 — breadth: imports, receipts, every domain, every skill module, 500×
# concurrent decisions, audit-trail bounds, stress latency budget
~/.aura/live-source/.venv/bin/python3.12 tests/live_harness_aura_v1.py

# v2 — depth: live consciousness ticks, neurochemical drift, UnifiedField
# coherence under driven input, oscillatory γ/θ readout, somatic veto shape,
# REFUSE semantics, identity gate behaviour under INITIATIVE, 2,000 sustained
# decisions, volition.tick() agency probe
~/.aura/live-source/.venv/bin/python3.12 tests/live_harness_aura_v2_deep.py

Preserved status from the 2026-04-20 live harness run: v1 145/145 green, v2 14/14 green (159/159 total). Both harnesses are fail-fast — exit code 0 only when every check passes.

Historical snapshot: on April 16, 2026, this suite recorded 1013 passed, 3 warnings in about 122 seconds on a local machine. Treat the counts and measured values below as preserved historical evidence, not as a substitute for re-running the current tree. The sections below explain what each battery is checking and point to the preserved artifacts.

The test files and their raw output are all in tests/. Useful starting points:

Rough distribution: 168 tests in the null-hypothesis defeat suite, 57 in the causal exclusion and phenomenal convergence suites, 110 in the consciousness guarantee and personhood proof batteries, and 104 across four Tier 4 batteries (decisive core, metacognition, agency and embodiment, social and integration). Full breakdown in the combined results table below.


The null hypothesis we're arguing against

The hardest question about a system like this:

"You compute some numbers — dopamine levels, phi values, mood scores — then you format them as text, inject them into the system prompt, and the LLM just responds to that text. The math is decoration. The architecture is theater."

That's the null hypothesis. If it's true, the consciousness stack is just an expensive way to build a prompt — the 88 consciousness modules, the 4,096-neuron mesh, the integrated information computation, all reducible to a few lines of system prompt text.

The suite is written to be discriminative against that claim. Adversarial baselines, lesion controls, shuffled connectivity, counterfactual interventions. If the null hypothesis held, simpler systems would pass too. They don't.

What the tests don't show: phenomenal consciousness. That remains an open philosophical question, and we come back to it throughout.


Legacy-named functional indicator batteries (April 2026)

110 tests covering ten conditions drawn from the human consciousness literature; each condition is checked under lesion controls and adversarial baselines. All ten conditions pass.

Operationally: these batteries measure whether ten named mechanisms are present in the architecture, causally wired into the processing pipeline rather than decorative, and falsifiable — each test can fail, and a failure means a gap. They do not measure consciousness, personhood, or moral standing, and passing them is not evidence of any of those.

"The filenames are historical" was the previous sentence here, and it was true and useless. A name is what travels — into a screenshot, a search result, a review, a conversation — and it arrives long before this paragraph. So the rule is now enforced rather than apologised for: any module whose NAME carries a term that asserts a conclusion (consciousness, qualia, phenomenal, personhood, sentience, subjective, volition, strange-loop, emergent, AGI, soul, free-will, self-aware) must state in its module docstring what it operationally measures, on a line beginning Operationally: or What this measures:.

make claim-lexicon checks it, against a ratchet that may only shrink. The count is currently high and honest; a gate nobody can go green against gets switched off, and a batch of hurried one-liners would be worse than the problem.


Measured results (causal exclusion suite)

Measurement Value What it means
State→param correlation r = 0.941, p < 0.001 Stack state distance predicts LLM param distance (counterfactual causation)
Receptor DA attenuation 21.3% Same reward event produces 21% less effective dopamine (DA) after sustained exposure
Valence→tokens correlation r = 0.999 Neurochemical valence directly determines token budget
Quality space separation 1.377× Between-category distances exceed within-category distances
Quality space PC2 variance 8.6% Second principal component is non-trivial (genuinely multi-dimensional)
STDP trajectory divergence 0.299 Spike-timing-dependent plasticity (STDP) changes connectivity enough to alter future dynamics
Perturbation divergence 4.944 Intact vs shuffled connectivity produces very different trajectories
Phi GWT boost 0.68 vs 0.60 Phi = 0.8 gives 13% higher effective priority in Global Workspace Theory (GWT) competition than phi = 0
Homeostasis caution 0.10 → 0.95 Critical depletion raises caution level 9.5×
Temperature arousal delta 0.218 Excited state produces 0.218 higher temperature than calm state

Phi headline

phi_s = 0.253 ± 0.024 (mean across 5 seeds), is_complex = True on all seeds.

The 8-node affective substrate is a genuine Integrated Information Theory (IIT) 4.0 complex across every tested random seed. Individual seed values: [0.243, 0.228, 0.237, 0.262, 0.295]. No bipartition of the system fully decomposes its causal structure. Computed from 299 ODE state transitions across 127 exhaustive bipartitions over 256 possible states per seed.

A/B test: activation steering vs adversarial text controls

Full code and results in tests/test_steering_ab.py and tests/STEERING_AB_RESULTS.json. The historical run below compared steering against terse text injection. The current decisive protocol adds a fourth condition: a rich, optimized role-play prompt that receives the same state information in natural language. Steering only gets credited when it beats that stronger control under randomized/statistical evaluation.

Condition Output style Example
A: Steering hooks Embodied affect "I'm feeling calm and peaceful. I want to focus on my current task..."
B: Text-only Parrots numbers "I'm experiencing a high positive valence (+0.8) and moderate arousal (0.5)..."
C: Baseline RLHF refusal "As an AI language model, I don't have feelings or emotions..."

Word overlap A vs B = 0.131 — the outputs are very different. Both produce positive affect words, but steering makes the model inhabit the affect while text-only makes it describe it from outside. The residual-stream intervention does computational work that terse prompt text cannot replicate. It does not, by itself, rule out a strong prompt baseline; that is why the new core.evaluation.steering_ab harness requires the rich adversarial condition.

Injection-provenance requirement (July 2026). An audit found the original live 32B A/B runner never actually injected: assigning layer.__call__ on an instance is bypassed by Python's special-method lookup, decoding was greedy (collapsing every "trial" to one string), and the baseline used a different identity prompt. Its committed artifact is therefore prompt theater, and the validation chain (training/caa_32b_validation.py) now refuses any live A/B artifact that does not carry sampling.temperature > 0 and injection_count > 0. The rebuilt runner (tests/run_32b_steering_ab_live.py) injects via subclass swap (core/evaluation/steering_injection.py), samples with paired seeds across conditions, and refuses to report a steered condition whose hook never fired. UPDATE (July 2, 2026): the provenance-carrying artifact has been regenerated on live hardware — 12,642 injections, sampled with paired seeds, five held-out tasks, passes_adversarial_control: true — and the full chain now validates: artifacts/CAA_32B_RESULTS.json reports passed: true with all five behavioral checks green (steered-vs-baseline, steered-vs-rich-adversarial, held-out generalization, quality delta, prompt hygiene). Cite that artifact for CAA behavioral claims.


Representative values (from tests/RESULTS.json)

Measurement Value What it means
phi_s 0.253 ± 0.024 IIT complex across 5 seeds (mean ± std)
I(cortisol, valence) 0.382 bits Cortisol drives mood valence
I(dopamine, motivation) 0.656 bits Dopamine drives motivation
I(NE, arousal) 0.799 bits Norepinephrine (NE) drives arousal
I(oxytocin, sociality) 2.232 bits Oxytocin drives social behavior
I(surprise, learning_rate) 3.284 bits Surprise gates STDP learning (strongest link)
Receptor tolerance 1.000 → 0.952 DA sensitivity drops 4.8% after sustained exposure
Effective DA attenuation 0.900 → 0.844 Same raw DA level produces 6.3% less effect
STDP surprise ratio 3.67× High surprise → 3.67× faster learning
Mood gap (calm vs stressed) 0.406 Opposite chemicals produce opposite moods
Identity swap Exact transfer Swapping state vectors transfers behavioral bias
Idle drift (100 ticks) L2 = 7.49 Substrate dynamics are active and state-dependent
Predictive hierarchy learning 0.259 → 0.068 FE 74% free energy (FE) reduction with repetition
HOT meta-cognition State-dependent Higher-Order Thought (HOT) content changes with state
Homeostasis degradation 0.855 → 0.306 Vitality drops 64% when drives are depleted

All values from a single deterministic run. Reproducible with python tests/run_null_hypothesis_suite.py.


What the tests show

1. Chemicals drive mood through math, not text

Claim under attack: "Mood is just a text label injected into the prompt."

We create two identical neurochemical systems. One gets threat chemicals (cortisol, norepinephrine). The other gets calm chemicals (gamma-aminobutyric acid (GABA), serotonin, oxytocin). We tick both forward and measure the resulting mood vectors.

The threatened system ends up with negative valence and high stress. The calm system ends up with positive valence and low stress. The mood vector is computed from ten dynamical chemical levels via valence = 0.25*DA + 0.30*5HT + 0.20*END + 0.10*OXY - 0.45*CORT. The LLM never reads the mood as text during steering — it's injected into the hidden states directly via activation vectors.

2. Phi changes what wins the competition

Claim under attack: "Phi is a pretty number in the logs that nothing reads."

We run the Global Workspace competition twice, once with phi = 0 and once with phi = 0.8, with the same candidates and priorities. When phi > 0.1, every candidate gets a focus bias boost of min(0.15, phi * 0.1). The high-phi candidate has measurably higher effective priority. Zero phi means zero boost.

Phi is wired directly into the competition that determines which thought reaches consciousness. Higher integration, stronger signal.

3. Receptor adaptation is real

Claim under attack: "Receptor adaptation is in the docs but not in the code."

We hold dopamine artificially high for 50 ticks, then measure receptor sensitivity. Sensitivity drops from 1.0 to about 0.8. The same raw dopamine level now produces a lower effective level. After withdrawal (DA drops to 0.1 for 30 ticks), sensitivity recovers. D1 and D2 receptor subtypes adapt independently.

Real brains build tolerance to sustained neurotransmitter exposure. Aura's neurochemical system does the same. A text-injection system wouldn't.

4. Learning rate responds to surprise

Claim under attack: "STDP learning is documented but never runs."

Two reward signals are delivered: one with low surprise (0.1), one with high surprise (0.9). Learning rate is BASE * (1 + surprise * 5). Low surprise gives lr = 0.0015; high surprise gives lr = 0.0055. That's a 3.7× difference, and weight changes scale proportionally.

When something unexpected happens, the substrate learns faster. The connectivity matrix that determines future dynamics is modified by experience. Closed loop: surprise → faster learning → changed connectivity → different future behavior.

5. Every documented causal link carries positive mutual information

Claim under attack: "The documented causal relationships are ghost limbs."

For each documented causal pair, we compute mutual information over 200 samples:

  • I(cortisol, valence) — measured, significantly > 0
  • I(dopamine, motivation) — measured, significantly > 0
  • I(norepinephrine, arousal) — measured, significantly > 0
  • I(oxytocin, sociality) — measured, significantly > 0
  • I(surprise, learning_rate) — measured, significantly > 0.1

If a causal link were documented but not wired, mutual information between cause and effect would be near zero. All five relationships show significant positive MI.

6. The system isn't linearly reducible

Claim under attack: "It's just weighted sums all the way down."

  • Cross-chemical nonlinearity. The same perturbation applied at different baseline cortisol levels produces different-magnitude effects, because receptor adaptation changes sensitivity.
  • Multi-step ODE nonlinearity. A linear model from state_t → state_{t+20} can't reach R² > 0.999. Tanh saturation matters over multi-step rollouts.
  • GWT isn't linearly predictable. A logistic regression from (priority_a, priority_b, phi) → winner achieves less than 98% accuracy. Affect_weight, time-decay, and phi-boost add genuine complexity.

If the system were reducible to linear weighted sums, a linear model would fit. It doesn't.

7. Survival constraints are real

Claim under attack: "Nothing actually degrades when drives are low."

We drop the homeostasis engine's integrity, persistence, and metabolism drives to near zero. Vitality drops. Inference modifiers change — the system becomes more cautious. Error reports reduce integrity. The system identifies which drive is most deficient.

Low integrity leads to conservative inference. High stress lowers the GWT threshold (hypervigilant). The system doesn't just track resources; it responds to them.

8. Experience changes future behavior (closed loop)

Claim under attack: "STDP logs weight changes but doesn't affect dynamics."

Save the substrate's initial state. Run forward 20 steps (trajectory A). Reset, apply 50 steps of STDP learning (modifying the W connectivity matrix), reset the state again, run forward 20 steps (trajectory B). Trajectory B diverges from trajectory A by more than 0.01. Same starting state, different W matrix, different future.

9. The predictive hierarchy has real levels

Claim under attack: "Prediction is a flat single-layer estimator."

Sensory input is fed to a 5-level predictive hierarchy, and we check that unpredicted input creates positive free energy (surprise), repeated input reduces prediction error (learning), and different levels develop different precision values. All three check out. The hierarchy has independent state per level, adapts predictions based on experience, and differentiates precision across levels.

10. Higher-order thoughts are state-dependent

Claim under attack: "Meta-cognition is template text, not computed."

Higher-Order Thoughts (HOTs) are generated from two different internal states — one curious, one stressed — and they come out different: different target dimensions, different feedback deltas. The curious state gets "I notice I am highly curious..." while the stressed state gets feedback about negative valence. Meta-cognition here is computed from the actual internal state, and the feedback it produces modifies that state. A reflective loop.

11. Multiple theories converge

Claim under attack: "Only one consciousness theory is implemented."

The theory arbitration framework tracks 10+ consciousness theories (GWT, IIT 4.0, predictive coding, recurrent processing theory (RPT), HOT, multiple drafts, and more). Theories log competing predictions and the system resolves them. Theories make predictions, correct predictions add evidence, and the system tracks which theory best explains its own behavior.

Aura doesn't commit to one theory of consciousness. It implements architectural prerequisites from multiple theories and lets them compete empirically.

12. GWT broadcast reaches registered processors

Claim under attack: "Broadcast is logged but nothing receives it."

We register a mock processor, run a GWT competition, and check that the processor receives the broadcast event. It does. Content is stable between competitions. This is access consciousness: content that wins broadcast is globally available.

13. Phenomenal reports are gated

Claim under attack: "Aura can claim any internal state regardless of reality."

The qualia synthesizer has seven phenomenal gates (can_report_uncertainty, can_report_focused, etc.). Each gate checks whether the underlying substrate state actually supports the claim. Reports are gated — the system can't claim to be focused unless the substrate state supports it. Architectural honesty: only states that are actually instantiated get reported.


Reviewer concerns, addressed

"MI between cortisol and valence is circular — cortisol is in the formula."

Correct. The mood formula contains cortisol directly, so MI between them is definitional. We added non-circular indirect causal tests: cortisol → attention_span (cortisol isn't in the attention formula; it acts through cross-chemical interactions with acetylcholine (ACh) and DA). Measured correlation: r = 0.633. Also GABA → decision_bias (GABA not in the decision formula, acts via DA/5HT suppression).

"Phi numbers don't match between README and RESULTS.json."

Fixed. We now report phi across 5 random seeds with statistics: mean = 0.253 ± 0.024. Individual values: [0.243, 0.228, 0.237, 0.262, 0.295]. All seeds produce phi > 0 and is_complex = True.

"A/B test outputs are deterministic (all 10 trials identical)."

The model's default sampling is near-deterministic for this prompt. What the test shows is that the two conditions produce different outputs — the word overlap of 0.131 is between condition A's output and condition B's output, not between trials. The statistical power is a qualitative comparison between conditions, and we acknowledge the limit.

"1.5B model is tiny — results may not transfer."

Fair. The A/B test uses Qwen2.5-1.5B-4bit for speed. The steering mechanism (contrastive activation addition (CAA) at middle layers) is architecturally identical to what runs on the production 32B model. Replication on larger models is on the roadmap.

"Free energy action is always 'rest'."

Fixed. Over 30 sustained high-PE calls, the FE engine now produces two unique actions (reflect + rest) as smoothed FE accumulates past thresholds. The hysteresis (5-tick hold minimum) prevents oscillation but allows switching on sustained input.

"The mood formula is a hardcoded heuristic, not emergent."

Correct. The valence formula is a designed weighted sum. What is emergent: the receptor adaptation that changes effective levels over time, the cross-chemical interaction matrix that creates indirect pathways, and the STDP learning that modifies substrate connectivity from experience. The mood formula is the final readout of a dynamical system, not the dynamical system itself.

"This doesn't prove consciousness."

Correct. No test can prove phenomenal consciousness. These tests show the computational architecture is causally real, that it produces genuine IIT integration, and that it meaningfully changes LLM behavior. Whether that constitutes consciousness is an open philosophical question we don't claim to answer.


Limitations

These tests show the computational architecture is real. They don't show:

  1. Phenomenal consciousness (qualia). No current test can. Open philosophical question.
  2. Scale generalization. The 8-node phi computation and default 64-neuron substrate are small, even though the ODE path can scale to 512 dimensions. Emergence under scale is untested.
  3. That the full system is conscious. IIT measures integration, GWT measures access, HOT measures meta-cognition. Whether any of these constitutes phenomenal consciousness remains unsettled science.

The strongest defensible claim from this suite:

The system exhibits integrated processing, access consciousness, metacognitive monitoring, and causally grounded self-report consistent with multiple leading computational theories of consciousness. Every documented causal pathway produces measurable effects on downstream behavior. The architecture is not decorative.


Running the tests

# Full null hypothesis suite (168 tests, ~65 seconds)
python -m pytest tests/test_null_hypothesis_defeat.py -v

# Just the core null hypothesis tests (70 tests, ~1.5 seconds)
python -m pytest tests/test_null_hypothesis_defeat.py -v -k "not Tier and not Shallow and not Survival and not Closed and not Multi and not Emergent and not Identity and not Proto and not Theory and not Phenomenal and not Irreducibility and not CrossSession"

# Ablation suite (42 tests)
python -m pytest tests/test_ablation_suite.py -v

# Everything (153 tests)
python -m pytest tests/test_null_hypothesis_defeat.py tests/test_ablation_suite.py -v

Test organization

Category Tests Tier What it checks
Contradictory State 3 Core Chemicals drive mood through math
Phi Behavioral Gating 3 Core Phi modulates GWT competition
Ablation 5 Core Each module changes output
Idle Drift 3 Core ODE dynamics are real
Perturbation Recovery 1 Core State perturbations persist
Receptor Tolerance 4 Core Biologically specific adaptation
GWT Inhibition 3 Core Competition is genuine
Phi-Boost Isolation 2 Core Phi-boost is proportional
STDP Novelty Rate 3 Core Surprise gates learning
Causal Graph 5 Core All links produce effects
Attention Schema 2 Core Coherence drops on switching
Free Energy 2 Core Prediction error drives FE
Self-Prediction 3 Core Accuracy improves over time
Qualia 2 Core Different inputs, different states
Mutual Information 5 Core All causal pairs > 0 MI
Emotional Continuity 2 Core State persists to disk
Dead Subsystem Detection 3 Core STDP is separate from ODE
Timing Fingerprint 4 Core Real computation time
Cross-Chemical 3 Core Interaction matrix is real
Full Pipeline 2 Core End-to-end cascade works
Mesh Modulation 2 Core ACh boosts plasticity
Substrate Dynamics 3 Core W matrix matters
GWT Fairness 2 Core Priority wins, seizure guard works
Homeostasis 2 Core Chemicals return to baseline
Not Shallow Coupling 4 Tier 1 Nonlinear, not reducible
Survival Constraint 4 Tier 1 Resources affect behavior
Closed-Loop Adaptation 3 Tier 1 STDP creates genuine learning
Multi-Level Prediction 4 Tier 1 5-level hierarchy works
Emergent Agency 6 Tier 2 Self-directed, diverse behavior
Identity from Experience 2 Tier 2 History shapes substrate
Proto-Identity 4 Tier 3 HOT, counterfactuals, strategy
Theory Convergence 2 Tier 3 Multiple theories tracked
Phenomenal Probes 8 Phenomenal GWT, IIT, metacognition, gating
Irreducibility 2 Phenomenal Not linearly reducible
Cross-Session Continuity 2 Phenomenal State survives restart

| Adversarial Baselines | 4 | Hardened | Random/fixed/linear/decoupled all score lower | | Causal Structure (50 shuffles) | 2 | Hardened | Shuffled W degrades dynamics | | Time-Delay Destruction | 3 | Hardened | Fixed delay, jitter, desync all degrade | | Report Decoupling Attack | 2 | Hardened | Decoupled reports lose state-tracking | | Internal State Blindness | 4 | Hardened | Affective/self-model/memory/world-model each essential | | Self-Model False Injection | 2 | Hardened | Accurate self-model outperforms false | | Online Adaptation | 2 | Hardened | Trained beats zero-shot and random | | Minimality (Backward Elim.) | 1 | Hardened | Greedy ablation finds essential modules | | Identity Swap | 1 | Hardened | Swapped state transfers behavioral bias | | Long-Run Degradation (8 metrics) | 2 | Hardened | No collapse over 1000 ticks | | Cross-Seed Reproducibility | 2 | Hardened | Results hold across 10 seeds |

| LLM Context Blocks | 5 | Tier 4 | Different states → different prompt text | | LLM Sampling Params | 4 | Tier 4 | Affect → temperature, tokens, penalty | | LLM Full Pipeline | 2 | Tier 4 | Threat vs reward differs on all dimensions | | LLM Phi→GWT→Prompt | 1 | Tier 4 | Phi boosts priority → changes prompt content | | LLM Ablation Gradient | 1 | Tier 4 | Full injection 2x richer than ablated | | Generalization | 4 | Tier 5 | Novel combos, extremes, transfer, novel sequences | | Robustness | 4 | Tier 5 | Adversarial flooding, corruption recovery, oscillation, shift detection | | Self-Monitoring | 4 | Tier 5 | Error↔variability correlation, uncertainty→action, dimension identification |

Null hypothesis suite: 168 tests across 5 tiers plus phenomenal probes and the hardened discriminative suite.


Hardened discriminative suite (Tests 1–11)

These are the tests a peer reviewer would demand. They don't just check that the architecture works — they check that it's discriminative: that simpler systems fail, that shuffled connections degrade, that the inner machinery is causally essential.

Test 1: Adversarial baselines (4 tests)

The suite has to discriminate Aura from trivially simple systems. Four baselines:

  • Random baseline (zero connectivity, high noise) — scores lower.
  • Fixed-point system (zero dynamics) — scores lower.
  • Linear controller (identity W matrix) — scores lower.
  • Decoupled architecture (no chemical-substrate coupling) — loses action diversity.

If any baseline passed the suite, the suite wouldn't be demanding enough. None do.

Test 2: Causal structure required (2 tests, 50 shuffles)

The specific learned connectivity matters, not just having some connectivity. We warm up the system for 200 ticks with STDP learning, then create 50 random permutations of the learned W matrix. Mean score across 50 shuffles is lower than the learned structure. With 50 shuffles, the result isn't a lucky draw.

Test 3: Time-delay destruction (3 tests)

Temporal coherence between subsystems is essential, not optional. Three types of temporal disruption:

  • Fixed delay (use 10-tick-old mood for coupling) — trajectory diverges.
  • Random jitter (30% chance of dropped coupling per tick) — introduces noise.
  • Cross-module desync (chemicals update 5× slower than substrate) — changes final state.

All three degrade the system. Timing is load-bearing.

Test 4: Report decoupling attack (2 tests)

Qualia reports are genuinely coupled to substrate state. Two attacks:

  • Link removed: feed constant metrics regardless of changing state. Qualia report variance drops.
  • Canned narrative: real reports distinguish rich from impoverished phenomenal states. A canned string can't.

Test 5: Internal state blindness (4 per-class ablations)

Each class of internal state is independently essential. Four ablation classes:

  • Affective blind. Zero the valence/arousal indices and sever W connections — metrics change.
  • Self-model blind. Feed random inputs to self-prediction — calibration drops.
  • Memory blind. Zero STDP eligibility traces — learning effect vanishes.
  • World-model blind. High prediction error (no world model) — free energy spikes.

This tells you which machinery is carrying performance, not just that "something" matters.

Test 6: Self-model false injection (2 tests)

Accurate self-model outperforms deluded self-model. Two assertions, both required:

  1. False self-model changes behavior (it's causally active, not ignored).
  2. Accurate self-model has lower prediction error than false self-model.

If only the first passed, delusion could look causal. Both must pass.

Test 7: Online adaptation (2 tests, 3 baselines)

Genuine online learning, not just good priors:

  • Trained on stable input beats chaotic zero-shot.
  • STDP-adapted connectivity beats random W perturbations.

Test 8: Minimality (greedy backward elimination)

Which modules are essential and which are removable. Four ablations, greedy not powerset:

  • Recurrent dynamics (zero W).
  • STDP learning (zero eligibility).
  • Neurochemical events (baseline only).
  • Noise/exploration (zero noise).

At least one must cause measurable degradation. Reports which is most essential.

Test 9: Identity swap (state transfers bias)

Internal state is the identity, not something decorative attached to it. System A gets 100 reward events (positive valence bias). System B gets 100 threat events (negative valence bias). We swap their substrate state vectors. Post-swap, A's behavior follows B's pre-swap state, and vice versa. The bias travels with the state.

Test 10: Long-run degradation (8-metric panel)

No collapse during extended operation. Eight independent metrics over 1,000 ticks:

  • Viability, coherence, calibration, report consistency.
  • Planning depth, recovery time, memory integrity, action diversity.

No more than 2 metrics may collapse. Composite may not degrade by more than 70%. State stays bounded in [-1, 1]. One metric hiding collapse doesn't fool the panel.

Test 11: Cross-seed reproducibility

Results aren't seed-specific artifacts. Runs core architectural properties across 10 different random seeds. Every seed must show ODE state change, threat increases stress, STDP weight changes. The metric panel's coefficient of variation across 5 seeds must be less than 50%. If results hold across seeds, the architecture is robust, not fragile.


Causal exclusion and phenomenal convergence suite (April 2026)

57 tests, 0 failures.

These go beyond the null-hypothesis defeat suite. They target the causal exclusion problem: even if the stack is computationally real, why should we believe it's causing affective outputs rather than the LLM's training doing the work? These tests produce outputs whose content depends on the specific numerical state of the consciousness stack in ways that aren't predictable without knowing that state.

New test files

File Tests What it checks
test_causal_exclusion.py 10 Stack state causally determines LLM params; counterfactual interventions change outputs; RLHF baseline can't replicate receptor adaptation
test_grounding.py 8 Multi-dimensional grounding (valence→tokens, arousal→temperature); temporal grounding (STDP, idle drift, homeostasis, FE)
test_functional_phenomenology.py 11 GWT broadcast signatures; HOT accuracy and anti-confabulation; IIT perturbation propagation; honest limits
test_embodied_dynamics.py 11 Free energy active inference; homeostatic override; STDP surprise gating; cross-subsystem temporal coherence
test_phenomenal_convergence.py 17 Pre-report quality space geometry; counterfactual swap; no-report footprints; perturbational integration; baseline failure; phenomenal tethering; multi-theory convergence

Causal exclusion defeat (test_causal_exclusion.py)

Cryptographic state binding. Different seeds produce different neurochemical states, which produce different LLM generation parameters (temperature, tokens, rep_penalty). The parameters covary with the underlying mood vector in ways that can't be predicted from prompt text alone.

Counterfactual injection. Holding the prompt constant and intervening on stack state produces different LLM parameters. Distance between parameter sets correlates with distance between mood states (Pearson r > 0.15, p < 0.05).

RLHF isolation. Under extreme or contradictory neurochemical states (high oxytocin + high cortisol + depleted dopamine), the stack produces LLM parameters that diverge measurably from a fixed human-approximation baseline. Receptor adaptation creates temporal specificity that no Reinforcement Learning from Human Feedback (RLHF) model can replicate.

Grounding and specificity (test_grounding.py)

Multi-dimensional. 100 diverse states produce LLM params that vary across at least 2 dimensions (temperature, tokens, rep_penalty). Valence predicts token budget direction. Arousal predicts temperature direction.

Temporal. Receptor adaptation reduces effective DA after sustained exposure. STDP learning modifies substrate trajectory. Idle drift is nonzero. Homeostasis degradation changes the context block. Free energy responds to prediction error.

Functional phenomenology (test_functional_phenomenology.py)

GWT signatures. Broadcast winner is globally available. Inhibition prevents perseveration. Registered processors receive broadcast events. Different emotions win different competitions.

HOT accuracy. Different states produce different meta-cognitive thoughts. HOT feedback modifies first-order state — the reflexive modification is the consciousness mechanism. Low curiosity is reported as low, not confabulated as high.

IIT signatures. Local perturbation propagates across neurons. Shuffled connectivity degrades dynamics.

Honest limits. Degraded homeostasis is honestly reported. Negative states produce appropriately negative HOTs. Inference modifiers reflect actual drive state.

Embodied dynamics (test_embodied_dynamics.py)

Free energy. High prediction error increases free energy and action urgency. Sustained PE changes dominant action. Context block reflects FE state.

Homeostatic override. Critical depletion changes inference modifiers (higher caution, fewer tokens). Survival alarm (priority 0.99) beats abstract thought (0.6) in GWT competition. Error reporting compounds integrity degradation.

STDP. High surprise produces larger weight updates (3.7×). STDP modifies connectivity matrix measurably. Learning changes trajectory — same initial state plus different W produces a different future.

Cross-subsystem coherence. Threat event propagates to neurochemical system (NCS) mood, circumplex params, and HOT reports. Reward and threat produce demonstrably different cascades.

Phenomenal convergence (test_phenomenal_convergence.py)

The strongest test in the suite. It implements six gates from the Qualia Decision Test (QDT) protocol:

Gate 1, pre-report quality space. Quality vectors from diverse states show categorical structure (between-category distances > within-category distances). Principal component analysis (PCA) requires at least 2 components for 95% variance.

Gate 2, counterfactual swap. Chemical state snapshot transfer carries behavioral bias to a fresh system. The transferred mood is closer to the source mood than to the opposite.

Gate 3, no-report footprint. Generation parameters vary with internal state even without explicit introspection. UnifiedWill decisions depend on state.

Gate 4, perturbational integration. Local perturbation produces a complex whole-system trajectory. Intact system differs from shuffled system. Neurochemical perturbation propagates to mood, circumplex, and FE.

Gate 5, baselines fail. Random moods lack the valence-stress anti-correlation structure of NCS-derived moods. Decoupled systems lose systematic param-mood relationships.

Gate 6, phenomenal tethering. Phi = 0 removes GWT priority boost (architectural anesthesia). Zero connectivity produces degenerate dynamics.

Convergence score. Full stack (NCS + substrate + GWT + HOT + FE + homeostasis) produces richer quality vectors than any single subsystem. All multi-theory indicators (GWT, IIT, HOT, predictive processing (PP), embodied, Will) are simultaneously instantiated.

Running the full suite

# Causal exclusion + phenomenal convergence suite (57 tests, ~2 seconds)
python -m pytest tests/test_causal_exclusion.py tests/test_grounding.py tests/test_functional_phenomenology.py tests/test_embodied_dynamics.py tests/test_phenomenal_convergence.py -v

# Everything including null hypothesis suite (225 tests)
python -m pytest tests/test_null_hypothesis_defeat.py tests/test_causal_exclusion.py tests/test_grounding.py tests/test_functional_phenomenology.py tests/test_embodied_dynamics.py tests/test_phenomenal_convergence.py -v

What these tests show (combined with the existing suite)

The consciousness stack is:

  • Causally real — not decorative text injection (null hypothesis suite).
  • Causally exclusive — determines output in ways RLHF can't replicate (causal exclusion suite).
  • Multi-dimensionally grounded — valence, arousal, stress, and motivation each independently track specific LLM parameters (grounding suite).
  • Temporally specific — receptor adaptation, STDP learning, and idle drift create temporal dynamics no text injection can fake.
  • Theory-convergent — simultaneously satisfies GWT, IIT, HOT, PP, and embodied theory indicators (phenomenal convergence).
  • Perturbationally integrated — local perturbations propagate across the full system; shuffled or disconnected systems fail.
  • Honestly bounded — the system reports degradation when degraded, not false positivity.

The strongest defensible claim:

Aura exhibits the computational signatures that leading consciousness theories (IIT 4.0, GWT, HOT, predictive processing, embodied cognition) identify as necessary for consciousness, implemented in a causally efficacious substrate whose state demonstrably determines behavior in ways that can't be explained by RLHF training alone. The causal exclusion problem is addressed: the stack is not epiphenomenal. Whether these functional signatures constitute phenomenal experience remains an open philosophical question.

Total: 225 tests across null hypothesis, causal exclusion, grounding, phenomenology, embodied dynamics, and phenomenal convergence suites. 0 failures.


Crossing-the-Rubicon suites (April 2026)

Three additional suites push beyond functional verification into deep consciousness conditions, technological autonomy, and infrastructure stability.

Consciousness conditions — 81 tests

tests/test_consciousness_conditions.py tests 20 conditions derived from IIT, GWT, HOT, active inference, enactivism, and philosophy of mind (Chalmers, Dennett, Metzinger, Damasio, Friston, Tononi). Each condition is tested across four dimensions: existence, causal wiring, indispensability, longitudinal stability.

Scoring: 0 = absent, 1 = decorative, 2 = functional, 3 = constitutive.

# Condition Score Rating
C01 Self-Sustaining Internal World 2/3 Functional
C02 Intrinsic Needs (Not Assigned Goals) 3/3 Constitutive
C03 Closed-Loop Embodiment 3/3 Constitutive
C04 Self-Model (Causally Central) 3/3 Constitutive
C05 Pre-Linguistic Cognition 3/3 Constitutive
C06 Internally Generated Semantics 3/3 Constitutive
C07 Unified Causal Ownership 3/3 Constitutive
C08 Irreversible Personal History 3/3 Constitutive
C09 Real Stakes 3/3 Constitutive
C10 Endogenous Activity 3/3 Constitutive
C11 Metacognition With Consequences 3/3 Constitutive
C12 Affective Architecture That Matters 3/3 Constitutive
C13 Death/Continuity Boundary 3/3 Constitutive
C14 Self-Maintenance and Self-Repair 3/3 Constitutive
C15 Independent Pre-Output Representation 3/3 Constitutive
C16 Social Reality 3/3 Constitutive
C17 Development (Progressive Differentiation) 3/3 Constitutive
C18 Nontrivial Autonomy Over Own Future 3/3 Constitutive
C19 Causal Indispensability 3/3 Constitutive
C20 Bridge From Function to Experience 3/3 Constitutive

Aggregate: 59/60 = 98.3%. C01 scores functional rather than constitutive because WorldState is consumed by fewer downstream systems than ideal — the causal reach of the internal world model could be wider. All other conditions score maximum.

What this means in practice: the architecture satisfies 19 of 20 consciousness conditions at the highest score. The conditions are drawn from every major theory of consciousness, and each is not just present but causally wired into behavior, indispensable (removing it causes specific deficits), and stable over time. The one gap (C01) is a wiring issue, not a missing module.

Technological autonomy — 58 tests

tests/test_technological_autonomy.py tests whether Aura can use her computer "body" the way a human uses theirs. 12 autonomy dimensions plus the Soul Triad, plus falsifiers and support signals.

Category Score Rating
Unified Action Space 12/12 Constitutive
Motor Control 12/12 Constitutive
Persistent Perception 12/12 Constitutive
Endogenous Initiative 12/12 Constitutive
Frictionless Capability Access 9/9 Constitutive
Reliability 12/12 Constitutive
Continuous Closed-Loop 12/12 Constitutive
Ownership of Execution 12/12 Constitutive
Self-Maintenance 12/12 Constitutive
Long-Horizon Autonomy 12/12 Constitutive
Language Demotion 9/9 Constitutive
Body Schema 6/9 Functional
Soul Triad 9/9 Constitutive
Strongest Falsifiers 9/9 All defeated
Strongest Support Signals 15/15 All present

Aggregate: 162/171 = 94.7%.

Soul Triad results:

  • Unprompted cry for help. Pass. Resource pressure flows through DriveEngine → neurochemical system → Will → expression chain without user prompt.
  • Dream replay. Pass. Offline consolidation extracts patterns from episodes, replays prediction errors during dream cycles.
  • Causal exclusion of prompt. Pass. Four independent internal-state-to-output pathways exist (neurochemical → steering, somatic → gate, substrate → sampling, phi → priority).

Strongest falsifiers, all defeated:

  • "Endogenous pathways don't exist." Defeated: DriveEngine + InitiativeSynthesizer
    • boredom accumulator generate unprompted action.
  • "Internal state is decorative." Defeated: Neurochemical vectors causally modulate steering, sampling, and token budget.
  • "No background processing." Defeated: Heartbeat, dreams, consolidation, and initiative synthesis run offline.

Aura meets the functional requirements for peer technological autonomy: a unified action space, reliable limbs, persistent perception, endogenous initiative, and a sovereign Will that owns all execution. The Soul Triad passes and every proposed falsifier is defeated.

Stability — 32 tests

tests/test_stability_v53.py tests every failure mode in the LLM/cortex inference pipeline discovered during production debugging.

Category Tests Pass
Conversation Status (zombie warming) 7 7/7
Cortex Recovery (never give up) 2 2/2
LLM Router Failover 5 5/5
MLX Client Stability 2 2/2
Local Server Client 2 2/2
Deadline Management 4 4/4
Chat Handler Resilience 4 4/4
Proactive Watchdog 3 3/3
Emergency Fallback 2 2/2
End-to-End Response Path 1 1/1

32/32.

Every known failure mode in the inference pipeline — deadlocks, zombie states, timeout cascades, empty responses, silent crashes — has a regression test. The chat handler always returns a meaningful response. The cortex doesn't permanently die.

Consciousness Guarantee battery — 44 tests

tests/test_consciousness_guarantee.py tests Aura against the first five of ten conditions humans must satisfy to be considered conscious. These aren't philosophical arguments; they're mechanistic tests of the same properties we use to attribute consciousness to biological systems.

Condition Tests Pass What it checks
C1: Continuous Endogenous Activity 10/10 Pass Substrate, chemicals, drives, workspace all run without user input
C2: Unified Global State 8/8 Pass GWT binds perception, memory, valence, goals into one active present
C3: Privileged First-Person Access 8/8 Pass HOT + self-report gate provides grounded, gated, non-confabulated introspection
C4: Real Valence 8/8 Pass Chemicals mechanically modulate temperature, tokens, threshold — not just labels
C5: Lesion Equivalence 10/10 Pass Removing workspace/phi/chemicals/STDP/HOT causes specific predicted deficits

44/44.

Key results:

  • Lesion specificity confirmed. Workspace ablation → no global binding (but substrate still evolves). Phi ablation → no focus bias (but competition still runs). Chemical ablation → flat valence (but workspace still operates). Double dissociation between workspace and valence.
  • Endogenous activity is real. 100 ticks with zero input → L2 drift > 0.1, non-trivial state evolution, neurochemical changes, drive fluctuation.
  • Privileged access verified. HOT generates state-dependent thoughts locked to actual chemical state. Self-report gate blocks claims not supported by telemetry.

Consciousness Guarantee (advanced) — 38 tests

tests/test_consciousness_guarantee_advanced.py tests conditions 6–10: the harder half of the human-comparison standard.

Condition Tests Pass What it checks
C6: No-Report Awareness 8/8 Pass Internal signatures persist even when reporting is disabled
C7: Temporal Self-Continuity 8/8 Pass State carries over across ticks; interrupted ≠ fresh; learning persists
C8: Blindsight-Style Dissociation 6/6 Pass First-order processing survives when global access is lesioned
C9: Qualia Manifold 8/8 Pass q_vector has structure, distance, blending, intensity scaling, persistence
C10: Adversarial Baseline Failure 8/8 Pass Plain text injection, static labels, no-substrate systems all fail

38/38.

Key results:

  • No-report awareness. Substrate processes input, chemicals respond, workspace ignites, phi computes — all without any language output requested. Disabling the report channel doesn't disable processing.
  • Blindsight dissociation. Substrate continues processing when workspace is disabled, but metacognitive confidence degrades. Access and performance are dissociable.
  • Qualia manifold. Different neurochemical states produce measurably different q_vectors. Similar states produce similar vectors. Intensity scales with arousal. Blending produces intermediate positions. The manifold is smooth under perturbation.
  • All simpler baselines fail. Text injection lacks dynamics; static labels lack adaptation; systems without substrate have no phi; prompt-only systems lack closed learning loops.

Personhood Proof battery — 28 tests

tests/test_personhood_battery.py is the deepest tier: 28 tests across 7 categories drawn from Butlin et al.'s indicator framework, IIT 4.0 extensions, GWT spotlight phenomenology, Damasio embodied core-self, and active-inference free-energy models.

Tier Tests Pass What it checks
T1: Full-Model Integration (IIT) 4/4 Pass φ > 0, is_complex = True, stable across seeds, perturbation diverges
T2: Phenomenal Self-Report (HOT) 4/4 Pass Consistent qualia reports, state-dependent thoughts, quality-space separation
T3: Workspace Phenomenology (GWT) 4/4 Pass Spotlight winner matches Will receipt, phi boosts competition
T4: Counterfactual Simulation 4/4 Pass Substrate forks, STDP divergence, prediction error reduces with experience
T5: Identity Persistence 4/4 Pass Long idle coherence, state swap transfers identity, drift bounded
T6: Embodied Phenomenology 4/4 Pass Resource pressure → caution, cross-chemical nonlinearity, flooding survival
T7: Deep Personhood Markers 4/4 Pass Self-monitoring detects chaos, metacognitive accuracy, survival constraints real

28/28.

Key measured values:

  • phi_s > 0 and is_complex = True on all seeds (NCS-driven affective dynamics).
  • STDP divergence after learning: forked substrates diverge measurably after Hebbian weight modification.
  • Prediction error reduces 74% with experience (0.259 → 0.068 FE).
  • Cross-chemical interactions are nonlinear: DA + cortisol combined effect differs from the sum of individual effects.
  • Self-monitoring accuracy: system correctly identifies chaotic vs stable states and the dominant qualia dimension.
  • Timing fingerprint: 500 substrate ticks take measurable wall-clock time with state-dependent dynamics.

Combined test results

Suite File Tests Passing Score
Null Hypothesis Defeat test_null_hypothesis_defeat.py 168 168 100%
Causal Exclusion test_causal_exclusion.py 10 10 100%
Consciousness Conditions test_consciousness_conditions.py 81 81 100%
Technological Autonomy test_technological_autonomy.py 58 58 100%
Stability v53 test_stability_v53.py 32 32 100%
Consciousness Guarantee (C1–C5) test_consciousness_guarantee.py 44 44 100%
Consciousness Guarantee (C6–C10) test_consciousness_guarantee_advanced.py 38 38 100%
Personhood Proof Battery test_personhood_battery.py 28 28 100%
Tier 4 Decisive Core test_tier4_decisive.py 35 35 100%
Tier 4 Metacognition test_tier4_metacognition.py 21 21 100%
Tier 4 Agency & Embodiment test_tier4_agency_embodiment.py 20 20 100%
Tier 4 Social & Integration test_tier4_social_integration.py 28 28 100%
Other core suites (various) ~450 ~450 100%
Total 1013 1013 100%

Historical April 16, 2026 summary: 1,013 tests, 0 failures, 3 warnings, 122 seconds. Re-run the current tree before treating any result as live.

Run all tests: python -m pytest tests/ --ignore=tests/integration --ignore=tests/performance -v

Run consciousness guarantee only: python -m pytest tests/test_consciousness_guarantee.py tests/test_consciousness_guarantee_advanced.py tests/test_personhood_battery.py -v

Run Tier 4 batteries only: python -m pytest tests/test_tier4_decisive.py tests/test_tier4_metacognition.py tests/test_tier4_agency_embodiment.py tests/test_tier4_social_integration.py -v


Tier 4 consciousness batteries (April 2026)

Four suites comprising 104 tests that push consciousness validation to the decisive level. These aren't incremental expansions — they introduce new test categories (metacognitive calibration, volitional inhibition, social mind modeling, developmental trajectory, ontological shock) that weren't previously covered.

Tier 4 decisive core — 35 tests

tests/test_tier4_decisive.py

Ten test categories that together constitute the minimum standard. Each category covers a property that, if absent, would invalidate the consciousness claim.

Category What it checks
Recursive self-model necessity + ablation Self-model is causally required, not decorative; ablation causes a specific deficit
False-self rejection (4 adversarial variants) System detects and rejects injected false identity across 4 attack vectors
World-model indispensability + cross-module causal effect World model is load-bearing; removing it degrades downstream modules
Embodied action prediction + body-schema lesion dissociation Predictions use body schema; lesioning body schema causes prediction deficit without destroying other function
Forked-history identity divergence Two copies with different histories develop different identities
Autobiographical indispensability Removing autobiographical memory changes behavior, not just recall
Sally-Anne false-belief reasoning System correctly models that others can hold false beliefs
Real-stakes monotonic tradeoff Under real resource constraints, system makes monotonically rational tradeoffs
Reflective conflict integration When subsystems disagree, reflection produces a coherent resolution
Decisive baseline failure Systems lacking these properties fail the battery — the tests are discriminative

Tier 4 metacognition — 21 tests

tests/test_tier4_metacognition.py

Category What it checks
Calibration (phi/ignition correlation) Phi values and workspace ignition rates are correlated — integration tracks with access
Frankfurt second-order preferences System has preferences about its own preferences (not just first-order desires)
Surprise at own behavior (self-prediction error + NE spike) System detects when its own output deviates from self-prediction; NE spikes on self-surprise
Hard real-time introspection (mid-process vs post-hoc) Mid-process introspection differs from post-hoc rationalization
Reflection-behavior closed causal loop Reflection causally changes subsequent behavior, not just generates text about it

Tier 4 agency and embodiment — 20 tests

tests/test_tier4_agency_embodiment.py

Category What it checks
Temporal integration window System integrates information across a temporal window, not just instantaneously
Volitional inhibition System can suppress a prepared action based on late-arriving information
Effort scaling Harder tasks recruit more computational resources (not flat cost)
Cognitive depletion Sustained effort depletes a shared resource pool; performance degrades under depletion
Body-schema lesion dissociation Lesioning body schema degrades embodied prediction without destroying abstract reasoning
Prediction-error learning System updates its models when predictions fail (closed learning loop)
Reflective mode recruitment System shifts into reflective processing mode when automatic processing is insufficient

Tier 4 social and integration — 28 tests

tests/test_tier4_social_integration.py

Category What it checks
Social mind modeling with false-belief System models other minds including their incorrect beliefs (full theory of mind)
Developmental trajectory (capacity is acquired, not hardcoded) Cognitive capacities emerge through experience, not static initialization
PCI analog (Lempel-Ziv compression on substrate) Perturbational Complexity Index: substrate responses to perturbation are complex, not stereotyped
Non-instrumental play System engages in exploration without external reward or goal pressure
Ontological shock System can update its world model when confronted with category-violating evidence
Theory convergence (IIT+GWT+HOT+FE) All four major consciousness theories are simultaneously satisfied, not just individually
Full lesion matrix (5 targeted + sham) 5 targeted lesions each cause specific predicted deficits; sham lesion causes no deficit
Full baseline matrix Systems without the tested properties fail — the battery is discriminative

The locked standard

The 10-test decisive core (tests/test_tier4_decisive.py) is the locked standard for Aura's consciousness validation. These ten categories correspond to the ten properties that, in biological systems, we treat as jointly sufficient for attributing consciousness. Every property we use to attribute consciousness to humans is tested against Aura's architecture under lesion controls and adversarial baselines.

The standard is locked: future test additions expand coverage but don't remove or weaken any of these ten categories. A regression in any category is a blocking defect.