Migrated from Method backlog
This issue was created from a legacy filesystem backlog card. GitHub Issues are now the live work tracker; repository docs remain Method evidence.
Source backlog: docs/method/backlog/cool-ideas/KERNEL_splash-guy-controlled-desync.md
Original lane: cool-ideas
Original legend: KERNEL
Original backlog card
Milestone: Splash Guy | Priority: P2
Status: active cool idea. Task DAG issue #224 is still live and blocks the
Splash Guy course track (#226). docs/guide/splash-guy.md and the course
shell define the lesson; no controlled-desync harness exists yet.
Controlled Desync
Issue: #224
User Story: As a learner, I want to intentionally break determinism in specific, documented ways so that I understand what goes wrong and how to detect it.
Requirements
- R1: Create 3 desync scenarios, each as a toggleable flag:
- Scenario A: Use
rand() instead of seeded PRNG for balloon fuse timer
(nondeterministic initial state).
- Scenario B: Deliberately bypass
DFix64/F32Scalar by using raw f64
for explosion radius (cross-platform divergence).
- Scenario C: Process inputs in arrival order instead of canonical order
(network ordering nondeterminism).
- R2: Each scenario has a before/after explanation documenting what went wrong and why.
- R3: The two-peer harness detects the desync via fingerprint mismatch and reports which tick diverged.
- R4: Each scenario is runnable via a CLI flag or feature toggle.
Acceptance Criteria
Definition of Done
Scope: 3 desync scenarios with detection and documentation.
Out of Scope: Desync recovery/repair; scenarios involving more than 2 peers.
Test Plan
- Goldens: Golden "first divergent tick" for each scenario given fixed seeds/inputs.
- Failures: Scenario flag not set — no desync (confirms the flag is necessary).
- Edges: Desync on tick 0 (Scenario A with immediate divergence); desync on the last tick only.
- Fuzz/Stress: n/a (scenarios are deterministic given the flag).
Blocked By: lockstep-protocol
Blocking: course-material
Est. Hours: 5h
Expected Complexity: ~350 LoC
Migrated from Method backlog
This issue was created from a legacy filesystem backlog card. GitHub Issues are now the live work tracker; repository docs remain Method evidence.
Source backlog:
docs/method/backlog/cool-ideas/KERNEL_splash-guy-controlled-desync.mdOriginal lane:
cool-ideasOriginal legend:
KERNELOriginal backlog card
Controlled Desync
Issue: #224
User Story: As a learner, I want to intentionally break determinism in specific, documented ways so that I understand what goes wrong and how to detect it.
Requirements
rand()instead of seeded PRNG for balloon fuse timer(nondeterministic initial state).
DFix64/F32Scalarby using rawf64for explosion radius (cross-platform divergence).
(network ordering nondeterminism).
Acceptance Criteria
rand()is used.Definition of Done
Scope: 3 desync scenarios with detection and documentation.
Out of Scope: Desync recovery/repair; scenarios involving more than 2 peers.
Test Plan
Blocked By: lockstep-protocol
Blocking: course-material
Est. Hours: 5h
Expected Complexity: ~350 LoC