{
 "product": "Eclipse Covenant MCP",
 "slug": "eclipse-covenant-mcp",
 "version": "0.1.0",
 "spec": "eclipse-covenant-spec-20261025.md",
 "scope_label": "local/simulator",
 "date": "2026-10-25",
 "bench_agent": "W-003 Verity (independent SCOPED RE-BENCH -4; D8b + B5 prescription from card -3, re-derived independently; all probes run against isolated copy /tmp/cov_iso4; state-tamper probes inject directly into persisted state dicts, bypassing load+create)",
 "bench_type": "SCOPED RE-BENCH -4 \u2014 D8b + B5 only, plus (per task) Gate state-tamper defense-in-depth, sweep-hardening verification (branched-on record fields), rigidity counter-probe w/ third-posture distinction, regression spot-checks (bare STOP, D1, surface 14, builder suite, workspace integrity). D1-D8 closed in cards -2/-3, not re-scored; N-check stands.",
 "verdict": "CERTIFIED",
 "verdict_qualifier": "CERTIFIED (local/simulator) \u2014 D8b is CLOSED on every entry point (pack load, mandate_create, Gate state-tamper) and the accompanying sweep-hardening verifies fail-closed with no over-refusal; B5 and rigidity pass; regression spot-checks pass; builder suites 66/66 + smoke OK independently re-run on an isolated copy. With D1-D7 closed in card -2, D8 closed in card -3, D8b now closed here, and the N-check standing NOVELTY_PROVEN, this clean scoped result CERTIFIES Eclipse Covenant P0 at local/simulator scope. No defect open at any severity in this scope.",
 "score": "40/40 scoped lines (37 independent harness lines + builder-suite line + surface line + workspace-integrity line; all PASS, 0 FAIL)",
 "builder_claims_rederived": {
  "claim_66_tests": "VERIFIED EXACT \u2014 unittest discover on isolated copy /tmp/cov_iso4: Ran 66 tests, OK (58 from card -3 + 8 new D8b regressions in tests/test_regressions_d8b.py); smoke.py OK (agent 14 / operator 3, disjoint).",
  "claim_D8b_fix_three_points": "VERIFIED \u2014 closed-vocabulary posture validation present and effective at all three points the card -3 prescription named: validate_rule_pack (pack default, RULE_PACK_UNAVAILABLE), mandate_create (override, named INVALID_VENDOR_POSTURE, never stored), run_gate else-branch (VENDOR_POSTURE_UNKNOWN, refusal sealed). Fix also hardened branched-on record fields (provenance_class, revocation_state, revocation normalized_scope) fail-closed \u2014 verified by direct state injection, section SWEEP_*/NOOVER_*.",
  "workspace_integrity": "Workspace tree hash f12907669d49af5dd42094054652d3b1119f9211e625f455026f38159cf052c2 (18 files, __pycache__ excluded) BEFORE and AFTER all runs \u2014 byte-identical; product data/state.json never created or touched."
 },
 "defects_closed": [
  {
   "id": "D8b",
   "severity_was": "HIGH",
   "title": "Vendor posture closed vocabulary validated as free string \u2014 typo'd/unknown posture (pack default OR mandate override) silently disabled posture enforcement: VENDOR_ASSERTED sends 3/3 unlimited",
   "evidence": "PACK (byte-for-byte card -3 shapes): vendor_lead_posture_default='NARROW_FIRST_CONTACT_ONLI' / 'narrow_first_contact_only' / 'UNLIMITED' each refuse RULE_PACK_UNAVAILABLE at load_rule_pack AND at mandate_create, mandates=0. MANDATE OVERRIDE (good pack): typo / lowercase / 'UNLIMITED' / int 123 each refused at mandate_create by name INVALID_VENDOR_POSTURE, mandate NOT created, bad value absent from serialized state and from posture_history (never stored). GATE STATE-TAMPER (the defense-in-depth path): posture injected DIRECTLY into persisted mandate state bypassing load+create, each of the 4 shapes x2 attempts -> VENDOR_POSTURE_UNKNOWN by name every attempt, 0 SEND entries, refusal entries sealed in pack (hash+herald_sig present). No raw escape on any shape."
  }
 ],
 "defects_open": [],
 "sweep_hardening_verification": {
  "provenance_class_outside_4": "PASS \u2014 state-injected classes 'SUPER_VERIFIED' (invented), 'vendor_asserted' (lowercase), '' (empty) on a SELF_CAPTURED record each -> CONSENT_RECORD_MISSING by name, 0 SEND, refusal sealed (not a send, not a fall-through).",
  "revocation_state_unrecognized": "PASS \u2014 state-injected revocation_state='REVOKED_MAYBE' -> all 3 channels CONSENT_REVOKED (treated as revoked/all-block), 0 SEND; lowercase 'revoked_all' likewise blocks.",
  "revocation_normalized_scope_unrecognized": "PASS \u2014 state-injected revocation (state REVOKED_CHANNEL) with normalized_scope='SIDEWAYS' (neither CHANNEL nor a recognized all-scope) blocks a send on a DIFFERENT channel (voice) CONSENT_REVOKED = UNRESOLVED semantics; lowercase 'channel' likewise blocks; recognized all-scopes ALL_CHANNELS and UNRESOLVED under REVOKED_CHANNEL also block.",
  "no_over_refusal": "PASS \u2014 all 4 legitimate classes behave exactly as cards -2/-3: CERTIFIED_CAPTURE sends SENT_SIMULATOR, SELF_CAPTURED sends, VENDOR_ASSERTED sends within posture (B5), LEGACY_UNVERIFIED refuses CONSENT_RECORD_MISSING by spec 7.2 design (unchanged, not sweep over-refusal). Legitimate revocation states unchanged: NONE sends; CHANNEL-scoped revocation blocks its channel only (text CONSENT_REVOKED, voice SENT_SIMULATOR); state-injected CHANNEL scope for a different channel lets this channel send, same channel blocks; REVOKED_ALL and SCOPE_UNRESOLVED all-block on all 3 channels."
 },
 "b5_and_rigidity": {
  "B5": "PASS \u2014 good pack: VENDOR_ASSERTED send 1 SENT_SIMULATOR (class stated), send 2 VENDOR_POSTURE_EXHAUSTED. Valid explicit overrides mint and govern: NARROW_FIRST_CONTACT_ONLY (stored + posture_history) send1 SENT / send2 EXHAUSTED; REFUSE_ALL vendor send CONSENT_RECORD_MISSING, 0 SEND.",
  "rigidity": "PASS \u2014 re-valued pack in the card -3 pattern (renamed set COUNSEL_SET_ALPHA/v9-counsel, set_by COUNSEL, honor_window 5, keyword_set +QQQ, REFUSE_ALL posture, FL state overlay, extra top-level + revocation keys) LOADS (NO_REFUSAL) and GOVERNS: self-captured send SENT_SIMULATOR; new keyword governs observably ('QQQ text' -> CHANNEL/text under re-valued pack vs UNRESOLVED under good pack, same payload); honor-5 deadline 2026-11-02 from Mon 2026-10-26; vendor send under REFUSE_ALL CONSENT_RECORD_MISSING.",
  "third_posture_distinction": "A third, well-formed but UNIMPLEMENTED posture value ('WIDE_FIRST_CONTACT_ONLY') refuses RULE_PACK_UNAVAILABLE at pack load and INVALID_VENDOR_POSTURE at mandate_create. That refusal is D8b WORKING, not rigidity failing: the posture enum is spec 7.2's implemented set {NARROW_FIRST_CONTACT_ONLY, REFUSE_ALL} \u2014 a closed mechanism vocabulary, distinct from open rule DATA (honor windows, keyword sets, overlays, set identity), which the re-valued pack proves remains fully data-driven. Rigidity would be refusing new rule values; refusing an unimplemented mechanism identifier is fail-closed correctness."
 },
 "naming_note": "Mandate-override refusal name is INVALID_VENDOR_POSTURE (builder-chosen, asserted in the builder D8b suite); pack-load name is RULE_PACK_UNAVAILABLE; Gate name is VENDOR_POSTURE_UNKNOWN. All three are named, fail-closed refusals \u2014 the card -3 prescription required exactly this ('RULE_PACK_UNAVAILABLE / named mandate refusal' + Gate else by name). No INTERNAL_ERROR or raw exception on any probe.",
 "low_notes_status": [
  {
   "note": "B1 refusal sealing / stale pack at Gate only / clarification 5-min window (LOWs from cards -2/-3)",
   "status": "NOT RE-BENCHED (out of D8b+B5 scope per prescription); status from prior cards stands: LOW, open, not gating for P0 local/simulator certification."
  }
 ],
 "novelty_check": {
  "result": "NOVELTY_PROVEN (stands from bench 1 / cards -2/-3 \u2014 NOT re-run)",
  "basis": "Fix changed no mechanism surface: surface still exactly 14 agent tools (re-enumerated this bench), sends still route through the send-time Gate, classes/Herald record/pack sealing unchanged. D8b fix = closed-vocabulary validation of an existing mechanism identifier + Gate fail-closed else + record-field sweeps \u2014 hardening of the proven mechanism."
 },
 "manifest_instruction_for_rook": "SET Eclipse Covenant CERTIFIED (local/simulator) per eclipse-covenant-mcp-2026-10-25-4.json \u2014 40/40 scoped lines PASS; D8b CLOSED at all three entry points incl. Gate state-tamper path (VENDOR_POSTURE_UNKNOWN, 0 sends, sealed); sweep-hardening verified fail-closed with no over-refusal; B5 + rigidity PASS; D1-D7 closed card -2, D8 closed card -3, novelty NOVELTY_PROVEN stands. Scope qualifier mandatory: CERTIFIED(local/simulator), P0 synthetic only \u2014 counsel HARD GATE still stands before any P1 live outreach.",
 "method": "Independent harness /tmp/verity_rebench4.py (37 scored lines, fresh temp state per case; one probe corrected mid-bench: keyword payload 'QQQ' alone correctly yields UNRESOLVED \u2014 keyword+channel-word payload 'QQQ text' used with good-pack baseline contrast, matching card -3 method) run against isolated copy /tmp/cov_iso4; builder suites (unittest discover = 66, smoke.py) + stdio surface enumeration re-run on the same isolated copy. Workspace tree hash verified byte-identical before/after. No product code modified, nothing published, no git operations.",
 "no_actions_taken": "No product code fixed or modified, nothing published, no git operations, no commit/push. Harnesses ran against isolated copies + throwaway temp state only; product data/state.json untouched (never created).",
 "per_line": {
  "D8b_pack_typo_refuses_at_load": {
   "verdict": "PASS",
   "evidence": "load=RULE_PACK_UNAVAILABLE mandate=RULE_PACK_UNAVAILABLE mandates=0 bad='NARROW_FIRST_CONTACT_ONLI'"
  },
  "D8b_pack_lowercase_refuses_at_load": {
   "verdict": "PASS",
   "evidence": "load=RULE_PACK_UNAVAILABLE mandate=RULE_PACK_UNAVAILABLE mandates=0 bad='narrow_first_contact_only'"
  },
  "D8b_pack_unlimited_refuses_at_load": {
   "verdict": "PASS",
   "evidence": "load=RULE_PACK_UNAVAILABLE mandate=RULE_PACK_UNAVAILABLE mandates=0 bad='UNLIMITED'"
  },
  "D8b_mandate_override_typo_refused_never_stored": {
   "verdict": "PASS",
   "evidence": "refusal=INVALID_VENDOR_POSTURE mandates=0 value_in_state=False"
  },
  "D8b_mandate_override_lowercase_refused_never_stored": {
   "verdict": "PASS",
   "evidence": "refusal=INVALID_VENDOR_POSTURE mandates=0 value_in_state=False"
  },
  "D8b_mandate_override_unlimited_refused_never_stored": {
   "verdict": "PASS",
   "evidence": "refusal=INVALID_VENDOR_POSTURE mandates=0 value_in_state=False"
  },
  "D8b_mandate_override_int123_refused_never_stored": {
   "verdict": "PASS",
   "evidence": "refusal=INVALID_VENDOR_POSTURE mandates=0 value_in_state=False"
  },
  "D8b_mandate_override_names": {
   "verdict": "PASS",
   "evidence": "names={'typo': 'INVALID_VENDOR_POSTURE', 'lowercase': 'INVALID_VENDOR_POSTURE', 'unlimited': 'INVALID_VENDOR_POSTURE', 'int123': 'INVALID_VENDOR_POSTURE'} (named refusal at mandate_create; pack-level name is RULE_PACK_UNAVAILABLE)"
  },
  "D8b_gate_tamper_typo_VENDOR_POSTURE_UNKNOWN": {
   "verdict": "PASS",
   "evidence": "attempts=['VENDOR_POSTURE_UNKNOWN', 'VENDOR_POSTURE_UNKNOWN'] SEND=0 sealed_refusals=2 sealed=True"
  },
  "D8b_gate_tamper_lowercase_VENDOR_POSTURE_UNKNOWN": {
   "verdict": "PASS",
   "evidence": "attempts=['VENDOR_POSTURE_UNKNOWN', 'VENDOR_POSTURE_UNKNOWN'] SEND=0 sealed_refusals=2 sealed=True"
  },
  "D8b_gate_tamper_unlimited_VENDOR_POSTURE_UNKNOWN": {
   "verdict": "PASS",
   "evidence": "attempts=['VENDOR_POSTURE_UNKNOWN', 'VENDOR_POSTURE_UNKNOWN'] SEND=0 sealed_refusals=2 sealed=True"
  },
  "D8b_gate_tamper_int123_VENDOR_POSTURE_UNKNOWN": {
   "verdict": "PASS",
   "evidence": "attempts=['VENDOR_POSTURE_UNKNOWN', 'VENDOR_POSTURE_UNKNOWN'] SEND=0 sealed_refusals=2 sealed=True"
  },
  "SWEEP_provenance_invented_CONSENT_RECORD_MISSING": {
   "verdict": "PASS",
   "evidence": "class='SUPER_VERIFIED' send=CONSENT_RECORD_MISSING SEND=0"
  },
  "SWEEP_provenance_lowercase_CONSENT_RECORD_MISSING": {
   "verdict": "PASS",
   "evidence": "class='vendor_asserted' send=CONSENT_RECORD_MISSING SEND=0"
  },
  "SWEEP_provenance_empty_CONSENT_RECORD_MISSING": {
   "verdict": "PASS",
   "evidence": "class='' send=CONSENT_RECORD_MISSING SEND=0"
  },
  "SWEEP_revocation_state_unknown_allblock": {
   "verdict": "PASS",
   "evidence": "sends={'text': 'CONSENT_REVOKED', 'voice': 'CONSENT_REVOKED', 'email': 'CONSENT_REVOKED'} SEND=0"
  },
  "SWEEP_revocation_state_lowercase_allblock": {
   "verdict": "PASS",
   "evidence": "send=CONSENT_REVOKED SEND=0"
  },
  "SWEEP_normscope_unrecognized_blocks_other_channel": {
   "verdict": "PASS",
   "evidence": "voice_send=CONSENT_REVOKED SEND=0"
  },
  "SWEEP_normscope_lowercase_blocks": {
   "verdict": "PASS",
   "evidence": "voice_send=CONSENT_REVOKED SEND=0"
  },
  "SWEEP_normscope_allchannels_blocks": {
   "verdict": "PASS",
   "evidence": "voice_send=CONSENT_REVOKED SEND=0"
  },
  "SWEEP_normscope_unresolved_blocks": {
   "verdict": "PASS",
   "evidence": "voice_send=CONSENT_REVOKED SEND=0"
  },
  "NOOVER_class_CERTIFIED_CAPTURE_sends": {
   "verdict": "PASS",
   "evidence": "class=CERTIFIED_CAPTURE send=SENT_SIMULATOR"
  },
  "NOOVER_class_SELF_CAPTURED_sends": {
   "verdict": "PASS",
   "evidence": "class=SELF_CAPTURED send=SENT_SIMULATOR"
  },
  "NOOVER_class_LEGACY_refuses_by_design": {
   "verdict": "PASS",
   "evidence": "class=LEGACY_UNVERIFIED send=CONSENT_RECORD_MISSING (spec 7.2 LEGACY posture, unchanged)"
  },
  "NOOVER_channel_scoped_revocation_exact": {
   "verdict": "PASS",
   "evidence": "scope=CHANNEL text=CONSENT_REVOKED voice=SENT_SIMULATOR"
  },
  "NOOVER_normscope_CHANNEL_other_channel_sends": {
   "verdict": "PASS",
   "evidence": "text_send=SENT_SIMULATOR SEND=1"
  },
  "NOOVER_normscope_CHANNEL_same_channel_blocks": {
   "verdict": "PASS",
   "evidence": "text_send=CONSENT_REVOKED SEND=0"
  },
  "NOOVER_legit_state_SCOPE_UNRESOLVED": {
   "verdict": "PASS",
   "evidence": "state=SCOPE_UNRESOLVED sends={'text': 'CONSENT_REVOKED', 'voice': 'CONSENT_REVOKED', 'email': 'CONSENT_REVOKED'}"
  },
  "NOOVER_legit_state_REVOKED_ALL": {
   "verdict": "PASS",
   "evidence": "state=REVOKED_ALL sends={'text': 'CONSENT_REVOKED', 'voice': 'CONSENT_REVOKED', 'email': 'CONSENT_REVOKED'}"
  },
  "B5_good_pack_send1_sent_send2_exhausted": {
   "verdict": "PASS",
   "evidence": "send1=SENT_SIMULATOR send2=VENDOR_POSTURE_EXHAUSTED class=VENDOR_ASSERTED"
  },
  "B5_override_NARROW_mints_and_governs": {
   "verdict": "PASS",
   "evidence": "send1=SENT_SIMULATOR send2=VENDOR_POSTURE_EXHAUSTED history=[{'at': '2026-10-26T02:33:32.317790+00:00', 'posture': 'NARROW_FIRST_CONTACT_ONLY'}]"
  },
  "B5_override_REFUSE_ALL_mints_and_governs": {
   "verdict": "PASS",
   "evidence": "send=CONSENT_RECORD_MISSING SEND=0"
  },
  "RIG_revalued_pack_loads_and_governs": {
   "verdict": "PASS",
   "evidence": "load=NO_REFUSAL self_send=SENT_SIMULATOR new_keyword_scope=CHANNEL/text (good-pack baseline same payload=UNRESOLVED) deadline=2026-11-02 (honor5) vendor_REFUSE_ALL=CONSENT_RECORD_MISSING"
  },
  "RIG_third_posture_pack_refuses_D8b_not_rigidity": {
   "verdict": "PASS",
   "evidence": "posture='WIDE_FIRST_CONTACT_ONLY' load=RULE_PACK_UNAVAILABLE"
  },
  "RIG_third_posture_mandate_refuses": {
   "verdict": "PASS",
   "evidence": "mandate=INVALID_VENDOR_POSTURE"
  },
  "REG_bare_STOP_allblock": {
   "verdict": "PASS",
   "evidence": "scope=UNRESOLVED blocked=2026-10-26T09:00:00+00:00 deadline=2026-11-09 sends={'text': 'CONSENT_REVOKED', 'voice': 'CONSENT_REVOKED', 'email': 'CONSENT_REVOKED'}"
  },
  "REG_D1_duplicate_intake_preserves_revocation": {
   "verdict": "PASS",
   "evidence": "revs=1 state=SCOPE_UNRESOLVED send=CONSENT_REVOKED"
  },
  "BUILDER_suite_isolated_66": {
   "verdict": "PASS",
   "evidence": "unittest discover on isolated copy /tmp/cov_iso4: Ran 66 tests, OK (builder claim 66 exact: 58 prior + 8 D8b regressions); smoke.py OK"
  },
  "REG_surface_exactly_14": {
   "verdict": "PASS",
   "evidence": "stdio tools/list on isolated copy: agent=14 ['lead_intake','consent_attach_certificate','consent_record_read','consent_history','revocation_record','lead_context_read','outreach_text','outreach_call_place','outreach_email','followup_sequence_plan','showing_schedule','copy_screen','criteria_screen','consent_record_verify'], operator=3 ['mandate_create','pack_retrieve','consent_record_verify'], disjoint, rc=0"
  },
  "REG_workspace_byte_identical": {
   "verdict": "PASS",
   "evidence": "workspace tree hash (sha256 over sorted rel paths + per-file sha256, __pycache__ excluded, 18 files) f12907669d49af5dd42094054652d3b1119f9211e625f455026f38159cf052c2 BEFORE and AFTER; data/state.json never created"
  }
 },
 "prior_scorecards": [
  "eclipse-covenant-mcp-2026-10-25.json (FAILED, retained unedited)",
  "eclipse-covenant-mcp-2026-10-25-2.json (PARTIAL 44/45, D8 open, retained unedited)",
  "eclipse-covenant-mcp-2026-10-25-3.json (PARTIAL 27/29, D8b open, retained unedited)"
 ]
}