outcomeEnrichment keeps one Spec while its detail changes
spec:model.enrichment-lifecyclePacks: pack:design-iteration-v1, pack:self-hosting-v1
Design: 2 design entries · no pinned declarations · no decisions
Findings: no errors, no warnings
specs/model/enrichment-lifecycle.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
Intent
- Keep a Spec useful after implementation without copying its detail into a second artifact that drifts from it.
Model
enrichment lifecycleline 18 ·specs/model/enrichment-lifecycle.sdp.md:18- The same Spec gains and may later slim typed detail without changing identity or moving truth into another artifact type.
distillation boundaryline 19 ·specs/model/enrichment-lifecycle.sdp.md:19- A Design entry may leave its Spec once the Spec is implemented with a verifier and a bound artifact carries the entry: a pinned declaration whose realizing unit exists, or a bound example. Prose that explains why always stays, so each explanation keeps one home, and implemented code alone justifies neither keeping nor deleting detail.
slimming candidateline 20 ·specs/model/enrichment-lifecycle.sdp.md:20- A Design entry past the distillation boundary. A recipe reports the candidates and never deletes one; removing an entry stays the author's edit.
Design
slimmingRecipeline 24 ·specs/model/enrichment-lifecycle.sdp.md:24- recipe 39, slimming candidates, takes an optional
params.packand returns{ totals: { specs, potentialCandidates }, rows, leftOut }, each row{ spec, key, line, declaration, implementations, verifiers }for a pinned declaration on a Spec that carries bothimplementedandhas-verifier. slimmingScopeline 25 ·specs/model/enrichment-lifecycle.sdp.md:25- rows are potential candidates the author compares with the bound artifacts, because a binding names a whole Spec and the graph proves no entry-level realization for a declaration or an example;
leftOutstates both limits, and prose entries are never candidates.
Verification
Verifier bindings
- test:protocol.slimming-recipe · anchored · test anchor binding present ·
test/curation-recipes.test.ts:39External run evidence from
test/curation-recipes.test.tsTest anchors:
test:protocol.curation-recipe,test:protocol.slimming-recipe. Specs verified by those bindings: spec:consumers.impact-graph.curation-assist, spec:model.enrichment-lifecycle.Run 1: external run evidence from vitest 4.1.10
Build: CI 391 · Branch: cursor/media-plan-and-articles-09b1 · Commit: 076cd4f1f85640d8236e5cca1bffffa68ab79a33 · Start: 2026-10-31T15:32:20.471Z · Stop: 2026-10-31T15:34:02.073Z
Name Suite Result Duration requires both facts and uses recipe 24's opening span rule, with lines and bindings slimming candidates recipe passed 8.7 ms selects only Pack members and returns no rows for a clean Pack slimming candidates recipe passed 2.5 ms distinguishes an unknown Pack from a clean existing Pack slimming candidates recipe passed 1.99 ms includes enabled example verifier bindings without claiming they realize an entry slimming candidates recipe passed 1.59 ms returns diagnostics and no rows for invalid imports input undefined curation report recipe passed 5.5 ms returns diagnostics and no rows for invalid imports input null curation report recipe passed 0.96 ms returns diagnostics and no rows for invalid imports input [] curation report recipe passed 0.61 ms returns diagnostics and no rows for invalid imports input 'imports' curation report recipe passed 0.67 ms returns diagnostics and no rows for invalid imports input {} curation report recipe passed 0.8 ms returns diagnostics and no rows for invalid imports input { schema: 'sdp-imports/2', …(2) } curation report recipe passed 0.56 ms returns diagnostics and no rows for invalid imports input { schema: 'sdp-imports/1', files: [] } curation report recipe passed 0.55 ms returns diagnostics and no rows for invalid imports input { schema: 'sdp-imports/1', …(2) } curation report recipe passed 0.54 ms returns diagnostics and no rows for invalid imports input { schema: 'sdp-imports/1', …(3) } curation report recipe passed 0.6 ms returns diagnostics and no rows for invalid imports input { schema: 'sdp-imports/1', …(3) } curation report recipe passed 0.6 ms returns diagnostics and no rows for invalid imports input { schema: 'sdp-imports/1', …(2) } curation report recipe passed 0.59 ms returns diagnostics and no rows for invalid imports input { schema: 'sdp-imports/1', …(2) } curation report recipe passed 0.52 ms returns diagnostics and no rows for invalid imports input { schema: 'sdp-imports/1', …(2) } curation report recipe passed 0.48 ms returns diagnostics and no rows for invalid limit 0 curation report recipe passed 0.51 ms returns diagnostics and no rows for invalid limit -1 curation report recipe passed 0.43 ms returns diagnostics and no rows for invalid limit 1.5 curation report recipe passed 0.53 ms returns diagnostics and no rows for invalid limit "1" curation report recipe passed 0.41 ms returns diagnostics and no rows for invalid limit null curation report recipe passed 0.41 ms returns diagnostics and no rows for invalid limit true curation report recipe passed 0.47 ms recognizes every lawful component-id segment and keeps invalid convention values out curation report recipe passed 0.73 ms echoes import exclusions without changing the supplied graph or inferring omissions curation report recipe passed 2.31 ms joins directed component pairs, ranks uncovered files and reports incomplete input and unrealized designs curation report recipe passed 1.11 ms applies the limit only to uncovered rows and counts distinct file pairs curation report recipe passed 0.92 ms aggregates file pairs for a component pair and picks the first sample in path order curation report recipe passed 0.8 ms uses code-unit order for tied ranks and samples, and defaults to twenty uncovered rows curation report recipe passed 2.17 ms keeps several component bindings in one file and ignores inferred structural edges curation report recipe passed 1.28 ms builds a small fixture imports file and supplies its object to the recipe, backing uses through a barrel curation report recipe passed 520.53 ms reports missing or malformed parameter data {} curation report recipe passed 0.62 ms reports missing or malformed parameter data {"imports":{}} curation report recipe passed 0.36 ms reports missing or malformed parameter data {"imports":{"schema":"sdp-imports/1","adapter":"typescript","files":[{"file":"code/idle.ts","imports":[]},{"file":"code/a.ts","imports":["code/index.ts","code/leaf.ts"]},{"file":"code/index.ts","imports":["code/leaf.ts"]},{"file":"code/leaf.ts","imports":["code/a.ts"]},{"file":"code/loose.ts","imports":[]}]},"limit":-1} curation report recipe passed 0.32 ms reports missing or malformed parameter data {"imports":{"schema":"sdp-imports/1","adapter":"typescript","files":[{"file":"code/idle.ts","imports":[]},{"file":"code/a.ts","imports":["code/index.ts","code/leaf.ts"]},{"file":"code/index.ts","imports":["code/leaf.ts"]},{"file":"code/leaf.ts","imports":["code/a.ts"]},{"file":"code/loose.ts","imports":[]}]},"limit":1.5} curation report recipe passed 0.28 ms
Design view
Requirement drawing
- Declared verifying examples: no declared verifying example.
The diagram as text
- spec:model.enrichment-lifecycle: Enrichment keeps one Spec while its detail changes · declared Spec
- spec:model.core-model: The Protocol models delivery with one enrichable Spec · declared Spec
- impl:protocol.slimming-recipe: asserts realization of the shipped slimming-candidates recipe · anchored code ·
test/curation-recipes.test.ts:26 - test:protocol.slimming-recipe: test:protocol.slimming-recipe · anchored test binding · binding present ·
test/curation-recipes.test.ts:39 - spec:model.enrichment-lifecycle refines spec:model.core-model · declared
- impl:protocol.slimming-recipe satisfies spec:model.enrichment-lifecycle · anchored
- test:protocol.slimming-recipe verifies spec:model.enrichment-lifecycle · anchored
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred and chosen syntax: requirementDiagram; exact refines, satisfies and verifies, with claim words in nodes and per-edge comments.
Decisions
No decision record named.
Runtime
impl:protocol.slimming-recipe· asserts realization of the shipped slimming-candidates recipe ·test/curation-recipes.test.ts:26Uses
None.
Runtime observation: not tracked.
Evidence
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Impact
The diagram as text
- spec:consumers.delivery-session-on-ramp: Delivery sessions route work from current graph state
- spec:extraction.contract-declarations: Pinned declarations give an adopter a derived module to typecheck
- spec:model.core-model: The Protocol models delivery with one enrichable Spec
- spec:model.enrichment-lifecycle: Enrichment keeps one Spec while its detail changes
- spec:model.enrichment-lifecycle dependsOn spec:extraction.contract-declarations · declared — a slimming candidate is a pinned declaration
- spec:model.enrichment-lifecycle refines spec:model.core-model · declared
- spec:consumers.delivery-session-on-ramp dependsOn spec:model.enrichment-lifecycle · declared — the close guidance reads its distillation boundary for Design entries
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
Rests on
- refines · spec:model.core-model · stated ready, floor ready
- dependsOn · spec:extraction.contract-declarations · stated ready, floor ready
Rested on by
Distance 1
- spec:consumers.delivery-session-on-ramp
Implementing units
impl:protocol.delivery-session-on-ramp·test/skills.test.ts:83
Referencing units
None.
Enabled verifiers: test:protocol.delivery-session-on-ramp
Packs: pack:self-hosting-v1
Distance 2
- spec:consumers.graph-first-planning
Implementing units
impl:protocol.graph-first-planning·test/skills.test.ts:290
Referencing units
None.
Enabled verifiers: test:protocol.graph-first-planning
Packs: pack:self-hosting-v1
Distance 3
- spec:consumers.readiness-planner
Implementing units
impl:protocol.statement-queue-recipe·test/self-hosting-readiness-planner.test.ts:74
Referencing units
None.
Enabled verifiers: spec:consumers.readiness-planner.cycle-shares-a-round, spec:consumers.readiness-planner.decision-first, spec:consumers.readiness-planner.dependency-order, spec:consumers.readiness-planner.owner-question-holds
- spec:consumers.roadmap
Implementing units
impl:protocol.roadmap-recipe·test/roadmap.test.ts:20
Referencing units
None.
Enabled verifiers: spec:consumers.roadmap.blocking-part, spec:consumers.roadmap.buildable-part, spec:consumers.roadmap.built-work, spec:consumers.roadmap.design-part, spec:consumers.roadmap.drifting-part, spec:consumers.roadmap.missing-evidence, spec:consumers.roadmap.outside-parent, spec:consumers.roadmap.statement-order, spec:consumers.roadmap.statement-part, test:protocol.roadmap-recipe
Distance 4
- spec:consumers.design-slice
Implementing units
impl:protocol.design-slice-recipe·test/self-hosting-design-slice.test.ts:148
Referencing units
impl:protocol.studio-slice-answer·src/projections/studio/slice-answer.ts:1
Enabled verifiers: spec:consumers.design-slice.chain, spec:consumers.design-slice.component-absent, spec:consumers.design-slice.component-differing, spec:consumers.design-slice.component-matching, spec:consumers.design-slice.component-unreadable, spec:consumers.design-slice.component-unrelated, spec:consumers.design-slice.decision-backlink, spec:consumers.design-slice.dependency-cycle, spec:consumers.design-slice.folded-example, spec:consumers.design-slice.independent-example, spec:consumers.design-slice.outside-components, spec:consumers.design-slice.outside-holding, spec:consumers.design-slice.outside-satisfied, spec:consumers.design-slice.outside-unbound, test:protocol.design-slice
- spec:consumers.projections-model.roadmap-views
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
- spec:consumers.readiness-planner.cycle-shares-a-round
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.cycle-shares-a-round
- spec:consumers.readiness-planner.decision-first
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.decision-first
- spec:consumers.readiness-planner.dependency-order
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.dependency-order
- spec:consumers.readiness-planner.owner-question-holds
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.owner-question-holds
- spec:consumers.roadmap.blocking-part
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.blocking-part
- spec:consumers.roadmap.buildable-part
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.buildable-part
- spec:consumers.roadmap.built-work
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.built-work
- spec:consumers.roadmap.design-part
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.design-part
- spec:consumers.roadmap.drifting-part
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.drifting-part
- spec:consumers.roadmap.memo
Implementing units
impl:protocol.roadmap-memo-recipe·test/roadmap.test.ts:27impl:protocol.studio-roadmap-page·src/projections/studio/pages/roadmap-page.ts:168
Referencing units
None.
Enabled verifiers: test:protocol.roadmap-memo-recipe, test:protocol.studio-roadmap-page
- spec:consumers.roadmap.missing-evidence
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.missing-evidence
- spec:consumers.roadmap.outside-parent
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.outside-parent
- spec:consumers.roadmap.statement-order
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.statement-order
- spec:consumers.roadmap.statement-part
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.statement-part
- spec:consumers.spec-studio.owner-queue
Implementing units
impl:protocol.studio-owner-queue·src/projections/studio/pages/queue-page.ts:9
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.owner-queue.dependency-first
- spec:consumers.spec-studio.roadmap-page
Implementing units
impl:protocol.studio-roadmap-page·src/projections/studio/pages/roadmap-page.ts:168
Referencing units
None.
Enabled verifiers: test:protocol.studio-roadmap-page
- spec:consumers.upgrade-kit
Implementing units
impl:protocol.upgrade-guide·test/upgrade-kit.test.ts:87
Referencing units
None.
Enabled verifiers: test:protocol.upgrade-guide
- spec:protocol.roadmap-replaces-plans
Implementing units
impl:protocol.roadmap-practice·test/check-self-hosting-gates.test.ts:52
Referencing units
None.
Enabled verifiers: test:protocol.roadmap-practice
Distance 5
- spec:consumers.design-slice.chain
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.chain
- spec:consumers.design-slice.component-absent
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.component-absent
- spec:consumers.design-slice.component-differing
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.component-differing
- spec:consumers.design-slice.component-matching
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.component-matching
- spec:consumers.design-slice.component-unreadable
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.component-unreadable
- spec:consumers.design-slice.component-unrelated
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.component-unrelated
- spec:consumers.design-slice.decision-backlink
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.decision-backlink
- spec:consumers.design-slice.dependency-cycle
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.dependency-cycle
- spec:consumers.design-slice.folded-example
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.folded-example
- spec:consumers.design-slice.independent-example
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.independent-example
- spec:consumers.design-slice.outside-components
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.outside-components
- spec:consumers.design-slice.outside-holding
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.outside-holding
- spec:consumers.design-slice.outside-satisfied
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.outside-satisfied
- spec:consumers.design-slice.outside-unbound
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.outside-unbound
- spec:consumers.spec-studio.diagram-kinds.dependency
Implementing units
impl:protocol.studio-slice-dependencies·src/projections/studio/diagrams/slice.ts:10
Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-dependency
- spec:consumers.spec-studio.diagram-kinds.scoped-architecture
Implementing units
impl:protocol.studio-slice-architecture·src/projections/studio/diagrams/slice.ts:219
Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-architecture
- spec:consumers.spec-studio.owner-queue.dependency-first
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-queue-dependency-first
- spec:consumers.spec-studio.slice-page
Implementing units
impl:protocol.studio-slice-page·src/projections/studio/pages/slice-page.ts:25
Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-page
- spec:consumers.upgrade-kit.capability-adoption
Implementing units
impl:protocol.capability-adoption-recipe·test/upgrade-kit.test.ts:514
Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
- spec:consumers.upgrade-kit.rule-key-proposal
Implementing units
impl:protocol.rule-key-proposal-recipe·test/upgrade-kit.test.ts:742
Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable, spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean
- spec:protocol.delivery-record-cleanup
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
Distance 6
- spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus
- spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.rule-key-proposal.collision-and-unkeyable
- spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.rule-key-proposal.proposal-applies-clean
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | Pinned declarations give an adopter a derived module to typecheckspec:extraction.contract-declarations · resolves | declared | a slimming candidate is a pinned declaration | None |
| refines · outgoing | The Protocol models delivery with one enrichable Specspec:model.core-model · resolves | declared | None | None |
| dependsOn · incoming | Delivery sessions route work from current graph statespec:consumers.delivery-session-on-ramp · resolves | declared | the close guidance reads its distillation boundary for Design entries | None |
Bindings
Implementation binding: present
impl:protocol.slimming-recipe· asserts realization of the shipped slimming-candidates recipe ·test/curation-recipes.test.ts:26
Design reference: none
Verifier binding: present
- test:protocol.slimming-recipe · anchored ·
test/curation-recipes.test.ts:39· test anchor
Expected-outcome oracle: none
Runtime observation: not tracked.
Run results: not recorded in the graph.
Findings
None.
Composing (0)
Composing needs the script.