diff --git a/docs/stories/00-status.md b/docs/stories/00-status.md index 49b1a6b..abbb9e0 100644 --- a/docs/stories/00-status.md +++ b/docs/stories/00-status.md @@ -38,9 +38,26 @@ Update this board in the same change that finishes work — set the item's and record any rejection in [`discarded.md`](../plan/discarded.md) with its reason. -Statuses, the closed set `status:` may take: `done` · `in-progress` · `refine` -(needs a brainstorm before it can be planned) · `hold`. This board renders them -as ✅ **done** · 🔄 **in progress** · ⬜ **pending** · ⏸ **hold**. +**Two frontmatter axes** (2026-08-27), deliberately orthogonal: + +- `status` — where the WORK is: `done` · `in-progress` · `pending` · `hold`. + Rendered here as ✅ · 🔄 · ⬜ · ⏸. +- `readiness` — whether the DESIGN is settled: `ready` (brainstorm complete, + decisions LOCKED — a spec approved or the forks confirmed) · `refine` (open + forks; cannot be planned yet). + +`status: refine` is retired: it meant both "not started" and "design not +settled", so a held iteration with an approved spec was indistinguishable from +one nobody had thought about. **The startable set is `readiness: ready` and +`status: pending`.** + +**As of the 2026-08-27 sweep that set has exactly one member:** +[databasev2 4, io_uring group-commit](databasev2/04-io-uring-commit.md) — its +four forks were confirmed settled on 2026-08-20 and nothing has started. Across +47 iterations: 19 done, 5 in-progress, 15 pending, 8 hold; 27 `ready`, 20 +`refine`. So of the 15 pending items only **one** can be planned without a +brainstorm first — which is the number this second axis exists to surface, and +it was invisible while one key carried both meanings. Story frontmatter (`iteration`/`status`/`chain`) is the machine-readable truth behind this board; live Obsidian Dataview views: @@ -351,19 +368,13 @@ that sequences its tasks. Read one, approve, then the next starts. | 22 | [Durability, throughput, scale](language-runtime-database/22-durability-throughput-scale.md) | ✅ **landed 2026-08-21** — db-bench + baseline.json (74 metrics) + restart/kill -9 proofs both shard counts; durable 4.5k vs ram 297k inserts/s, reads O(table), msgrate 13.4M/2.45M | | 31 | [Actor lifecycle](language-runtime-database/31-actor-lifecycle.md) | 🔄 **absorbed into 24** (directive 2026-08-23) and half landed there: `call` request/response with a typed scalar reply (`WO_B_CALL = 88`, WO-E226), bounded mailboxes (`WO_MAILBOX`, cap 1024, catchable `WO_T_ACTOR`), and actor death that traps callers instead of hanging them. Still open: `monitor` and `time.after` — ids **89 and 90 are reserved holes** in `wob.h`, which is the machine-checkable proof of what is left. Supervision trees stay out of v1 | | 24 | [chat: WebSocket workload](language-runtime-database/24-chat-websocket-workload.md) | 🔄 **the live slice** (absorbing 31 + 34, directive 2026-08-23) — branch `chat-ws-lifecycle`, 5/10 tasks landed: crypto, bounded mailboxes, WS upgrade, frame codec, `call`/reply + actor death. Pending: `monitor`, `time.after`, the chat sample, its gate, closeout. State lives in [the marker](../active-slice-2026-08-23-chat-ws-lifecycle.md) | -| 23 | [io_uring group-commit](databasev2/04-io-uring-commit.md) | ⬜ fifth in chain, after stage 3 + 22 | -| 32 | [WAL checkpoint](databasev2/03-wal-checkpoint.md) | ⬜ last in chain, after 23 — disk reclamation + bounded replay (story written 2026-08-21) | -| 33 | [Single-file store](databasev2/07-single-file-db.md) | ⬜ off-chain, small — `WO_DATA=.db` file form; driver-only (story written 2026-08-22) | | 34 | [Crypto builtins](language-runtime-database/34-crypto-builtins.md) | 🔄 **code landed** as 24's T1 (`d14fa9f`): `sha1`/`sha256`/`hmac_sha256`, ids 85–87 in `wob.h`, `runtime/src/crypto.c`, RFC/FIPS vectors 18/0, corpus pin. The 24 gate that once needed it is cleared. Frontmatter keeps `status: refine` only until 24's T10 closeout sets it to `done` | | 38 | [Content platform capabilities](language-runtime-database/38-content-platform-capabilities.md) | ⬜ off-chain, needs a spec — the two capability families no iteration owns, confirmed against `runtime/src/wob.h`: `fs` mutation verbs (six fs builtins, ids 40–45; `append` creates-if-absent, so nothing is ever replaced, truncated, deleted or renamed) and `net.connect` (ids 51–55 + 91–95, no connect, and no `connect()` anywhere in `runtime/src/` — so no OIDC/SMTP/object-store/webhook/federation). Driven by a `docs/examples/vault` content-collaboration workload, in 28's mould. New builtins from 96 (89/90 reserved for 31); no `.wob` bump (`WOB_VERSION 6u`, last moved by 36). Story written 2026-08-26 from the "can it build a Nextcloud?" ask | | 39 | [Web framework parity](language-runtime-database/39-web-framework-parity.md) | ⬜ off-chain, needs a spec — from [the Fiber v3.5.0 study](../plan/exploration/fiber/00-fiber-parity.md) (all 32 of its middleware read against `porch`; **nine already have a counterpart**). Leads with a **random-bytes builtin**: the framework ledger claimed CSRF/sessions were unblocked by iteration 34's HMAC, but HMAC authenticates a token and cannot mint one — there is no RNG anywhere in the runtime. Then cookies (absent both ways; `Resp.headers` being a map cannot carry two `Set-Cookie` lines), then limiter/idempotency (cheapest wins — `@table` + `time.ticks`, nothing new), sessions, CSRF, and the routing/response sugar. Streaming/SSE/compression, `@derive` binding, TTL cache, `proxy` and metrics all excluded with owners named | | 37 | [wo-html components](language-runtime-database/37-wo-html-components.md) | ✅ off-chain — LANDED 2026-08-25. Raw text literal (backtick, margin stripped at lex time, `{{ }}` auto-escapes) + the component layer: `Component`/`render_all`/`Layout` in wo-html, `ok_html` moved into the framework, site and shop both migrated | | 35 | [net runtime seams](language-runtime-database/35-net-runtime-seams.md) | ⬜ off-chain — fd deadlines on the park plane, Unix sockets, peer address; owns the ledger's three 🔧 rows (story written 2026-08-22) | -| 20 | [Cross-program tables](databasev2/09-cross-program-tables.md) | ⏸ hold (2026-08-21); channel done (branch ipc-attach keeps its manifest) | -| 21 | [Keypair attach auth](databasev2/10-keypair-attach-auth.md) | ⏸ hold (2026-08-21); crypto+handshake done (branch keypair-auth keeps its manifest) | | 25 | [HTTP service layer](../superpowers/plans/2026-08-01-http-service-layer.md) | ⏸ hold (2026-08-21) — story file removed; the plan doc remains | | 26 | [Blue-green deploy](language-runtime-database/26-blue-green-deploy.md) | ⏸ hold (2026-08-21) | -| 27 | [Query grammar corpus](databasev2/08-query-grammar-corpus.md) | ⏸ hold (2026-08-21) | | 28 | [skillhost host workload](language-runtime-database/28-skillhost-host-workload.md) | ⏸ hold (2026-08-21); gaps recorded (branch query-grammar found skillhost needs no new query grammar) | | 29 | [Compile-time metaprogramming](language-runtime-database/29-compile-time-metaprogramming.md) | ⏸ hold (2026-08-21) | | 15 | [deps: `wo.toml [deps]`](language-runtime-database/15-deps-package-manager.md) | ✅ **landed 2026-08-18** (branch web-framework): [deps] inline tables, git-binary fetch, wo.lock pinning, offline-when-locked, --update-deps, WO-E106/E107; `just deps-accept` 8/0 | @@ -619,12 +630,12 @@ the language arc as v1 history. | # | Iteration | State | | --- | --- | --- | -| 1 | [RAM ceiling: measure the breaking point](databasev2/01-ram-ceiling-measurement.md) | ⬜ **first, and startable today** — nobody here can say what happens at 90% RAM. Curve not cliff: swap onset, latency departure, the three exits (checked trap / swap thrash / OOM killer), and `kill -9` durability *at exhaustion*. Output is `perf-targets.md` + baseline rows, not prose | +| 1 | [RAM ceiling: measure the breaking point](databasev2/01-ram-ceiling-measurement.md) | ⬜ `readiness: refine` — its three forks are open, so despite being first it is NOT startable without a brainstorm — nobody here can say what happens at 90% RAM. Curve not cliff: swap onset, latency departure, the three exits (checked trap / swap thrash / OOM killer), and `kill -9` durability *at exhaustion*. Output is `perf-targets.md` + baseline rows, not prose | | 2 | [per-table storage: `durable` and `resident`](databasev2/02-table-storage-modes.md) | 🔄 **the language enrichment — the `durable` half is DONE and usable.** Two optional `@table` keys, `durable: true\|false` and `resident: all\|keys`, both defaulting to today's behaviour (all 28 existing declarations compile unchanged, no golden moved). Landed: the grammar, WO-E224 (a durable `ref` into a volatile table is refused), `.wob` v7 carrying both properties in spare `flags` bits, `durable: false` actually skipping the WAL (measured: 50 inserts → 1500 bytes durable, **0** volatile) with a mode-mismatch startup refusal, plus offset capture and read-a-row-from-an-offset. Outstanding: 5c/5d (the id→offset map and rewiring `wo_row_ptr`'s 11 call sites, slab scans and `@unique`/FK across the boundary — not yet written up), the two runtime refusals, and closeout. [spec](../superpowers/specs/2026-08-26-table-residency-design.md) · [plan](../superpowers/plans/2026-08-26-table-residency.md) | | 3 | [WAL checkpoint](databasev2/03-wal-checkpoint.md) *(was 32)* | ⬜ snapshot + truncate: disk reclaimed, replay bounded | -| 4 | [io_uring group commit](databasev2/04-io-uring-commit.md) *(was 23)* | ⬜ close the 66× gap iteration 22 measured (durable 4.5k vs ram 297k inserts/s) | +| 4 | [io_uring group commit](databasev2/04-io-uring-commit.md) *(was 23)* | ⬜ **`readiness: ready` — the one startable iteration in the repo** (four forks confirmed settled 2026-08-20). Close the 66× gap iteration 22 measured (durable 4.5k vs ram 297k inserts/s) | | 5 | [Bounded tables and eviction](databasev2/05-bounded-tables-eviction.md) | ⬜ a declared capacity + refuse/evict/back-pressure, and a process-level pressure signal that sheds **before** the allocator or OS gets involved — turning the invisible failure into a managed one | -| 6 | [Cold tiering](databasev2/06-cold-tiering.md) | ⬜ the iteration that raises the ceiling, and the riskiest. Mostly forks: which shape, whether the index itself fits, whether the *language* surfaces the fault cost, and whether `@unique` on a cold table is refused outright. A paged B-tree stays rejected — if tiering needs one, reject tiering | +| 6 | [Cold tiering](databasev2/06-cold-tiering.md) | ⚠ **largely superseded by 2** — `resident: keys` took the ceiling-raising role; its user-space-working-set premise was rejected for the kernel page cache. Mostly forks: which shape, whether the index itself fits, whether the *language* surfaces the fault cost, and whether `@unique` on a cold table is refused outright. A paged B-tree stays rejected — if tiering needs one, reject tiering | | 7 | [Single-file store](databasev2/07-single-file-db.md) *(was 33)* | ⬜ `WO_DATA=.db`; driver-only, independent | | 8 | [Query grammar from corpora](databasev2/08-query-grammar-corpus.md) *(was 27)* | ⬜ whole-query `count`, `exists`; independent | | 9 | [Cross-program tables](databasev2/09-cross-program-tables.md) *(was 20)* | ⏸ hold — attach to a running program's database over local IPC | diff --git a/docs/stories/board-views.md b/docs/stories/board-views.md index bda9e01..474c8e0 100644 --- a/docs/stories/board-views.md +++ b/docs/stories/board-views.md @@ -7,7 +7,8 @@ is the source of truth**: --- track: porch # OMITTED on language-runtime-database stories iteration: "8" # immutable id, LOCAL TO ITS TRACK (string: "7b", "9b" exist) -status: in-progress # done | in-progress | refine | hold — the ONLY place status lives +status: in-progress # done | in-progress | pending | hold — where the WORK is +readiness: ready # ready | refine — whether the DESIGN is settled chain: 1 # concurrency-chain position, chain stories only (1–6) --- ``` @@ -19,10 +20,23 @@ there is nothing to move and nothing that can disagree. This replaced the change moved the file, which broke every relative link in and to it, and the repo's two link audits were largely the cleanup. -The closed set `status:` may take is `done`, `in-progress`, `refine` (needs -a brainstorm before it can be planned) and `hold`. A value outside it will -simply not appear in the lanes below, which is the cheapest possible -validation. The prose board ([`00-status.md`](00-status.md)) stays the +**Two axes, since 2026-08-27.** They are orthogonal and conflating them is +what `refine` used to do: + +- `status` — where the WORK is: `done`, `in-progress`, `pending`, `hold`. +- `readiness` — whether the DESIGN is settled: `ready` means the brainstorm is + complete and the decisions are LOCKED (a spec is approved, or the forks were + confirmed); `refine` means open forks remain and it cannot be planned yet. + +`status: refine` is retired. It meant both "not started" and "design not +settled", so a held iteration with an approved spec (language 18, 26) was +indistinguishable from one nobody had thought about. Those are now +`status: hold` + `readiness: ready`, and the genuinely unthought ones are +`readiness: refine`. A value outside either closed set simply will not appear +in the lanes below, which is the cheapest possible validation. + +**The useful query is `readiness: ready` + `status: pending`** — design locked, +work not started. That is the startable set. The prose board ([`00-status.md`](00-status.md)) stays the standup narrative; these queries are the live views over the same facts. Adjust the `FROM` path to your vault root (queries below assume the @@ -109,3 +123,24 @@ FROM "docs/stories" WHERE iteration AND status != "done" GROUP BY track ``` + +## Startable: design locked, work not started + +The set to pick from. Anything here has its decisions made and needs no +brainstorm. + +```dataview +TABLE track, iteration +FROM "docs/stories" +WHERE readiness = "ready" AND status = "pending" +SORT track ASC, iteration ASC +``` + +## Needs a brainstorm before it can be planned + +```dataview +TABLE track, iteration, status +FROM "docs/stories" +WHERE readiness = "refine" +SORT track ASC, iteration ASC +``` diff --git a/docs/stories/databasev2/01-ram-ceiling-measurement.md b/docs/stories/databasev2/01-ram-ceiling-measurement.md index 4234194..17b47cc 100644 --- a/docs/stories/databasev2/01-ram-ceiling-measurement.md +++ b/docs/stories/databasev2/01-ram-ceiling-measurement.md @@ -1,7 +1,8 @@ --- track: databasev2 iteration: "1" -status: refine +status: pending +readiness: refine --- # databasev2 1 — the RAM ceiling: measure the breaking point before designing for it diff --git a/docs/stories/databasev2/02-table-storage-modes.md b/docs/stories/databasev2/02-table-storage-modes.md index 95eeaa4..4c5f263 100644 --- a/docs/stories/databasev2/02-table-storage-modes.md +++ b/docs/stories/databasev2/02-table-storage-modes.md @@ -2,6 +2,7 @@ track: databasev2 iteration: "2" status: in-progress +readiness: ready --- # databasev2 2 — per-table storage: `durable` and `resident` @@ -60,8 +61,8 @@ declared per-table policy. Durability is untouched and unconditional. | 4 | `durable: false` skips the WAL append and replay | ✅ `dd67e31` | | 5a | `wo_wal_next_offset` — exact record offsets | ✅ `ac7d8af` | | 5b | `wo_wal_read_row_at` — a row from a log offset | ✅ `d0c370c` | -| 5c | the id→offset map + drop-payload-keep-index | ⬜ **not written up** | -| 5d | rewiring `wo_row_ptr`'s call sites, slab scans, `@unique`/FK across the boundary | ⬜ not written up | +| 5c | shared borrow/release accessor, then id→offset storage | 🔄 step 1 ✅ `2e347de` (pure refactor, `db-bench --quick` 85/0); offset storage next | +| 5d | rewire the readers: remaining `wo_row_ptr` sites (6 table.c, 2 db.c, 2 wal.c), slab scans, FK restrict, `@unique` across the boundary | ⬜ scope recorded | | 6 | the two runtime refusals (no-`WO_DATA`, the byte budget) | ⬜ | | 7 | measure, gate, document, close out | ⬜ | diff --git a/docs/stories/databasev2/03-wal-checkpoint.md b/docs/stories/databasev2/03-wal-checkpoint.md index 2581214..c93b0bc 100644 --- a/docs/stories/databasev2/03-wal-checkpoint.md +++ b/docs/stories/databasev2/03-wal-checkpoint.md @@ -2,7 +2,8 @@ track: databasev2 iteration: "3" was_language_iteration: "32" -status: refine +status: pending +readiness: refine chain: 6 --- diff --git a/docs/stories/databasev2/04-io-uring-commit.md b/docs/stories/databasev2/04-io-uring-commit.md index 28d7c31..a0fe26f 100644 --- a/docs/stories/databasev2/04-io-uring-commit.md +++ b/docs/stories/databasev2/04-io-uring-commit.md @@ -2,7 +2,8 @@ track: databasev2 iteration: "4" was_language_iteration: "23" -status: refine +status: pending +readiness: ready chain: 5 --- diff --git a/docs/stories/databasev2/05-bounded-tables-eviction.md b/docs/stories/databasev2/05-bounded-tables-eviction.md index dc5010a..22b6c7d 100644 --- a/docs/stories/databasev2/05-bounded-tables-eviction.md +++ b/docs/stories/databasev2/05-bounded-tables-eviction.md @@ -1,7 +1,8 @@ --- track: databasev2 iteration: "5" -status: refine +status: pending +readiness: refine --- # databasev2 5 — bounded tables and eviction: a declared budget, and back-pressure before the cliff diff --git a/docs/stories/databasev2/06-cold-tiering.md b/docs/stories/databasev2/06-cold-tiering.md index cd4a27a..3b21194 100644 --- a/docs/stories/databasev2/06-cold-tiering.md +++ b/docs/stories/databasev2/06-cold-tiering.md @@ -1,7 +1,8 @@ --- track: databasev2 iteration: "6" -status: refine +status: pending +readiness: refine --- # databasev2 6 — cold tiering: rows that leave RAM and come back diff --git a/docs/stories/databasev2/07-single-file-db.md b/docs/stories/databasev2/07-single-file-db.md index 07854d8..0c83ecc 100644 --- a/docs/stories/databasev2/07-single-file-db.md +++ b/docs/stories/databasev2/07-single-file-db.md @@ -2,7 +2,8 @@ track: databasev2 iteration: "7" was_language_iteration: "33" -status: refine +status: pending +readiness: refine --- # databasev2 7 — `WO_DATA=.db`: the persistent store as one file diff --git a/docs/stories/databasev2/08-query-grammar-corpus.md b/docs/stories/databasev2/08-query-grammar-corpus.md index 4c5a35c..3629367 100644 --- a/docs/stories/databasev2/08-query-grammar-corpus.md +++ b/docs/stories/databasev2/08-query-grammar-corpus.md @@ -3,6 +3,7 @@ track: databasev2 iteration: "8" was_language_iteration: "27" status: hold +readiness: refine --- # databasev2 8 — query grammar, driven by real embedded-DB corpora diff --git a/docs/stories/databasev2/09-cross-program-tables.md b/docs/stories/databasev2/09-cross-program-tables.md index 23add85..d485f3b 100644 --- a/docs/stories/databasev2/09-cross-program-tables.md +++ b/docs/stories/databasev2/09-cross-program-tables.md @@ -3,6 +3,7 @@ track: databasev2 iteration: "9" was_language_iteration: "20" status: hold +readiness: refine --- # databasev2 9 — cross-program tables: attach to a running program's database diff --git a/docs/stories/databasev2/10-keypair-attach-auth.md b/docs/stories/databasev2/10-keypair-attach-auth.md index fe2d960..3c8aaa8 100644 --- a/docs/stories/databasev2/10-keypair-attach-auth.md +++ b/docs/stories/databasev2/10-keypair-attach-auth.md @@ -3,6 +3,7 @@ track: databasev2 iteration: "10" was_language_iteration: "21" status: hold +readiness: refine --- # databasev2 10 — keypair authentication for cross-program attach diff --git a/docs/stories/language-runtime-database/01-principles-doc.md b/docs/stories/language-runtime-database/01-principles-doc.md index e13c66a..44d4be1 100644 --- a/docs/stories/language-runtime-database/01-principles-doc.md +++ b/docs/stories/language-runtime-database/01-principles-doc.md @@ -1,6 +1,7 @@ --- iteration: "1" status: done +readiness: ready --- # Iteration 1 — the principles doc diff --git a/docs/stories/language-runtime-database/02-vm-core.md b/docs/stories/language-runtime-database/02-vm-core.md index 3e57d1a..928e354 100644 --- a/docs/stories/language-runtime-database/02-vm-core.md +++ b/docs/stories/language-runtime-database/02-vm-core.md @@ -1,6 +1,7 @@ --- iteration: "2" status: done +readiness: ready --- # Iteration 2 — VM core (`wovm`) diff --git a/docs/stories/language-runtime-database/03-compiler-front.md b/docs/stories/language-runtime-database/03-compiler-front.md index 606257a..c58fc48 100644 --- a/docs/stories/language-runtime-database/03-compiler-front.md +++ b/docs/stories/language-runtime-database/03-compiler-front.md @@ -1,6 +1,7 @@ --- iteration: "3" status: done +readiness: ready --- # Iteration 3 — compiler front (`woc`) diff --git a/docs/stories/language-runtime-database/04-single-binary-e2e.md b/docs/stories/language-runtime-database/04-single-binary-e2e.md index 3dc6c33..2e0caa4 100644 --- a/docs/stories/language-runtime-database/04-single-binary-e2e.md +++ b/docs/stories/language-runtime-database/04-single-binary-e2e.md @@ -1,6 +1,7 @@ --- iteration: "4" status: done +readiness: ready --- # Iteration 4 — single binary end-to-end diff --git a/docs/stories/language-runtime-database/05-language-surface.md b/docs/stories/language-runtime-database/05-language-surface.md index fff573e..ea646c1 100644 --- a/docs/stories/language-runtime-database/05-language-surface.md +++ b/docs/stories/language-runtime-database/05-language-surface.md @@ -1,6 +1,7 @@ --- iteration: "5" status: done +readiness: ready --- # Iteration 5 — language surface (Haxe-parity adoptions) diff --git a/docs/stories/language-runtime-database/06-program-mode-stdlib.md b/docs/stories/language-runtime-database/06-program-mode-stdlib.md index 46b80b9..357f711 100644 --- a/docs/stories/language-runtime-database/06-program-mode-stdlib.md +++ b/docs/stories/language-runtime-database/06-program-mode-stdlib.md @@ -1,6 +1,7 @@ --- iteration: "6" status: done +readiness: ready --- # Iteration 6 — program mode + systems stdlib diff --git a/docs/stories/language-runtime-database/07-logwatcher-proof.md b/docs/stories/language-runtime-database/07-logwatcher-proof.md index 9c9d0af..180cd46 100644 --- a/docs/stories/language-runtime-database/07-logwatcher-proof.md +++ b/docs/stories/language-runtime-database/07-logwatcher-proof.md @@ -1,6 +1,7 @@ --- iteration: "7" status: done +readiness: ready --- # Iteration 7 — log-watcher proof workload diff --git a/docs/stories/language-runtime-database/07b-inferred-gc-mark-sweep.md b/docs/stories/language-runtime-database/07b-inferred-gc-mark-sweep.md index 7f1bd9c..ef2f250 100644 --- a/docs/stories/language-runtime-database/07b-inferred-gc-mark-sweep.md +++ b/docs/stories/language-runtime-database/07b-inferred-gc-mark-sweep.md @@ -1,6 +1,7 @@ --- iteration: "7b" status: done +readiness: ready --- # Iteration 7b — inferred GC + incremental mark-sweep diff --git a/docs/stories/language-runtime-database/08-shard-actor-runtime.md b/docs/stories/language-runtime-database/08-shard-actor-runtime.md index 36d1358..874f822 100644 --- a/docs/stories/language-runtime-database/08-shard-actor-runtime.md +++ b/docs/stories/language-runtime-database/08-shard-actor-runtime.md @@ -1,6 +1,7 @@ --- iteration: "8" status: done +readiness: ready chain: 1 --- diff --git a/docs/stories/language-runtime-database/09-database-engine.md b/docs/stories/language-runtime-database/09-database-engine.md index 5206ce0..48708ec 100644 --- a/docs/stories/language-runtime-database/09-database-engine.md +++ b/docs/stories/language-runtime-database/09-database-engine.md @@ -1,6 +1,7 @@ --- iteration: "9" status: done +readiness: ready --- # Iteration 9 — database engine diff --git a/docs/stories/language-runtime-database/09b-table-relations-query.md b/docs/stories/language-runtime-database/09b-table-relations-query.md index 3611f0a..3ccb945 100644 --- a/docs/stories/language-runtime-database/09b-table-relations-query.md +++ b/docs/stories/language-runtime-database/09b-table-relations-query.md @@ -1,6 +1,7 @@ --- iteration: "9b" status: done +readiness: ready --- # Iteration 9b — `@table`, relations, and language-integrated query diff --git a/docs/stories/language-runtime-database/11-fibers.md b/docs/stories/language-runtime-database/11-fibers.md index 8fdcc66..4d69802 100644 --- a/docs/stories/language-runtime-database/11-fibers.md +++ b/docs/stories/language-runtime-database/11-fibers.md @@ -1,6 +1,7 @@ --- iteration: "11" status: done +readiness: ready chain: 1 --- diff --git a/docs/stories/language-runtime-database/15-deps-package-manager.md b/docs/stories/language-runtime-database/15-deps-package-manager.md index 30eb122..4090135 100644 --- a/docs/stories/language-runtime-database/15-deps-package-manager.md +++ b/docs/stories/language-runtime-database/15-deps-package-manager.md @@ -1,6 +1,7 @@ --- iteration: "15" status: done +readiness: ready --- # Iteration 15 — dependencies: `wo.toml [deps]`, git fetch, `wo.lock` diff --git a/docs/stories/language-runtime-database/16-web-framework.md b/docs/stories/language-runtime-database/16-web-framework.md index cbcdf81..80f3a1c 100644 --- a/docs/stories/language-runtime-database/16-web-framework.md +++ b/docs/stories/language-runtime-database/16-web-framework.md @@ -1,6 +1,7 @@ --- iteration: "16" status: done +readiness: ready --- # Iteration 16 — the web framework: a `.wo` library, HTTP/1.1 behind a proxy diff --git a/docs/stories/language-runtime-database/17-library-projects-internal.md b/docs/stories/language-runtime-database/17-library-projects-internal.md index ce92a4c..aecbb28 100644 --- a/docs/stories/language-runtime-database/17-library-projects-internal.md +++ b/docs/stories/language-runtime-database/17-library-projects-internal.md @@ -1,6 +1,7 @@ --- iteration: "17" status: done +readiness: ready --- # Iteration 17 — library projects and dependency privacy (`kind`, `internal/`) diff --git a/docs/stories/language-runtime-database/18-memory-db-features.md b/docs/stories/language-runtime-database/18-memory-db-features.md index c193f24..d3c8d54 100644 --- a/docs/stories/language-runtime-database/18-memory-db-features.md +++ b/docs/stories/language-runtime-database/18-memory-db-features.md @@ -1,6 +1,7 @@ --- iteration: "18" status: hold +readiness: ready --- # Iteration 18 — framework v2: memory-rich features over the embedded database diff --git a/docs/stories/language-runtime-database/19-missing-scalar-types.md b/docs/stories/language-runtime-database/19-missing-scalar-types.md index e0656c4..42eaccf 100644 --- a/docs/stories/language-runtime-database/19-missing-scalar-types.md +++ b/docs/stories/language-runtime-database/19-missing-scalar-types.md @@ -1,6 +1,7 @@ --- iteration: "19" status: done +readiness: ready --- # Iteration 19 — the missing scalar types: Float and Bytes diff --git a/docs/stories/language-runtime-database/22-durability-throughput-scale.md b/docs/stories/language-runtime-database/22-durability-throughput-scale.md index e54bf9e..5062b33 100644 --- a/docs/stories/language-runtime-database/22-durability-throughput-scale.md +++ b/docs/stories/language-runtime-database/22-durability-throughput-scale.md @@ -1,6 +1,7 @@ --- iteration: "22" status: done +readiness: ready chain: 2 --- diff --git a/docs/stories/language-runtime-database/24-chat-websocket-workload.md b/docs/stories/language-runtime-database/24-chat-websocket-workload.md index 193f1c6..e29a10e 100644 --- a/docs/stories/language-runtime-database/24-chat-websocket-workload.md +++ b/docs/stories/language-runtime-database/24-chat-websocket-workload.md @@ -1,6 +1,7 @@ --- iteration: "24" status: in-progress +readiness: ready chain: 4 --- diff --git a/docs/stories/language-runtime-database/26-blue-green-deploy.md b/docs/stories/language-runtime-database/26-blue-green-deploy.md index 5601c1c..31c1b09 100644 --- a/docs/stories/language-runtime-database/26-blue-green-deploy.md +++ b/docs/stories/language-runtime-database/26-blue-green-deploy.md @@ -1,6 +1,7 @@ --- iteration: "26" status: hold +readiness: ready --- # Iteration 26 — blue-green in-runtime deployment diff --git a/docs/stories/language-runtime-database/28-skillhost-host-workload.md b/docs/stories/language-runtime-database/28-skillhost-host-workload.md index d376597..0a3ef89 100644 --- a/docs/stories/language-runtime-database/28-skillhost-host-workload.md +++ b/docs/stories/language-runtime-database/28-skillhost-host-workload.md @@ -1,6 +1,7 @@ --- iteration: "28" status: hold +readiness: refine --- # Iteration 28 — skillhost: a host-shaped workload, and the capability gaps it exposes diff --git a/docs/stories/language-runtime-database/29-compile-time-metaprogramming.md b/docs/stories/language-runtime-database/29-compile-time-metaprogramming.md index 826da92..3f11168 100644 --- a/docs/stories/language-runtime-database/29-compile-time-metaprogramming.md +++ b/docs/stories/language-runtime-database/29-compile-time-metaprogramming.md @@ -1,6 +1,7 @@ --- iteration: "29" status: hold +readiness: refine --- # Iteration 29 — compile-time metaprogramming (derive from the class table) diff --git a/docs/stories/language-runtime-database/31-actor-lifecycle.md b/docs/stories/language-runtime-database/31-actor-lifecycle.md index c79f6d5..343b773 100644 --- a/docs/stories/language-runtime-database/31-actor-lifecycle.md +++ b/docs/stories/language-runtime-database/31-actor-lifecycle.md @@ -1,6 +1,7 @@ --- iteration: "31" -status: refine +status: in-progress +readiness: ready chain: 3 --- diff --git a/docs/stories/language-runtime-database/34-crypto-builtins.md b/docs/stories/language-runtime-database/34-crypto-builtins.md index 2a8b32a..54a7488 100644 --- a/docs/stories/language-runtime-database/34-crypto-builtins.md +++ b/docs/stories/language-runtime-database/34-crypto-builtins.md @@ -1,6 +1,7 @@ --- iteration: "34" -status: refine +status: in-progress +readiness: ready --- # Iteration 34 — crypto builtins: digests and HMAC in the runtime diff --git a/docs/stories/language-runtime-database/35-net-runtime-seams.md b/docs/stories/language-runtime-database/35-net-runtime-seams.md index d45db55..1f02f8b 100644 --- a/docs/stories/language-runtime-database/35-net-runtime-seams.md +++ b/docs/stories/language-runtime-database/35-net-runtime-seams.md @@ -1,6 +1,7 @@ --- iteration: "35" status: done +readiness: ready --- # Iteration 35 — `net` runtime seams: timeouts, Unix sockets, peer address diff --git a/docs/stories/language-runtime-database/36-operator-parity.md b/docs/stories/language-runtime-database/36-operator-parity.md index 42d7cfb..3f1e49a 100644 --- a/docs/stories/language-runtime-database/36-operator-parity.md +++ b/docs/stories/language-runtime-database/36-operator-parity.md @@ -1,6 +1,7 @@ --- iteration: "36" status: in-progress +readiness: ready --- # Iteration 36 — operator parity: `not`, bitwise, hex literals, compound assigns diff --git a/docs/stories/language-runtime-database/37-wo-html-components.md b/docs/stories/language-runtime-database/37-wo-html-components.md index fb0ffb0..cde9b91 100644 --- a/docs/stories/language-runtime-database/37-wo-html-components.md +++ b/docs/stories/language-runtime-database/37-wo-html-components.md @@ -1,6 +1,7 @@ --- iteration: "37" status: done +readiness: ready --- # Iteration 37 — wo-html components: an MVC-shaped view layer (Angular's format, studied) diff --git a/docs/stories/language-runtime-database/38-content-platform-capabilities.md b/docs/stories/language-runtime-database/38-content-platform-capabilities.md index 86d90fc..077ccdb 100644 --- a/docs/stories/language-runtime-database/38-content-platform-capabilities.md +++ b/docs/stories/language-runtime-database/38-content-platform-capabilities.md @@ -1,6 +1,7 @@ --- iteration: "38" -status: refine +status: pending +readiness: refine --- # Iteration 38 — content collaboration workload: the file-mutation and outbound-socket gaps diff --git a/docs/stories/language-runtime-database/39-web-framework-parity.md b/docs/stories/language-runtime-database/39-web-framework-parity.md index f4c2396..7412c3a 100644 --- a/docs/stories/language-runtime-database/39-web-framework-parity.md +++ b/docs/stories/language-runtime-database/39-web-framework-parity.md @@ -1,6 +1,7 @@ --- iteration: "39" status: hold +readiness: refine --- # Iteration 39 — web framework parity *(superseded by the porch track)* diff --git a/docs/stories/porch/01-store-backed-middleware.md b/docs/stories/porch/01-store-backed-middleware.md index 6e719f3..3b892b1 100644 --- a/docs/stories/porch/01-store-backed-middleware.md +++ b/docs/stories/porch/01-store-backed-middleware.md @@ -1,7 +1,8 @@ --- track: porch iteration: "1" -status: refine +status: pending +readiness: refine --- # porch 1 — store-backed middleware: rate limiting and idempotency diff --git a/docs/stories/porch/02-randomness-and-cookies.md b/docs/stories/porch/02-randomness-and-cookies.md index be0dac8..1ce4711 100644 --- a/docs/stories/porch/02-randomness-and-cookies.md +++ b/docs/stories/porch/02-randomness-and-cookies.md @@ -1,7 +1,8 @@ --- track: porch iteration: "2" -status: refine +status: pending +readiness: refine --- # porch 2 — randomness and cookies: the foundation three iterations stand on diff --git a/docs/stories/porch/03-sessions.md b/docs/stories/porch/03-sessions.md index 59d4b61..266a20e 100644 --- a/docs/stories/porch/03-sessions.md +++ b/docs/stories/porch/03-sessions.md @@ -1,7 +1,8 @@ --- track: porch iteration: "3" -status: refine +status: pending +readiness: refine --- # porch 3 — sessions: server-side state, revocable, durable diff --git a/docs/stories/porch/04-csrf.md b/docs/stories/porch/04-csrf.md index d7f19ae..09587b3 100644 --- a/docs/stories/porch/04-csrf.md +++ b/docs/stories/porch/04-csrf.md @@ -1,7 +1,8 @@ --- track: porch iteration: "4" -status: refine +status: pending +readiness: refine --- # porch 4 — CSRF: tokens that are unguessable, bound, and spendable once diff --git a/docs/stories/porch/05-routing-response-ergonomics.md b/docs/stories/porch/05-routing-response-ergonomics.md index 6535e2f..37245f5 100644 --- a/docs/stories/porch/05-routing-response-ergonomics.md +++ b/docs/stories/porch/05-routing-response-ergonomics.md @@ -1,7 +1,8 @@ --- track: porch iteration: "5" -status: refine +status: pending +readiness: refine --- # porch 5 — routing and response ergonomics: the parity that is merely missing diff --git a/docs/stories/porch/06-streaming-core.md b/docs/stories/porch/06-streaming-core.md index 1002619..417ed6e 100644 --- a/docs/stories/porch/06-streaming-core.md +++ b/docs/stories/porch/06-streaming-core.md @@ -1,7 +1,8 @@ --- track: porch iteration: "6" -status: refine +status: pending +readiness: refine --- # porch 6 — streaming core: the seam three iterations wait on diff --git a/docs/stories/porch/07-sse-and-compression.md b/docs/stories/porch/07-sse-and-compression.md index 8518694..5616446 100644 --- a/docs/stories/porch/07-sse-and-compression.md +++ b/docs/stories/porch/07-sse-and-compression.md @@ -1,7 +1,8 @@ --- track: porch iteration: "7" -status: refine +status: pending +readiness: refine --- # porch 7 — server-sent events and compression diff --git a/docs/stories/porch/08-static-and-lifecycle.md b/docs/stories/porch/08-static-and-lifecycle.md index 40e8e7b..92e95c2 100644 --- a/docs/stories/porch/08-static-and-lifecycle.md +++ b/docs/stories/porch/08-static-and-lifecycle.md @@ -1,7 +1,8 @@ --- track: porch iteration: "8" -status: refine +status: pending +readiness: refine --- # porch 8 — static files, lifecycle hooks, and the small middleware everyone ships