-
Synthetic horizon case: fixed delay leaves 76 clients scheduled beyond tick 79; none exhausted its attempt limit.
-
Inspect every attempt and server effect. Missing acknowledgement and duplicate application are separate outcomes.
-
Synthetic 8-client comparison. Plot and totals come from the local engine, not production traffic.
RetryGarden
Inspiration
A retry is easy to add and hard to reason about. If a response disappears after a server applies an operation, the client cannot tell whether doing it again will repeat the effect. RetryGarden makes this ambiguity visible for students learning distributed systems, without contacting a server or processing real orders.
What it does
Run two retry policies against the same synthetic scenario: fixed delay and bounded randomized delay. Change clients, per-tick server capacity, attempt budget, seed and delay parameters. Inspect every attempt, whether a server effect occurred, whether an acknowledgement arrived, and the next scheduled step. Enable stable operation-key deduplication to prevent repeated effects, while observing that retries and missing acknowledgements can remain.
The plot and summary come from the actual local simulation. Exported JSON includes exact settings, assumptions, every attempt, per-tick load and client states for both policies. The tool keeps exhausted clients separate from clients still scheduled beyond its finite horizon. It never silently turns a missing acknowledgement into success.
How we built it
Original HTML, CSS and JavaScript ES modules written during the event on October 20, 2026. A pure deterministic engine is separate from the browser UI. The renderer uses native SVG and labeled form controls; exported results can be reproduced with the same source and settings. No external libraries, telemetry, model inference, account or paid API is required at runtime. A local static server serves the app; the simulator itself issues no network requests.
What the example shows
In the default synthetic 8-client example, both policies attempt 26 requests. Fixed delay applies 9 effects and acknowledges 6 clients; bounded jitter applies 10 effects and acknowledges 7. Each repeats 2 effects. Enabling deduplication preserves the attempts and acknowledgements while reducing duplicate effects to zero: 7 and 8 effects respectively. This example illustrates different failure states; it is not proof that one retry policy always wins.
Challenges and validation
The hardest distinction is between what the server did and what the client knows. Another is the difference between reaching an attempt limit and reaching the end of the observation window. An analytical 80-client case leaves 76 clients still scheduled at the 80-tick horizon, not exhausted or acknowledged.
Nine producer tests pass, including analytical lost-response and capacity cases, invalid-input rejection, reproducibility, the horizon boundary, and 200 bounded configurations evaluated with both policies. Native browser checks exercised scenario changes, deduplication, trace selection and an actual JSON download. The downloaded full result exactly reproduced both engine traces. Desktop and a 390 CSS-pixel iframe were reviewed, including a compact mobile chart layout. A separate reviewer verified the exact seven source files and archive, reran all nine tests, and compared 3,200 full traces and final client states against a separately implemented event-queue model with BigInt random-number arithmetic. A final-attempt lost-response counterexample also passed. This was independent source/model/packet review; it did not repeat live browser or assistive-technology testing. No organizer approval or measured learning improvement is claimed.
Limitations
This is a teaching model with discrete ticks, zero service latency, fixed per-tick capacity and stable client-ID tie-breaking. Selected scenarios have a two-tick initial outage. In the lost-response scenario, the first accepted response for every third client is dropped once after application. Randomized retries use a seeded generator and a one-tick minimum; this is a discrete approximation of full jitter. Deduplication retains operation keys for the entire run. Real key expiry, crashes, partial writes, authentication and latency distributions are outside scope. Results are synthetic, not production benchmarks or measured incident reductions.
AI and asset disclosure
OpenAI Codex assisted with the concept, original source, tests, documentation and producer review under participant kwonj0815's instructions. A built-in image tool generated a separate design reference. Submission screenshots are actual rendered UI, not that reference. No previous contest app code, external datasets, stock imagery or third-party runtime libraries are incorporated. Public source and setup: https://github.com/estona815/retrygarden-launchpad-2026 . Independent source/model/packet review is complete; individual event registration is complete and final project submission was completed on October 20, 2026.
Log in or sign up for Devpost to join the conversation.