Commit Graph

11049 Commits

Author SHA1 Message Date
Nicholas Dudfield
4eea4f8df6 test(consensus): reject Export material released after publication expiry
B2a holds direct and proposal-carried Export frames on every link until
validated sequence passes the publication window, with gate timeouts and
no witness. Releasing that material is admitted as publication-expired.
A later intent from the same owner witnesses once.
2026-09-22 08:39:05 +07:00
Nicholas Dudfield
f73206c6f6 test(consensus): pin stalled hash and zero releases after no-quorum heal
Require submit/pre-heal own releases to be zero, unauthorized releases
zero on every validator through recovery, and recovered ledgers at
stallValid to match the saved accepted hash. Drop the unproven expiry
replacement; this origin must validate and witness in the bounded heal.
2026-09-18 20:56:38 +07:00
Nicholas Dudfield
fed02a9db7 test(consensus): keep Export unreleased across no-quorum partition
B5 no-quorum leg: isolate validator 2, confirm configured quorum is 3,
and show survivors close while validated seq stalls. A fresh Export
enters that speculative closed history with zero own releases. After
heal, authoritative history is compatible and the origin is witnessed
once.
2026-09-18 20:51:32 +07:00
Nicholas Dudfield
6d3a8538a2 test(consensus): prove observer signature rejection from collector-commit trace
B7 now waits for the honest encoding to be admitted on the observer,
checks that observer's validated latch is still live, and sends one
forged frame on the observer's peer. The observer extension journal
must contain a single collector-commit record for that wire hash with
signatureVerified=false and AdmitResult::invalid.

Pre-commit leak finder hits protobuf TMExportShares::shares(); wire
field name, not audited-hook vocabulary.
2026-09-18 20:38:54 +07:00
Nicholas Dudfield
a05116ea70 test(consensus): reject malformed Export signature without poisoning
B7 injects a parseable share with a corrupted committee signature
through real PeerImp after an honest contribution, while the origin
is still pending. The collector keeps the honest encoding and the
cohort still produces one matching witness.

