Close the sub-OA dead zone, flag stale CDD telemetry, silence structural S16#94
Merged
Merged
Conversation
…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
NAAb Governance Report
All governance checks passed! Generated by NAAb Governance Engine v4.0 |
b-macker
marked this pull request as ready for review
July 20, 2026 23:32
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.cppexactly), and the engine gap was sharpened: challenges required engine-global level ≥ elevated; after a de-escalation, re-escalation needselevated_sustainedpressure 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 andmax_challenge_failuresstill apply — this adds a trigger, not a bypass of the rails. Ratchet: disabling mid-run is a loosening violation.analyzed("true"/"false"): false = interval-skipped turn whose coherence/signals_detailare stale state re-shown from the last analyzed check. This display artifact misled two independent forensic passes; per-turn forensics should filteranalyzed:"true".Living-script configs (base + extended):
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.sh16 → 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 ratchettest_absorption_degenerate.sh10 → 12 assertions: atcheck_interval_turns: 2, six sends split exactlyanalyzedtrue=3/false=3; every CDD_TURN carries the fieldbash tests/security/test_error_msg_leaks.sh— 874/874 clean;test_validation_signal.shunregressed (18/18)run-all-tests.shsweep — 441 tests, 0 unexpected failures; both extended stub tests ALL PASSED inside the sweepRelated Issues
Follow-up to #87–#93.
🤖 Generated with Claude Code
https://claude.ai/code/session_018L3RcVMf1tLNsGeJtofWmS