docs(stories): add readiness, retire status: refine, sweep all 47 iterations
- `readiness: ready | refine` is a SECOND axis, orthogonal to status.
`ready` = the brainstorm is complete and the decisions are LOCKED (a spec
approved, or the forks explicitly confirmed). `refine` = open forks remain
and it cannot be planned yet
- `status: refine` RETIRED because it carried both meanings at once, so a held
iteration with an approved spec (language 18, 26) was indistinguishable from
one nobody had thought about. status is now purely where the WORK is:
done | in-progress | pending | hold — `pending` was already the board's own
rendering word, so nothing new was invented
- all 47 iterations classified from EVIDENCE in their own text, not by guess:
"the four forks are SETTLED" / "spec + plan approved" / "Approved spec:" for
ready; "Forks the spec must settle" / "no spec exists yet" for refine. Every
shipped iteration is ready by definition. 19 done, 5 in-progress, 15
pending, 8 hold; 27 ready, 20 refine
- two iterations moved refine -> in-progress rather than -> pending: language
31 and 34 are absorbed into 24 and work on them is literally happening, which
the board already showed as 🔄 while their frontmatter said otherwise. That
disagreement is now gone
- board legend, board-views' frontmatter contract, and two new Dataview
queries updated — the useful one being `readiness: ready AND status:
pending`, the startable set
WHAT THE NEW AXIS IMMEDIATELY SURFACED: of 15 pending iterations, exactly ONE
is startable — databasev2 4, io_uring group-commit, whose forks were confirmed
settled 2026-08-20. Everything else pending needs a brainstorm first. That was
invisible while one key carried both meanings, and it is now on the board.
Also caught by the sweep, unrelated to readiness but found by cross-checking
frontmatter against the board: SIX duplicate rows. Every iteration moved into
databasev2 was still listed in the LANGUAGE pending table under its retired id
(23, 32, 33, 20, 21, 27) as well as its new one. Stale copies removed. And two
databasev2 rows made claims the sweep contradicts — iteration 1 was billed
"startable today" while its forks are open, and 6 still called itself the
ceiling-raiser after 2 took that role.
Docs only. linkcheck 0 broken / 0 anchors.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
f72b3310a8
commit
1fe808b7a4
49 changed files with 129 additions and 36 deletions
|
|
@ -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=<path>.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=<path>.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 |
|
||||
|
|
|
|||
|
|
@ -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
|
||||
```
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 | ⬜ |
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
track: databasev2
|
||||
iteration: "3"
|
||||
was_language_iteration: "32"
|
||||
status: refine
|
||||
status: pending
|
||||
readiness: refine
|
||||
chain: 6
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
track: databasev2
|
||||
iteration: "4"
|
||||
was_language_iteration: "23"
|
||||
status: refine
|
||||
status: pending
|
||||
readiness: ready
|
||||
chain: 5
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
track: databasev2
|
||||
iteration: "7"
|
||||
was_language_iteration: "33"
|
||||
status: refine
|
||||
status: pending
|
||||
readiness: refine
|
||||
---
|
||||
|
||||
# databasev2 7 — `WO_DATA=<path>.db`: the persistent store as one file
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ track: databasev2
|
|||
iteration: "10"
|
||||
was_language_iteration: "21"
|
||||
status: hold
|
||||
readiness: refine
|
||||
---
|
||||
|
||||
# databasev2 10 — keypair authentication for cross-program attach
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "1"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 1 — the principles doc
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "2"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 2 — VM core (`wovm`)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "3"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 3 — compiler front (`woc`)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "4"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 4 — single binary end-to-end
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "5"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 5 — language surface (Haxe-parity adoptions)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "6"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 6 — program mode + systems stdlib
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "7"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 7 — log-watcher proof workload
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "7b"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 7b — inferred GC + incremental mark-sweep
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "8"
|
||||
status: done
|
||||
readiness: ready
|
||||
chain: 1
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "9"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 9 — database engine
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "9b"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 9b — `@table`, relations, and language-integrated query
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "11"
|
||||
status: done
|
||||
readiness: ready
|
||||
chain: 1
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "15"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 15 — dependencies: `wo.toml [deps]`, git fetch, `wo.lock`
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "16"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 16 — the web framework: a `.wo` library, HTTP/1.1 behind a proxy
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "17"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 17 — library projects and dependency privacy (`kind`, `internal/`)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "18"
|
||||
status: hold
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 18 — framework v2: memory-rich features over the embedded database
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "19"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 19 — the missing scalar types: Float and Bytes
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "22"
|
||||
status: done
|
||||
readiness: ready
|
||||
chain: 2
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "24"
|
||||
status: in-progress
|
||||
readiness: ready
|
||||
chain: 4
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "26"
|
||||
status: hold
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 26 — blue-green in-runtime deployment
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "28"
|
||||
status: hold
|
||||
readiness: refine
|
||||
---
|
||||
|
||||
# Iteration 28 — skillhost: a host-shaped workload, and the capability gaps it exposes
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "29"
|
||||
status: hold
|
||||
readiness: refine
|
||||
---
|
||||
|
||||
# Iteration 29 — compile-time metaprogramming (derive from the class table)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "31"
|
||||
status: refine
|
||||
status: in-progress
|
||||
readiness: ready
|
||||
chain: 3
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "34"
|
||||
status: refine
|
||||
status: in-progress
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 34 — crypto builtins: digests and HMAC in the runtime
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "35"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 35 — `net` runtime seams: timeouts, Unix sockets, peer address
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "36"
|
||||
status: in-progress
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 36 — operator parity: `not`, bitwise, hex literals, compound assigns
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "37"
|
||||
status: done
|
||||
readiness: ready
|
||||
---
|
||||
|
||||
# Iteration 37 — wo-html components: an MVC-shaped view layer (Angular's format, studied)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "38"
|
||||
status: refine
|
||||
status: pending
|
||||
readiness: refine
|
||||
---
|
||||
|
||||
# Iteration 38 — content collaboration workload: the file-mutation and outbound-socket gaps
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
iteration: "39"
|
||||
status: hold
|
||||
readiness: refine
|
||||
---
|
||||
|
||||
# Iteration 39 — web framework parity *(superseded by the porch track)*
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
---
|
||||
track: porch
|
||||
iteration: "1"
|
||||
status: refine
|
||||
status: pending
|
||||
readiness: refine
|
||||
---
|
||||
|
||||
# porch 1 — store-backed middleware: rate limiting and idempotency
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
---
|
||||
track: porch
|
||||
iteration: "3"
|
||||
status: refine
|
||||
status: pending
|
||||
readiness: refine
|
||||
---
|
||||
|
||||
# porch 3 — sessions: server-side state, revocable, durable
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
---
|
||||
track: porch
|
||||
iteration: "6"
|
||||
status: refine
|
||||
status: pending
|
||||
readiness: refine
|
||||
---
|
||||
|
||||
# porch 6 — streaming core: the seam three iterations wait on
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
---
|
||||
track: porch
|
||||
iteration: "7"
|
||||
status: refine
|
||||
status: pending
|
||||
readiness: refine
|
||||
---
|
||||
|
||||
# porch 7 — server-sent events and compression
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue