Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions DEV.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ and [`project.md`](project.md).

## Workspace layout

Six workspace crates (`benches/` exists but is excluded from the workspace —
Seven workspace crates (`benches/` exists but is excluded from the workspace —
it depends on the external `execution_tape` crate; see the root `Cargo.toml`
comments):

Expand All @@ -40,6 +40,7 @@ comments):
- `fmpl-web/` — Axum server with HTMX frontend, per-user sessions, approval queue, storylet system
- `fmpl-tui/` — Ratatui TUI with DAG-based conversation management (Ctrl+L for chat mode)
- `fmpl-bootstrap/` — Minimal interpreter for build-time parser generation (avoids circular deps)
- `fmpl-wasm/` — wasm-bindgen bindings for the browser REPL

**FMPL standard library** (`lib/`):

Expand Down Expand Up @@ -85,8 +86,8 @@ comments):

## Documentation map

- `docs/known-gaps.md` — current limitations, grouped by root cause (the ~185
`#[ignore]`d tests each carry a reason pointing here)
- `docs/known-gaps.md` — current limitations, grouped by root cause (74
`#[ignore]`d tests; the integration-suite ones carry a reason pointing here)
- `docs/design-principles.md` — durable invariants (DESIGN-001…005)
- `docs/STANDARDS.md` — documentation standards for design docs, plans, specs
- `specs/README.md` — spec index and crate overview
Expand Down
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,10 @@ that grammar (see [`fmpl.ebnf`](fmpl.ebnf)) seeded this project. The syntax is
only lightly similar to the 1992 language, and everything beyond the grammar —
the streaming model, first-class PEG grammars, the indexed-RPN VM, capability
security, the metacircular bootstrap — is new design. The MUD lineage is
first-hand: Nunley also co-wrote cool++, a C++ rewrite of Stephen White's
CoolMUD (White created MOO, from which LambdaMOO was forked). See
[`project.md`](project.md) for the full north star.
first-hand: Nunley was one of the developers on cool++/coldmud; ColdStore — a
C++ persistent object store and VM toolkit from that era — is the better
reference for what he was doing then. See [`project.md`](project.md) for the
full north star.

## A taste

Expand Down Expand Up @@ -110,7 +111,8 @@ Source → Lexer (logos) → Parser → AST → Compiler → Indexed RPN bytecod

- [Engineering tour](https://mparrett.github.io/fmpl/fmpl-tour.html) — one-page overview: architecture, what works, what doesn't
- [Browser REPL](https://mparrett.github.io/fmpl/repl.html) — fmpl-core as WebAssembly, live on GitHub Pages
- Field logs — engineering retrospectives: [revitalizing the agent-written codebase](https://mparrett.github.io/fmpl/fmpl-rehab-log.html) and [closing the metacircular-parser gap](https://mparrett.github.io/fmpl/fmpl-field-log.html)
- Field logs — engineering retrospectives: [Opening the Door](https://mparrett.github.io/fmpl/fmpl-revival-log.html) (revitalizing the agent-written codebase) and [Closing the Loop](https://mparrett.github.io/fmpl/fmpl-field-log.html) (closing the metacircular-parser gap)
- [The Layer Underneath](https://mparrett.github.io/fmpl/fmpl-process.html) — the agent process that wrote FMPL: requirement lattice, hook-enforced state machine, adversarial review, read out of `archive/agent-harness`
- [`project.md`](project.md) — north star, principles, design lineage
- [`docs/design-principles.md`](docs/design-principles.md) — durable design invariants
- [`AGENTS.md`](AGENTS.md) — workflow rules and gotchas for agents and humans
Expand Down
6 changes: 3 additions & 3 deletions docs/fmpl-field-log.html
Original file line number Diff line number Diff line change
Expand Up @@ -381,7 +381,7 @@ <h1>Closing the Loop<span class="of">, in three moves</span></h1>
<section id="setup">
<div class="sec-head"><span class="sec-num">§1</span><h2>The setup</h2></div>
<div class="prose">
<p>After the public-release rehabilitation (the 24-commit sweep reviewed in PR&nbsp;#1 and chronicled in <a href="fmpl-rehab-log.html">its own field log</a>), the repo had a working build, CI, and an honest ledger of what didn&rsquo;t work: <code>docs/known-gaps.md</code>, dominated by one bucket of ~120 ignored tests labeled <em>metacircular parser not yet complete</em>. FMPL&rsquo;s flagship commitment (DESIGN-001) is that the canonical parser is written in FMPL and the Rust parser is stage-0 scaffolding — so this bucket wasn&rsquo;t a feature gap, it was the language not yet being what it claims to be.</p>
<p>After the public-release revitalization (the 24-commit sweep reviewed in PR&nbsp;#1 and chronicled in <a href="fmpl-revival-log.html">Opening the Door</a>), the repo had a working build, CI, and an honest ledger of what didn&rsquo;t work: <code>docs/known-gaps.md</code>, dominated by one bucket of ~120 ignored tests labeled <em>metacircular parser not yet complete</em>. FMPL&rsquo;s flagship commitment (DESIGN-001) is that the canonical parser is written in FMPL and the Rust parser is stage-0 scaffolding — so this bucket wasn&rsquo;t a feature gap, it was the language not yet being what it claims to be.</p>
<p>The plan ordered three workstreams deliberately. First a documentation test harness, <em>because</em> the parser work would change language behavior and we wanted the docs to break loudly when it did. Then a WebAssembly build — independent of parser internals, safe to do while thinking. Then the critical path. The sequencing mattered: by the time the grammar changed, every code block in the tutorial was executing in CI and would have caught a regression the unit suite missed.</p>
</div>
</section>
Expand Down Expand Up @@ -477,7 +477,7 @@ <h1>Closing the Loop<span class="of">, in three moves</span></h1>
<div class="ledger-row"><div class="count">1,398 &rarr; 1,519</div><div class="desc">tests passing, zero failures throughout — every slice landed on a green suite</div></div>
<div class="ledger-row"><div class="count">185 &rarr; 74</div><div class="desc">ignored tests; the metacircular-parser bucket itself went ~120 &rarr; 0</div></div>
<div class="ledger-row"><div class="count">6 &rarr; 9</div><div class="desc">parser-generator epoch — three postlude-affecting changes, each with a history entry</div></div>
<div class="ledger-row"><div class="count">#5, #6</div><div class="desc">advisory review PRs, one per phase, each based on the previous phase&rsquo;s frozen tip</div></div>
<div class="ledger-row"><div class="count">advisory PRs</div><div class="desc">one per phase, each based on the previous phase&rsquo;s frozen tip — still the house convention</div></div>
</div>

<div class="prose">
Expand All @@ -487,7 +487,7 @@ <h1>Closing the Loop<span class="of">, in three moves</span></h1>

<footer>
<span>FMPL &middot; MIT &middot; github.com/mparrett/fmpl (fork of nnunley/fmpl)</span>
<span>Field log written 2026-07-22 &middot; sequel to <a href="fmpl-rehab-log.html">the rehab log</a> &middot; companion to <a href="fmpl-tour.html">the engineering tour</a></span>
<span>Field log written 2026-07-22 &middot; the sequel to <a href="fmpl-revival-log.html">Opening the Door</a> &middot; companion to <a href="fmpl-tour.html">the engineering tour</a> and <a href="fmpl-process.html">The Layer Underneath</a></span>
</footer>

</div>
Expand Down
Loading
Loading