outcomeThe diff page shows a changed entry's base and built values
spec:consumers.spec-studio.diff-page.changed-entryPacks: pack:self-hosting-v1, pack:spec-studio-v1
Design: no design entries · no pinned declarations · no decisions
Findings: no errors, no warnings
specs/consumers/spec-studio.diff-page.changed-entry.sdp.md
No open questions and no blocking questions; implementation binding none, verifier binding present, and expected-outcome oracle none.
Given
a base graph in which the Design entry {key: "limit"} of a Spec reads {before: "ten items"}
the built graph in which that entry reads {after: "twenty items"}When
the build renders the diff page
Then
the Spec's row shows the base value {baseShown: "ten items"} and the built value {nowShown: "twenty items"}
the Spec's page carries the changed-since-base line: {changeNote: true}Composing needs the script.
Intent
- Execute the diff page on one changed Design entry: both values side by side, and the change note on the Spec's page.
assumptions- The world writes a root with one Spec whose Design entry
limitreadsten items, writes its graph withsdp buildand keeps it outside the root as the base, changes the entry totwenty items, builds the page set with the base, and reads the Spec's row on the diff page and the line under the Spec page's header.
- The world writes a root with one Spec whose Design entry
Behavior
Examples
Given a base graph in which the Design entry {key: "limit"} of a Spec reads {before: "ten items"}
Given the built graph in which that entry reads {after: "twenty items"}
When the build renders the diff page
Then the Spec's row shows the base value {baseShown: "ten items"} and the built value {nowShown: "twenty items"}
Then the Spec's page carries the changed-since-base line: {changeNote: true}Verification
Verifier bindings
- test:protocol.studio-diff-changed-entry · anchored · test anchor binding present ·
test/studio-s3.test.ts:210External run evidence from
test/studio-s3.test.tsTest anchors:
test:protocol.studio-diff-changed-entry,test:protocol.studio-glossary-same-word-twice,test:protocol.studio-navigation,test:protocol.studio-queue-dependency-first,test:protocol.studio-registers-blocking-first. Specs verified by those bindings: spec:consumers.spec-studio.diff-page, spec:consumers.spec-studio.diff-page.changed-entry, spec:consumers.spec-studio.glossary-page, spec:consumers.spec-studio.glossary-page.same-word-twice, spec:consumers.spec-studio.navigation, spec:consumers.spec-studio.owner-queue, spec:consumers.spec-studio.owner-queue.dependency-first, spec:consumers.spec-studio.registers, spec:consumers.spec-studio.registers.blocking-first.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 The questions page lists the Specs with a blocking question first (spec:consumers.spec-studio.registers.blocking-first) passed 35.62 ms executes the bound example against a fresh world The owner queue lists a waiting statement after the one it rests on (spec:consumers.spec-studio.owner-queue.dependency-first) passed 19.95 ms executes the bound example against a fresh world The diff page shows a changed entry's base and built values (spec:consumers.spec-studio.diff-page.changed-entry) passed 21.64 ms executes the bound example against a fresh world A word two Specs define appears once per Spec on the glossary page (spec:consumers.spec-studio.glossary-page.same-word-twice) passed 8.31 ms renders declaration citations, decision reasons and design backlog from the shipped answers Studio register pages passed 34.81 ms reaches each page in order, marks it current and omits every diff reference without a base Studio register pages passed 10.2 ms refuses malformed base flags and unreadable JSON before extraction Studio register pages passed 1.96 ms refuses a base in generated output before writing through graph Studio base comparison passed 21.29 ms refuses a base in generated output before writing through nested Studio base comparison passed 15.24 ms refuses a base in generated output before writing through file alias Studio base comparison passed 17.97 ms refuses a base in generated output before writing through root alias Studio base comparison passed 6.75 ms refuses a base in generated output before writing through input alias Studio base comparison passed 10.5 ms renders only existing sides for added and removed entries and one value for moved entries Studio base comparison passed 13.63 ms shows per-Pack diagnostics without no-change claims for invalid graph Studio base comparison passed 19.84 ms shows per-Pack diagnostics without no-change claims for different schema Studio base comparison passed 15.35 ms keeps additions, removals, Pack order and anchor bindings apart and escapes compared values Studio base comparison passed 24.48 ms shows unreadable graph values as the recipe's diagnostics on the named diff page Studio base comparison passed 2.54 ms leaves the base file unchanged and certifies repeat publication with the same input Studio base comparison passed 28.52 ms keeps a cycle's round separate from statements that rest on nothing, and lists owner holds Studio base comparison passed 12.27 ms sorts terms without locale collation and keeps non-letter headings addressable Studio base comparison passed 5.74 ms orders queue floor options by rung and carries the Pack and floor on each row Studio base comparison passed 16.78 ms uses authored term keys and orders duplicate terms by Spec id Studio base comparison passed 6.7 ms reads each owner question's provisional reading from its reader Spec and key not recorded passed 9.69 ms renders a keying proposal as one line per keyed entry and readable changed rule text not recorded passed 9.43 ms lists keyed lines in head rule order with rendered text for added, renamed and removed keys not recorded passed 14.46 ms counts keyed rules apart from changed parts, mixed changes: false not recorded passed 6.09 ms counts keyed rules apart from changed parts, mixed changes: true not recorded passed 6.9 ms names one keyed rule in the singular not recorded passed 7.97 ms marks only members with exclusively keyed changes as keyed only not recorded passed 13.49 ms renders changed list values as lists instead of raw JSON arrays not recorded passed 6.06 ms retains the owning list when readable rule text moves to a flow not recorded passed 5.57 ms
Design view
Requirement drawing
- Satisfying or referencing units: no recorded binding.
The diagram as text
- spec:consumers.spec-studio.diff-page.changed-entry: The diff page shows a changed entry's base and built values · declared Spec
- spec:consumers.spec-studio.diff-page: The diff page shows what changed in the design since a base graph · declared Spec
- test:protocol.studio-diff-changed-entry: test:protocol.studio-diff-changed-entry · anchored test binding · binding present ·
test/studio-s3.test.ts:210 - spec:consumers.spec-studio.diff-page.changed-entry refines spec:consumers.spec-studio.diff-page · declared
- spec:consumers.spec-studio.diff-page.changed-entry verifies spec:consumers.spec-studio.diff-page · declared
- test:protocol.studio-diff-changed-entry verifies spec:consumers.spec-studio.diff-page.changed-entry · 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
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
The diagram as text
- spec:consumers.spec-studio.diff-page: The diff page shows what changed in the design since a base graph
- spec:consumers.spec-studio.diff-page.changed-entry: The diff page shows a changed entry's base and built values
- spec:consumers.spec-studio.diff-page.changed-entry refines spec:consumers.spec-studio.diff-page · declared
- spec:consumers.spec-studio.diff-page.changed-entry verifies spec:consumers.spec-studio.diff-page · declared
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:consumers.spec-studio.diff-page · 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 | The diff page shows what changed in the design since a base graphspec:consumers.spec-studio.diff-page · resolves | declared | None | None |
| verifies · outgoing | The diff page shows what changed in the design since a base graphspec:consumers.spec-studio.diff-page · resolves | declared | None | diffSections, specChangeNotes |
Bindings
Implementation binding: none
Design reference: none
Verifier binding: present
- test:protocol.studio-diff-changed-entry · anchored ·
test/studio-s3.test.ts:210· 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.