Lossless Changelog
fleet

flave joins the labs — a document format with a private layer, specced before a line of code

A day-long PM grilling session turned 'polyglot markdown that recreates Pages and Keynote' into something sharper: a document that keeps its workings. flave enters ai-labs as a submodule carrying a 24,000-word master spec, 20 decisions resolved on the record, and a deliberately tiny build order. The splash now rolls up eight children and the product highlights finally name didi.sh.

Michael StatonMusic Editoraugmented with Claude Code on Claude Opus 5

Why Care?

Because the tree gained a child that exists to answer a question none of its siblings ask: what should a document be, now that agents write most of them?

MemoPop generates memos. DidiDecks generates decks. Both produce artifacts and hand them off. flave is about the artifact itself — specifically, that every document format we have was designed when the only author was a human with a mouse, so the format could be opaque. An agent opening a .docx or a .key is working against the grain of the file. An agent opening a .flave is at home, because the internals are markdown, YAML, CSS, JSON, CSV, and SVG.

But the differentiator that survived scrutiny wasn't legibility. It was this:

A document that keeps its workings. Publish it and people see the conclusion. Send the file itself and they get the evidence, the data and its sources, the reasoning, and the design vocabulary that produced it.

Content, data, and assets each carry a clearance — private → team → lp → public — and a register (verbatim / full / brief). An audience is a point on both axes, so one file yields your private notes, the team version, the LP version, and a punchy public one-pager. They don't drift, because they aren't copies; derived versions go stale, visibly, with a regenerate path.

Clearance is monotonic, which makes it machine-checkable: nothing above public may appear in the public artifact, and the publish step fails if it does.

What Landed

flave-ai/ as a submodule → lossless-group/flave, tracking main to match this repo's tier. The folder is flave-ai per the tree's naming habit; the repo and the product are just flave.

It arrives carrying its master spec — ~24,000 words, 18 sections, 20 decisions resolved on the record with dates and reasoning, 12 open, 11 considerations parked. Every resolution names what it changed and, where relevant, which earlier recommendation it overturned. It reads as a transcript of a decision process rather than a tidy artifact, which is the point.

The build order is deliberately small. Most of the spec is designed-and-parked. v0 is an editor and nothing else: markdown in one pane, rendered output beside it, and the ability to define your own syntax triggers. The layout system, three surfaces, theme registry, Jujutsu integration, DuckDB, and figures are all specified and none are scheduled.

The splash caught up on two fronts. flave joins the rollup as the eighth child (slug flave, dir flave-ai — the slug/dir split earning its keep). And the product-highlights collection, which had been showing four products since it was built, finally names didi.sh — the identity plane has been live on Fly since July and was invisible on our own showcase.

Notes for Whoever Picks This Up

Three decisions worth knowing before touching the spec, because each overturned an earlier position:

  • No mouse-driven layout. Not a capability ceiling on drag handles — no drag handles. Layout is a named frame chosen by keyboard or agent. This made the fixed-geometry surfaces tractable by deleting the entire "what does dragging across a page break mean" problem class.

  • Agents are fully autonomous, bounded by the undo horizon. Everything Jujutsu's operation log can reverse is unrestricted. Only operations that leave that region — git push, op-log pruning, publish — need a gesture. An earlier draft gated history rewrites behind approval, which imported git's anxieties into a tool chosen specifically to remove them.

  • Drift is recorded, never prevented. No brand-lock, no "are you sure you want to deviate from the template." The rationale, verbatim: "I can't imagine if every time I was changing a layout in Keynote from our team's standard template it said 'Are you sure you want to do this?' No way."

Also Included

The spec's reuse map was verified on disk rather than assumed, which produced a correction worth recording here: astro-knots/packages/* is starter-copy and prior art, not a dependency graph. @knots/tokens is 49 lines of hand-written CSS; @knots/svelte is an empty index plus one Button. Only lfm was ever a true package, which is why it was extracted to its own repo. flave depends on published lfm and forks nothing.

README.md gains a flave section under Active product development and a flave-ai/ line in the topology block.