DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path investigations/loomworks-seed-model-grounding-inspection-v0_1.md

Loomworks — seed model (versioning, revision, viewer, corrections-preserved) — grounding inspection — v0.1

Document: loomworks-seed-model-grounding-inspection-v0_1 Version: v0.1 Status: grounding inspection — read-only, no build. Findings for scoping a post-creation seed-revision capability (the "seed editor") and its prerequisite seed viewer. Date: 2026-06-28 Scope: Whether a seed is first-class versioned in the substrate; whether any post-creation seed-revise path exists; whether the Operator can view a committed seed; whether revision is corrections-preserved (version-bump-and-retain vs overwrite); and whether the create-time seed-conversation routes can be reused to drive a revision.

Anchors (verified against live repos):

Headline: the substrate is already fully ready — seeds are first-class versioned, corrections-preserved is automatic, and a post-creation revise path even exists (Phase 6, via considerations). What's missing for a seed editor is the surface and the driver, not the substrate. The committed seed has no viewer post-creation, which is the binding prerequisite.


a. Seed versioning — first-class versioned, priors retained

Yes. Seeds are event-sourced in the memory_events table (one immutable row per version):

Verdict: version-capable end-to-end, not create-time-only. Every amendment from draft onward is a retained, numbered version in the event log.

b. Post-creation edit path — exists, but only through the considerations apparatus

Yes — but not as a direct "edit seed" route. Revision flows through the Phase 6 considerations framework:

Verdict: the post-creation revise capability is real and substrate-correct, but it's reachable only via the raw considerations machinery — no friendly route, no conversational driver, no surface.

c. Seed read/display — no viewer post-creation (the binding gap)

Frontend: No. The seed is visible only during creation via DraftSpecification.tsx:5-7 ("the live seed document the Companion has been co-authoring"), used in ChatView.tsx:517 during drafting. After commit, the in-engagement surface (Memory/Manifestation/Shaping/Rendering rooms) shows no seed anywhere; InEngagementHeader.tsx:89-123 renders only the title + identifier. seed_id is on the wire (projects.ts:22) but never fetched or exported — no fetchSeed/getSeed client method exists, and ProjectSummary (types.ts:312-315) carries no seed fields.

⚠️ Engine-side caveat to confirm: the read function get_current_seed exists, but no HTTP GET-seed endpoint consumed by the frontend was found — the function is used internally for prompt context, not exposed as a route. A viewer likely needs a thin GET …/seed endpoint wrapping get_current_seed, plus a client method + component. (Worth a direct confirm before scoping the viewer — captured as the open item in loomworks-seed-viewer-scoping-note-v0_1.)

Verdict: the Operator cannot view a committed seed today. A seed editor needs a seed viewer first — and probably a read endpoint to feed it.

d. Corrections-preserved — already structural, automatic

Yes — version-bump-and-retain, never overwrite. Every seed revision is an append_event INSERT with the same id, version+1, and a wasRevisionOf relationship to the prior version: amend_candidate_seed (creation.py:184/194), revise_seed (:275/:281), mark_seed_divergent (:354/:360). On commit the seed is relocated (moved, not copied) from the commons to the engagement, preserving all versions (creation.py:960-966; "founding stays v1, amendment chain increments unchanged").

Verdict: corrections-preserved is guaranteed by the event-sourced substrate. A seed editor inherits it for free — there is no overwrite risk to design around.

e. Seed-conversation reuse — create-bound (blocked on active engagements)

Create-bound. The create-time routes (POST …/seed, …/seed/induct, …/seed/converse/commit) all guard via _load_candidate_seed409 CONFLICT if state != "candidate" (engagements.py:181-185). They cannot run on an active engagement. The post-creation revise path is a different mechanism (considerations → revise_seed), not these routes.

Verdict: "tell the Companion 'make the voice warmer' → it proposes a new seed version" via the same create routes is blocked today. The revision substrate exists but behind a different door, with no conversational driver.


What a Seed Editor would need (scoping synthesis, no build)

The substrate is done. Three buildable layers, in dependency order:

  1. Seed viewer (prerequisite). Surface the committed seed in the in-engagement view — a panel or an "About/Foundation" view. Likely needs a thin GET …/seed endpoint over get_current_seed (confirm one doesn't already exist), a fetchSeed client method, and a display component. This is the unambiguous first step — you can't edit what you can't see. Scoped separately in loomworks-seed-viewer-scoping-note-v0_1.
  1. A revision driver — two forks:
  1. An edit intent + authority gate. No revise_seed intent exists; seed editing is an Operator-authority act, so it slots naturally onto the same human-approval pattern as held→commit (the Operator approves the new seed version). This is the same "structure the authority gate in code" instinct as the add-side commit-gate move.

Two clean observations for sequencing: the substrate work is zero (versioning + corrections-preserved + a revise function all exist); the cost is entirely surface + driver. And the viewer (§c) is both the cheapest piece and a hard prerequisite — it's the natural first ship even before the editor is scoped.


DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks — seed model (versioning, revision, viewer, corrections-preserved) — grounding inspection — v0.1 — 2026-06-28 Net: seeds are first-class versioned and corrections-preserved automatically; a post-creation revise path already exists (Phase 6 via considerations) but with no friendly route, no Companion intent, and no surface; the committed seed has no viewer post-creation (the binding prerequisite); the create-time seed-conversation routes are create-bound (409 on active). The seed editor is surface + driver, not substrate. SHAs verified against live repos.