outcomeThe runs page shows a run as external evidence from a test file
spec:consumers.spec-studio.runs-page.external-evidencePacks: 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.runs-page.external-evidence.sdp.md
No open questions and no blocking questions; implementation binding none, verifier binding present, and expected-outcome oracle none.
Given
one CTRF report whose tool is {tool: "vitest"} at version {version: "3.2.4"}, and whose tests in an anchored test file {passed: 2} passed and {failed: 1} failedWhen
the build renders the runs page
Then
the run's heading reads {heading: "Run 1: external run evidence from vitest 3.2.4"}
the page lists {rows: 3} results under that test file
a page says that a Spec or a verifier passed: {verdict: false}Composing needs the script.
Intent
- Execute the runs page on one report: the run named by its tool, its results under the test file they join, and no page saying a Spec or a verifier passed.
assumptions- The world writes a root with one Spec and one test file holding a
specTestanchor that verifies it, writes one CTRF report whose three tests name that file, two passed and one failed, builds the page set with the report as run records, and reads the runs page, then the tests lens and the Spec page for any sentence saying that the Spec or the verifier passed.
- The world writes a root with one Spec and one test file holding a
Behavior
Examples
Given one CTRF report whose tool is {tool: "vitest"} at version {version: "3.2.4"}, and whose tests in an anchored test file {passed: 2} passed and {failed: 1} failed
When the build renders the runs page
Then the run's heading reads {heading: "Run 1: external run evidence from vitest 3.2.4"}
Then the page lists {rows: 3} results under that test file
Then a page says that a Spec or a verifier passed: {verdict: false}Verification
Verifier bindings
- test:protocol.run-external · anchored · test anchor binding present ·
test/studio-s4.test.ts:378External run evidence from
test/studio-s4.test.tsTest anchors:
test:protocol.run-absolute,test:protocol.run-external,test:protocol.run-unjoined,test:protocol.studio-graph-only,test:protocol.studio-inputs-both-given,test:protocol.studio-stamp-apart. Specs verified by those bindings: spec:consumers.spec-studio.data.inputs, spec:consumers.spec-studio.data.inputs.both-given, spec:consumers.spec-studio.data.inputs.graph-only, spec:consumers.spec-studio.runs-page, spec:consumers.spec-studio.runs-page.external-evidence, spec:consumers.spec-studio.sharing, spec:consumers.spec-studio.sharing.stamp-written-apart, spec:observation.run-evidence, spec:observation.run-evidence.absolute-path-joins, spec:observation.run-evidence.unanchored-file-unjoined.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 recipe 45 joins normalized paths, preserves records and graph facts, and diagnoses other inputs not recorded passed 32.43 ms renders external run evidence with result rows, metadata, diagnostics and conditional navigation not recorded passed 64.35 ms reads repeated --runs before extraction and leaves input bytes untouched not recorded passed 65.17 ms stamps apart, touches no page, refuses bad sources and removes the stamp on rebuild not recorded passed 33.53 ms executes the bound example against a fresh world A test whose reporter wrote an absolute path joins its anchored file (spec:observation.run-evidence.absolute-path-joins) passed 6.06 ms executes the bound example against a fresh world A test in a file with no test anchor is reported as unjoined (spec:observation.run-evidence.unanchored-file-unjoined) passed 7.32 ms executes the bound example against a fresh world The runs page shows a run as external evidence from a test file (spec:consumers.spec-studio.runs-page.external-evidence) passed 10.49 ms executes the bound example against a fresh world Without inputs the page set is the graph's alone (spec:consumers.spec-studio.data.inputs.graph-only) passed 26.8 ms executes the bound example against a fresh world Both inputs add their pages, named, and the same inputs write the same bytes (spec:consumers.spec-studio.data.inputs.both-given) passed 76.23 ms executes the bound example against a fresh world The stamp is written beside the page set, and a later build removes it (spec:consumers.spec-studio.sharing.stamp-written-apart) passed 31.42 ms the stamp links source locations only after an HTTP stamp loads, encoding path segments not recorded passed 4.11 ms recipe 45 picks the longest suffix and scopes through enabled examples at file grain not recorded passed 8.33 ms ships a reusable preview, disabled by default, and deploys its own pull requests with runs and diff not recorded passed 8.77 ms the tests lens counts file results once per Spec and names every run input not recorded passed 22.51 ms the Pack sentence keeps the graph's binding limit and positively names external evidence not recorded passed 19.64 ms run metadata labels build and branch, and absent fields read not recorded not recorded passed 0.51 ms unjoined records escape outside names and explain both reason codes in words not recorded passed 8.74 ms run files show the file alone, bindings and Suite, with one header per run not recorded passed 8.99 ms recipe 45 does not join a suffix inside a path segment not recorded passed 3.02 ms stamp defaults to unknown and a stamped page set passes check-clean not recorded passed 30.07 ms every reusable preview job's permissions fit the CI caller's grant not recorded passed 15.2 ms PR checks and preview stamps name the same default merge checkout not recorded passed 7.86 ms preview download is optional and cancelled or skipped checks do not call it not recorded passed 7.96 ms deploy checks the enabled Pages source before writing: gh-pages not recorded passed 28.99 ms deploy checks the enabled Pages source before writing: main not recorded passed 34.99 ms deploy checks the enabled Pages source before writing: disabled not recorded passed 11.65 ms deploy succeeds only once Pages publishes the pushed commit: an unrelated errored build is newest not recorded passed 127.2 ms deploy succeeds only once Pages publishes the pushed commit: a retried build follows an errored one not recorded passed 62.59 ms deploy succeeds only once Pages publishes the pushed commit: the build errors not recorded passed 40.96 ms deploy succeeds only once Pages publishes the pushed commit: the commit is never built not recorded passed 902.58 ms deploy succeeds only once Pages publishes the pushed commit: the answer arrives after the wait not recorded passed 1531.29 ms preview still stamps and uploads rendered pages when evidence is absent and validation fails not recorded passed 92.59 ms places external file rows under their verifier and renders shared files once not recorded passed 41.84 ms accepts the preview workflow's base and run flags together not recorded passed 22.06 ms formats external run durations to at most two decimals on every page not recorded passed 21.61 ms
Design view
Requirement drawing
- Satisfying or referencing units: no recorded binding.
The diagram as text
- spec:consumers.spec-studio.runs-page.external-evidence: The runs page shows a run as external evidence from a test file · declared Spec
- spec:consumers.spec-studio.runs-page: The runs page shows the run records the build was given, joined to test files · declared Spec
- test:protocol.run-external: test:protocol.run-external · anchored test binding · binding present ·
test/studio-s4.test.ts:378 - spec:consumers.spec-studio.runs-page.external-evidence refines spec:consumers.spec-studio.runs-page · declared
- spec:consumers.spec-studio.runs-page.external-evidence verifies spec:consumers.spec-studio.runs-page · declared
- test:protocol.run-external verifies spec:consumers.spec-studio.runs-page.external-evidence · 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.runs-page: The runs page shows the run records the build was given, joined to test files
- spec:consumers.spec-studio.runs-page.external-evidence: The runs page shows a run as external evidence from a test file
- spec:consumers.spec-studio.runs-page.external-evidence refines spec:consumers.spec-studio.runs-page · declared
- spec:consumers.spec-studio.runs-page.external-evidence verifies spec:consumers.spec-studio.runs-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.runs-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 runs page shows the run records the build was given, joined to test filesspec:consumers.spec-studio.runs-page · resolves | declared | None | None |
| verifies · outgoing | The runs page shows the run records the build was given, joined to test filesspec:consumers.spec-studio.runs-page · resolves | declared | None | namesEachRun, externalEvidence, runSections |
Bindings
Implementation binding: none
Design reference: none
Verifier binding: present
- test:protocol.run-external · anchored ·
test/studio-s4.test.ts:378· 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.