Version. 0.1
Date. 2026-05-10
Audience. A fresh Claude.ai chat (same project, so project knowledge is shared) that drafts the Phase 53 CR. The current chat may also draft the CR directly per the Phase 50 compressed-analog precedent.
Provenance. Produced after loomworks-phase-53-scoping-note-v0_2.md (which absorbed phase-53-step-0-findings-v0_1.md). All architectural decisions are settled in v0.2 of the scoping note (P53-D1 through P53-D11); this handoff transposes those decisions into drafting instructions.
The Phase 53 scoping note v0.2 is CR-ready. The Step 0 findings are absorbed. All v0.1 §12 open questions are resolved: P53-D1 through P53-D9 confirmed by Operator at v0.1 review; P53-D3 settled by V2+V3 elimination; P53-D5 sharpened by V4+V5 (Phase 31 produces string brief, does not call induct_seed); P53-D6 amended by V6 (Phase 16 _ACCEPTED MIME-type extension included in Phase 53 scope); P53-D10 (endpoint name /seed/extract) and P53-D11 (defer Phase 31 induct-seed gap clarification to Phase 54+) surfaced and settled. Several small CR-drafting-time verifications remain (per §4 below): ExtractionSkill protocol exact base class name; build_default_registry() exact signature; Phase 16 _ACCEPTED exact location; Seed model exact field names against R-A5–R-A11; induct_seed exact signature; FORAY helper exact import path. None block CR drafting from beginning. There is no more scoping work to do — the next deliverable is a single CR document.
The receiving chat reads this handoff, then the scoping note v0.2, then the Step 0 findings. Then it drafts the CR. The CR specifies architectural decisions firmly; substrate field names, function signatures, table names, model identifiers, route paths, and module locations are marked with [CC verifies at Step 0] where the CR drafter could not read live ground truth, or with [CC verifies at CR drafting] where Step 0 findings flagged exact-string verifications worth doing at drafting time.
The CR target filename: phase-53-cr-discovery-to-seed-skill-v0_1.md.
The CR's structural template: phase-52-cr-jurisdiction-routing-v0_1.md in the engine repo's docs/phase-crs/ — the closest precedent (single-sub-arc shape; engine-only; deferred-OBJECT_TYPE_REGISTRY pattern; small Memory-event registration block). Adapt to Phase 53's specific shape: skill substrate + Phase 16 additive amendment + endpoint + Memory event; tighter test fixtures driven by V8; explicit backward-compat for Phase 25 and Phase 31.
These are settled. The CR drafter does not re-decide them; it transposes them into CR sections.
_ACCEPTED MIME-type extension + POST /engagements/{eid}/seed/extract endpoint + discovery_to_seed_extracted Memory event + induct_seed hand-off). Sub-arc 2 (Operator Layer) is empty by default. Sub-arc 3 (marketing site) is empty.src/loomworks/skills/registry.py. V2 retired materializer-registry candidate (render-output-side, distinct surface). V3 retired GRAMMAR_REGISTRY candidate (shape-declarative not callable). Only ExtractionSkillRegistry remains; V1 confirms intact.Seed. Phase 31 does NOT call induct_seed; Phase 53 does. They share the /engagements/{eid}/seed/* URL family but produce different artifacts and follow different downstream pipelines. Coexistence holds.text/markdown MIME-type amendment. V6 BREAKS: _ACCEPTED rejects Markdown with 415. Smallest-amendment path: extend _ACCEPTED to include text/markdown plus add UTF-8 text-decoding at the skill's input edge. No rebuild of Phase 16's pipeline; no breaking change.phase-53-discovery-to-seed-skill on engine repo only. No tags on Operator Layer or marketing repos by default — Phase 53 has no work in those repos. If sub-arc 2 lands actual work via Phase 54 surface design lifting forward, marker tag follows Phase 51 V7 precedent.discovery_to_seed_extracted. Mirrors Phase 50's grant_request_received and Phase 52's jurisdiction_routing_decided registration pattern exactly. Schema: discovery_document_ref, extracted_seed_payload, skill_version, extracted_at, _foray namespace, content_hash. OBJECT_TYPE_REGISTRY entry and _ANCHOR_PRIORITY entry deferred per V7 / Phase 50/52 precedent.POST /engagements/{eid}/seed/extract. Per V10's tighter-alternative recommendation. The endpoint is an ExtractionSkill invocation surface; URL reflects the family. Engagement-scoped per V10's universal convention.induct_seed. Whether deliberate design choice or incompleteness is not a Phase 53 question. Phase 53 carry-forward records the open question; no Phase 31 amendment in Phase 53.phase-53-discovery-to-seed-skill per P53-D7, on engine repo only._ACCEPTED extension surfaces unexpected interactions with existing MIME-type filters; ExtractionSkill protocol surface differs from V1's read; induct_seed hand-off contract differs from V5's implication; any backward-compat regression on Phase 25 or Phase 31.docs/phase-crs/ ordering — version, date, status, target tag)69aecdc annotated f11e41a; main one commit ahead at 14e5a7f; substrate 2,137 / 25 / Alembic 0064)_ACCEPTED MIME-type extension (per P53-D6 / V6; single-line additive change; [CC verifies at CR drafting] exact _ACCEPTED location and current value; backward-compat assertion: existing MIME types continue to work)src/loomworks/skills/discovery_to_seed.py (per P53-D1 + P53-D2 / V1 / V8; LLM-assisted bounded contract; structured-output instructions targeting R-A5–R-A11; [CC verifies at CR drafting] exact ExtractionSkill protocol base class name, secret_key kwarg signature, prompt template module convention against Phase 31's creation_conversation.py)build_default_registry() (per P53-D3 / V1; adds a fourth registration alongside the three existing skills; [CC verifies at CR drafting] exact build_default_registry() signature and registration call shape)discovery_to_seed_extracted (per P53-D9 / V7 / V9; mirrors Phase 50/52 registration pattern exactly; defer OBJECT_TYPE_REGISTRY entry; defer _ANCHOR_PRIORITY entry; cite Phase 50 or Phase 52 source as explicit template; FORAY hooks per compute_content_hash + _foray namespace pattern)POST /engagements/{eid}/seed/extract (per P53-D10 / V10; engagement-scoped per universal convention; request body shape; response body shape; orchestration: load Discovery-document Memory artifact → UTF-8 decode → skill invocation → Memory event write with FORAY → induct_seed hand-off; [CC verifies at CR drafting] exact induct_seed signature and call shape against existing two production callers, exact Memory artifact reference shape from Phase 16 upload return)Each of the four active build steps in §14 contains:
Phase 53's build steps span one repo only (engine). Steps 1–4 hit the engine repo; no cross-repo work. Step-0-equivalent inspection blocks scope to engine files exclusively.
Suggested step decomposition (CR drafter refines):
_ACCEPTED MIME-type extension + smoke test (§7).Checkpoint A after Step 2 (skill standalone tested before endpoint integration). Checkpoint B after Step 4 (final-before-tagging).
Per Phase 49 v0.3 §15 / Phase 50 / Phase 51 / Phase 52's full carry of the convention, slots 5–7 in Phase 53's build read as "(reserved — buffer for amendments arising from steps 1–4)" and "(reserved — buffer)". Reserved-not-skipped: unconsumed if no amendment arises; the buffer's value is its presence, not its consumption. Phase 50/51/52 each left all three unconsumed. CR §14 carries this language.
Step 0 absorbed ten verifications, so CR drafting starts from a strong evidence base. The remaining drafting-time verifications focus on details that didn't fit in Step 0 — exact line numbers, exact strings, exact import paths, exact module locations. These follow the same discipline as Phase 51/52 drafting: live-string-from-codebase, not placeholder-from-CR.
CR drafter verifies the following at draft time (read live; substitute exact strings into CR sections):
src/loomworks/skills/registry.py; CR drafter reads the exact base class name (could be ExtractionSkill, Skill, Extractor, or similar), the protocol surface (which methods it requires), and the secret_key kwarg signature so §8 specifies the new skill's class shape exactly.build_default_registry() exact module location, signature, and registration call shape. Step 0 V1 named build_default_registry() as the registration locus; CR drafter reads the exact module path, function signature, and the three existing registration calls so §9 specifies the fourth registration against verbatim sibling pattern.secret_key autouse-monkeypatch convention exact conftest.py location. Step 0 V1 confirmed convention present across 18+ test modules; CR drafter reads the canonical conftest.py fixture so §17 tests on the new skill follow the convention without re-deriving.src/loomworks/prompts/discovery_to_seed_extraction.py analogous to Phase 31's creation_conversation.py; CR drafter confirms against Phase 31's prompt module location (V5 verified Phase 31 surface intact) and follows the convention._ACCEPTED exact location, current value, and existing test coverage. Step 0 V6 BREAKS named _ACCEPTED doesn't include text/markdown; CR drafter reads the exact file path, the current MIME type list, and any existing test that validates accepted/rejected types so §7 specifies the extension surgically and §17 adds the new MIME type to the existing test pattern.Seed model exact field names and R-A5–R-A11 mapping. Step 0 V4 confirmed single canonical Seed model with naming-only divergence from R-A5–R-A11; CR drafter reads the exact field names so §8's structured-output instructions target verbatim field names (not R-A5–R-A11 abstractions) and §11's response body specifies the actual Seed shape.induct_seed exact module location, signature, and existing two production callers. Step 0 V5 confirmed two production callers exist (neither in Phase 31); CR drafter reads the exact signature and call shape from both existing callers so §11's hand-off step specifies the third invocation against verbatim sibling pattern.grant_request_received OR Phase 52 jurisdiction_routing_decided registration block exact module location. Step 0 V7 confirmed Phase 53 mirrors the pattern; CR drafter reads the more recent (Phase 52) registration block as primary template — typed MemoryObject subclass + Literal object_type + append_event call — so §10 ships a parallel block against verbatim template.compute_content_hash + _foray namespace exact import paths. Step 0 V9 confirmed FORAY hooks intact; CR drafter reads the canonical import path for compute_content_hash and the _foray namespace structure so §10 specifies imports against verbatim code./seed/extract route placement against existing 10 /seed* routes.** Step 0 V10 enumerated all 10 routes; CR drafter reads which router module they live in and adds the new route in the same module (or in-convention sibling) so §11 specifies the route placement consistently.engine repo docs/phase-crs/ directory listing. Confirms CR number ordering for Phase 53 (likely CR-2026-068 if Phase 52 was 067); CR drafter reads the directory and assigns the next number.If any of items 1–12 reveal architectural divergence (not just naming or exact-string), CR drafter halts and surfaces — does not draft and hope.
Live-string-from-codebase, not placeholder-from-CR. Same discipline as Phase 50/51/52. When the CR specifies model identifiers, function signatures, class names, field names, route paths, or any concrete string that already exists in the codebase, use the live string. Step 0 absorbed this discipline at the ten-verification level; CR drafting continues it at the exact-line-number level.
Step 0 inspection blocks at each build step. Per §3.2 above. Each build step says "before implementing, CC reads {specific files} and confirms {specific facts}." Phase 53's build steps lean on Phase 16, Phase 31, Phase 25, and Phase 50/52 source files for their respective Step-0-equivalent inspections.
Halt thresholds per build step. Each build step carries a halt threshold. Phase 47/48/49/50/51/52 standard: ">30 tests touched" for blast-radius decisions. Phase 53 reuses this and adds: any divergence from v0.2 scoping decisions triggers halt; any discovery that Phase 31's surface or Phase 25's induct_seed contract differs from V5's read triggers halt-and-amendment.
Reserved-slot buffer language. Per §3.3 above. Slots 5–7 are reserved-not-skipped.
Test posture progression. Mirror Phase 52: green-against-mocked-substrate in early steps; green-with-real-substrate-fold-in by final step. Step 1 (_ACCEPTED extension) lands green against unit-level test of MIME-type acceptance. Step 2 (skill module + registration) lands green against unit-level skill-invocation mocks (LLM call mocked; structured-output validated). Step 3 (endpoint + Memory event + FORAY) exercises the orchestration path against test fixtures. Step 4 runs the full fixture sweep — full-fit Discovery record (loomworks-marketing-creation-flow-content-v0_3.md per V8), partial-fit Discovery records (selected from V8's inventory), hallucination-resistance test, integration test, backward-compat smoke.
LLM-mocking discipline. Phase 53's skill is LLM-assisted; tests cannot run against live LLM (slow, non-deterministic, expensive). The skill's tests mock the LLM response and validate the contract-bounded parsing/validation logic. A separate non-CI test (or manual exercise) can run against live LLM as a quarterly verification cadence — outside Phase 53 scope; can be carried forward as Phase 54+ candidate if useful.
Backward-compat discipline for Phase 25 and Phase 31. P53-D5's coexist-as-distinct-paths choice creates two backward-compat test surfaces: Phase 25 form-submission path produces identical output and identical induct_seed invocation; Phase 31 conversational path produces identical string-brief output, identical five engagement-scoped endpoint shapes, and still does NOT call induct_seed (the gap is preserved deliberately per P53-D11). CR §17 ships explicit backward-compat tests for both.
Lens-bounded discipline at draft time. v0.2 §6 records the lens-bounded scoping evidence cascade methodology candidate landing its second instance via Step 0 V4, V5, V10. CR drafting carries this forward: when §6–§11 sections reference counts (call-sites, fixtures, test cases, route enumerations), the CR uses Step 0's enumerated counts as live truth, not scoping-note abstractions. If CR drafting surfaces a count discrepancy against Step 0's enumeration, halt and surface — third-instance evidence for the cascade would itself be methodology contribution worth preserving.
No voice content shipping in Phase 53. Same as Phase 52 — Phase 53 ships no Companion-rendered prose. The skill produces a structured Seed; the Memory event records a substrate fact; no voice surface. CR doesn't have a voice-template section.
The CR drafter does not draft sections for any of the following — these are out of Phase 53:
_author_proposal_assertion; Phase 42 turns reconciler coverage; reactivation in-session chrome; Operator content authoring; voice tuning; methodology v0.21 consolidation; operational items: engine deployment via M4 tunnel, mailbox provisioning, cloudflared upgrade)discovery_to_seed_extracted (deferred per Phase 50/52 precedent; Phase 54+ when downstream consumers built)_ANCHOR_PRIORITY entry for discovery_to_seed_extracted (same deferral)If the CR drafter finds itself drafting any of the above, it has crossed the seam — back up.
The receiving chat halts drafting and reports back to the Operator (rather than continuing) if any of the following arises:
system_config-storage question arises during Phase 53 CR drafting and feels like it warrants a scoping decision rather than a draft-time determination, halt and surface.secret_key kwarg is positional not keyword) warrants amendment scoping.induct_seed signature contradicts V5's implication. V5 verdict was HOLDS-with-minor-drift-plus-functional-gap (gap referring to Phase 31's non-call); mid-draft surface that induct_seed itself has a contract Phase 53 can't satisfy (e.g., requires a Phase 31-style string brief rather than a structured Seed; requires async context Phase 53's endpoint can't provide) warrants amendment scoping._ACCEPTED extension has cascade effects. V6 BREAKS named the field; mid-draft surface that extending _ACCEPTED requires more than a single-line additive change (e.g., the MIME-type filter is referenced from multiple modules; there's a security validator that depends on the closed list) warrants amendment scoping.Seed model field names diverge sharply from R-A5–R-A11. V4 verdict was HOLDS-with-naming-only-divergence; mid-draft surface that the divergence is more than naming (e.g., fields R-A5–R-A11 don't map structurally to Seed shape; required fields are different) warrants amendment scoping.induct_seed production callers; V10 enumerated 10 /seed* routes. If CR drafting surfaces a count discrepancy against any of these, halt and surface — third-instance lens-bounded evidence is methodology-grade.compute_content_hash requires more than passing the event payload (e.g., serialization choices, version field handling) warrants amendment scoping.In all cases, halt-and-surface is preferred to draft-and-hope.
If the receiving chat needs project-knowledge searches mid-draft, candidates include:
phase-52-cr-jurisdiction-routing-v0_1.md — structural template for the CR (mirror its section shape; Phase 52 → Phase 53 cadence is closest; same single-sub-arc + engine-only + deferred-OBJECT_TYPE_REGISTRY shape)phase-51-cr-marketing-site-and-companion-email-v0_1.md — Phase 51 CR; reference for Companion-driven seam patterns and §10 e2e test posturephase-50-cr-companion-as-authority-and-public-form-v0_1.md — Phase 50 CR; reference for §10 Memory event registration template (V7 mirror anchor; Phase 52's mirror is also explicit template)phase-31-cr-conversational-engagement-creation-v0_1.md — Phase 31 CR; reference for prompt template module convention (P53-D2 mirror target) and Phase 31 surface backward-compat reading (V5 baseline)phase-25-cr-foray-attestation-v0_1.md (or however Phase 25 FORAY amendment is named in the engine repo) — Phase 25 FORAY seam; reference for §10 hooksdocs/phase-crs/) — Phase 16 upload pipeline; reference for §7 _ACCEPTED extension (V6 BREAKS context)phase-52-implementation-notes-v0_1.md (if exists in engine repo) — drafting-discipline reference; build findings as contextphase-53-step-0-findings-v0_1.md (engine repo docs/phase-impl-notes/) — verified live-codebase state (already absorbed into v0.2; reference for drafting-time exact-string verifications in §4)loomworks-queued-directions-and-deferred-work-v0_7.md §1.1 + §1.2 — engagement creation arc framing contextThe receiving chat does not need to read all of these front-loaded; pull as needed during section-specific drafting.
Open a new Claude.ai chat with the same project (so project knowledge is shared) and paste:
Open Phase 53 CR drafting. Read first: loomworks-phase-53-cr-drafting-handoff-v0_1.md.
That document specifies the reading order, the decisions to implement, the
CR-drafting-time verifications, and the drafting discipline. Follow it.
The target output is a single CR document at
phase-53-cr-discovery-to-seed-skill-v0_1.md. Mirror the structural shape of
phase-52-cr-jurisdiction-routing-v0_1.md (closest precedent: single-sub-arc,
engine-only, deferred-OBJECT_TYPE_REGISTRY pattern). Adapt to Phase 53's
specific shape: skill substrate + Phase 16 additive amendment + endpoint +
Memory event; tighter test fixtures driven by V8; explicit backward-compat
for Phase 25 and Phase 31.
The scoping note loomworks-phase-53-scoping-note-v0_2.md is authoritative
for scope; CC's Step 0 findings phase-53-step-0-findings-v0_1.md is
authoritative for the verified state of the codebase (already absorbed into
v0.2; use the findings document for exact-string verifications during drafting).
Do not draft sections for items in the handoff's §6 "scope boundaries" list —
those are Phase 54+ or out-of-Phase-53 entirely.
Halt and surface to me rather than draft-and-hope if any of the §7
halt-and-escalate signals arise.
Begin by reading the handoff in full, then the scoping note v0.2, then the
Step 0 findings. Plan the section structure before drafting prose. Confirm the
plan with me before drafting if uncertain.
The receiving chat reads this, then begins. The CR drafts iteratively across the chat as sections build up.
The receiving chat hands the Operator a downloadable phase-53-cr-discovery-to-seed-skill-v0_1.md. The current chat's role ends with this handoff document (or, if compressed-analog path is taken, with both this handoff and the CR).
Operator workflow from there:
docs/phase-crs/ per CR §3.4 (assumes the section follows Phase 52's pattern).phase-53-discovery-to-seed-skill on engine repo; Operator Layer marker tag if sub-arc 2 stays empty; no marketing repo tag.DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks Phase 53 CR Drafting Handoff — v0.1 — 2026-05-10