Pre-commit leak finder hit protobuf TMExportShares::shares(); that is
the wire field name, not audited-hook vocabulary.
2026-09-18 20:29:11 +07:00
Nicholas Dudfield
6a121d509d test(harness): verify pending counts clear on node cancellation 2026-09-18 20:11:02 +07:00
Nicholas Dudfield
c269eaf7b3 test(harness): prove gap origin pending on validators, not the observer
The first origin can already be witnessed before stop, so observer
hasEligiblePendingExports is not current evidence. B4 keeps lagged
validatedLedgerWork after isolate/flush, requires the gap origin pending
on a live validator, and checks the restarted observer's replay cursor.
2026-09-18 20:08:11 +07:00
Nicholas Dudfield
db4e73647e test(harness): sample pending exports before isolate; read gap on validators
Codex B4: current observer validatedLedgerWork after isolate/flush, not
combined with post-flush pending-origin state. Gap witness is taken from
a live validator while the observer is down. Restart stays before the
stale deadline; catch-up runs past it. Peer metadata matches by origin.
2026-09-18 20:02:14 +07:00
Nicholas Dudfield
199267c550 fix(test): close observerRestartAcrossExport before run() 2026-09-18 19:48:21 +07:00
Nicholas Dudfield
9c91253645 fix(test): expose laggedPendingJobCount on SteppingController 2026-09-18 19:47:32 +07:00
Nicholas Dudfield
1f602e1654 test(harness): count current lagged jobs; restart observer before stale work
laggedPendingJobCount is per-node/name and drops when the job runs.
B4 now checks that count after isolate/flush, restarts before the old
deadline, and requires a witness created while the observer was down.
2026-09-18 19:46:20 +07:00
Nicholas Dudfield
a14c4617b9 test(consensus): lag observer process-tier jobs for restart coverage
Named plus process-tier lag so validatedLedgerWork is actually queued as
lagged. Pre-stop evidence is diagnostics plus pending Export latches.
2026-09-18 19:40:22 +07:00
Nicholas Dudfield
293b946941 test(consensus): detect lagged validatedLedgerWork at enqueue
observeJobs only fires at run time after the 20s lag. Use jobDiagnostics
queued:lagged plus pending Export latches as the pre-stop work evidence.
2026-09-18 19:36:05 +07:00
Nicholas Dudfield
7e73ee52c3 test(consensus): restart keyless observer across Export-bearing history
Delay observer validatedLedgerWork until Export work is queued, isolate
and stop it while validators continue, then restart/reconnect. Old
scheduled actions must not run past the lag horizon; the replacement
stays keyless and acquires the witness history.
2026-09-18 19:33:44 +07:00
Nicholas Dudfield
fd8bf78558 test(consensus): fail-closed sidecar leaf oracle; clear observeJobs
Parse errors, wrong sidecar type, missing identity fields, or duplicate
committee positions abort the candidate count. Clear the job observer
after the passive phase.
2026-09-18 19:24:57 +07:00
Nicholas Dudfield
f20e574c5d test(consensus): drop v2 B shares on every path to the observer
Relay from 0/1 was filling B to qC. Filter v2-signed B on all inbound
observer frames. Do not require the observer to locally build A's witness.
2026-09-18 19:19:40 +07:00
Nicholas Dudfield
7c133e5431 fix(test): drop unused lambda captures in candidate-inclusion case 2026-09-18 19:14:17 +07:00
Nicholas Dudfield
065b1ef674 fix(test): drop missing SerialIter header from DSF candidate case 2026-09-18 19:13:00 +07:00
Nicholas Dudfield
d59ee6fdd7 test(consensus): include incomplete origin in the global Export candidate
Origin A uses committee {0,1} (qC=2); B uses {0,1,2} (qC=3). Drop only
validator 2's B frames toward the observer. At a real job boundary the
observer's existing sidecar map must show A=2 and B below qC. Validators
may still witness B; the observer may acquire.
2026-09-18 19:12:24 +07:00
Nicholas Dudfield
039473afa9 test(consensus): remove incomplete-origin case after mixed-frame proof
Whole-frame drop of starved-carrying frames also starves complete
origins from those validators. Exclusive drops leave proposal-carried
shares filling qC. Obstacle, not a new transport selector.
2026-09-18 18:45:33 +07:00
Nicholas Dudfield
db2e7c78bd test(consensus): drop incomplete-origin case; mixed-frame obstacle
Whole-frame drop of starved-carrying proposals/direct batches also
removes complete origins' material from those validators. Exclusive
drops leave proposal-carried shares filling qC. Cannot isolate one
origin below qC without stripping signed fields.
2026-09-18 18:42:59 +07:00
Nicholas Dudfield
63ca4fe628 test(consensus): keep one Export origin below committee quorum
Drop validators 1-2 whole frames that carry the starved origin. Mid-run
asserts the collector holds it below qC with no witness; complete origins
still emit once. Heal then check no repeated or unexpected witnesses.
2026-09-18 18:39:36 +07:00
Nicholas Dudfield
d21d137d12 test(consensus): prove share arrival inversion and tighten origin oracle
B1 records send/receive batch identities and requires a real inversion.
B3 scans every ledger, compares witness bytes/metadata across nodes, and
requires the observer locally built those ledgers. Below-qC stays open.
2026-09-18 18:31:20 +07:00
Nicholas Dudfield
ab36bfa652 test(consensus): make share reorder deterministic; drop below-qC starve
Delay by sender id toward the observer so even frames overtake node 0
without a global counter. Overlapping origins keep three distinct
witnesses; below-qC isolation needs per-origin proposal surgery and is
left as a gap.
2026-09-18 18:22:01 +07:00
Nicholas Dudfield
eb9dde1a20 test(consensus): reorder Export frames and overlapping origins
B1 delays odd direct Export frames so even frames overtake them, with
an inversion counter. B3 submits two owners / three tickets and starves
one origin to one validator contribution. Three replays each. No
production changes.
2026-09-18 18:16:09 +07:00
Nicholas Dudfield
cb84483ef4 test(consensus): verify independent gates and validation-gated release 2026-09-18 17:56:16 +07:00
Nicholas Dudfield
ad4736cd39 test(harness): isolate deferred callbacks and observe real job boundaries 2026-09-18 17:49:47 +07:00
Nicholas Dudfield
8523036e54 test(consensus): verify missing-share acquisition without requiring a fork 2026-09-18 17:43:28 +07:00
Nicholas Dudfield
7ad88625df test(consensus): cover missing Export routes and duplicate traffic 2026-09-18 17:37:36 +07:00
Nicholas Dudfield
fb40ace5a4 test(harness): select whole signed frames without mutating payloads 2026-09-18 17:33:08 +07:00
Nicholas Dudfield
0ac6e23ae1 test(consensus): assert local extension builds before ledger catch-up 2026-09-18 17:19:38 +07:00
Nicholas Dudfield
b8f2f11376 test(consensus): drive late validator across the reveal deadline 2026-09-18 17:14:39 +07:00
Nicholas Dudfield
2b48abc924 test(consensus): keep fault captures compatible with older Clang 2026-09-18 17:09:29 +07:00
Nicholas Dudfield
95233b8dc4 test(consensus): exercise real share loss and lagged extension nodes 2026-09-18 17:08:30 +07:00
Nicholas Dudfield
778b9fc35e test(harness): schedule real SQLite checkpoint work in long runs 2026-09-18 16:55:53 +07:00
Nicholas Dudfield
9f9748f3fe test(consensus): warm extension fixture through a complete reporting window 2026-09-18 16:52:20 +07:00
Nicholas Dudfield
141815785b test(consensus): add real-node extension feature matrix 2026-09-18 16:35:29 +07:00
Nicholas Dudfield
4325634c0f test(consensus): inject extension time and stepping-only entropy 2026-09-18 16:30:52 +07:00
Nicholas Dudfield
adfe7ac90f test(harness): account for validated-ledger callbacks in timeline snapshot
The N=3 target-4 trace gains two validatedLedgerWork events at 42.010s on nodes 0 and 1. Removing only those events reproduces the prior 330-event fingerprint exactly. Retain all replay, hash-agreement and weighted-pressure assertions.
2026-09-18 16:12:16 +07:00
Nicholas Dudfield
e863685125 test(harness): print event provenance when timeline canary changes 2026-09-18 16:09:50 +07:00
Nicholas Dudfield
ac86fa4083 fix(test): include LedgerMaster for queue isolation regression 2026-09-18 15:58:05 +07:00
Nicholas Dudfield
3a4af3266e test(harness): schedule Export receive and validated-ledger work 2026-09-18 15:50:41 +07:00
Nicholas Dudfield
ae8e6956ce fix(build): reconcile harness logging and send-hook signatures 2026-09-18 15:48:54 +07:00
Nicholas Dudfield
aa5a2783f4 Merge deterministic multi-application harness into feature-export-rng-dsf
Merge a992572b70; retain validator identity fields, phase locking, manual heartbeat control and extension polling. Share the send observation hook across immediate and delayed transport sends.
2026-09-18 15:46:32 +07:00
Nicholas Dudfield
a992572b70 test(harness): make pressure units and snapshot history explicit 2026-09-18 15:18:16 +07:00
Nicholas Dudfield
2d10eb40bd docs(test): clarify target pressure snapshot calibration 2026-09-18 14:52:31 +07:00
Nicholas Dudfield
09dd02acd3 test(harness): calibrate xahaud scenarios and verify backfilled history 2026-09-18 14:41:43 +07:00
Nicholas Dudfield
b0cc9b8082 test(overlay): port donor strand and simulated transport coverage 2026-09-18 14:09:44 +07:00
Nicholas Dudfield
bb927b82a8 fix(overlay): bound protobuf parsing to the current frame 2026-09-18 14:09:39 +07:00
Nicholas Dudfield
6df48eeebf fix(test): finish traffic suite api remaps 2026-09-18 14:01:21 +07:00