diff --git a/challenges/chunk-store-easy/statement.json b/challenges/chunk-store-easy/statement.json index fafc1f9..c59e599 100644 --- a/challenges/chunk-store-easy/statement.json +++ b/challenges/chunk-store-easy/statement.json @@ -9,16 +9,10 @@ "kind": "figure", "label": "FIG 1", "illustration": { - "id": "systems.frames", - "props": { - "title": "One blob · independently readable frames", - "note": "ReadAt uses the index to select a frame", - "frames": [ - { "label": "Block 0", "status": "not read", "tone": "neutral", "fields": [{ "label": "header", "detail": "lengths", "tone": "neutral" }, { "label": "AAAA", "detail": "payload", "tone": "neutral" }, { "label": "CRC", "detail": "integrity", "tone": "neutral" }] }, - { "label": "Block 1", "status": "read + verified", "tone": "signal", "fields": [{ "label": "header", "detail": "lengths", "tone": "accent" }, { "label": "BCDE", "detail": "requested CD", "tone": "signal" }, { "label": "CRC", "detail": "checked", "tone": "warning" }], "note": "Offset 5, length 2 touches only this block in the example below." } - ] - } + "id": "systems.chunk-story", + "props": {} }, + "presentation": "immersive", "caption": "Compression and integrity are block-local. That locality is what makes exact random reads cheap and bounded." }, { diff --git a/challenges/deadline-scheduler-easy/statement.json b/challenges/deadline-scheduler-easy/statement.json index 6ab5172..609d490 100644 --- a/challenges/deadline-scheduler-easy/statement.json +++ b/challenges/deadline-scheduler-easy/statement.json @@ -9,19 +9,10 @@ "kind": "figure", "label": "FIG 1", "illustration": { - "id": "systems.ranges", - "props": { - "title": "One worker · three non-preemptive jobs", - "min": 0, - "max": 11, - "rows": [ - { "label": "A", "start": 0, "end": 6, "tone": "warning", "note": "Starts at 0; cannot be interrupted when B and C arrive." }, - { "label": "B", "start": 6, "end": 8, "tone": "signal", "note": "Waits until the worker becomes idle." }, - { "label": "C", "start": 8, "end": 11, "tone": "accent", "note": "Ordering is chosen only at an idle boundary." } - ], - "markers": [{ "at": 1, "label": "C arrives", "tone": "danger" }, { "at": 6, "label": "A done", "tone": "signal" }] - } + "id": "systems.scheduler-story", + "props": {} }, + "presentation": "immersive", "caption": "Once A starts it owns the worker until tick 6. Better ordering happens only at idle boundaries." }, { diff --git a/challenges/durable-queue-easy/statement.json b/challenges/durable-queue-easy/statement.json index a9674ac..cd2fa39 100644 --- a/challenges/durable-queue-easy/statement.json +++ b/challenges/durable-queue-easy/statement.json @@ -9,16 +9,10 @@ "kind": "figure", "label": "FIG 1", "illustration": { - "id": "systems.snapshot", - "props": { - "title": "FIFO is defined by when a job becomes available", - "rows": [ - { "label": "Enqueue", "cells": [{ "label": "A", "detail": "ready", "tone": "accent" }, { "label": "B", "detail": "ready", "tone": "accent" }] }, - { "label": "Lease A", "cells": [{ "label": "B", "detail": "ready", "tone": "accent" }, { "label": "A", "detail": "leased until 10", "tone": "warning" }], "note": "A still occupies capacity while leased." }, - { "label": "Nack A", "cells": [{ "label": "B", "detail": "next", "tone": "signal" }, { "label": "A", "detail": "back of queue", "tone": "accent" }], "note": "A's old token is now stale." } - ] - } + "id": "systems.queue-story", + "props": {} }, + "presentation": "immersive", "caption": "Nack or visibility expiry returns a leased job to the back of the available queue. It receives a fresh token when leased again." }, { diff --git a/challenges/fair-gate-easy/statement.json b/challenges/fair-gate-easy/statement.json index 849aeb7..b96704f 100644 --- a/challenges/fair-gate-easy/statement.json +++ b/challenges/fair-gate-easy/statement.json @@ -9,18 +9,10 @@ "kind": "figure", "label": "FIG 1", "illustration": { - "id": "systems.budget", - "props": { - "title": "A burst of four tokens · refill two per three ticks", - "capacity": 4, - "snapshots": [ - { "label": "tick 0 · full", "segments": [{ "label": "available", "value": 4, "tone": "signal" }] }, - { "label": "tick 0 · after cost 3", "segments": [{ "label": "available", "value": 1, "tone": "warning" }], "note": "a second cost-3 request is rejected" }, - { "label": "tick 3 · before retry", "segments": [{ "label": "available", "value": 3, "tone": "signal" }], "note": "two tokens accrued lazily" }, - { "label": "tick 3 · after retry", "segments": [{ "label": "available", "value": 0, "tone": "accent" }], "note": "the retry is now admitted" } - ] - } + "id": "systems.gate-story", + "props": {} }, + "presentation": "immersive", "caption": "No timer updates the bucket in the background. Each request first accounts for elapsed virtual time, then makes one deterministic decision." }, {