Invariants / DC-EPOCH-01

DC-EPOCH-01

DC derived partial

Conway governance timing: proposals accumulate during epoch, ratification and enactment are atomic at epoch boundary, pulsing distributes DRep stake computation across epoch

Source

Project constitution §3, T-CAUSAL-01, T-EPOCH-01

Cluster
CL-LEDGER-VERDICT
Authority surface
atomic ratification/enactment proven at Conway 528/536/576 boundaries; ENACTMENT-COMMITTEE-WRITEBACK wires committee enactment into the boundary: a ratified NoConfidence dissolves the committee and a ratified UpdateCommittee removes/adds discriminated cold members and sets the new quorum (previously the committee was cloned unchanged, silently dropping ratified committee changes). Real-chain committee write-back is now oracle-confirmed at the mainnet Conway 575->576 boundary (committee_oracle_mainnet_575_576_noop_agreement, snapshots in s3://ade-corpus-snapshots, gitignored locally): our loader parses cardano-node's interim committee exactly (7 ScriptHash members, expiry 580, quorum 2/3) and our ratification+enactment reproduces the epoch-576 committee with no spurious mutation. The positive committee-CHANGE case is reality-blocked, NOT environment-blocked: mainnet enacted no UpdateCommittee/NoConfidence in this range, so no snapshot pair exhibits a committee delta to diff. Phase 3 lands the Plutus-eval path for Conway governance-action scripts (voting/proposing script purposes supported via ade_plutus ScriptContext V3 delegation through aiken). Full governance-Plutus oracle-diff deferred to CE-88 closure. CRE S4.3a UPDATE (honest boundary): the epoch-boundary APPLY SITE (rules.rs) no longer performs the partial committee/treasury enactment described above — that partial path violated boundary atomicity (it dissolved the committee and debited treasury but dropped parameter + deposit-return effects, and on the direct-replay path it silently dropped expired proposals with no refund). S4.3a unifies the boundary under ONE governance authority (plan_conway_governance_epoch — see T-EPOCH-01): expiry/refund is now identical on the accumulator and replay paths, and a ratifiable action is a fail-closed TERMINAL with zero mutation pending atomic enactment in S4.3c. The enact_proposals / apply_committee_enactment helpers remain (unit-tested: enact_noconfidence_dissolves_committee, enact_update_committee_applies_changes, committee_enactment_replays_byte_identical) for the S4.3c atomic wiring; epoch_boundary_ratifiable_noconfidence_is_terminal_pending_enactment pins that the boundary itself no longer dissolves a committee.

Enforcement trace

Tests 7

  • conway_epoch_boundary_end_to_end
  • conway_governance_ratification_test
  • enact_noconfidence_dissolves_committee
  • enact_update_committee_applies_changes
  • committee_enactment_replays_byte_identical
  • epoch_boundary_ratifiable_noconfidence_is_terminal_pending_enactment
  • committee_oracle_mainnet_575_576_noop_agreement

Strengthened in

Evidence

  • docs/active/CE-72_closure.md

  • docs/active/phase_3_status.md

  • docs/clusters/completed/ENACTMENT-COMMITTEE-WRITEBACK/cluster.md