Commit Graph

78 Commits

Author SHA1 Message Date
Nicholas Dudfield
53500b1c8e docs(export): pin callback authorization contract 2026-07-16 19:08:02 +07:00
Nicholas Dudfield
7917d437a3 fix(export): validate witness evidence against parent 2026-07-16 18:18:49 +07:00
Nicholas Dudfield
99a27974b7 docs(consensus): align normative extension contracts 2026-07-16 17:51:25 +07:00
Nicholas Dudfield
f0e36c0ba4 refactor(export): name admission lifecycle precisely 2026-07-16 17:36:03 +07:00
Nicholas Dudfield
f5d9824e4a refactor(export): use dedicated contributor field 2026-07-16 16:34:53 +07:00
Nicholas Dudfield
25a60b33cd fix(export): reject zero target ticket sequence 2026-07-16 15:46:55 +07:00
Nicholas Dudfield
142fde5acd test: pin Export committee replay guard 2026-07-16 13:48:02 +07:00
Nicholas Dudfield
b20d135388 Implement account-owned Export committees 2026-07-16 12:54:07 +07:00
Nicholas Dudfield
ffd50fc180 refactor(export): key lifecycle control by origin 2026-07-16 09:41:56 +07:00
Nicholas Dudfield
81b46570b8 refactor(export): cut over to export latches 2026-07-16 08:59:49 +07:00
Nicholas Dudfield
389732038d test(export): cover witness attribution replay 2026-07-14 19:58:02 +07:00
Nicholas Dudfield
da9e6b3cc7 fix(export): preserve witness signer attribution 2026-07-14 19:02:01 +07:00
Nicholas Dudfield
1a8680efe4 fix(export): retain canceled enhanced latches 2026-07-14 17:00:18 +07:00
Nicholas Dudfield
572365baf5 fix(export): enforce global live latch cap 2026-07-14 16:26:14 +07:00
Nicholas Dudfield
018719fdaa fix(export): separate admission and publication windows 2026-07-14 16:23:27 +07:00
Nicholas Dudfield
691cec51bf fix(export): harden post-validation share release 2026-07-14 15:42:12 +07:00
Nicholas Dudfield
130d4bc9fc test(export): cover later-ledger witnesses 2026-07-14 15:20:52 +07:00
Nicholas Dudfield
5c01906a4c feat(export): validate canonical release memo capacity 2026-07-14 12:53:04 +07:00
Nicholas Dudfield
5f8145eadc Revert "Remove Export sidecar consensus authority"
This reverts commit e6237b34ab.
2026-07-13 16:21:55 +07:00
Nicholas Dudfield
f6e03d4529 Revert "Restore Export transition test coverage"
This reverts commit 95c86b29fe.
2026-07-13 16:21:50 +07:00
Nicholas Dudfield
95c86b29fe Restore Export transition test coverage 2026-07-13 15:15:35 +07:00
Nicholas Dudfield
e6237b34ab Remove Export sidecar consensus authority 2026-07-13 14:48:59 +07:00
Nicholas Dudfield
56bf9f2eed fix(export): align callback identity and signer authority 2026-07-10 15:50:39 +07:00
Nicholas Dudfield
7161937720 test(export): cover audit gaps 2026-07-07 17:42:41 +07:00
Nicholas Dudfield
3c01901119 feat(consensus): excise sidecar reconciliation
Remove peer fetch/acquire/merge support for CE/export sidecar SHAMaps and keep them as local same-process snapshots only.

Harden generic transaction-set paths so sidecar maps are not advertised, served, acquired, or wrapped as RCLTxSet, and delete the stale fetch-positive .testnet suite.

Make entropy failure terminal at selection time and mirror that invariant in the CSF harness; keep Export witness materialization rooted in accepted exportSigSetHash rather than local timeout state.
2026-07-02 12:52:43 +07:00
Nicholas Dudfield
d4650441fb feat(consensus): default sidecar reconciliation off
Compile out sidecar acquisition and merge plumbing unless xahaud_sidecar_reconciliation is enabled, and move fetch-positive .testnet scenarios into an opt-in suite.

When reconciliation is enabled, gate eager fetches on current trusted root support so first-seen transient roots do not trigger network acquisition. This keeps the recovery path available for measurement without making it the default path.

