← Changelog

Milestone — a human opened flave and it worked

The first draft of the editor runs. Someone who is not the machine that wrote it opened the app, typed, and watched a document appear. That is the rung no test suite can climb, and it is the only one that decides whether any of the green checkmarks below it meant anything.

Why Care?

Every automated check in this repo is a proxy. The fixture suite proves a callout containing a table renders as a table. It cannot prove that the thing on your screen feels like a document, that the type is readable, that typing feels immediate rather than laggy, or that the whole idea is any good.

Only a person can answer that, and today one did. The first draft of the flave editor works.

That matters more than the twenty green assertions underneath it, because the assertions were written by the same process that wrote the code. A human opening the app is the first independent signal in the entire chain.

What’s New?

Nothing in the renderer changed. What changed is what we are entitled to claim.

The proof script has been printing an honest list of things it could not prove, and the first line was:

• No browser drive — the app builds and serves, but no click-path is codified.

The operator has now walked the surface. The verdict:

Working, but needs iteration.

Both halves of that count. “Working” closes Phase 0’s core claim — you type Lossless Flavored Markdown, and a styled document appears as you type. “Needs iteration” is the honest tail, and it opens a new loop rather than extending this one.

What this rung is, and what it still isn’t

The tree’s own browser-drive pattern draws a line worth keeping visible:

A browser drive proves the buttons work; the human walk-through still judges whether the surface is usable. It augments the human rung, never replaces it.

Today we got the human rung. We still do not have the codified one. There is no Playwright click-path, so nothing stops a future change from silently breaking the loop between two proof runs. That gap is unchanged and stays on the list — a human confirming it works once is not a regression test.

So pnpm prove keeps printing its honest list. The line about a codified drive stays until somebody writes one.

Known follow-ups

Carried forward, none of them invented today:

  1. A codified browser drive — name the click-path, then automate it. The one gap the human walk cannot close.
  2. Done-condition 3 — source offsets are stamped and asserted in markup, but nothing selects yet. Closes with Phase 1’s Compose pane.
  3. Owner sign-off on §1.1’s v0 slices, still outstanding.
  4. Delete the node-builtin stub once lfm moves og-cache behind a subpath — see [[LFM-Barrel-Imports-Node-Builtins]].
  5. Wikilinks are absent from the corpus because lfm gates them behind a per-site resolver. Flave has not picked one.

The specific iteration items behind “needs iteration” have not been named yet. They belong to whoever used it, not to the process that built it, and inventing them here would be exactly the kind of fabricated confidence this changelog is trying to avoid.

What’s Next

Per the loop’s exit condition, usability iteration is a new loop, not a tail on this one. This entry closes the Phase 0 pass: steps 400a70d..66cdb97, one phase, one day.

Next is either [[Phase-1-One-Operation-Set-Four-Callers]] — the seam where a menu, a palette, the rendered page and an agent all write through one named operation set — or a usability loop driven by whatever the walk-through actually surfaced. That is a scheduling call, and it is the operator’s.