Document: loomworks-methodology-scoping-grounding-disciplines-v0_1
Version: v0.1
Status: standing note — candidate for the methodology canon (operations/loomworks-methodology-canon-v0_1) at the next consolidation. Two disciplines validated through the create-stage arc of 2026-06-28, each recorded with the concrete evidence that earned it.
Date: 2026-06-28
Origin: The engagement create-stage scoping arc. Two failure-and-correction patterns recurred sharply enough across one session to be worth naming as standing disciplines, not one-off lessons. Both are about the gap between what a scoping document assumes and what the codebase actually is — one at design time (importing machinery a problem doesn't need), one at verification time (asserting a code path runs from reading it).
Two disciplines, both learned the expensive way in one session:
Both are cheap to apply (one grounding pass) and expensive to skip (a whole CR built on a wrong premise).
The principle. Before scoping a capability as net-new, ground whether the product already implements most of it, and interrogate every piece you're about to build for whether it's solving the actual problem or a problem you imported by an assumption. The true size of a piece is usually smaller than the first framing, because the first framing tends to drag in machinery from how some adjacent thing was solved.
The tell. Phrases like "the heaviest, newest capability," "a bespoke subsystem," "a new pipeline," "extend the existing X to also do Y" — especially when X was built for a genuinely different purpose. When you catch yourself threading a new intent through the eyes of an old needle (contorting an existing endpoint, field, or mechanism to accept something it wasn't shaped for), that contortion is the smell. The required-field you're about to relax, the boundary you're about to bridge, the token you're about to extend — ask whether the problem they solve is yours or imported.
The evidence (three instances, one session):
cr-generator-create-bridge-v0_1 is the artifact of the imported version; loomworks-create-stage-door-2-scoping-note-v0_1 records the strip-down.extract_seed_fields_from_text over the upload pathway's transformed text, reaching the same commit spine). Door 3's true size: feed the Operator's document to the existing extraction + a review surface assembled from existing display patterns + one small editable-field component. Not a subsystem.extract_seed_fields_from_text → draft → induct → commit) that is the create conversation's own commit terminal. The "create-stage spine" I had started to design from scratch several turns earlier already existed in the product. It was discovered by grounding me_create_engagement.py, after nearly building three new copies of it (one per door).The corrective practice. Before scoping a capability:
The payoff. The create stage went from "three heavy net-new capabilities" to "feed one existing spine three ways, plus a review surface for the one door that brings finished work." The imported machinery — boundaries, tokens, credits, subsystems, pinned models — was, in aggregate, most of the originally-scoped work, and none of it was real.
The principle. A code path being present in the source is not evidence that it runs — especially at LLM/API edges, where the real behavior is determined by an external service's constraints that the local code does not encode. Ground the premise against the real runtime before building on it. Reading the code tells you the path exists; only running it tells you the path works.
The tell. A scoping premise of the form "the machinery is built; we just need to wire/fire/call it" — asserted from reading handlers, templates, and signatures. The phrase "X is built to do Y" deserves the question "built to do Y from what input, and does it run on the input we'll actually give it?"
The evidence (one instance, this session):
create_engagement_entry is built to greet first (true: the template reads "the Operator has just signaled they want to start a new project," the handler accepts an empty message, the endpoint accepts the intent hint). The frontend was built to fire an empty opening converse. The mocked tests passed. The live check 400'd: generate_response unconditionally appends {"role":"user","content": operator_message}, and the Anthropic Messages API rejects empty content — a system-only call is impossible. The greeting machinery greets in response to a non-empty opener; it cannot cold-open from silence. The premise "speak-first is built" was true for what the code contains and false for what runs from an empty opener. The mocked tests passed precisely because they did not exercise the real responder. A secondary harm surfaced only at runtime too: the empty operator turn got recorded, poisoning every subsequent converse with the same 400 until the polluted turns were cleaned.The corrective practice.
The payoff. Caught on the dev engine (8 polluted turns to clean) instead of in production (every Operator greeted with "I'm having trouble thinking right now," and every create conversation's commit poisoned). The frontend work was not wasted — it is correct and held, shipping alongside the engine cold-open fix the live check revealed was needed.
They are the same discipline at two moments. Discipline 1 guards design time: don't scope machinery the problem doesn't need (and the product may already have). Discipline 2 guards verification time: don't assert the machinery works from reading it. Both are corrections to the same root error — treating a document's account of the codebase as the codebase. The scoping note's "this is net-new and heavy" and the grounding's "speak-first is built" were both documents about the code that the real code (Discipline 1) and the real runtime (Discipline 2) corrected. The standing practice that subsumes both: ground against the real thing — the real code for what exists, the real runtime for what works — before committing structure to a change request. This extends the project's existing "ground before drafting" lesson with two sharper edges: true-size grounding and runtime grounding.
These extend, not replace, the existing methodology lessons:
Recommend both enter the methodology canon at the next consolidation, phrased as standing disciplines:
DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks methodology — two scoping-and-grounding disciplines — standing note — v0.1 — 2026-06-28 Two disciplines from the create-stage arc, each with its evidence. (1) Ground for the true size; watch for imported machinery — three instances where "heaviest net-new capability" became "feed the existing spine differently" once imported boundaries/tokens/subsystems were stripped, culminating in discovering the create-stage spine already existed. (2) Exists is not works — the create cold-open's "speak-first is built" was true in source and false at runtime (empty opener 400s; mocked tests passed by not exercising the real responder). Both correct the same root error: treating a document's account of the codebase as the codebase. Candidate for the methodology canon.