Skip to content

Support per-output Receiving in Dijkstra node defaults and tracing - #1

Open
colll78 wants to merge 6 commits into
masterfrom
codex/cip-160-receiving
Open

colll78 wants to merge 6 commits into
masterfrom
codex/cip-160-receiving

Conversation

@colll78

@colll78 colll78 commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner

Summary

 Dijkstra genesis/testnet
- partial fallback genesis and protocol major 10
+ complete API genesis with the 369-parameter V4 model and major 12
+ enable the experimental hard-fork gate only for Dijkstra testnets
 Node traces
+ Receiving original output indexes and every missing redeemer sharing a hash
+ current ledger, RPC, Peras, snapshot-policy and mempool-capacity events

Protected key/native/V4 outputs use the existing transaction/ledger adapters. The
new real-node lifecycle rejects a missing recipient signature without changing
UTxO, creates four protected outputs with distinct V4 redeemers at indexes 2/3,
queries their exact outputs and spends all four. A separate same-database relay
restart extension checks the complete restored UTxO through fresh Local State
Query and independent API replay before spending through the restarted relay.
This lifecycle passes against the corrected V4 genesis defaults.

Dependency adapters preserve the selected LSM cache default, credential envelope
type, randomized responder affinity and existing trace payloads. New trace cases
have explicit namespaces, severity, documentation and relevant metrics; no
validation or Peras activation policy changes. Missing-redeemer singleton JSON
keeps its shape; multiple purposes sharing a hash form an ordered array.

The normal project retains all 14 packages, CAPI, benchmarks and DMQ, with verified
public feature pins and the matching CHaP snapshot. Compatible patch metadata and
Herald fragments accompany changed packages. This draft depends on ledger
#1
, Plutus
#1
, consensus 5.x
#3
, API
#2
, CLI
#1
, and their address,
key/config and network prerequisites. Protocol major 12 remains the local
activation proposal; upstream activation agreement is separate.

The six-field upstream ledger-state migration preserves the testnet JSON adapter’s six outer keys and reads currentStakeDistribution from the current set snapshot. Nested ledger-state JSON/CBOR follows upstream.

Evidence

GitHub Actions runs in this fork. Earlier upstream CI links are historical evidence.

The fork base checks proposal-pin provenance for an explicit repository allowlist. Outside our fork, the existing default/release policy is unchanged; successful provenance is separate from compiler/runtime validation.

Fork head a220b269 is a changelog-metadata-only child of implementation/dependency pin 14ee5ef4: the existing Herald pr fields now identify this fork PR. The immutable parent dependency pins remain unchanged. All 11 applicable fork Actions workflows pass at a220b269, including Haskell CI and changelog validation.

All local node/testnet/consensus compilation/runtime evidence below uses GHC 9.6.7 with the coordinated native integration graph (blockio +serialblockio, crypto -external-libsodium-vrf). Default-flag public source resolution, Nix evaluation and remote CI are separate evidence; local runtimes do not establish default Nix-build equivalence.

At the preceding implementation checkpoint, all 54 owning components across 14 packages compiled, the 17 generator units and genuine supplied-input Conway calibration passed, and default native/Nix plans retained all packages and DMQ. The generator benchmark emitted GHC's nonfatal late-specialization diagnostic, so this is not a warning-free claim. Node units, goldens, real Receiving creation/spending and same-DB restoration passed; all five ordinary node CI matrices subsequently passed without a startup guard. The guarded local FollowTip replay and unexplained local startup quirk remain historical evidence only. These results retain their pre-upstream-state-migration scope.

  • Fresh node/testnet targets compile and link strictly against the merged ledger. All 39 node properties and seven testnet goldens pass, including actual Dijkstra-only experimental-gate parsing, removed-flag rejection and unchanged Conway configuration.
  • A private check through the public testnet JSON instance passes against the fresh library: exactly six testnet keys (and six API keys), epoch 7, an independently authored nonempty current SET distribution rather than a different MARK snapshot, and encode/toJSON equality. Actual library, harness and binary hashes were verified.
  • Fresh release-consensus admission/capacity cases pass 11/11, tools pass 20/20 with two test threads, and genuine Dijkstra Header/GenTx/GenTxId CDDL checks pass 3/3. This is release-backport native evidence, without main-branch or Leios execution claims.
  • The unchanged retries-disabled Receiving lifecycle passes 1/1 against the fresh binaries: missing recipient authorization leaves state unchanged; protected key/native/two-V4 outputs are created, then complete LSQ and fresh independent API replay match through same-DB relay restoration before spending through that relay. Twenty-eight public transaction/query/configuration/log artifacts were retained. Snapshot restoration is not claimed.
  • The final normal source graph passes native resolution with 800 components and all 54 owning components across 14 packages. Actual Linux GHC 9.6.7 executable derivation evaluation passes with 799/54 components. The existing Windows GHC 9.12.2 executable derivation evaluation also passes with normal platform selection; all 14 package identities, normal flags and DMQ are retained. These are resolution/evaluation proofs, not completed Nix builds. The source list selects the migrated Shelley test suite.
  • Node 14ee5ef4 is signed and published; its tree matches the evaluated normal-source snapshot. Current-head fork checks are recorded above. Package-only distributions previously included the reviewed test modules and genuine V4 fixture.

Merge Danger

Door: two-way

Blast Radius: Node

Changes Dijkstra defaults/configuration, selected dependency adapters and trace
schemas. Keep this proposal draft until dependent sources and normal CI are
accepted. Same-database restart does not establish snapshot restoration,
scheduled activation, rollback or Leios endorser-block support.

The upstream ledger-state JSON/CBOR schema changes with this dependency update. Existing outer JSON keys remain stable. Old persisted NES/Mark states require replay; current-format restart does not establish old-format restoration.

Recorded tracer-platform and database-tools Leios-fixture failures remain outside this PR; optional repairs are deferred.

At the historical upstream 16:24 UTC snapshot, node 14ee5ef4 has five passing checks, nine running and one queued, with no current failure. Dependency acceptance and the existing fork-ancestry gates remain external merge conditions.

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.

1 participant