Verified default OFF with x-format-changed, git diff --check, x-quick-check, cmake configure/build, and ./build/rippled --unittest=ConsensusExtensions. ON path syntax-checked; Claude is assigned the parallel ON build/test review in a separate worktree.
2026-06-30 16:10:50 +07:00
Nicholas Dudfield
be649d5112 fix(export): bound retry window 2026-06-29 14:28:20 +07:00
Nicholas Dudfield
f849b70a96 docs(export): clarify target network id guard 2026-06-29 10:18:53 +07:00
Nicholas Dudfield
62dc85df86 test(export): cover replay witness pre-scan 2026-06-28 15:49:06 +07:00
Nicholas Dudfield
8cc4574e0f refactor(export): split closed-ledger result assembly 2026-06-28 15:39:37 +07:00
Nicholas Dudfield
e01c0cba70 fix(export): require replay parent for historical apply 2026-06-28 13:53:19 +07:00
Nicholas Dudfield
f0f998d897 test(export): cover stale ImportVL callback rejection 2026-06-28 12:51:32 +07:00
Nicholas Dudfield
1dbda8f6b3 style(export): satisfy clang-format 2026-06-28 12:34:50 +07:00
Nicholas Dudfield
5149f5ae9b refactor(import): make VL ratchet explicit for callbacks 2026-06-28 12:32:58 +07:00
Nicholas Dudfield
6661e7a40a test(export): move reserve setup to failing test 2026-06-28 11:55:29 +07:00
Nicholas Dudfield
46207a3fca test(export): initialize account root before reserve edit 2026-06-28 11:38:48 +07:00
Nicholas Dudfield
268db0b6d2 fix(export): enforce shadow ticket reserve 2026-06-28 11:24:06 +07:00
Nicholas Dudfield
465131bb3e refactor: name legacy NetworkID transaction boundary 2026-06-27 16:59:20 +07:00
Nicholas Dudfield
0a9023c334 fix(export): avoid live manifest filtering of accepted witnesses
Materialize ttEXPORT_SIGNATURES from the accepted export sidecar root during live consensus builds, then let apply trust that tx-stream witness membership while still verifying each signature and enforcing quorum.

Direct apply paths remain conservative, and historical replay uses the same witness-membership rule after manifests may have rotated. Update the intent docs and tests for live, direct, and replay modes.
2026-06-27 13:39:58 +07:00
Nicholas Dudfield
efcd2a0ab7 fix(export): close replay witness review gaps
Thread the replay parent through ApplyOptions so export replay can rebuild the historical validator view without relying on LedgerMaster visibility for freshly replayed parents.

Harden ttEXPORT_SIGNATURES canonicality before witness indexing, validate witness signer accounts against their pubkeys, reject ambiguous absent NetworkID on low-ID source chains, and lock the consensus phase accessor.

Add focused regression coverage and clarify that destination SignerList/quorum compatibility is an operator/client contract.
2026-06-27 10:53:34 +07:00
Nicholas Dudfield
f0224cac1e fix(export): replay witnesses without current manifests
Historical LedgerReplay now treats ttEXPORT_SIGNATURES witnesses as validated-history membership input, while still verifying signatures and threshold. Live build and validation keep the current manifest-backed active-signer check.

Harden witness handling by indexing only canonical same-ledger pseudos, dropping duplicate witnesses as ambiguous, and replacing pre-existing mismatched witnesses with the accepted sidecar witness during onPreBuild.

Document the lean witness-vs-XPOP proof distinction and cover the manifest-rotation replay case with an Export regression test.
2026-06-27 09:38:07 +07:00
Nicholas Dudfield
845798b072 fix(export): replay signatures through witness pseudo 2026-06-27 08:13:23 +07:00
Nicholas Dudfield
a78f09a0fe fix(import): allow ticket xpop network id 2026-06-26 20:48:26 +07:00
Nicholas Dudfield
da31668a2a fix(export): require retry expiry 2026-06-26 20:26:23 +07:00
Nicholas Dudfield
5dc214ab48 fix(hooks): report exports separately from emits 2026-06-26 20:20:09 +07:00
Nicholas Dudfield
ed3c0f07a7 fix(export): return duplicate for live shadow tickets
A second pending export for the same shadow-ticket key is a ledger-object conflict, not an internal failure. Return tecDUPLICATE and cover the live-latch case in Export_test.
2026-06-26 19:14:10 +07:00
Nicholas Dudfield
d091ebfb7e Pin extension apply to accepted sidecar roots
Require entropy injection and export apply to consume only sidecar roots accepted by their convergence gates. Local timeout state and later collector growth no longer participate in closed-ledger material once a sidecar root is accepted.

Also guard RCLConsensus::extensionsBusy() under the consensus mutex, cap exported multisig signer arrays to the protocol maximum after canonical signer sorting, and document the remaining accept-vs-timeout liveness tradeoff.

Add regressions for unaccepted export sidecar roots, late export collector mutation, entropy accepted-root handling, exported signer caps, and CSF accepted-sidecar behavior.
2026-06-26 16:50:19 +07:00
Nicholas Dudfield
8bf1ece0a0 test(export): pin expiry and no-veto boundaries 2026-06-23 16:42:02 +07:00
Nicholas Dudfield
4d55443976 refactor(runtime-config): scope fault injection controls 2026-06-22 16:51:23 +07:00
Nicholas Dudfield
570cad4c44 test(export): pin network apply regressions 2026-06-22 12:14:42 +07:00