From a3a642b8bb6de9c8903b846879c37ad0a9e2fbe4 Mon Sep 17 00:00:00 2001 From: "shoney.arickathil" Date: Fri, 21 Aug 2026 10:07:20 +0200 Subject: [PATCH] docs: status board moved to docs/stories/00-status.md - developer move; all inbound links repointed (root docs, plan/, plan/compiler/, exploration, superpowers plans+specs, in-progress marker), board's own links re-based one level deeper - prose mentions inside landed plans left as historical records Co-Authored-By: Claude Fable 5 --- docs/00-code-review.md | 2 +- docs/00-dependency-graph.md | 2 +- docs/08-project-structure.md | 2 +- docs/in-progress/2026-08-21-arc-stage-3.md | 2 +- .../2026-08-01-haxe-parity-language.md | 2 +- .../2026-08-01-wob-emit-e2e-single-binary.md | 2 +- .../compiler/2026-08-01-woc-compiler-front.md | 2 +- .../2026-08-14-logwatcher-executable.md | 2 +- .../2026-08-15-employee-relations-query.md | 2 +- docs/plan/discarded.md | 2 +- docs/plan/exploration/c-runtime/00-plan.md | 2 +- docs/plan/learnings.md | 2 +- docs/{ => stories}/00-status.md | 140 +++++++++--------- .../plans/2026-08-01-db-engine-binding.md | 2 +- .../plans/2026-08-01-http-service-layer.md | 2 +- .../plans/2026-08-01-log-watcher-sample.md | 2 +- .../plans/2026-08-01-program-mode-stdlib.md | 2 +- .../2026-08-01-shard-actor-vm-runtime.md | 2 +- .../2026-08-01-wob-format-and-vm-core.md | 2 +- ...2026-08-20-framework-v2-memory-features.md | 2 +- .../plans/2026-08-20-library-kind-internal.md | 2 +- .../plans/2026-08-20-shard-fiber-arc.md | 2 +- ...026-08-10-logwatcher-gap-closure-design.md | 2 +- ...2026-08-20-library-kind-internal-design.md | 2 +- .../2026-08-20-memory-db-features-design.md | 2 +- .../2026-08-20-shard-fiber-arc-design.md | 2 +- 26 files changed, 95 insertions(+), 95 deletions(-) rename docs/{ => stories}/00-status.md (73%) diff --git a/docs/00-code-review.md b/docs/00-code-review.md index 1674f2e..8123503 100644 --- a/docs/00-code-review.md +++ b/docs/00-code-review.md @@ -4,7 +4,7 @@ This document was a gap analysis of what the `woc` front end needs before the log-watcher sample compiles. Its findings were extracted on 2026-08-10 into [`superpowers/specs/2026-08-10-logwatcher-gap-closure-design.md`](superpowers/specs/2026-08-10-logwatcher-gap-closure-design.md) and the plans it amends; its Phase 1–4 roadmap is retired in favour of the -approved story iterations. See [`00-status.md`](00-status.md) for current +approved story iterations. See [`00-status.md`](stories/00-status.md) for current status. ## Standing critique (undated, author unrecorded) diff --git a/docs/00-dependency-graph.md b/docs/00-dependency-graph.md index 850e701..8e4335c 100644 --- a/docs/00-dependency-graph.md +++ b/docs/00-dependency-graph.md @@ -1,6 +1,6 @@ # Dependency graphs β€” iterations and framework features -> Companion to [00-status.md](00-status.md) (states live THERE; this page +> Companion to [00-status.md](stories/00-status.md) (states live THERE; this page > carries the edges). An arrow `A --> B` means **A must exist before B**; > a dashed arrow is a scope DIRECTIVE, not a technical dependency. Use it > to pick the next implementation: anything whose incoming arrows are all diff --git a/docs/08-project-structure.md b/docs/08-project-structure.md index f388b8a..8aeb388 100644 --- a/docs/08-project-structure.md +++ b/docs/08-project-structure.md @@ -2,7 +2,7 @@ Canonical map of the repository: what every root directory is and who writes to it. Companion to [`CLAUDE.md`](../CLAUDE.md) (working rules), the status board -([`00-status.md`](00-status.md)), and the story arc +([`00-status.md`](stories/00-status.md)), and the story arc ([`stories/language-runtime-database/00-story.md`](stories/language-runtime-database/00-story.md)). writeonce is **one compiled language, one runtime, one embedded database, one diff --git a/docs/in-progress/2026-08-21-arc-stage-3.md b/docs/in-progress/2026-08-21-arc-stage-3.md index f266086..30c5f6e 100644 --- a/docs/in-progress/2026-08-21-arc-stage-3.md +++ b/docs/in-progress/2026-08-21-arc-stage-3.md @@ -2,7 +2,7 @@ > **Status: πŸ”„ in progress** (started 2026-08-21) β€” first slice of the > concurrency chain **stage 3 β†’ 22 β†’ 31 β†’ 24 β†’ 23**. Board: -> [../00-status.md](../00-status.md). +> [../00-status.md](../stories/00-status.md). > > This folder holds ONE marker doc: the slice being executed right now, > so the active work is findable without reading the board. When the diff --git a/docs/plan/compiler/2026-08-01-haxe-parity-language.md b/docs/plan/compiler/2026-08-01-haxe-parity-language.md index f4ff3e2..79c9709 100644 --- a/docs/plan/compiler/2026-08-01-haxe-parity-language.md +++ b/docs/plan/compiler/2026-08-01-haxe-parity-language.md @@ -1,6 +1,6 @@ # Haxe-Parity Language Adoptions Implementation Plan -> **Status: βœ… COMPLETE 2026-08-20** (story iteration 5, branch `language-surface-strictness`) β€” every task closed. Tasks 1–4 βœ… (modules, small surface, switch expressions, records+variants); Task 5 βœ… try/catch (2026-08-14); Task 6 βœ… `?T` forced handling (2026-08-18, WO-E211/212/213 + narrowing); Task 7 βœ… statics + `pub(read)` syntax (2026-08-14), write enforcement WO-E219 and `using` extensions with WO-E220 collision (2026-08-20 β€” compile-time rewrite to a free-fn call, owner/emit untouched); Task 8 βœ… reject rows WO-E105 (2026-08-18) and `#if` build flags (`woc -D name`, token-level, WO-E003 misuse; 2026-08-20). `is`/`throw` cut, `abstract` rejected. Board: [00-status.md](../../00-status.md) +> **Status: βœ… COMPLETE 2026-08-20** (story iteration 5, branch `language-surface-strictness`) β€” every task closed. Tasks 1–4 βœ… (modules, small surface, switch expressions, records+variants); Task 5 βœ… try/catch (2026-08-14); Task 6 βœ… `?T` forced handling (2026-08-18, WO-E211/212/213 + narrowing); Task 7 βœ… statics + `pub(read)` syntax (2026-08-14), write enforcement WO-E219 and `using` extensions with WO-E220 collision (2026-08-20 β€” compile-time rewrite to a free-fn call, owner/emit untouched); Task 8 βœ… reject rows WO-E105 (2026-08-18) and `#if` build flags (`woc -D name`, token-level, WO-E003 misuse; 2026-08-20). `is`/`throw` cut, `abstract` rejected. Board: [00-status.md](../../stories/00-status.md) > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. > diff --git a/docs/plan/compiler/2026-08-01-wob-emit-e2e-single-binary.md b/docs/plan/compiler/2026-08-01-wob-emit-e2e-single-binary.md index 63d7c43..0485221 100644 --- a/docs/plan/compiler/2026-08-01-wob-emit-e2e-single-binary.md +++ b/docs/plan/compiler/2026-08-01-wob-emit-e2e-single-binary.md @@ -1,6 +1,6 @@ # Bytecode Emit + End-to-End Corpus + Single Binary Implementation Plan -> **Status: βœ… done** (story iteration 4) β€” Tasks 1–6 + 8 shipped: bytecode emitter, disassembler (`--dump-bc`), three-kind conformance harness (`just oop-e2e`), `woc build` single-binary output, `WO-E405`. Task 7 (parity harness against the Rust runtime) **deferred by explicit user decision** β€” the two stacks diverge by design. Milestone-1 acceptance: all five criteria met. Board: [00-status.md](../../00-status.md) +> **Status: βœ… done** (story iteration 4) β€” Tasks 1–6 + 8 shipped: bytecode emitter, disassembler (`--dump-bc`), three-kind conformance harness (`just oop-e2e`), `woc build` single-binary output, `WO-E405`. Task 7 (parity harness against the Rust runtime) **deferred by explicit user decision** β€” the two stacks diverge by design. Milestone-1 acceptance: all five criteria met. Board: [00-status.md](../../stories/00-status.md) > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. > diff --git a/docs/plan/compiler/2026-08-01-woc-compiler-front.md b/docs/plan/compiler/2026-08-01-woc-compiler-front.md index d1cad18..4093c5e 100644 --- a/docs/plan/compiler/2026-08-01-woc-compiler-front.md +++ b/docs/plan/compiler/2026-08-01-woc-compiler-front.md @@ -1,6 +1,6 @@ # woc Compiler Front (OCaml) Implementation Plan -> **Status: βœ… done** (story iteration 3) β€” Tasks 1–8 shipped: dune scaffold, `diag`, newline-significant lexer, declaration + statement/expression parser with multi-error recovery, typechecker (field kinds, `?T` plumbing, W201, E225, E214), MVS ownership pass with the four emitter tables, driver with directory discovery. `?T` semantics and eight other `WO-E2xx` codes stayed unenforced β€” carried as named known gaps, not silently owed. Board: [00-status.md](../../00-status.md) +> **Status: βœ… done** (story iteration 3) β€” Tasks 1–8 shipped: dune scaffold, `diag`, newline-significant lexer, declaration + statement/expression parser with multi-error recovery, typechecker (field kinds, `?T` plumbing, W201, E225, E214), MVS ownership pass with the four emitter tables, driver with directory discovery. `?T` semantics and eight other `WO-E2xx` codes stayed unenforced β€” carried as named known gaps, not silently owed. Board: [00-status.md](../../stories/00-status.md) > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. > diff --git a/docs/plan/compiler/2026-08-14-logwatcher-executable.md b/docs/plan/compiler/2026-08-14-logwatcher-executable.md index 0fe6a3d..c9b6e0f 100644 --- a/docs/plan/compiler/2026-08-14-logwatcher-executable.md +++ b/docs/plan/compiler/2026-08-14-logwatcher-executable.md @@ -3,7 +3,7 @@ > **Status: βœ… done 2026-08-15** (story iteration 7) β€” all six tasks landed: > the sample compiles, runs, stops on SIGTERM, holds RSS and descriptors flat > under sustained load in all three modes, and the soak that proves it is in -> the acceptance script. Board: [00-status.md](../../00-status.md) +> the acceptance script. Board: [00-status.md](../../stories/00-status.md) > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. > diff --git a/docs/plan/compiler/2026-08-15-employee-relations-query.md b/docs/plan/compiler/2026-08-15-employee-relations-query.md index 37de242..966752a 100644 --- a/docs/plan/compiler/2026-08-15-employee-relations-query.md +++ b/docs/plan/compiler/2026-08-15-employee-relations-query.md @@ -3,7 +3,7 @@ > **Status: ⬜ pending** (story iteration 9b) β€” blocked on iteration 9's engine > plan ([`2026-08-01-db-engine-binding.md`](../../superpowers/plans/2026-08-01-db-engine-binding.md)): > Tasks 3–6 below consume its row storage, WAL, indexes and select subset. -> Board: [00-status.md](../../00-status.md) +> Board: [00-status.md](../../stories/00-status.md) > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. > diff --git a/docs/plan/discarded.md b/docs/plan/discarded.md index 95e6b4a..90765a7 100644 --- a/docs/plan/discarded.md +++ b/docs/plan/discarded.md @@ -5,7 +5,7 @@ exists so a settled question is not re-proposed. If you want to revisit an entry, argue against the reason recorded here β€” do not re-open it as if it were new. -Status board: [`00-status.md`](../00-status.md) Β· Doctrine: [`../00-principles.md`](../00-principles.md) +Status board: [`00-status.md`](../stories/00-status.md) Β· Doctrine: [`../00-principles.md`](../00-principles.md) ## Language surface diff --git a/docs/plan/exploration/c-runtime/00-plan.md b/docs/plan/exploration/c-runtime/00-plan.md index a459188..f39af61 100644 --- a/docs/plan/exploration/c-runtime/00-plan.md +++ b/docs/plan/exploration/c-runtime/00-plan.md @@ -1,6 +1,6 @@ # wo-rt-c roadmap β€” multi-threaded io_uring RAM database runtime, in C -> **Status: βœ… done** β€” phases A–F all shipped with measured exit evidence below. Board: [00-status.md](../../../00-status.md) +> **Status: βœ… done** β€” phases A–F all shipped with measured exit evidence below. Board: [00-status.md](../../../stories/00-status.md) **Context sources:** [`prototypes/wo-rt-c/wo-rt.c`](../../../../runtime/wo-rt.c) (phase 0 β€” the single-threaded epoll baseline), [`../../09-concurrency-scaleout.md`](../../09-concurrency-scaleout.md) (the thread-per-core doctrine every phase here miniaturizes), [`../../10-storage-foundations.md`](../../10-storage-foundations.md) / [`11-wal-and-recovery.md`](../../11-wal-and-recovery.md) / [`12-engine-disk-cutover.md`](../../12-engine-disk-cutover.md) (the storage track), kernel reference cards [`../linux/07-io_uring.md`](../linux/07-io_uring.md), [`08-mmap.md`](../linux/08-mmap.md), [`09-fallocate.md`](../linux/09-fallocate.md), [`12-pwrite-fsync.md`](../linux/12-pwrite-fsync.md), [`02-eventfd.md`](../linux/02-eventfd.md). diff --git a/docs/plan/learnings.md b/docs/plan/learnings.md index de6d854..d998ff1 100644 --- a/docs/plan/learnings.md +++ b/docs/plan/learnings.md @@ -3,7 +3,7 @@ What the work actually taught, independent of whether it shipped. Recorded so the same wall is not hit twice. Newest first within each section. -Status board: [`00-status.md`](../00-status.md) Β· Rejections: [`discarded.md`](discarded.md) +Status board: [`00-status.md`](../stories/00-status.md) Β· Rejections: [`discarded.md`](discarded.md) ## Testing and verification diff --git a/docs/00-status.md b/docs/stories/00-status.md similarity index 73% rename from docs/00-status.md rename to docs/stories/00-status.md index 5130067..63c90cb 100644 --- a/docs/00-status.md +++ b/docs/stories/00-status.md @@ -1,6 +1,6 @@ # Status board β€” what is done, what is next -Edges live in [00-dependency-graph.md](00-dependency-graph.md) β€” mermaid +Edges live in [00-dependency-graph.md](../00-dependency-graph.md) β€” mermaid graphs of iteration and feature dependencies; anything with all-green incoming arrows is startable. This board carries the STATES. @@ -22,7 +22,7 @@ discarded/learnings registers carry none by design. Update this board in the same change that finishes work β€” move the item to done with _what actually landed_, set the next in-progress item, and record any -rejection in [`discarded.md`](plan/discarded.md) with its reason. +rejection in [`discarded.md`](../plan/discarded.md) with its reason. Statuses: βœ… **done** Β· πŸ”„ **in progress** Β· ⬜ **pending** Β· ⏸ **hold** @@ -65,7 +65,7 @@ sees through Interp; same corpus pin). Body-parsing hooks: all three βœ…. Scope split (2026-08-20): the surface above plus the remaining transport/ routing/security gaps is **framework v1**, tracked item-by-item in the -[framework README's status ledger](examples/writeonce-framework/README.md) +[framework README's status ledger](../examples/writeonce-framework/README.md) (βœ…/πŸ”Ά/⬜/⏸/πŸ”§ per feature β€” timeouts and Unix sockets need `net` runtime seams, crypto hashes need C builtins since the language has no bitwise operators, streaming/cancellation park behind 8/11). The memory-rich @@ -73,7 +73,7 @@ features are **framework v2** = iteration 18 (⏸ HELD 2026-08-21 with spec approved + plan authored intact): TTL cache, @table flags, durable job queue with drain-on-request, `transaction { }` over the WAL's staged batch. The pending order is now the concurrency chain (see *Pending* -below). Edges: [00-dependency-graph.md](00-dependency-graph.md). +below). Edges: [00-dependency-graph.md](../00-dependency-graph.md). --- @@ -130,8 +130,8 @@ itself, and all six landed: 14 600 KiB across 601 686 requests in 90 s once past its ~1200-request quarantine warm-up. -Plan: [`plan/compiler/2026-08-14-logwatcher-executable.md`](plan/compiler/2026-08-14-logwatcher-executable.md) Β· -Story slice: [`docs/stories/language-runtime-database/done/07-logwatcher-proof.md`](stories/language-runtime-database/done/07-logwatcher-proof.md) +Plan: [`plan/compiler/2026-08-14-logwatcher-executable.md`](../plan/compiler/2026-08-14-logwatcher-executable.md) Β· +Story slice: [`docs/stories/language-runtime-database/done/07-logwatcher-proof.md`](language-runtime-database/done/07-logwatcher-proof.md) **Deferred by name, with the measurement that says so:** @@ -152,47 +152,47 @@ and run log-watcher_ β€” is met; the database engine (9/9b), deps (15), and the web framework (16) landed on top of it. The goal is now the framework as a polished micro-framework (17 parked; see the NEXT PLAN above and "Implementation order" under Pending). (The prior Rust `wo` runtime was -removed from the repo 2026-08-18 β€” see [`discarded.md`](plan/discarded.md).) +removed from the repo 2026-08-18 β€” see [`discarded.md`](../plan/discarded.md).) --- ## Stories -[`docs/stories/language-runtime-database/`](stories/language-runtime-database/00-story.md) +[`docs/stories/language-runtime-database/`](language-runtime-database/00-story.md) β€” one language, one runtime, one database, one binary. Twelve iterations, each an unsplittable slice with Given/When/Then acceptance and a pointer to the plan that sequences its tasks. Read one, approve, then the next starts. | # | Iteration | State | | --- | -------------------------------------------------------------------------------------------- | ---------------------------- | ---- | -| 1 | [Principles doc](stories/language-runtime-database/done/01-principles-doc.md) | βœ… | -| 2 | [VM core (`wovm`)](stories/language-runtime-database/done/02-vm-core.md) | βœ… | -| 3 | [Compiler front (`woc`)](stories/language-runtime-database/done/03-compiler-front.md) | βœ… (known gaps below) | -| 4 | [Single binary end-to-end](stories/language-runtime-database/done/04-single-binary-e2e.md) | βœ… (known gaps below) | -| 5 | [Language surface](stories/language-runtime-database/done/05-language-surface.md) | πŸ”„ grammar done; **`?T` forced handling βœ… + reject rows βœ… + WO-E205 βœ… (2026-08-18)**; `pub(read)`/`using`/`#if` still ⏸ | -| 6 | [Program mode + stdlib](stories/language-runtime-database/done/06-program-mode-stdlib.md) | βœ… (the surface log-watcher uses) | -| 7 | [log-watcher proof](stories/language-runtime-database/done/07-logwatcher-proof.md) | βœ… **landed 2026-08-15** β€” executable, not merely compilable: zero ASan leaks in all three modes, SIGTERM ends parked syscalls, fds flat, `LW_SOAK` gate; `just log-watcher` 7/0 | -| 7b | [Inferred GC + mark-sweep](stories/language-runtime-database/done/07b-inferred-gc-mark-sweep.md) | βœ… **landed 2026-08-18** β€” `@gc` gone (WO-E104), GC-ness inferred, RC replaced by incremental mark-sweep, `.wob` v4; supersedes iteration 2's RC memory model | -| 8 | [Shard-actor runtime](stories/language-runtime-database/in-progress/08-shard-actor-runtime.md) | πŸ”„ arc stages 1+2 landed 2026-08-20 (branch concurrency-arc); stage 3 (transparent DB actor) = **first in the concurrency chain** | -| 9 | [Database engine](stories/language-runtime-database/done/09-database-engine.md) | πŸ”„ engine complete (storage/WAL/indexes/insert-update-delete); reads land with 9b | -| 9b | [`@table`, relations, query](stories/language-runtime-database/done/09b-table-relations-query.md) | πŸ”„ query surface + relations + FK done (branch query-surface); group-by parked | -| 19 | [Float + Bytes](stories/language-runtime-database/done/19-missing-scalar-types.md) | βœ… **landed 2026-08-20** β€” `.wob` v5: Float constant tag, field kinds 6/7, opcodes 34-41 (IEEE-quiet f64), builtins 70-83. Full stack: literals, arithmetic, `@table` column, WAL bit-exact replay, json fractions in / shortest-round-trip out, `?Float` reserved-NaN nil, total-order index (NaN last, `-0.0` == `+0.0`), Bytes + base64. No implicit Int/Float mixing (WO-E201); `float`/`trunc` are the only bridges. Proof: web-app price is a real Float (`{"price":9.99}`), `just web-app` 23/0; corpus 103/0 | -| 11 | [Fibers](stories/language-runtime-database/in-progress/11-fibers.md) | πŸ”„ stages 1+2 landed 2026-08-20 with 8 (`just fibers` 8/0); closes with the arc's stage 3 | -| 22 | [Durability, throughput, scale](stories/language-runtime-database/refine/22-durability-throughput-scale.md) | ⬜ needs a spec first β€” second in chain, after arc stage 3 | -| 31 | [Actor lifecycle](stories/language-runtime-database/refine/31-actor-lifecycle.md) | ⬜ needs a spec first β€” third in chain (story written 2026-08-21) | -| 24 | [chat: WebSocket workload](stories/language-runtime-database/refine/24-chat-websocket-workload.md) | ⬜ fourth in chain β€” the arc's acceptance; after 31 | -| 23 | [io_uring group-commit](stories/language-runtime-database/refine/23-io-uring-commit.md) | ⬜ last in chain, after stage 3 + 22 | -| 20 | [Cross-program tables](stories/language-runtime-database/hold/20-cross-program-tables.md) | ⏸ hold (2026-08-21); channel done (branch ipc-attach keeps its manifest) | -| 21 | [Keypair attach auth](stories/language-runtime-database/hold/21-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](stories/language-runtime-database/hold/26-blue-green-deploy.md) | ⏸ hold (2026-08-21) | -| 27 | [Query grammar corpus](stories/language-runtime-database/hold/27-query-grammar-corpus.md) | ⏸ hold (2026-08-21) | -| 28 | [skillhost host workload](stories/language-runtime-database/hold/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](stories/language-runtime-database/hold/29-compile-time-metaprogramming.md) | ⏸ hold (2026-08-21) | -| 15 | [deps: `wo.toml [deps]`](stories/language-runtime-database/done/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 | -| 16 | [web framework](stories/language-runtime-database/done/16-web-framework.md) | βœ… **landed 2026-08-19** β€” writeonce-framework (HTTP/1.1 + router + Handler/Middleware) consumed by web-app through [deps]; h2c parked (Β§C) behind 8/23/11. **v1 polish landed 2026-08-20** (branch framework-v1): get/post/put/delete_ helpers, 405+Allow, HEAD, Logging middleware, set_header; `just web-app` 16/0; fixed the interp-borrowed-field emitter crash en route. **Auth-in-core landed 2026-08-20**: http/auth.wo (Bearer/Basic, ct_eq, req.principal), web-app dogfoods BearerAuth, gate 17/0 | -| 17 | [library projects + `internal/`](stories/language-runtime-database/done/17-library-projects-internal.md) | βœ… **landed 2026-08-20** β€” `kind = "library"` in `wo.toml` (default `program`, so every existing manifest is byte-identical; unknown value = WO-E109 exit 2); `woc ` on a library runs the FULL pipeline entry-less and writes nothing, retiring iteration 16's `--emit` workaround; the no-entry build error names the kind; lib+bin dual works. Go's `internal/` rule as **WO-E108** at the consumer's own `use`, dep-boundary-only β€” the library imports its own interior freely. Framework reorganized: `internal/{parse,serve}.wo` behind the line, `http/form.wo` split out to keep `media_type`/`form_values` public. Driver-only change; VM/`.wob`/GC untouched. `just web-app` **26/0** (3 new checks), every standing gate unchanged | -| 18 | [framework v2: memory-rich features](stories/language-runtime-database/hold/18-memory-db-features.md) | ⏸ hold (2026-08-21); spec approved + plan authored, both held intact ([spec](superpowers/specs/2026-08-20-memory-db-features-design.md), [plan](superpowers/plans/2026-08-20-framework-v2-memory-features.md)): TTL cache + @table flags + durable job queue (drain-on-request) + `transaction { }` over the WAL's staged batch; pub/sub REJECTED until 8/11 | +| 1 | [Principles doc](language-runtime-database/done/01-principles-doc.md) | βœ… | +| 2 | [VM core (`wovm`)](language-runtime-database/done/02-vm-core.md) | βœ… | +| 3 | [Compiler front (`woc`)](language-runtime-database/done/03-compiler-front.md) | βœ… (known gaps below) | +| 4 | [Single binary end-to-end](language-runtime-database/done/04-single-binary-e2e.md) | βœ… (known gaps below) | +| 5 | [Language surface](language-runtime-database/done/05-language-surface.md) | πŸ”„ grammar done; **`?T` forced handling βœ… + reject rows βœ… + WO-E205 βœ… (2026-08-18)**; `pub(read)`/`using`/`#if` still ⏸ | +| 6 | [Program mode + stdlib](language-runtime-database/done/06-program-mode-stdlib.md) | βœ… (the surface log-watcher uses) | +| 7 | [log-watcher proof](language-runtime-database/done/07-logwatcher-proof.md) | βœ… **landed 2026-08-15** β€” executable, not merely compilable: zero ASan leaks in all three modes, SIGTERM ends parked syscalls, fds flat, `LW_SOAK` gate; `just log-watcher` 7/0 | +| 7b | [Inferred GC + mark-sweep](language-runtime-database/done/07b-inferred-gc-mark-sweep.md) | βœ… **landed 2026-08-18** β€” `@gc` gone (WO-E104), GC-ness inferred, RC replaced by incremental mark-sweep, `.wob` v4; supersedes iteration 2's RC memory model | +| 8 | [Shard-actor runtime](language-runtime-database/in-progress/08-shard-actor-runtime.md) | πŸ”„ arc stages 1+2 landed 2026-08-20 (branch concurrency-arc); stage 3 (transparent DB actor) = **first in the concurrency chain** | +| 9 | [Database engine](language-runtime-database/done/09-database-engine.md) | πŸ”„ engine complete (storage/WAL/indexes/insert-update-delete); reads land with 9b | +| 9b | [`@table`, relations, query](language-runtime-database/done/09b-table-relations-query.md) | πŸ”„ query surface + relations + FK done (branch query-surface); group-by parked | +| 19 | [Float + Bytes](language-runtime-database/done/19-missing-scalar-types.md) | βœ… **landed 2026-08-20** β€” `.wob` v5: Float constant tag, field kinds 6/7, opcodes 34-41 (IEEE-quiet f64), builtins 70-83. Full stack: literals, arithmetic, `@table` column, WAL bit-exact replay, json fractions in / shortest-round-trip out, `?Float` reserved-NaN nil, total-order index (NaN last, `-0.0` == `+0.0`), Bytes + base64. No implicit Int/Float mixing (WO-E201); `float`/`trunc` are the only bridges. Proof: web-app price is a real Float (`{"price":9.99}`), `just web-app` 23/0; corpus 103/0 | +| 11 | [Fibers](language-runtime-database/in-progress/11-fibers.md) | πŸ”„ stages 1+2 landed 2026-08-20 with 8 (`just fibers` 8/0); closes with the arc's stage 3 | +| 22 | [Durability, throughput, scale](language-runtime-database/refine/22-durability-throughput-scale.md) | ⬜ needs a spec first β€” second in chain, after arc stage 3 | +| 31 | [Actor lifecycle](language-runtime-database/refine/31-actor-lifecycle.md) | ⬜ needs a spec first β€” third in chain (story written 2026-08-21) | +| 24 | [chat: WebSocket workload](language-runtime-database/refine/24-chat-websocket-workload.md) | ⬜ fourth in chain β€” the arc's acceptance; after 31 | +| 23 | [io_uring group-commit](language-runtime-database/refine/23-io-uring-commit.md) | ⬜ last in chain, after stage 3 + 22 | +| 20 | [Cross-program tables](language-runtime-database/hold/20-cross-program-tables.md) | ⏸ hold (2026-08-21); channel done (branch ipc-attach keeps its manifest) | +| 21 | [Keypair attach auth](language-runtime-database/hold/21-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/hold/26-blue-green-deploy.md) | ⏸ hold (2026-08-21) | +| 27 | [Query grammar corpus](language-runtime-database/hold/27-query-grammar-corpus.md) | ⏸ hold (2026-08-21) | +| 28 | [skillhost host workload](language-runtime-database/hold/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/hold/29-compile-time-metaprogramming.md) | ⏸ hold (2026-08-21) | +| 15 | [deps: `wo.toml [deps]`](language-runtime-database/done/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 | +| 16 | [web framework](language-runtime-database/done/16-web-framework.md) | βœ… **landed 2026-08-19** β€” writeonce-framework (HTTP/1.1 + router + Handler/Middleware) consumed by web-app through [deps]; h2c parked (Β§C) behind 8/23/11. **v1 polish landed 2026-08-20** (branch framework-v1): get/post/put/delete_ helpers, 405+Allow, HEAD, Logging middleware, set_header; `just web-app` 16/0; fixed the interp-borrowed-field emitter crash en route. **Auth-in-core landed 2026-08-20**: http/auth.wo (Bearer/Basic, ct_eq, req.principal), web-app dogfoods BearerAuth, gate 17/0 | +| 17 | [library projects + `internal/`](language-runtime-database/done/17-library-projects-internal.md) | βœ… **landed 2026-08-20** β€” `kind = "library"` in `wo.toml` (default `program`, so every existing manifest is byte-identical; unknown value = WO-E109 exit 2); `woc ` on a library runs the FULL pipeline entry-less and writes nothing, retiring iteration 16's `--emit` workaround; the no-entry build error names the kind; lib+bin dual works. Go's `internal/` rule as **WO-E108** at the consumer's own `use`, dep-boundary-only β€” the library imports its own interior freely. Framework reorganized: `internal/{parse,serve}.wo` behind the line, `http/form.wo` split out to keep `media_type`/`form_values` public. Driver-only change; VM/`.wob`/GC untouched. `just web-app` **26/0** (3 new checks), every standing gate unchanged | +| 18 | [framework v2: memory-rich features](language-runtime-database/hold/18-memory-db-features.md) | ⏸ hold (2026-08-21); spec approved + plan authored, both held intact ([spec](../superpowers/specs/2026-08-20-memory-db-features-design.md), [plan](../superpowers/plans/2026-08-20-framework-v2-memory-features.md)): TTL cache + @table flags + durable job queue (drain-on-request) + `transaction { }` over the WAL's staged batch; pub/sub REJECTED until 8/11 | --- @@ -200,9 +200,9 @@ that sequences its tasks. Read one, approve, then the next starts. | Track | Item | Where | | -------- | --------------------------------------------------------------------------- | ---------------------------------------------------------- | -| Runtime | **the 8+11 arc, stage 3: transparent DB actor** β€” first slice of the concurrency chain (2026-08-21) | [marker doc](in-progress/2026-08-21-arc-stage-3.md) Β· [arc plan Tasks 7–8](superpowers/plans/2026-08-20-shard-fiber-arc.md) | +| Runtime | **the 8+11 arc, stage 3: transparent DB actor** β€” first slice of the concurrency chain (2026-08-21) | [marker doc](../in-progress/2026-08-21-arc-stage-3.md) Β· [arc plan Tasks 7–8](../superpowers/plans/2026-08-20-shard-fiber-arc.md) | -The active slice's marker doc lives in [`in-progress/`](in-progress/) β€” +The active slice's marker doc lives in [`in-progress/`](../in-progress/) β€” one file, deleted when the slice lands. Everything else pending is the concurrency chain (see *Pending* below); the held tail is in `hold/`. @@ -249,14 +249,14 @@ Gates at the end of that session: corpus 71/0, `woc` runtest 565/0, every | Status | Item | Doc | What actually landed | | ------ | ------------------------------------ | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| βœ… | Principles | [`../00-principles.md`](00-principles.md) | 13 principles, each with a why and a link to the doc that enforces it | -| βœ… | `wovm` VM core | [plan 1](superpowers/plans/2026-08-01-wob-format-and-vm-core.md) | `.wob` v1 loader with full static validation, register interpreter (computed-goto + ISO-C fallback), arena with size-class free lists, borrow word, RC + budgeted Bacon–Rajan cycle collector, drop-map trap unwinding, containers, builtins, ICALL, CLI. 13 suites Γ— 2 dispatch flavors + CLI smoke, ASan/UBSan clean | -| βœ… | `.wob` format contract | [`oop-vm/00-wob-format.md`](plan/oop-vm/00-wob-format.md) | Normative; twinned with `runtime/src/wob.h` | -| βœ… | `woc` compiler front | [plan 2](plan/compiler/2026-08-01-woc-compiler-front.md) | Tasks 1–8: dune scaffold, `diag` (WO-E codes, two-site related errors, ordered dedup), newline-significant lexer at rt parity, declaration + statement/expression parser with skip-on-block and multi-error recovery, typechecker (field kinds, `?T` plumbing, W201, E225, E214), MVS ownership pass with the four emitter tables, driver with directory discovery + cross-file programs. 14 + 264 checks | -| βœ… | Error catalog | [`oop-vm/01-error-catalog.md`](plan/oop-vm/01-error-catalog.md) | 14 emitted codes + 10 reserved, each with the reason it is not yet emitted | -| βœ… | log-watcher `.wo` sample | [`../examples/log-watcher/`](examples/log-watcher/README.md) | Eight-file port authored docs-first with its `.hx` mapping table; compiles for real in iteration 7 | -| βœ… | Scalar cleanup | [`discarded.md`](plan/discarded.md) | `Money`/`SKU`/`Float` and the abstract allowlist removed; `abstract` flipped adopt β†’ reject | -| βœ… | `woc` emitter, corpus, single binary | [plan 3](plan/compiler/2026-08-01-wob-emit-e2e-single-binary.md) | Tasks 1–6 + 8 (Task 7, a parity harness against the Rust runtime, **deferred by explicit user decision** β€” the two stacks diverge by design). Bytecode emitter (`emit.ml`) + disassembler (`disasm.ml`, `--dump-bc`); three-kind conformance harness (`scripts/oop-e2e.sh`, `just oop-e2e`) over `tests/corpus/{run,compile-fail,trap,gc}`; pricing-demo + ownership/trap corpora (19 fixtures); `@gc` cycle collector's post-exit pump (`WO_GC_BUDGET`/`WO_GC_TRACE`) + 2 gc fixtures (`gc/held-cycle` retired β€” see criterion-3 closure below); `woc build` single-binary output + relocation/corrupt-trailer smoke; `WO-E405` closing criterion 3's ASan leak (entry must return `Int`); `just oop-accept` wiring all five spec criteria + both unit gates into one command. 14 + 399 compiler checks; `oop-e2e` 25/25 against the release `wovm`. **Milestone-1 acceptance gate is fully green β€” all five criteria met** (see the dated acceptance note in `docs/superpowers/specs/2026-08-01-oop-compiler-vm-design.md`) | +| βœ… | Principles | [`../00-principles.md`](../00-principles.md) | 13 principles, each with a why and a link to the doc that enforces it | +| βœ… | `wovm` VM core | [plan 1](../superpowers/plans/2026-08-01-wob-format-and-vm-core.md) | `.wob` v1 loader with full static validation, register interpreter (computed-goto + ISO-C fallback), arena with size-class free lists, borrow word, RC + budgeted Bacon–Rajan cycle collector, drop-map trap unwinding, containers, builtins, ICALL, CLI. 13 suites Γ— 2 dispatch flavors + CLI smoke, ASan/UBSan clean | +| βœ… | `.wob` format contract | [`oop-vm/00-wob-format.md`](../plan/oop-vm/00-wob-format.md) | Normative; twinned with `runtime/src/wob.h` | +| βœ… | `woc` compiler front | [plan 2](../plan/compiler/2026-08-01-woc-compiler-front.md) | Tasks 1–8: dune scaffold, `diag` (WO-E codes, two-site related errors, ordered dedup), newline-significant lexer at rt parity, declaration + statement/expression parser with skip-on-block and multi-error recovery, typechecker (field kinds, `?T` plumbing, W201, E225, E214), MVS ownership pass with the four emitter tables, driver with directory discovery + cross-file programs. 14 + 264 checks | +| βœ… | Error catalog | [`oop-vm/01-error-catalog.md`](../plan/oop-vm/01-error-catalog.md) | 14 emitted codes + 10 reserved, each with the reason it is not yet emitted | +| βœ… | log-watcher `.wo` sample | [`../examples/log-watcher/`](../examples/log-watcher/README.md) | Eight-file port authored docs-first with its `.hx` mapping table; compiles for real in iteration 7 | +| βœ… | Scalar cleanup | [`discarded.md`](../plan/discarded.md) | `Money`/`SKU`/`Float` and the abstract allowlist removed; `abstract` flipped adopt β†’ reject | +| βœ… | `woc` emitter, corpus, single binary | [plan 3](../plan/compiler/2026-08-01-wob-emit-e2e-single-binary.md) | Tasks 1–6 + 8 (Task 7, a parity harness against the Rust runtime, **deferred by explicit user decision** β€” the two stacks diverge by design). Bytecode emitter (`emit.ml`) + disassembler (`disasm.ml`, `--dump-bc`); three-kind conformance harness (`scripts/oop-e2e.sh`, `just oop-e2e`) over `tests/corpus/{run,compile-fail,trap,gc}`; pricing-demo + ownership/trap corpora (19 fixtures); `@gc` cycle collector's post-exit pump (`WO_GC_BUDGET`/`WO_GC_TRACE`) + 2 gc fixtures (`gc/held-cycle` retired β€” see criterion-3 closure below); `woc build` single-binary output + relocation/corrupt-trailer smoke; `WO-E405` closing criterion 3's ASan leak (entry must return `Int`); `just oop-accept` wiring all five spec criteria + both unit gates into one command. 14 + 399 compiler checks; `oop-e2e` 25/25 against the release `wovm`. **Milestone-1 acceptance gate is fully green β€” all five criteria met** (see the dated acceptance note in `docs/superpowers/specs/2026-08-01-oop-compiler-vm-design.md`) | **Known gaps carried out of iteration 3** β€” recorded, not silently owed: @@ -264,7 +264,7 @@ Gates at the end of that session: corpus 71/0, `woc` runtest 565/0, every `?T`; the semantics do not exist (`WO-E211`/`E212`/`E213` declared, never emitted β€” a probe returning `?Int` as `Int` exits 0). Owned by iteration 5, plan 8 Task 6, which is that iteration's first task because it blocks the - log-watcher port. See [`compiler/nullable-types-implementation.md`](plan/compiler/nullable-types-implementation.md). + log-watcher port. See [`compiler/nullable-types-implementation.md`](../plan/compiler/nullable-types-implementation.md). - **Structural interface satisfaction is not checked** (`WO-E205` dead), along with type mismatch, bad arity, and unknown-fn (`E201`/`E203`/`E204`) β€” all named in plan 2 Task 6's own must-fail list. Gaps in shipped work, catalogued @@ -285,7 +285,7 @@ Gates at the end of that session: corpus 71/0, `woc` runtest 565/0, every special case in `owner.ml`'s `analyze_call`, so a `@gc` key or value handed to `set` is under-counted and the collector can free it while the map still points at it. Nothing in the corpus exercises this yet. See - [`oop-vm/08-builtin-surface.md`](plan/oop-vm/08-builtin-surface.md). + [`oop-vm/08-builtin-surface.md`](../plan/oop-vm/08-builtin-surface.md). **Known gaps carried out of the 2026-08-14 compile-and-run milestone** β€” recorded, not silently owed: @@ -308,7 +308,7 @@ recorded, not silently owed: used to answer `{"isError":true,"text":"tool failed: not a text value"}`; all four MCP tools now return `isError:false` with correct payloads. `OWNED`/`GCREF` elements still move, and `set`'s `@gc` retention gap is still - open (see [`oop-vm/08-builtin-surface.md`](plan/oop-vm/08-builtin-surface.md)). + open (see [`oop-vm/08-builtin-surface.md`](../plan/oop-vm/08-builtin-surface.md)). - **A blocking `accept`/`read` swallows SIGTERM.** `env.stopping()` installs a handler that only sets a flag, and `net.accept`/`net.read` retry on `EINTR`, so a server parked in `accept` never observes it: a plain TERM does not stop @@ -336,7 +336,7 @@ recorded, not silently owed: not fixture pairs; `tests/corpus/` still gates every pre-existing behavior (71 checks, 0 failures). - **E201/E203 and seven other `WO-E2xx` codes remain declared but unemitted** - β€” see [`oop-vm/01-error-catalog.md`](plan/oop-vm/01-error-catalog.md). + β€” see [`oop-vm/01-error-catalog.md`](../plan/oop-vm/01-error-catalog.md). - **CLOSED β€” milestone-1's ASan gate (`just oop-accept`) failing on `gc/held-cycle`.** Root cause (Task 8's finding, restated): `main.c`'s entry-method return value (`uint64_t ret`, `src/main.c:158`) is stored @@ -361,7 +361,7 @@ recorded, not silently owed: The C proving-ground work (`exploration/c-runtime/`, phases A–F: 859k reads/s, 618k durable commits/s) fed the current C runtime and remains as an -[exploration study](plan/exploration/c-runtime/00-plan.md). +[exploration study](../plan/exploration/c-runtime/00-plan.md). --- @@ -374,7 +374,7 @@ Everything still pending IS the runtime-concurrency chain. Basis: the holes before adding surface), amended 2026-08-21 by developer decision: **stage 3 before 22** β€” correctness first, then one benchmark campaign covers single- and multi-shard. The authoritative table with per-row -reasoning is [`00-story.md`](stories/language-runtime-database/00-story.md). +reasoning is [`00-story.md`](language-runtime-database/00-story.md). Dependency rules that force the shape: 23 after stage 3 + 22 (the ring is the arc's, the baseline is 22's); 24 after 31 (chat is dishonest without @@ -385,7 +385,7 @@ precedence notes for resumption. optimization: worker VMs are zero-initialized, so a DB statement off the primary traps `WO_T_DB` β€” a multi-shard program touching the database is broken today. Plan of record: - [`2026-08-20-shard-fiber-arc.md`](superpowers/plans/2026-08-20-shard-fiber-arc.md) + [`2026-08-20-shard-fiber-arc.md`](../superpowers/plans/2026-08-20-shard-fiber-arc.md) (stages 1+2 landed 2026-08-20, branch `concurrency-arc`). 2. **22** β€” the measurement backbone: restart-persistence proof + baseline benchmark (durable + RAM-only), single- AND multi-shard in one @@ -393,7 +393,7 @@ precedence notes for resumption. costs). It has never run β€” no `bench/baseline.json`, no `just db-bench`; the arc's stages 1+2 delta is recorded retroactively. 3. **31** β€” actor lifecycle - ([story](stories/language-runtime-database/refine/31-actor-lifecycle.md), + ([story](language-runtime-database/refine/31-actor-lifecycle.md), written 2026-08-21): request/response (`send` is one-way and callers `sleep` to await), bounded mailboxes (the FIFO only grows), actor death/supervision, timers beyond `time.sleep`. @@ -407,8 +407,8 @@ story file); slots in when scheduled β€” nothing in the chain depends on it. ⏸ **Held** (2026-08-21, developer decision): 18, 20, 21, 25, 26, 27, 28, 29 β€” stories in -[`hold/`](stories/language-runtime-database/hold/) (25's story file -removed; its [plan doc](superpowers/plans/2026-08-01-http-service-layer.md) +[`hold/`](language-runtime-database/hold/) (25's story file +removed; its [plan doc](../superpowers/plans/2026-08-01-http-service-layer.md) remains). Half-done branches (ipc-attach, keypair-auth) keep their manifests. @@ -420,22 +420,22 @@ check mode, and the `internal/` dep boundary (WO-E108). Driver-only. | # | Item | Plan | | --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------- | -| 5 | Haxe-parity language surface β€” **`?T` forced handling first**, then switch expressions, records, enum payloads, try/catch, statics, `using`, modules, `is`, `pub(read)`, `#if` | [plan 8](plan/compiler/2026-08-01-haxe-parity-language.md) | -| 6 | Program mode + systems stdlib β€” `fn main`, exit codes, `fs`/`proc`/`net`/`time`/`json` | [plan 9](superpowers/plans/2026-08-01-program-mode-stdlib.md) | -| 7 | log-watcher proof β€” the sample compiles and detects a silent death live | [plan 10](superpowers/plans/2026-08-01-log-watcher-sample.md) | -| 8 | Shard-actor runtime | [arc plan](superpowers/plans/2026-08-20-shard-fiber-arc.md) (plan 4 βœ– discarded 2026-08-21 β€” epoll-based) | -| 9 | Database engine binding | [plan 5](superpowers/plans/2026-08-01-db-engine-binding.md) | -| 9b | `@table` + relations + language-integrated query β€” comprehension queries, `ref`/`backlink` navigation, GroupBy aggregates; acceptance: new `docs/examples/employee` sample | [spec](superpowers/specs/2026-08-15-table-relations-query-design.md) Β· [plan](plan/compiler/2026-08-15-employee-relations-query.md) | +| 5 | Haxe-parity language surface β€” **`?T` forced handling first**, then switch expressions, records, enum payloads, try/catch, statics, `using`, modules, `is`, `pub(read)`, `#if` | [plan 8](../plan/compiler/2026-08-01-haxe-parity-language.md) | +| 6 | Program mode + systems stdlib β€” `fn main`, exit codes, `fs`/`proc`/`net`/`time`/`json` | [plan 9](../superpowers/plans/2026-08-01-program-mode-stdlib.md) | +| 7 | log-watcher proof β€” the sample compiles and detects a silent death live | [plan 10](../superpowers/plans/2026-08-01-log-watcher-sample.md) | +| 8 | Shard-actor runtime | [arc plan](../superpowers/plans/2026-08-20-shard-fiber-arc.md) (plan 4 βœ– discarded 2026-08-21 β€” epoll-based) | +| 9 | Database engine binding | [plan 5](../superpowers/plans/2026-08-01-db-engine-binding.md) | +| 9b | `@table` + relations + language-integrated query β€” comprehension queries, `ref`/`backlink` navigation, GroupBy aggregates; acceptance: new `docs/examples/employee` sample | [spec](../superpowers/specs/2026-08-15-table-relations-query-design.md) Β· [plan](../plan/compiler/2026-08-15-employee-relations-query.md) | | 20 | Cross-program tables β€” attach to a running program's database (IPC string in wo.toml, manifest-granted rights, owner stays the single writer) | **no spec yet** β€” four open forks recorded in the iteration; brainstorm before planning | | 21 | Keypair attach auth β€” mutual challenge–response, grants name public keys, uid superseded | **no spec yet** β€” four forks recorded; plan folds into 20's | | 22 | Durability + throughput + scale β€” restart-persistence, read/write benchmark, ~1M rows; the gate every later optimization re-runs | **no spec yet** β€” four forks recorded; the measurement backbone | | 23 | io_uring group-commit write path β€” batched durability overlapped on shard threads, fsync fallback | **no spec yet** β€” brainstorm after iterations 8 + 22 | | 27 | Query grammar from real embedded-DB corpora β€” whole-query count + correlated exists, driven by the skillhost SQL catalogue; add only what a corpus uses | **no spec yet** β€” three forks; may collapse to "confirm len(query) + add exists" | | 14 | skillhost host workload β€” port skillhost (MCP host + confined script runner) to writeonce; drives the missing host capabilities into the open (bounded subprocess, stdin/stdout transport, fs metadata, FFI-vs-out-of-process) | **no spec yet** β€” gaps recorded in the iteration; each gap brainstormed on demand, bounded-subprocess first | -| 17 | library projects + dependency privacy β€” `wo.toml` kind = "library" (checkable without entry, dual lib+bin) + Go-style `internal/` at the [deps] boundary; framework reorg demonstrates both | βœ… **landed 2026-08-20** β€” [spec](superpowers/specs/2026-08-20-library-kind-internal-design.md) Β· [plan](superpowers/plans/2026-08-20-library-kind-internal.md) | -| 10 | HTTP service layer | [plan 6](superpowers/plans/2026-08-01-http-service-layer.md) | -| 11 | Fibers | vision Β§3, [blue-green exploration](plan/exploration/blue-green-vm/00-vision.md) | -| 12 | Blue-green deploy | [spec](superpowers/specs/2026-08-03-blue-green-vm-design.md) β€” plan authored after iterations 9 + 25 | +| 17 | library projects + dependency privacy β€” `wo.toml` kind = "library" (checkable without entry, dual lib+bin) + Go-style `internal/` at the [deps] boundary; framework reorg demonstrates both | βœ… **landed 2026-08-20** β€” [spec](../superpowers/specs/2026-08-20-library-kind-internal-design.md) Β· [plan](../superpowers/plans/2026-08-20-library-kind-internal.md) | +| 10 | HTTP service layer | [plan 6](../superpowers/plans/2026-08-01-http-service-layer.md) | +| 11 | Fibers | vision Β§3, [blue-green exploration](../plan/exploration/blue-green-vm/00-vision.md) | +| 12 | Blue-green deploy | [spec](../superpowers/specs/2026-08-03-blue-green-vm-design.md) β€” plan authored after iterations 9 + 25 | ### Language track β€” parked until after iteration 26 @@ -445,7 +445,7 @@ log-watcher proof. - `WO-W201` `@gc`-suggestion refinement beyond the self-reference heuristic - `WO-E225` broadened to `ref`/`multi`/`map` element types and fn signatures - ADT container roster adoption (Stack, Queue, Set, Tree, Graph, …) β€” see the - roster in [`compiler/nullable-types-implementation.md`](plan/compiler/nullable-types-implementation.md) + roster in [`compiler/nullable-types-implementation.md`](../plan/compiler/nullable-types-implementation.md) - Web framework as a `.wo` library; UI (`##ui` SSR + live patches); script-based destructive migrations; MCP/agent wrapper over the management plane - `throw` (explicit raise) β€” cut 2026-08-10, 0 uses in the driving workload @@ -462,13 +462,13 @@ implementation plan, the 7-of-7 `ui-htmlx-live` plan, and the 9-doc `plan/exploration/ui/` design set β€” was **removed**. It was built entirely on the non-advancing Rust runtime (`.dev/reference/crates/wo-htmlx`, `cargo run`, WebSocket live-patches) and contradicts the current woc/wovm direction. Recorded -in [`discarded.md`](plan/discarded.md). +in [`discarded.md`](../plan/discarded.md). --- ## Discarded -Settled rejections with their reasons live in [`discarded.md`](plan/discarded.md) β€” +Settled rejections with their reasons live in [`discarded.md`](../plan/discarded.md) β€” inheritance, `abstract` newtypes, `Money`/`SKU`/`Float`, `Dynamic`/`cast`/ `macro`/`extern`, AOT-to-C, Menhir, shared mutable engine state, external deployer daemon, destructive migrations in v1, and more. Argue against the @@ -476,7 +476,7 @@ recorded reason rather than re-opening an entry as new. ## Learnings -What attempts taught, shipped or not, in [`learnings.md`](plan/learnings.md) β€” +What attempts taught, shipped or not, in [`learnings.md`](../plan/learnings.md) β€” plumbed-is-not-enforced, vacuously-passing goldens, exit-0-with-wrong-output, the malloc-path ASan trick, deferred checks that never reach the runtime, validate-once-at-the-boundary, and reference-implement-in-C-first. diff --git a/docs/superpowers/plans/2026-08-01-db-engine-binding.md b/docs/superpowers/plans/2026-08-01-db-engine-binding.md index 9bebc83..11de1bb 100644 --- a/docs/superpowers/plans/2026-08-01-db-engine-binding.md +++ b/docs/superpowers/plans/2026-08-01-db-engine-binding.md @@ -1,6 +1,6 @@ # DB Engine Binding Implementation Plan -> **Status: πŸ”„ in progress β€” Tasks 1–4 done; Task 5 engine half done; Task 6 incremental. The language read surface is the 9b plan's (recorded deviation at Task 5); the engine itself is COMPLETE for single-shard: storage, WAL+replay, insert/update/delete execution, indexes, unique.** (story iteration 9) β€” class-shaped tables, typed WAL + recovery, `insert`/`select` execution. Story iteration 9b (`@table` relations + language-integrated query) follows it and needs a spec brainstormed first. Board: [00-status.md](../../00-status.md) +> **Status: πŸ”„ in progress β€” Tasks 1–4 done; Task 5 engine half done; Task 6 incremental. The language read surface is the 9b plan's (recorded deviation at Task 5); the engine itself is COMPLETE for single-shard: storage, WAL+replay, insert/update/delete execution, indexes, unique.** (story iteration 9) β€” class-shaped tables, typed WAL + recovery, `insert`/`select` execution. Story iteration 9b (`@table` relations + language-integrated query) follows it and needs a spec brainstormed first. Board: [00-status.md](../../stories/00-status.md) > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. > diff --git a/docs/superpowers/plans/2026-08-01-http-service-layer.md b/docs/superpowers/plans/2026-08-01-http-service-layer.md index 7b4c572..998d4f5 100644 --- a/docs/superpowers/plans/2026-08-01-http-service-layer.md +++ b/docs/superpowers/plans/2026-08-01-http-service-layer.md @@ -1,6 +1,6 @@ # HTTP Service Layer Implementation Plan -> **Status: ⏸ hold (2026-08-21, developer decision)** (story iteration 25) β€” `service` blocks route to VM methods; REST parity with the shipped Rust Stage 2 runtime. Board: [00-status.md](../../00-status.md) +> **Status: ⏸ hold (2026-08-21, developer decision)** (story iteration 25) β€” `service` blocks route to VM methods; REST parity with the shipped Rust Stage 2 runtime. Board: [00-status.md](../../stories/00-status.md) > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. > diff --git a/docs/superpowers/plans/2026-08-01-log-watcher-sample.md b/docs/superpowers/plans/2026-08-01-log-watcher-sample.md index 7e1003f..8da22cc 100644 --- a/docs/superpowers/plans/2026-08-01-log-watcher-sample.md +++ b/docs/superpowers/plans/2026-08-01-log-watcher-sample.md @@ -1,6 +1,6 @@ # log-watcher .wo Sample Implementation Plan -> **Status: ⬜ pending** (story iteration 7 β€” the acceptance gate) β€” the eight-file `.wo` sample compiles clean and detects a silent death live. Blocked on iterations 5–6. The sample is already authored ([`docs/examples/log-watcher/`](../../examples/log-watcher/README.md)) and currently reports 93 diagnostics, down from 307. Board: [00-status.md](../../00-status.md) +> **Status: ⬜ pending** (story iteration 7 β€” the acceptance gate) β€” the eight-file `.wo` sample compiles clean and detects a silent death live. Blocked on iterations 5–6. The sample is already authored ([`docs/examples/log-watcher/`](../../examples/log-watcher/README.md)) and currently reports 93 diagnostics, down from 307. Board: [00-status.md](../../stories/00-status.md) > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. > diff --git a/docs/superpowers/plans/2026-08-01-program-mode-stdlib.md b/docs/superpowers/plans/2026-08-01-program-mode-stdlib.md index 185e1e2..daaafec 100644 --- a/docs/superpowers/plans/2026-08-01-program-mode-stdlib.md +++ b/docs/superpowers/plans/2026-08-01-program-mode-stdlib.md @@ -1,6 +1,6 @@ # Program Mode + Systems Stdlib Implementation Plan -> **Status: ⬜ pending** (story iteration 6 β€” next after iteration 5) β€” `fn main`, exit codes, and the `fs`/`proc`/`net`/`time`/`json`/`env` builtin surface. Blocked on plan 8; the six stdlib namespaces already typecheck as UNKNOWN-BUT-RESERVED, so a qualified call compiles today and only fails at emission (`WO-E406`). Board: [00-status.md](../../00-status.md) +> **Status: ⬜ pending** (story iteration 6 β€” next after iteration 5) β€” `fn main`, exit codes, and the `fs`/`proc`/`net`/`time`/`json`/`env` builtin surface. Blocked on plan 8; the six stdlib namespaces already typecheck as UNKNOWN-BUT-RESERVED, so a qualified call compiles today and only fails at emission (`WO-E406`). Board: [00-status.md](../../stories/00-status.md) > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. > diff --git a/docs/superpowers/plans/2026-08-01-shard-actor-vm-runtime.md b/docs/superpowers/plans/2026-08-01-shard-actor-vm-runtime.md index c1f361a..eb4c1dc 100644 --- a/docs/superpowers/plans/2026-08-01-shard-actor-vm-runtime.md +++ b/docs/superpowers/plans/2026-08-01-shard-actor-vm-runtime.md @@ -10,7 +10,7 @@ > tree removed 2026-08-18 with the Rust track. Kept as historical > reference for the mailbox-ring and heap-stamping idea shapes only. > Recorded in [`plan/discarded.md`](../../plan/discarded.md). Board: -> [00-status.md](../../00-status.md) +> [00-status.md](../../stories/00-status.md) > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. > diff --git a/docs/superpowers/plans/2026-08-01-wob-format-and-vm-core.md b/docs/superpowers/plans/2026-08-01-wob-format-and-vm-core.md index c99545a..6259646 100644 --- a/docs/superpowers/plans/2026-08-01-wob-format-and-vm-core.md +++ b/docs/superpowers/plans/2026-08-01-wob-format-and-vm-core.md @@ -1,6 +1,6 @@ # .wob Format + wovm VM Core Implementation Plan -> **Status: βœ… done** (story iteration 2) β€” `.wob` v1 loader with full static validation, register interpreter (computed-goto + ISO-C fallback), arena with size-class free lists, borrow word, RC + budgeted Bacon–Rajan cycle collector, drop-map trap unwinding, containers, builtins, ICALL, CLI. 13 suites Γ— 2 dispatch flavors + CLI smoke, ASan/UBSan clean. The format contract itself lives on in [`plan/oop-vm/00-wob-format.md`](../../plan/oop-vm/00-wob-format.md). Board: [00-status.md](../../00-status.md) +> **Status: βœ… done** (story iteration 2) β€” `.wob` v1 loader with full static validation, register interpreter (computed-goto + ISO-C fallback), arena with size-class free lists, borrow word, RC + budgeted Bacon–Rajan cycle collector, drop-map trap unwinding, containers, builtins, ICALL, CLI. 13 suites Γ— 2 dispatch flavors + CLI smoke, ASan/UBSan clean. The format contract itself lives on in [`plan/oop-vm/00-wob-format.md`](../../plan/oop-vm/00-wob-format.md). Board: [00-status.md](../../stories/00-status.md) > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. > diff --git a/docs/superpowers/plans/2026-08-20-framework-v2-memory-features.md b/docs/superpowers/plans/2026-08-20-framework-v2-memory-features.md index 3bbc4a8..2177975 100644 --- a/docs/superpowers/plans/2026-08-20-framework-v2-memory-features.md +++ b/docs/superpowers/plans/2026-08-20-framework-v2-memory-features.md @@ -3,7 +3,7 @@ > **Status: ⏸ hold (2026-08-21, developer decision)** β€” story iteration 18 > sits in `stories/language-runtime-database/hold/`; plan was ready to > execute (2026-08-20) and stays intact for resumption. Board: -> [docs/00-status.md](../../00-status.md). +> [docs/00-status.md](../../stories/00-status.md). > **For agentic workers:** REQUIRED SUB-SKILL: Use > superpowers:subagent-driven-development (recommended) or diff --git a/docs/superpowers/plans/2026-08-20-library-kind-internal.md b/docs/superpowers/plans/2026-08-20-library-kind-internal.md index 7133f2d..d461e73 100644 --- a/docs/superpowers/plans/2026-08-20-library-kind-internal.md +++ b/docs/superpowers/plans/2026-08-20-library-kind-internal.md @@ -6,7 +6,7 @@ > after this plan was written: `http/parse.wo` was SPLIT rather than moved > whole (its `media_type`/`form_values` are public surface the web-app calls), > and the gate reads 26/0 rather than 17/0 (`just web-app` was already at 23 -> before this iteration). Board: [docs/00-status.md](../../00-status.md). +> before this iteration). Board: [docs/00-status.md](../../stories/00-status.md). > **For agentic workers:** REQUIRED SUB-SKILL: Use > superpowers:subagent-driven-development (recommended) or diff --git a/docs/superpowers/plans/2026-08-20-shard-fiber-arc.md b/docs/superpowers/plans/2026-08-20-shard-fiber-arc.md index d9056c4..f966ebc 100644 --- a/docs/superpowers/plans/2026-08-20-shard-fiber-arc.md +++ b/docs/superpowers/plans/2026-08-20-shard-fiber-arc.md @@ -22,7 +22,7 @@ > (7) two TSan-caught races fixed (late-init memset vs concurrent push; > wake-efd read outside the lock) and one teardown SEGV (routed frees > during teardown are now no-ops: arenas die wholesale). -> Board: [docs/00-status.md](../../00-status.md). +> Board: [docs/00-status.md](../../stories/00-status.md). > **For agentic workers:** REQUIRED SUB-SKILL: Use > superpowers:subagent-driven-development (recommended) or diff --git a/docs/superpowers/specs/2026-08-10-logwatcher-gap-closure-design.md b/docs/superpowers/specs/2026-08-10-logwatcher-gap-closure-design.md index 4c8917c..cd2e8b0 100644 --- a/docs/superpowers/specs/2026-08-10-logwatcher-gap-closure-design.md +++ b/docs/superpowers/specs/2026-08-10-logwatcher-gap-closure-design.md @@ -166,7 +166,7 @@ against the sample. | [plan 3](../../plan/compiler/2026-08-01-wob-emit-e2e-single-binary.md) | Unchanged. | | [plan 10](../plans/2026-08-01-log-watcher-sample.md) | Acceptance gains the diagnostic-count gate: 307 β†’ 0. | | [`01-error-catalog.md`](../../plan/oop-vm/01-error-catalog.md) | `WO-E205` re-filed as **reachable but unenforced** β€” corrected 2026-08-11, see Β§ 5 β€” with its repro; `WO-E208`/`E210`/`E211`–`E213` keep their existing reserved entries. | -| [`docs/00-status.md`](../../00-status.md) | NEXT PLAN gains the milestone-grammar-only note; pending list gains the three cuts under the parked section. | +| [`docs/00-status.md`](../../stories/00-status.md) | NEXT PLAN gains the milestone-grammar-only note; pending list gains the three cuts under the parked section. | | `docs/00-code-review.md` | Reduced to a stub: one paragraph saying its findings landed here and in the plans, pointing at `docs/00-status.md`. | ## Error handling diff --git a/docs/superpowers/specs/2026-08-20-library-kind-internal-design.md b/docs/superpowers/specs/2026-08-20-library-kind-internal-design.md index 16f595e..d458203 100644 --- a/docs/superpowers/specs/2026-08-20-library-kind-internal-design.md +++ b/docs/superpowers/specs/2026-08-20-library-kind-internal-design.md @@ -6,7 +6,7 @@ > settled in > [the iteration](../../stories/language-runtime-database/done/17-library-projects-internal.md) > (four forks + impact analysis); this spec makes them buildable. The plan -> follows after review. Board: [docs/00-status.md](../../00-status.md). +> follows after review. Board: [docs/00-status.md](../../stories/00-status.md). > > Per repo convention this spec carries concept, reason, and required > behavior in words only β€” no implementation code. diff --git a/docs/superpowers/specs/2026-08-20-memory-db-features-design.md b/docs/superpowers/specs/2026-08-20-memory-db-features-design.md index 80de9a7..a178bd8 100644 --- a/docs/superpowers/specs/2026-08-20-memory-db-features-design.md +++ b/docs/superpowers/specs/2026-08-20-memory-db-features-design.md @@ -11,7 +11,7 @@ > this spec makes them buildable. The plan is authored > ([framework v2 plan](../plans/2026-08-20-framework-v2-memory-features.md)) > and held with it. -> Board: [docs/00-status.md](../../00-status.md). +> Board: [docs/00-status.md](../../stories/00-status.md). > > Per repo convention: concept, reason, and required behavior in words > only β€” no implementation code. diff --git a/docs/superpowers/specs/2026-08-20-shard-fiber-arc-design.md b/docs/superpowers/specs/2026-08-20-shard-fiber-arc-design.md index 8d26adf..634f993 100644 --- a/docs/superpowers/specs/2026-08-20-shard-fiber-arc-design.md +++ b/docs/superpowers/specs/2026-08-20-shard-fiber-arc-design.md @@ -5,7 +5,7 @@ > (refined) and the brainstorm of 2026-08-20 (this document's Decisions). > Covers iterations 8 AND 11 as one arc; iteration 24 (chat) is its > acceptance workload and gets its own spec after this one. The plan -> follows after review. Board: [docs/00-status.md](../../00-status.md). +> follows after review. Board: [docs/00-status.md](../../stories/00-status.md). > > Per repo convention: concept, reason, and required behavior in words > only β€” no implementation code.