Spec Studio

The shipped dependency-cycles file fails a rules run on a cycle

spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-runExample / Scenario · storyready floor ready

Packs: pack:adopter-speed-v1, pack:self-hosting-v1

Design: no design entries · no pinned declarations · no decisions

Findings: no errors, no warnings

specs/consumers/agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run.sdp.md

No open questions and no blocking questions; implementation binding none, verifier binding present, and expected-outcome oracle none.

Intent
outcome
Execute the cycle findings by naming the shipped dependency-cycles file as a rules file over a corpus with one cycle.
assumptions
  • The world writes a probe corpus of two story-altitude behavior Specs, each stating idea with an Intent outcome and each declaring dependsOn on the other, which the Protocol's validators find clean. It runs sdp validate on the probe root with dist/recipes/26-dependency-cycles.js named by --rules and no --params, which the addresses none names. The findings are the corpus findings the run prints, and the rule ids are their rule ids joined by a comma and a space.
Behavior

Examples

Given a probe corpus in which {corpus: "two Specs depend on each other through dependsOn"}
Given the caller passes the addresses {addresses: "none"}
When the shipped {recipe: "dependency cycles"} file runs {invocation: "as a rules file named by sdp validate --rules"}
Then the command exits {exitCode: 1}
Then the answer carries {findings: 1} findings with the rule ids {ruleIds: "dependency-cycle"}
Verification

Verifier bindings

  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · anchored · test anchor binding present · test/reach-examples.test.ts:430

    External run evidence from test/reach-examples.test.ts

    Test 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

    NameSuiteResultDuration
    gives every watch example the heavy-test timeoutnot recordedpassed2.15 ms
    leaves non-watch corpus-rule points and incomplete points unspecifiednot recordedpassed0.41 ms
    leaves address points outside the oracle's bound probes unspecifiednot recordedpassed0.19 ms
    executes the bound example against a fresh worldA body calls a shipped recipe and returns its answer unchanged (spec:consumers.agent-surface.evaluation-sink.recipe-call)passed32.45 ms
    executes the bound example against a fresh worldA call to a recipe the catalog does not hold fails the body (spec:consumers.agent-surface.evaluation-sink.unknown-recipe)passed6.78 ms
    executes the bound example against a fresh worldA script holding a graph runs a shipped recipe through the exported evaluator (spec:consumers.agent-surface.evaluation-sink.exported-evaluator)passed6.15 ms
    executes the bound example against a fresh worldA dependency chain with no cycle yields no finding (spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing)passed3.3 ms
    executes the bound example against a fresh worldThe shipped dependency-cycles file fails a rules run on a cycle (spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run)passed5.51 ms
    executes the bound example against a fresh worldThe 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)passed3.87 ms
    executes the bound example against a fresh worldRewriting a rules file under node_modules starts a cycle that runs the new body (spec:validation.corpus-rules.rules-edit-starts-a-cycle)passed12.46 ms
    executes the bound example against a fresh worldEditing a parameter file starts a cycle that reads the new parameters (spec:validation.corpus-rules.params-edit-starts-a-cycle)passed32.96 ms
    executes the bound example against a fresh worldA 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)passed106.96 ms
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run
The diagram as text
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run: The shipped dependency-cycles file fails a rules run on a cycle · declared Spec
  • spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes · declared Spec
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path · declared Spec
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run: test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · anchored test binding · binding present · test/reach-examples.test.ts:430
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:validation.corpus-rules · declared
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · 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
Relations of spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run
The diagram as text
  • spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run: The shipped dependency-cycles file fails a rules run on a cycle
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run 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

Rested on by

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingAddress resolution and dependency cycles stay executable graph recipes
spec:consumers.agent-surface.address-and-cycle-recipes · resolves
declaredNoneNone
verifies · outgoingAddress resolution and dependency cycles stay executable graph recipes
spec:consumers.agent-surface.address-and-cycle-recipes · resolves
declaredNonecycleFindings, findingsSeverity
verifies · outgoingCorpus-authored rules run on the one validation path
spec:validation.corpus-rules · resolves
declaredNonerecipesAsRules

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · anchored · test/reach-examples.test.ts:430 · 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.