weft
MIT · foundryside-dev GitHub

Lacuna · the demonstration specimen

A small app with catalogued flaws — so you can watch the whole federation analyze it at once.

Lacuna’s issues are intentional and permanent, baselined so the demo stays repeatable: catalogued issues pass, genuinely new violations fail. Removing a seeded issue fails make verify — the specimen is not a thing to fix, it is a thing to be analyzed.

Run the tour → View the repo →
$ weft dossier specimen/service.py::add_book
resolving entity → one SEI, typed facts from every present peer…
loomweave:eid:7f3a9c2e1b… loomweavepresent wardlinepresent warplinepresent legisabsent plainweaveabsent

What it is · why it exists

A clean core, seeded with deliberate lacunae — one per tool to light up.

Where Weft’s members are instruments, Lacuna is the specimen: a clean-cored library app seeded with documented lacunae (planted flaws), each one placed to make a specific Weft tool or tool-combination light up. tour/lacunae.toml is the single source of truth; the catalogue currently holds 48 planted lacunae.

wardline 28

trust-boundary rules

PY-WL-101..126 (Python) · RS-WL-108, RS-WL-112 (Rust)

loomweave 13

structural findings

dead entity · circular import · duplicate locator · too-complex

warpline 4

change-impact demos

blast-radius · reverify · churn · timeline (advisory, not flaws)

legis 2

governance entries

disabled boundary-evidence · zero-under-green

Catalogued, permanent, baselined — not bugs to fix.
Each planted flaw is permanent and intentional. Wardline’s gate stays green on the baselined lacunae and trips on anything new — a removed lacuna fails make verify. One sentinel is deliberately left unbaselined: wl-log-injection (PY-WL-125) is a preview rule, so the scan summary showing 1 active is correct, not drift — the Filigree leg promotes and work-cycles exactly that finding.

The tour · run it yourself

Three targets. The suite detects what’s runnable and degrades honestly.

Point the federation at the specimen and watch it work. The tour runs every live Weft tool, regenerates the narrative, and asserts it. Legis runs live here (three passing legs), and Plainweave runs live too (its intent-coverage leg) — every admitted member now runs against the specimen; no member is faked or design-only.

$ make setup provision the demo’s gitignored secrets (idempotent) — fresh HMAC for the Wardline→Legis signed handshake
$ make tour drive every live Weft tool against the specimen; regenerate the narrative + matrix docs
$ make verify assert every live lacuna is surfaced and the narrative is in lockstep
exit 0· clean a clean verify exit 1· gate tripped the fail-closed leg: an unparseable specimen trips the gate, not silence
make verify records the Legis signing state only on a clean tree.
The signed Wardline→Legis handshake requires a committed working tree; with a dirty tree the legis govern leg degrades honestly to a [WARN] (“commit first, then re-run”) rather than faking a signature. Honest degradation is the point — silence would be the bug.

The combination matrix · made runnable

Each pair, grounded in one project you can actually run.

The hub’s matrix is the federation’s value proposition; here it is exercised against a single specimen. Pairings the tour drives end-to-end are marked exercised; the rest are shown with their honest status — a partial or planned pair is never rendered as live. Each member links to its own subdomain.

Structure + trust posture in one view — the dossier.

exercised by the tour against this specimen

Findings become tracked work.

A-1: native emitter shipped; asterisk stays live until the Loomweave-absent path is proven end-to-end (currently unit/server-wiring tier).

exercised by the tour against this specimen

Issues bound to live code, surviving refactors.

Drift-aware entity⇄issue binding shipped: filigree stores content_hash_at_attach; loomweave issues_for detects + reports drift, integration-tested. Asterisk until a two-real-daemon drift dogfood lands.

Agent-defined policy enforced at the CI/git boundary.

exercised by the tour against this specimen

The re-verification worklist becomes tracked work.

Filigree consumer (warpline_worklist_ingest) shipped in Filigree 3.0.0 — the EARNED inbound seam.

"Now" + "over time" — change history keyed on the SEI spine.

Shipped: warpline resolves loomweave SEIs (entity_resolve) and keys its temporal surfaces on them, default-on at ingest. Asterisk until an automated live round-trip e2e gate lands.

Change-impact enriched with trust posture (risk-weighted blast radius).

Enrichment shipped: warpline annotates the change-impact worklist with wardline trust findings (advisory). The risk-weighted re-ranking of the blast radius is not yet built.

Temporal change facts available to governance preflight.

Seam frozen; implementation fast-follow.

Intent bound to stable code identity — every requirement keys on the SEI.

Consumes Loomweave SEI via a catalog adapter; the intent graph reproduced on two LIVE peer catalogs (Lacuna, Loomweave), not stubs (Plainweave PDR-008). Still maturing — not yet a shipped seam: catalog public-surface tagging is degraded off Loomweave, and it falls back to file/symbol refs when Loomweave is absent.

Intent-coverage available to governance — Legis owns the teeth and the audit.

Authority split designed (Plainweave attributes intent; Legis governs + audits); seam not yet shipped.

Closed work checked against intent — a closed issue is not a satisfied requirement.

Designed distinction; Plainweave does not treat work-closure as requirement-satisfaction. Seam not yet shipped.

a real dossier slice · specimen/service.py::add_book

loomweave:eid:7f3a9c2e1b… loomweavepresent wardlinepresent warplinepresent legisabsent plainweaveabsent in progress

The Filigree leg cycles the sentinel issue: openin progressclosed. legis shows absent until the tree is committed and the artifact is signed; plainweave runs live in the tour but shows absent for this surface — no requirement is bound to it, exactly the orphan Plainweave surfaces — never read as a clean state.

Honest scope

Lacuna is the showcase — not a member, and not the scale proof.

Not in the roster.
Lacuna is the shared specimen the suite is run against, not a tool in the federation. It owns its specimen, its planted-flaw manifest, and its tour; the hub owns the roster and the doctrine — this page does not restate them, it points to them.
Plainweave runs live — on a seeded intent corpus.
Plainweave is admitted (PDR-0030) and runs live in the tour; its intent corpus here is a deterministic, regenerable seed over the specimen (gitignored .plainweave/), not a hand-curated requirements backlog — the leg demonstrates the reads honestly, it does not claim a real backlog.
The showcase, not the scale proof.
Two complementary roles share Loomweave’s analysis surface: Lacuna is the showcase specimen (this small, deliberately-flawed app), while elspeth (~425k LOC of real Python) is Loomweave’s first-customer scale target. Lacuna is the showcase; elspeth is the scale proof.

See it run — then read why it’s one suite.

The specimen, the flaw manifest, and the generated tour live in the repo; the federation narrative lives on the hub.