outcomeA parameter file that stops being JSON fails only its own rules file, and the watcher runs on
spec:validation.corpus-rules.unreadable-params-fail-one-filePacks: pack:adopter-speed-v1, pack:corpus-checks-v1, pack:self-hosting-v1
Design: no design entries · no pinned declarations · no decisions
Findings: no errors, no warnings
specs/validation/corpus-rules.unreadable-params-fail-one-file.sdp.md
No open questions and no blocking questions; implementation binding none, verifier binding present, and expected-outcome oracle none.
Given
a probe corpus the Protocol's validators find clean
a first rules file that {first: "reads a parameter file that stops being JSON after the first cycle under --watch"}
a second rules file that returns one warning when the graph it receives holds no nodeWhen
the probe corpus is validated with the rules files named by --rules in that order
Then
the second cycle's corpus summary line reads {corpusSummary: "corpus rules: 0 errors · 0 warnings · 1 of 2 files failed (the corpus's own rules)"}
the watcher is still running after the second cycle: {running: true}Composing needs the script.
Intent
- Execute the watched-parameters rule on a parameter file that holds text that is not JSON after the first cycle.
assumptions- The world writes the probe corpus, parameter file and rules files of the parameter-edit example and starts the watcher as that example does. After the first cycle it writes text that is not JSON to the parameter file, waits for the second cycle, reads its corpus summary line and, on standard error, the line
corpus rules <path> failed: its parameters cannot be read (<cause>)for the first file, then checks that the process is still running before it stops the watcher.
- The world writes the probe corpus, parameter file and rules files of the parameter-edit example and starts the watcher as that example does. After the first cycle it writes text that is not JSON to the parameter file, waits for the second cycle, reads its corpus summary line and, on standard error, the line
Behavior
Examples
Given a probe corpus the Protocol's validators find clean
Given a first rules file that {first: "reads a parameter file that stops being JSON after the first cycle under --watch"}
Given a second rules file that returns one warning when the graph it receives holds no node
When the probe corpus is validated with the rules files named by --rules in that order
Then the second cycle's corpus summary line reads {corpusSummary: "corpus rules: 0 errors · 0 warnings · 1 of 2 files failed (the corpus's own rules)"}
Then the watcher is still running after the second cycle: {running: true}Verification
Verifier bindings
- test:protocol.validation.corpus-rules.unreadable-params-fail-one-file · anchored · test anchor binding present ·
test/reach-examples.test.ts:460External run evidence from
test/reach-examples.test.tsTest anchors:
test:protocol.consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing,test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run,test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run,test:protocol.consumers.agent-surface.evaluation-sink.exported-evaluator,test:protocol.consumers.agent-surface.evaluation-sink.recipe-call,test:protocol.consumers.agent-surface.evaluation-sink.unknown-recipe,test:protocol.validation.corpus-rules.params-edit-starts-a-cycle,test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle,test:protocol.validation.corpus-rules.unreadable-params-fail-one-file. Specs verified by those bindings: spec:consumers.agent-surface.address-and-cycle-recipes, spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing, spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run, spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run, spec:consumers.agent-surface.evaluation-sink, spec:consumers.agent-surface.evaluation-sink.exported-evaluator, spec:consumers.agent-surface.evaluation-sink.recipe-call, spec:consumers.agent-surface.evaluation-sink.unknown-recipe, spec:validation.corpus-rules, spec:validation.corpus-rules.params-edit-starts-a-cycle, spec:validation.corpus-rules.rules-edit-starts-a-cycle, spec:validation.corpus-rules.unreadable-params-fail-one-file.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 gives every watch example the heavy-test timeout not recorded passed 2.15 ms leaves non-watch corpus-rule points and incomplete points unspecified not recorded passed 0.41 ms leaves address points outside the oracle's bound probes unspecified not recorded passed 0.19 ms executes the bound example against a fresh world A body calls a shipped recipe and returns its answer unchanged (spec:consumers.agent-surface.evaluation-sink.recipe-call) passed 32.45 ms executes the bound example against a fresh world A call to a recipe the catalog does not hold fails the body (spec:consumers.agent-surface.evaluation-sink.unknown-recipe) passed 6.78 ms executes the bound example against a fresh world A script holding a graph runs a shipped recipe through the exported evaluator (spec:consumers.agent-surface.evaluation-sink.exported-evaluator) passed 6.15 ms executes the bound example against a fresh world A dependency chain with no cycle yields no finding (spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing) passed 3.3 ms executes the bound example against a fresh world The shipped dependency-cycles file fails a rules run on a cycle (spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run) passed 5.51 ms executes the bound example against a fresh world The shipped address-resolution file fails a rules run on an address that names no entry (spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run) passed 3.87 ms executes the bound example against a fresh world Rewriting a rules file under node_modules starts a cycle that runs the new body (spec:validation.corpus-rules.rules-edit-starts-a-cycle) passed 12.46 ms executes the bound example against a fresh world Editing a parameter file starts a cycle that reads the new parameters (spec:validation.corpus-rules.params-edit-starts-a-cycle) passed 32.96 ms executes the bound example against a fresh world A parameter file that stops being JSON fails only its own rules file, and the watcher runs on (spec:validation.corpus-rules.unreadable-params-fail-one-file) passed 106.96 ms
Design view
Requirement drawing
- Satisfying or referencing units: no recorded binding.
The diagram as text
- spec:validation.corpus-rules.unreadable-params-fail-one-file: A parameter file that stops being JSON fails only its own rules file, and the watcher runs on · declared Spec
- spec:validation.corpus-rules: Corpus-authored rules run on the one validation path · declared Spec
- test:protocol.validation.corpus-rules.unreadable-params-fail-one-file: test:protocol.validation.corpus-rules.unreadable-params-fail-one-file · anchored test binding · binding present ·
test/reach-examples.test.ts:460 - spec:validation.corpus-rules.unreadable-params-fail-one-file refines spec:validation.corpus-rules · declared
- spec:validation.corpus-rules.unreadable-params-fail-one-file verifies spec:validation.corpus-rules · declared
- test:protocol.validation.corpus-rules.unreadable-params-fail-one-file verifies spec:validation.corpus-rules.unreadable-params-fail-one-file · 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:validation.corpus-rules: Corpus-authored rules run on the one validation path
- spec:validation.corpus-rules.unreadable-params-fail-one-file: A parameter file that stops being JSON fails only its own rules file, and the watcher runs on
- spec:validation.corpus-rules.unreadable-params-fail-one-file refines spec:validation.corpus-rules · declared
- spec:validation.corpus-rules.unreadable-params-fail-one-file verifies spec:validation.corpus-rules · 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:validation.corpus-rules · 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 | Corpus-authored rules run on the one validation pathspec:validation.corpus-rules · resolves | declared | None | None |
| verifies · outgoing | Corpus-authored rules run on the one validation pathspec:validation.corpus-rules · resolves | declared | None | watchedParams |
Bindings
Implementation binding: none
Design reference: none
Verifier binding: present
- test:protocol.validation.corpus-rules.unreadable-params-fail-one-file · anchored ·
test/reach-examples.test.ts:460· 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.