{
 "INV-E4-01 a differential cannot grant authority: no fabric write path, no authority key (AST guard); reports carry grants_authority=false, epistemic=SIMULATED and the verifier rejects any that claim otherwise": {
  "cases": 7,
  "result": "PASS",
  "tests": [
   "test_api_differential_is_operator_only_tenant_scoped_and_changes_nothing",
   "test_differential_never_calls_fabric_write_paths_or_holds_the_authority_key",
   "test_report_tampering_is_detected[<lambda>-CLAIMS_AUTHORITY0]",
   "test_report_tampering_is_detected[<lambda>-CLAIMS_AUTHORITY1]",
   "test_report_tampering_is_detected[<lambda>-DIGEST0]",
   "test_report_tampering_is_detected[<lambda>-DIGEST1]",
   "test_report_tampering_is_detected[<lambda>-SIGNATURE]"
  ]
 },
 "INV-E4-02 admission before comparison: only clean-room-verified exports under a pinned key/root; tampered, wrongly-rooted, malformed and cross-tenant input is excluded or refused, never compared": {
  "cases": 6,
  "result": "PASS",
  "tests": [
   "test_corpus_admits_only_verified_decisions_and_counts_the_rest",
   "test_cross_tenant_export_is_refused",
   "test_malformed_exports_never_crash_admission",
   "test_tampered_export_is_excluded_not_compared",
   "test_unpinned_corpus_is_refused",
   "test_wrong_root_excludes_everything"
  ]
 },
 "INV-E4-03 DENY->ALLOW is reported as WIDENED / AUTHORITY-MATERIAL (policy, template and code-version candidates)": {
  "cases": 3,
  "result": "PASS",
  "tests": [
   "test_observe_mode_policy_widens_every_forecast_denial",
   "test_rolling_back_to_evolution1_code_would_reallow_forecast_denials",
   "test_widened_template_without_forecasting_turns_a_condition_denial_into_allow"
  ]
 },
 "INV-E4-04 ALLOW->DENY is reported as TIGHTENED / EXECUTION-MATERIAL; budget changes are flagged PATH_DEPENDENT": {
  "cases": 2,
  "result": "PASS",
  "tests": [
   "test_tightened_template_flags_the_uses_it_would_have_broken",
   "test_tiny_budget_tightens_allowed_uses_and_is_flagged_path_dependent"
  ]
 },
 "INV-E4-05 a replay without the evidence to widen does not widen (no recorded forecast; consumed state)": {
  "cases": 3,
  "result": "PASS",
  "tests": [
   "test_loosening_one_threshold_exposes_the_next_guard_not_an_allow",
   "test_more_uses_cannot_reopen_a_consumed_contract_in_replay",
   "test_widened_template_over_a_pre_forecast_denial_is_not_reported_as_allow"
  ]
 },
 "INV-E4-06 a crashing candidate is AUTHORITY-MATERIAL, never unchanged": {
  "cases": 1,
  "result": "PASS",
  "tests": [
   "test_a_crashing_candidate_is_authority_material_never_unchanged"
  ]
 },
 "INV-E4-07 deterministic: same corpus + candidate -> same report digest; identity candidate changes nothing": {
  "cases": 2,
  "result": "PASS",
  "tests": [
   "test_head_version_matches_the_runtime",
   "test_same_policy_changes_nothing_and_report_is_deterministic"
  ]
 },
 "INV-E4-08 material changes stay unreviewed until a registered, non-differential reviewer ACCEPTs; REJECT, self-review, foreign reviewer, other-report and edited-verdict reviews do not count; tampered reports never clear": {
  "cases": 4,
  "result": "PASS",
  "tests": [
   "test_a_reject_keeps_the_change_unreviewed",
   "test_a_tampered_report_can_never_be_marked_reviewed",
   "test_material_changes_stay_unreviewed_until_a_registered_reviewer_accepts",
   "test_reviews_that_do_not_count"
  ]
 },
 "INV-E4-09 replay never touches recorded evidence or the running fabric (sandbox re-signing; isolated git-ref modules; production decide() unchanged)": {
  "cases": 3,
  "result": "PASS",
  "tests": [
   "test_load_version_is_isolated_from_the_running_fabric",
   "test_production_decide_has_no_differential_bypass",
   "test_template_replay_never_touches_the_recorded_evidence"
  ]
 },
 "INV-E4-10 report integrity: digest, signature under the pinned differential key, counts = changes": {
  "cases": 7,
  "result": "PASS",
  "tests": [
   "test_counts_must_agree_with_changes",
   "test_report_resigned_by_a_foreign_key_fails_against_the_pinned_key",
   "test_report_tampering_is_detected[<lambda>-CLAIMS_AUTHORITY0]",
   "test_report_tampering_is_detected[<lambda>-CLAIMS_AUTHORITY1]",
   "test_report_tampering_is_detected[<lambda>-DIGEST0]",
   "test_report_tampering_is_detected[<lambda>-DIGEST1]",
   "test_report_tampering_is_detected[<lambda>-SIGNATURE]"
  ]
 }
}
