outcomeRecipe 49 and the composing panel write one memo for one proposal
spec:consumers.intent-composition.proposal.memo.sharedPacks: pack:self-hosting-v1, pack:spec-studio-v1
Design: no design entries · no pinned declarations · no decisions
Findings: no errors, no warnings
specs/consumers/intent-composition.proposal.memo.shared.sdp.md
No open questions and no blocking questions; implementation binding none, verifier binding present, and expected-outcome oracle none.
Given
a change proposal with {changes: 2} changes, one whose exact text holds a run of {ticks: 3} backticksWhen
recipe 49 renders its memo and the composing panel renders its memo
Then
the two memos are byte-identical: {identical: true}
the memo ends with the proposal as JSON in a fenced block: {carriesDocument: true}
the fence around that exact text is {fence: 4} backticks longComposing needs the script.
Intent
- Execute the shared memo: the recipe and the panel render the same bytes, the memo carries the document, and a fence outgrows the backticks it holds.
assumptions- The world writes a proposal document with a base, a reason and the stated number of changes, the first scoped to one entry address with exact text that holds the stated run of backticks, and the second declaring a relation; it runs recipe 49's shipped body with the document as
proposal, calls the composing panel's memo function on the same document, compares the two strings, parses the last fenced block's content as JSON and compares it with the document, and measures the fence around the first change's text.
- The world writes a proposal document with a base, a reason and the stated number of changes, the first scoped to one entry address with exact text that holds the stated run of backticks, and the second declaring a relation; it runs recipe 49's shipped body with the document as
Behavior
Examples
Given a change proposal with {changes: 2} changes, one whose exact text holds a run of {ticks: 3} backticks
When recipe 49 renders its memo and the composing panel renders its memo
Then the two memos are byte-identical: {identical: true}
Then the memo ends with the proposal as JSON in a fenced block: {carriesDocument: true}
Then the fence around that exact text is {fence: 4} backticks longVerification
Verifier bindings
- test:protocol.studio-memo-shared · anchored · test anchor binding present ·
test/studio-s5.test.ts:272External run evidence from
test/studio-s5.test.tsTest anchors:
test:protocol.studio-export-contained,test:protocol.studio-intent-handoff,test:protocol.studio-intents-refresh,test:protocol.studio-memo-shared,test:protocol.studio-watch-plain. Specs verified by those bindings: spec:consumers.edit-model, spec:consumers.intent-composition, spec:consumers.intent-composition.proposal.memo, spec:consumers.intent-composition.proposal.memo.shared, spec:consumers.spec-studio.components, spec:consumers.spec-studio.export, spec:consumers.spec-studio.export.self-contained, spec:consumers.spec-studio.intent-panel, spec:consumers.spec-studio.intent-panel.refresh-keeps-intents, spec:consumers.spec-studio.publisher.watch, spec:consumers.spec-studio.publisher.watch.matches-plain-run, spec:consumers.spec-studio.responsive.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 executes the bound example against a fresh world Refreshing a tab keeps every gathered intent (spec:consumers.spec-studio.intent-panel.refresh-keeps-intents) passed 9.92 ms executes the bound example against a fresh world Recipe 49 and the composing panel write one memo for one proposal (spec:consumers.intent-composition.proposal.memo.shared) passed 4.43 ms executes the bound example against a fresh world A Pack's export opens alone and keeps its links inside it (spec:consumers.spec-studio.export.self-contained) passed 63.32 ms executes the bound example against a fresh world Each watch cycle writes the page set a plain run writes (spec:consumers.spec-studio.publisher.watch.matches-plain-run) passed 124.81 ms keeps unsupported intents apart and expands Pack members only against the stamped base not recorded passed 2.27 ms returns the same schema problems as recipe 38 and renders in any corpus not recorded passed 10.03 ms composes locally without changing source or requesting a network service not recorded passed 1.54 ms keeps the last local intents when storage refuses writes not recorded passed 0.29 ms keeps unsaved local intents when storage remains readable but its quota refuses writes not recorded passed 0.27 ms rewrites SVG and accessibility references without changing subject attributes or authored text not recorded passed 6.38 ms opens disclosures for print and restores exactly their prior state not recorded passed 1.43 ms leaves Mermaid source closed for print unless the reader opened it not recorded passed 1.06 ms stops the actual Studio watch process with exit zero on SIGINT not recorded passed 491.48 ms removes a failed watch publication, keeps watching and recovers on the next carrier edit not recorded passed 33.93 ms ships a phone layout and a print stylesheet for the whole canvas not recorded passed 10.85 ms keeps exports graph-only when the browsing pages receive a base and run records not recorded passed 27 ms starts no cycle for source or input-file events not recorded passed 30.93 ms merges concurrent panels before gathering or discarding and flags rejected storage records not recorded passed 0.6 ms refreshes the browser panel on storage and pageshow and removes those listeners on disconnect not recorded passed 1.47 ms prefills compose with the authored entry text including code spans and no rendered annotations not recorded passed 15.53 ms omits blank exact text and reports whitespace requests in the compose dialog not recorded passed 2.42 ms uses the stamp base, labels fields, orders actions and copies and saves the named documents not recorded passed 5.09 ms copies distinct actions and recorded scopes for both Pack choices without a stamp not recorded passed 2.97 ms keeps Pack framing changes apart and gathers scenario editor steps verbatim not recorded passed 2.66 ms matches the literal memo for the shared proposal, including the full relation and document not recorded passed 0.93 ms keeps the last watch pages when an optional base becomes unreadable, just like a plain run not recorded passed 986.18 ms inlines the selected stylesheet asset in exports and publishes those same style bytes not recorded passed 25.93 ms introduces studio before its watch option and gives recipe 49 a use case not recorded passed 4.36 ms renders edit scenario steps outside inert templates without script not recorded passed 1.08 ms renders propose scenario steps outside inert templates without script not recorded passed 0.72 ms writes both memo reasons as code spans: "<details>Review the design.</details>", "`Keep` the ``literal`` reason`" not recorded passed 0.7 ms writes both memo reasons as code spans: "`Review` the ``design`` reason`", "<details>Keep the change.</details>" not recorded passed 0.43 ms fences requests so their Markdown cannot alter the memo: "Fix a typo.\n<!--" not recorded passed 0.89 ms fences requests so their Markdown cannot alter the memo: "Use this text.\n```\n## Forged heading\n``````\n<!--hidden-->" not recorded passed 0.7 ms contains phone navigation, stamp and wide tables within the viewport not recorded passed 15.39 ms keeps the maturity caption readable and empty cells compact on a phone not recorded passed 7.6 ms aligns maturity cell counts with the empty cell dashes not recorded passed 4.92 ms keeps table headers and one-word cells intact while allowing word-boundary wrapping not recorded passed 7.32 ms keeps natural desktop diagram size and fits only on phones not recorded passed 7.69 ms hides phone scroll advice and closed source in print while keeping opened source printable not recorded passed 18.32 ms
Design view
Requirement drawing
- Satisfying or referencing units: no recorded binding.
Decisions
No decision record named.
Runtime
No implementation neighborhood recorded.
Runtime observation: not tracked.
Evidence
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Impact
- E2: verifies · declared
Rests on
- refines · spec:consumers.intent-composition.proposal.memo · stated ready, floor ready
Rested on by
No Spec rests on this Spec.
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | Recipe 49 renders a change proposal as the Markdown memo a person reviewsspec:consumers.intent-composition.proposal.memo · resolves | declared | None | None |
| verifies · outgoing | Recipe 49 renders a change proposal as the Markdown memo a person reviewsspec:consumers.intent-composition.proposal.memo · resolves | declared | None | memo |
Bindings
Implementation binding: none
Design reference: none
Verifier binding: present
- test:protocol.studio-memo-shared · anchored ·
test/studio-s5.test.ts:272· 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.