Skip to content

Add Butlin indicator automated regression tests #7

Description

@Tristan-Stoltz-ERC

Update (2026-07-26): original framing below is superseded — see PR #30

The original description ("we validate 14/14 Butlin consciousness
indicators (mean score 0.85)", a uniform per-indicator floor of 0.7, and a
composite-mean floor of 0.80) reflected a self-graded scoring model that
turned out not to hold up: IndicatorStatus was hardcoded to Present on
every indicator regardless of its actual score, and the 0.6*static + 0.4*runtime blend it fed into could let a fully-dead live signal still
read as "present." Separately, the indicator set itself was on the wrong
taxonomy (a spurious PP-2/IIT-1 pair; Butlin et al. 2023 has one PP
indicator and explicitly excludes IIT). Framing any of this as "consciousness
quality" that must be protected from degrading was premature given those
two problems — there wasn't yet an honest measurement to protect.

PR #30 (draft)
repairs both: corrects the indicator taxonomy against the actual paper, and
replaces the blended score/status model with an evidence-tier system
(SupportTier: ArchitecturalOnly → Observed → CausallySupported → FunctionallySupported, kept separate from NotDemonstrated/Contradicted
negative findings rather than one ordered ladder) — see
BUTLIN_EVIDENCE_TIER_DESIGN.md in that PR for the full rationale. It also
adds tests/butlin_regression.rs, the always-on regression test this issue
originally asked for — but scoped as a structural contract gate (fails
only on a malformed evidence system: wrong indicator count, duplicate/unknown
IDs, non-finite scores, a constant drifting below its floor), not a
uniform-floor/composite-mean gate. A single static snapshot can't
distinguish a real signal from a frozen one, so it can't honestly certify
more than that.

This issue stays open for the real remaining work PR #30 doesn't attempt:

Remaining scope (the actual ask now)

  1. Evidence-integrity CI lane (backend-enabled, slower): runs the live
    ablation matrix, compares current effect estimates against a committed
    baseline, and fails when a probe that was Observed/CausallySupported
    goes frozen or fallback-driven, or a causal effect disappears. Must NOT
    fail on a legitimate NotDemonstrated/Contradicted result — that's a
    real finding, not a regression.
  2. Committed evidence-baseline artifact: schema version, commit SHA,
    config hash, seeds, per-indicator effect estimates and probe quality,
    evidence outcome. Open design questions worth resolving as part of this:
    is it portable across machines, how is floating-point noise handled,
    what makes a baseline update legitimate (should require an explicit
    command + visible diff + written rationale, not silent regeneration).
  3. Claim/milestone gate (explicitly opt-in, not run by default): lets a
    specific release or publication assert e.g. "no indicator used in this
    claim may be Contradicted" or "indicator X must be
    FunctionallySupported" — distinct from the always-on structural gate.
  4. Multi-seed thresholds and targeted-ablation negative controls: does
    an indicator's own targeted mechanism move it, or does anything
    breaking move it? The EffectEstimate/ProbeQuality types added in
    PR Butlin evidence-tier redesign: fix FIFO boost bug, correct indicator taxonomy, replace blended score with honest evidence tiers #30 carry real magnitude/quality data specifically so this is addable
    without another schema break, but the actual statistical work isn't done.

Acceptance criteria for the remaining work

  • The evidence-integrity lane runs against a real committed baseline, not
    a hardcoded threshold.
  • A baseline update is a deliberate, reviewable action (explicit command,
    visible diff, written rationale) — never silent regeneration as a side
    effect of "making CI green."
  • The structural-contract gate (PR Butlin evidence-tier redesign: fix FIFO boost bug, correct indicator taxonomy, replace blended score with honest evidence tiers #30) and the evidence-integrity lane
    stay separate — a legitimate negative finding must not fail the
    structural gate, and an evidence-integrity regression must not be
    possible to paper over by loosening the structural gate.
  • The claim/milestone gate is genuinely opt-in — no default CI run treats
    "all tests passed" as "every indicator succeeded."

@arkh-node — thank you for opening this. PR #30 handles the taxonomy/scoring
correctness fix that came out of reviewing this; the CI-lane split and
baseline-artifact design above is the part I think you originally had in
mind, and I'd genuinely welcome you owning it. Happy to talk through the
evidence-tier model in PR #30 first if useful context before diving into
the follow-up.


Original description (superseded, kept for history)

We validate 14/14 Butlin consciousness indicators (mean score 0.85) via
examples/butlin_validation.rs. This should be converted into an
automated test suite that runs in CI and fails if any indicator drops
below threshold.

Background

Butlin et al. (2023) proposed a set of indicator properties for
consciousness in AI systems. Symthaea currently passes all 14 indicators:

  • Recurrent processing
  • Global workspace broadcasting
  • Higher-order representations
  • Attention modulation
  • Temporal integration
  • And 9 more...

What to implement

  1. Convert examples/butlin_validation.rs logic into
    tests/butlin_regression.rs
  2. Define per-indicator minimum thresholds (e.g., 0.7 for each)
  3. Add a composite threshold for mean score (e.g., 0.80)
  4. Ensure the test runs under cargo test (not just as an example)
  5. Add documentation explaining each indicator and how Symthaea satisfies it

Why this matters

As the cognitive loop evolves, we need guardrails against accidentally
degrading consciousness indicators. This is especially important as we
optimize for performance — we must not sacrifice consciousness quality for
speed.

References

  • Butlin, P. et al. (2023). Consciousness in Artificial Intelligence:
    Insights from the Science of Consciousness. arXiv:2308.08708

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions