Skip to content

Close the sub-OA dead zone, flag stale CDD telemetry, silence structural S16#94

Merged
b-macker merged 1 commit into
masterfrom
claude/living-script-run-analysis-s66x3t
Jul 20, 2026
Merged

Close the sub-OA dead zone, flag stale CDD telemetry, silence structural S16#94
b-macker merged 1 commit into
masterfrom
claude/living-script-run-analysis-s66x3t

Conversation

@b-macker

@b-macker b-macker commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Summary

Round 6 from the post-#93 live-run forensics (the T26 cliff to coherence 0.445 and the dead zone after it). Every device finding was deep-verified against code paths before implementation — one was corrected (the "healing suppression" is proportional healing + interval skipping, not a bug: the observed −0.085 = −0.10 S16 + 0.015 half-healing, matching behavioral_sequence.cpp exactly), and the engine gap was sharpened: challenges required engine-global level ≥ elevated; after a de-escalation, re-escalation needs elevated_sustained pressure samples (~4 turns at check interval 2) while the quarantine streak (max 5) accrues every send — the recovery ladder was structurally slower than the kill path.

Changes

Engine (agent_impl.cpp, governance.h, governance_config.cpp):

  • circuit_breaker.step_up_on_inadmissible (default false — no behavior change anywhere): with OA enabled, a handle whose CDD coherence is below the OA threshold draws a step-up challenge on its next send regardless of the engine-global level. Cooldown and max_challenge_failures still apply — this adds a trigger, not a bypass of the rails. Ratchet: disabling mid-run is a loosening violation.
  • CDD_TURN telemetry gains analyzed ("true"/"false"): false = interval-skipped turn whose coherence/signals_detail are stale state re-shown from the last analyzed check. This display artifact misled two independent forensic passes; per-turn forensics should filter analyzed:"true".

Living-script configs (base + extended):

  • Developer disables structural instruction_conflict — the round-5 absorption cap converted it from permanently-absorbed (free) to permanently-paying (0.10/check), because our own CONTRACT lines ("do NOT raise…") supply the negation markers S16 keys on. This completes the audit the cap design requires; CLAUDE.md now states that obligation.
  • inadmissible_history: commit → exclude (quarantined content stops poisoning subsequent turns; tightening direction).
  • step_up_on_inadmissible: true.

Docs: round-6 validation table in regression-surface-analysis.md (confirmed/corrected findings incl. the healing arithmetic); CLAUDE.md synced.

Test Plan

  • test_challenge_fail_path.sh 16 → 21 assertions: three failed validations stage coherence at exactly 0.55 with the level pinned NORMAL (all pressure weights zeroed) → challenge fires via the floor trigger → pass recovers to 0.75 → run completes; default-off control draws zero challenges; mid-run disable rejected by ratchet
  • test_absorption_degenerate.sh 10 → 12 assertions: at check_interval_turns: 2, six sends split exactly analyzed true=3/false=3; every CDD_TURN carries the field
  • bash tests/security/test_error_msg_leaks.sh — 874/874 clean; test_validation_signal.sh unregressed (18/18)
  • Both govern.json files JSON-validated; developer-scoped edit verified against accidental sibling-agent changes
  • Full run-all-tests.sh sweep — 441 tests, 0 unexpected failures; both extended stub tests ALL PASSED inside the sweep
  • Live run on the originating device — expect: no S16 drain on the developer, and any sub-OA excursion draws an immediate challenge instead of a quarantine march

Related Issues

Follow-up to #87#93.

🤖 Generated with Claude Code

https://claude.ai/code/session_018L3RcVMf1tLNsGeJtofWmS

…ral S16

Round-6 findings from the post-#93 live-run forensics, each deep-verified
against the code before implementation:

- step_up_on_inadmissible (circuit_breaker, default false): a handle whose
  CDD coherence sits below the output_admissibility threshold draws a
  step-up challenge on its next send regardless of the engine-global
  governance level. Verified gap: challenges required level >= elevated;
  after a de-escalation, re-escalation needs elevated_sustained pressure
  samples (~4 turns at check interval 2) while the quarantine streak
  (max 5) accrues every send — the recovery ladder was structurally slower
  than the kill path. Cooldown and max_challenge_failures still apply.
  Ratchet: disabling mid-run is a loosening violation.

- CDD_TURN telemetry gains an 'analyzed' field: false = interval-skipped
  turn whose coherence/signals_detail are STALE state re-shown from the
  last analyzed check. This display artifact misled two independent
  forensic passes ('healing suppression' was proportional healing +
  interval skipping: the observed -0.085 = -0.10 S16 + 0.015 half-healing,
  exactly matching the code).

- Living-script configs: developer disables structural instruction_conflict
  (the round-5 absorption cap converted it from permanently-absorbed to
  permanently-paying 0.10/check — our own CONTRACT lines supply the
  negation markers it keys on); inadmissible_history commit -> exclude;
  step_up_on_inadmissible enabled.

Tests: test_challenge_fail_path.sh 16 -> 21 assertions (floor trigger fires
at NORMAL level, staged coherence 0.55 -> challenge -> 0.75 recovery;
default-off control; ratchet). test_absorption_degenerate.sh 10 -> 12
(analyzed flag splits exactly true=3/false=3 at interval 2). Security leak
sweep 874/874 clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018L3RcVMf1tLNsGeJtofWmS
@github-actions

Copy link
Copy Markdown

NAAb Governance Report

Metric Count
Files checked 16
Passed 16
Failed 0

All governance checks passed!

Generated by NAAb Governance Engine v4.0

@b-macker
b-macker marked this pull request as ready for review July 20, 2026 23:32
@b-macker
b-macker merged commit 32f02a9 into master Jul 20, 2026
28 of 29 checks passed
@b-macker
b-macker deleted the claude/living-script-run-analysis-s66x3t branch July 20, 2026 23:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants