Spec Studio

A slice reads a Pack as one design, with the architecture it touches and what each member needs next

spec:consumers.design-sliceUse Case / Behavior · featureready floor ready

New since the base graph base da4b141. See the diff.

Base input: schema 0.11.0, 405 Specs.

Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

Design: 18 design entries · 15 pinned declarations · 2 decisions

Findings: no errors, no warnings

specs/consumers/design-slice.sdp.md

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

Features that must be reviewed together are already grouped as a Pack, and the Pack page shows each member in turn. A design pass also needs the whole at once: how the members rest on each other, which components they touch, realized or planned, which decisions and open questions bound them, and what each member needs for its next rung. Rounds of design add detail a little at a time; the floor sets how little a rung needs, and how much is enough stays a judgment the authoring guidance supports and no check makes.

The first generation kept a slice as an authored file: a list of members and the one question they answer together, a saved view for design and review that delivered nothing itself (@libar-dev/architect, formal-spec/04-tag-registry.md, the hierarchy level slice). The original design saved AI context slices per Pack, per capability and per changed Spec as files (docs/lineage/v0-design/07-spec-studio-and-projections.md §5.5). The Protocol holds the first as a Pack, its members in reading order and its framing saying what they answer together, and it refused the second: a context bundle is composed on each invocation and never saved. A design slice is therefore a reading and not an artifact. It is a Pack read whole, narrowed to one perspective's members when a pass reads for one concern, or an ordered list of Specs, composed from the graph each time, and it adds no grouping, kind, stage or gate. A Spec's planning slice reads one Spec's neighborhood; widening it hop by hop would pick a reach no one authored, so a design slice starts from the set a person chose.

The reading answers what a card-by-card page leaves a reviewer to assemble. A design that builds on existing code says so through its own dependsOn or refines to the Spec that code satisfies, so the architecture a design ahead of its code will touch is read from those relations and the anchors of the Specs they name. The first adopter asked for the same separation: the design under review apart from the contracts and decisions it rests on, and the outside Spec whose rung holds a member shown at the boundary with what it holds (libar-platform/docs/feedback/sdp-feedback-02.md, items 11 and 12).

Intent
actor
A person or an agent running a design pass over features that must be reviewed together.
problem
The Pack page reads member by member, so a reviewer assembles the dependency order, the touched architecture and the open decisions by hand before judging the design as a whole.
outcome
Read a Pack as one design slice: its members and their relations, the components they touch, realized and planned, the decisions and open questions that bound them, and what each member needs for its next rung.
value
A design pass judges the whole before its parts, starting from the members others rest on, and sees how much design each member carries beside its rung without a score.
Behavior
rule.readingNotArtifact line 48 · specs/consumers/design-slice.sdp.md:48
A design slice is a reading of a set of Specs that a catalog recipe composes from the graph on each invocation; it is never authored, saved or committed, it adds no grouping, namespace, kind, stage or gate, and reading it records nothing.

no example exercises it

rule.scope line 49 · specs/consumers/design-slice.sdp.md:49
A slice takes one scope: a Pack, its resolved members read in authored order, or an ordered list of Spec ids; a Pack scope may be narrowed to an ordered subset of its members, such as the members the perspective filter selects, and then says that it is a subset.

spec:consumers.design-slice.chain · enabled

rule.restsOn line 50 · specs/consumers/design-slice.sdp.md:50
Inside the slice a member rests on each other member it names by refines, dependsOn, constrainedBy or decidedBy, except a refines to a member that names it back by one of the other three, as the statement queue reads them; every relation of those four types between two members is listed with its type, its reason and whether it orders, so a reading tells an ordering link from a relation that orders nothing.

spec:consumers.design-slice.decision-backlink · enabled

rule.depth line 51 · specs/consumers/design-slice.sdp.md:51
A member that rests on no other member has depth 1, as the statement queue's rounds start at 1, and any other member has the depth after the deepest member it rests on; members that reach each other through those links form a cycle, share the depth after the deepest member outside the cycle that any of them rests on, and are listed with one closed path, and the slice refuses nothing.

spec:consumers.design-slice.chain · enabled, spec:consumers.design-slice.decision-backlink · enabled, spec:consumers.design-slice.dependency-cycle · enabled

rule.examplesFold line 52 · specs/consumers/design-slice.sdp.md:52
An example member folds into the member it refines when that refines is its only relation of the four types, in either direction, inside the slice or across its boundary: it is listed among that member's example members and keeps its own row, with its own stated rung, floor reached, stated next rung and holds, and folding lends the member none of them; an example with any other such relation is a member like any other.

spec:consumers.design-slice.folded-example · enabled, spec:consumers.design-slice.independent-example · enabled

rule.memberColumns line 53 · specs/consumers/design-slice.sdp.md:53
Each member carries its stated rung, the floor reached, its stated next rung with the clauses that hold it, its design columns, its rule count as rule coverage counts it, its verifiers and verifying examples with how many are enabled, the units that implement and reference it, and the components those units belong to; the columns are counts and lists beside the rung, never a score, a verdict or a rung.

spec:consumers.design-slice.chain · enabled, spec:consumers.design-slice.folded-example · enabled

rule.boundary line 54 · specs/consumers/design-slice.sdp.md:54
The slice's boundary is built over its members as Pack design builds a Pack's, so a whole Pack's slice has the Pack's boundary; each Spec the slice rests on also carries the floor it reaches and the members whose stated next rung it holds, and a Pack member left out of a narrowed slice is marked as in the Pack.

spec:consumers.design-slice.independent-example · enabled, spec:consumers.design-slice.outside-holding · enabled

rule.touchedComponents line 55 · specs/consumers/design-slice.sdp.md:55
The components a slice touches are the anchored components it reaches three ways, each named on the component's row and never merged: a unit that satisfies or references a member belongs to it; a unit that satisfies a Spec the slice rests on belongs to it; or a member component design names it.

spec:consumers.design-slice.component-absent · enabled, spec:consumers.design-slice.component-differing · enabled, spec:consumers.design-slice.component-matching · enabled, spec:consumers.design-slice.component-unreadable · enabled, spec:consumers.design-slice.component-unrelated · enabled, spec:consumers.design-slice.outside-satisfied · enabled, spec:consumers.design-slice.outside-unbound · enabled

rule.componentDesigns line 56 · specs/consumers/design-slice.sdp.md:56
Every member that is a component design, as the planned-architecture convention selects it, is its own row whether or not code realizes it: the component it names, the layer, context, role and uses it declares, whether an anchor holds that component, whether that anchor satisfies the design, and the realization comparison's differing and unreadable rows for it; a declared value never stands in for an anchored one, nor an anchored value for a declared one.

spec:consumers.design-slice.component-absent · enabled, spec:consumers.design-slice.component-differing · enabled, spec:consumers.design-slice.component-matching · enabled, spec:consumers.design-slice.component-unreadable · enabled, spec:consumers.design-slice.component-unrelated · enabled

rule.touchedUses line 57 · specs/consumers/design-slice.sdp.md:57
Between touched components the slice lists the anchored uses aggregated to component pairs, as the architecture map counts them, a use within one component left out, each pair with the unit edges behind its count; each component a member design declares in uses is a planned use of that design, listed apart from the anchored pairs and never added to their counts.

spec:consumers.design-slice.component-absent · enabled, spec:consumers.design-slice.component-differing · enabled, spec:consumers.design-slice.component-matching · enabled, spec:consumers.design-slice.component-unreadable · enabled, spec:consumers.design-slice.component-unrelated · enabled

rule.outsideNeighbors line 58 · specs/consumers/design-slice.sdp.md:58
A component one uses step from a touched component, in either direction, or named in a member design's uses, that the slice does not touch is listed as outside the slice with how it is reached, and its anchored pairs with touched components are listed and marked outside; the slice reaches no further, and outside components and pairs are counted apart from the touched ones.

spec:consumers.design-slice.component-absent · enabled, spec:consumers.design-slice.component-differing · enabled, spec:consumers.design-slice.component-matching · enabled, spec:consumers.design-slice.component-unreadable · enabled, spec:consumers.design-slice.component-unrelated · enabled, spec:consumers.design-slice.outside-components · enabled, spec:consumers.design-slice.outside-satisfied · enabled

rule.unplaced line 59 · specs/consumers/design-slice.sdp.md:59
A unit that implements or references a member and belongs to no component is listed apart, so no binding drops out of the reading.

no example exercises it

rule.notDownstream line 60 · specs/consumers/design-slice.sdp.md:60
The slice does not count the code of Specs that rest on it: that code follows a change to the slice, and design-change impact reads it; a component that uses a touched component appears only as an outside neighbor.

spec:consumers.design-slice.outside-satisfied · enabled

rule.decisionsInScope line 61 · specs/consumers/design-slice.sdp.md:61
The decisions in scope are the decision members and every decision a member names through decidedBy, each with its stated rung, the floor reached, whether it is a member, the members it shapes, the decisions it refines and supersedes, and its open and blocking question counts.

spec:consumers.design-slice.decision-backlink · enabled

rule.questionsInScope line 62 · specs/consumers/design-slice.sdp.md:62
The open questions in scope are those of every member and of every decision in scope, and the blocking questions of every Spec outside the slice that holds a member's stated next rung, blocking questions first; each carries its address, its fields and the members whose stated next rung its Spec holds.

spec:consumers.design-slice.outside-holding · enabled

rule.noDesignVerdict line 63 · specs/consumers/design-slice.sdp.md:63
The slice shows how much design each member carries and never whether it is enough: it reports no over- or under-designed member, no ratio of design to rung and no finding, because how much to write is the authoring guidance's judgment and checks police conformance and honesty, never content quality.

no example exercises it

rule.graphOnly line 64 · specs/consumers/design-slice.sdp.md:64
The slice reads declared relations, anchored bindings and component designs only; it infers no dependency, component or decision from prose, paths, imports or names.

spec:consumers.design-slice.outside-unbound · enabled

rule.orderAdvisory line 65 · specs/consumers/design-slice.sdp.md:65
Depth gives a reading order, the members others rest on first; it records, schedules and gates nothing, and a member read or designed out of that order is never a finding.

spec:consumers.design-slice.dependency-cycle · enabled

0 unkeyed rules.

Verifying examples

Members rest on a chain · spec:consumers.design-slice.chain · ready floor ready

Executable Spec

Given a probe Pack whose members {structure: "rest on each other in a chain"}
Given one member depends on an outside Spec {outside: "that no code satisfies"}
Given one member is a component design whose component {anchor: "an anchor satisfies, matching every declared value"}
When the design slice runs over the probe Pack
Then the members read in depth order {order: "spec:probe.base, spec:probe.design, spec:probe.top"}

Open example

An unanchored component design stays visible · spec:consumers.design-slice.component-absent · ready floor ready

Executable Spec

Given a probe Pack whose members {structure: "rest on each other in a chain"}
Given one member depends on an outside Spec {outside: "that a component's unit satisfies"}
Given one member is a component design whose component {anchor: "no anchor holds"}
When the design slice runs over the probe Pack
Then the member design reads {realized: "unrealized"} with {differing: 0} differing and {unreadable: 0} unreadable rows

Open example

A realized component keeps its differing layer and uses apart · spec:consumers.design-slice.component-differing · ready floor ready

Executable Spec

Given a probe Pack whose members {structure: "rest on each other in a chain"}
Given one member depends on an outside Spec {outside: "that a component's unit satisfies"}
Given one member is a component design whose component {anchor: "an anchor satisfies, with a differing layer and uses"}
When the design slice runs over the probe Pack
Then the member design reads {realized: "realized"} with {differing: 2} differing and {unreadable: 0} unreadable rows

Open example

A realized component matches its declared values · spec:consumers.design-slice.component-matching · ready floor ready

Executable Spec

Given a probe Pack whose members {structure: "rest on each other in a chain"}
Given one member depends on an outside Spec {outside: "that a component's unit satisfies"}
Given one member is a component design whose component {anchor: "an anchor satisfies, matching every declared value"}
When the design slice runs over the probe Pack
Then the member design reads {realized: "realized"} with {differing: 0} differing and {unreadable: 0} unreadable rows

Open example

An unreadable declared layer stays visible · spec:consumers.design-slice.component-unreadable · ready floor ready

Executable Spec

Given a probe Pack whose members {structure: "rest on each other in a chain"}
Given one member depends on an outside Spec {outside: "that a component's unit satisfies"}
Given one member is a component design whose component {anchor: "an anchor satisfies, with an unreadable layer"}
When the design slice runs over the probe Pack
Then the member design reads {realized: "realized"} with {differing: 0} differing and {unreadable: 1} unreadable rows

Open example

An anchor alone does not realize a component design · spec:consumers.design-slice.component-unrelated · ready floor ready

Executable Spec

Given a probe Pack whose members {structure: "rest on each other in a chain"}
Given one member depends on an outside Spec {outside: "that a component's unit satisfies"}
Given one member is a component design whose component {anchor: "an anchor holds without satisfying the design"}
When the design slice runs over the probe Pack
Then the member design reads {realized: "unrealized"} with {differing: 0} differing and {unreadable: 0} unreadable rows

Open example

A shaping decision comes before its member · spec:consumers.design-slice.decision-backlink · ready floor ready

Executable Spec

Given a probe Pack whose members {structure: "include a decision that refines the member it shapes"}
Given one member depends on an outside Spec {outside: "that no code satisfies"}
Given one member is a component design whose component {anchor: "an anchor satisfies, matching every declared value"}
When the design slice runs over the probe Pack
Then the members read in depth order {order: "spec:probe.base, spec:probe.design, spec:probe.top"}

Open example

A cycle shares a depth · spec:consumers.design-slice.dependency-cycle · ready floor ready

Executable Spec

Given a probe Pack whose members {structure: "include two members that depend on each other"}
Given one member depends on an outside Spec {outside: "that no code satisfies"}
Given one member is a component design whose component {anchor: "an anchor satisfies, matching every declared value"}
When the design slice runs over the probe Pack
Then the slice reports {cycles: 1} cycles and {exampleMembers: 0} folded example members

Open example

An example folds without lending its readiness · spec:consumers.design-slice.folded-example · ready floor ready

Executable Spec

Given a probe Pack whose members {structure: "include an example that refines a member"}
Given one member depends on an outside Spec {outside: "that no code satisfies"}
Given one member is a component design whose component {anchor: "an anchor satisfies, matching every declared value"}
When the design slice runs over the probe Pack
Then the slice reports {cycles: 0} cycles and {exampleMembers: 1} folded example members

Open example

An example with its own dependency stays unfolded · spec:consumers.design-slice.independent-example · ready floor ready

Executable Spec

Given a probe Pack whose members {structure: "include an example that refines a member and depends on an outside Spec"}
Given one member depends on an outside Spec {outside: "that no code satisfies"}
Given one member is a component design whose component {anchor: "an anchor satisfies, matching every declared value"}
When the design slice runs over the probe Pack
Then the slice reports {cycles: 0} cycles and {exampleMembers: 0} folded example members

Open example

Outside components stop at the touched components' neighbors · spec:consumers.design-slice.outside-components · ready floor ready

Executable Spec

Given a probe Pack whose members {structure: "include a decision that refines the member it shapes"}
Given one member depends on an outside Spec {outside: "that a component's unit satisfies"}
Given one member is a component design whose component {anchor: "an anchor satisfies, matching every declared value"}
When the design slice runs over the probe Pack
Then the outside components are {outsideComponents: "component:probe.neighbor"}

Open example

An outside prerequisite names the member it holds · spec:consumers.design-slice.outside-holding · ready floor ready

Executable Spec

Given a probe Pack whose members {structure: "include a decision that refines the member it shapes"}
Given one member depends on an outside Spec {outside: "stated below defined"}
Given one member is a component design whose component {anchor: "an anchor holds without satisfying the design"}
When the design slice runs over the probe Pack
Then the outside Spec holds {held: "spec:probe.base"}

Open example

A prerequisite reaches its satisfying component · spec:consumers.design-slice.outside-satisfied · ready floor ready

Executable Spec

Given a probe Pack whose members {structure: "include a decision that refines the member it shapes"}
Given one member depends on an outside Spec {outside: "that a component's unit satisfies"}
Given one member is a component design whose component {anchor: "an anchor holds without satisfying the design"}
When the design slice runs over the probe Pack
Then the touched components are {components: "component:probe.dependency, component:probe.designed"}, {throughRestsOn: 1} of them reached through what the slice rests on

Open example

An unbound prerequisite invents no component · spec:consumers.design-slice.outside-unbound · ready floor ready

Executable Spec

Given a probe Pack whose members {structure: "include a decision that refines the member it shapes"}
Given one member depends on an outside Spec {outside: "that no code satisfies"}
Given one member is a component design whose component {anchor: "an anchor holds without satisfying the design"}
When the design slice runs over the probe Pack
Then the touched components are {components: "component:probe.designed"}, {throughRestsOn: 0} of them reached through what the slice rests on

Open example

Example space

Given a probe Pack whose members {structure:"rest on each other in a chain"|"include a decision that refines the member it shapes"|"include two members that depend on each other"|"include an example that refines a member"|"include an example that refines a member and depends on an outside Spec"}
Given one member depends on an outside Spec {outside:"that a component's unit satisfies"|"that no code satisfies"|"stated below defined"}
Given one member is a component design whose component {anchor:"no anchor holds"|"an anchor holds without satisfying the design"|"an anchor satisfies, matching every declared value"|"an anchor satisfies, with a differing layer and uses"|"an anchor satisfies, with an unreadable layer"}
When the design slice runs over the probe Pack
Then the members read in depth order {order:string}
Then the slice reports {cycles:number} cycles and {exampleMembers:number} folded example members
Then the touched components are {components:string}, {throughRestsOn:number} of them reached through what the slice rests on
Then the member design reads {realized:"realized"|"unrealized"} with {differing:number} differing and {unreadable:number} unreadable rows
Then the outside components are {outsideComponents:string}
Then the outside Spec holds {held:string}
Design
sliceRecipe line 69 · specs/consumers/design-slice.sdp.md:69
recipe 54, the design slice, takes exactly one scope, params.pack or params.specs, an optional params.members beside pack, and an optional params.detail; an unknown parameter name returns { unknownParams, accepts } alone, and any input #design.sliceDiagnostics refuses returns { diagnostics } and no slice.
sliceDiagnostics line 70 · specs/consumers/design-slice.sdp.md:70
the checks run in this order and every failure is kept, a check that reads an earlier value being skipped when that value failed: a detail that is present and neither a boolean nor a list of strings, null included, gives { scope: "detail", problem: "Expected true, false or a list of member ids." }; neither or both of pack and specs gives { scope: "scope", problem: "Supply exactly one of pack or specs." }; a pack that is not a string naming a Pack gives { scope: "pack", problem: "Pack does not resolve." }; beside a resolved Pack, a members that is not a non-empty list of distinct strings gives { scope: "members", problem: "Expected a non-empty list of distinct member ids." }, and otherwise each id that is no resolved member gives { scope: <the id>, problem: "Not a resolved member of the Pack." } in list order; a specs that is not a non-empty list of distinct strings gives { scope: "specs", problem: "Expected a non-empty list of distinct Spec ids." }, and otherwise each id the graph does not hold gives { scope: <the id>, problem: "Spec does not resolve." } in list order, as the context bundle names an unresolved id; and a members beside specs gives { scope: "members", problem: "members narrows only a Pack scope." }.
sliceDetail line 71 · specs/consumers/design-slice.sdp.md:71
params.detail is absent or false for the summary, true for every row in full, or a list of member ids for full rows of those members beside summary rows of the rest, an id that is no member adding { id, reason: "not-member" } to the slice's diagnostics, as Pack design reads it; a summary keeps totals whole and adds leftOut, one line for each kind of detail it omits.

no citation recorded

sliceAnswer line 72 · specs/consumers/design-slice.sdp.md:72
{ scope, totals, members, structure, boundary, architecture, decisions, questions }, where scope is { pack, title, framing, subset, members, unresolved } for a Pack, unresolved naming the manifest ids the graph does not hold, and { specs } for a Spec list.

no citation recorded

sliceTotals line 73 · specs/consumers/design-slice.sdp.md:73
{ members, exampleMembers, relations, depth, cycles, heldBelowNextRung, waitingForAuthor, restsOn, holdingOutside, restedOnBy, verifiedBy, supersededBy, components: { touched, throughMembers, throughRestsOn, throughDesigns, outside }, designs: { total, realized, matching, unrealized, differing, unreadable }, componentUses: { inside, outside, planned }, decisions, decisionsBelowReady, openQuestions, blockingQuestions }, where exampleMembers counts folded example members, depth is the deepest member's depth, holdingOutside counts the outside Specs that hold a member, heldBelowNextRung and waitingForAuthor count as Pack design counts them, components.touched counts distinct anchored components however reached and components.outside the outside components, designs counts member designs as the realization comparison's totals count designs, and componentUses counts the anchored pairs inside, the anchored pairs marked outside, and the planned uses.

no citation recorded

memberRow line 74 · specs/consumers/design-slice.sdp.md:74
{ id, title, specKind, altitude, statedReadiness, floorReached, statedNextRung, holds, depth, restsOn, restedOnBy, exampleOf, exampleMembers, design, rules: { total, keyed }, examples: { total, enabled }, verifiers: { total, enabled }, implementedBy, referencedBy, components } in the scope's order, where holds lists the stated-next-rung failures as [{ clauseId, description, targets: [{ type, id, statedReadiness }] }], restsOn and restedOnBy are member ids, exampleOf is the member an example member refines or null, exampleMembers the folded example members, design is the design columns as { entries, declarations, openQuestions, blockingQuestions, decisions } counts, examples the verifying examples bound to the member wherever they sit, apart from exampleMembers, rules.total is the keyed and unkeyed rule and flow entries of the primary behavior owner, implementedBy and referencedBy are unit ids, and components the ids of the components those units belong to.

no citation recorded

memberSummary line 75 · specs/consumers/design-slice.sdp.md:75
{ id, specKind, statedReadiness, floorReached, statedNextRung, holds, depth, restsOn, exampleOf, design, rules, implementedBy, referencedBy } is a member's summary row, with holds as [{ clauseId, targets: [id] }], as Pack design's summary reads it, and implementedBy and referencedBy as counts.

no citation recorded

structureShape line 76 · specs/consumers/design-slice.sdp.md:76
{ edges: [{ from, to, type, orders, reason }], cycles: [{ members, cycle }], unresolved: [{ from, to, type, reason }] }, one edge per declared typed relation between two members, sorted by from, type and to, orders false only for a refines the target names back, and reason present only when the relation states one; cycles in the statement queue's cycle row; a summary drops each edge's reason; unresolved keeps unresolved outgoing typed targets apart from the resolved boundary, with no invented title or rung.

no citation recorded

boundaryRow line 77 · specs/consumers/design-slice.sdp.md:77
Pack design's boundary row { id, title, statedReadiness, implemented, via } with a via that has relation reasons also carrying reasons: [{ member, reason }] for those relations, and with specKind, floorReached, holds, the member ids whose stated-next-rung failures name it as a target, empty outside restsOn, and inPack: true on a Pack member left out of a narrowed slice, in { restsOn, restedOnBy, verifiedBy, supersededBy } sorted by id; a summary keeps { id, statedReadiness, holds } and inPack.
componentRow line 78 · specs/consumers/design-slice.sdp.md:78
{ id, label, layer, context, members: { satisfies, references }, restsOn, designs } sorted by id, one per touched anchored component, where members.satisfies and members.references are the members whose units belong to it by each binding, restsOn the outside Specs the slice rests on whose satisfying units belong to it, designs the member component designs naming it, and label, layer and context come from the architecture map's component row.

no citation recorded

componentSummary line 79 · specs/consumers/design-slice.sdp.md:79
{ id, layer, context, members: { satisfies, references }, restsOn, designs }, each list replaced by its count and label left out.

no citation recorded

designRow line 80 · specs/consumers/design-slice.sdp.md:80
{ spec, componentId, layer, context, role, uses, anchorExists, realized, differing, unreadable } sorted by spec, one per member component design, where the declared values are read as spec:model.planned-architecture#design.designKeys reads them, null when unstated or unreadable and uses an empty list for none, realized holds as spec:model.planned-architecture#design.realizedWhen says, differing lists the comparison's { field, planned, realized } rows for the design and unreadable its { key, value } rows; a summary keeps { spec, componentId, anchorExists, realized } and the two lists as counts.

no citation recorded

componentUse line 81 · specs/consumers/design-slice.sdp.md:81
{ from, to, count, outside, units } sorted by from and to, one per pair of components with an anchored uses between them and at least one end touched, where count is the architecture map's count of unit uses edges for the pair, units lists those edges as { from, to, claim } from the architecture map's usesEdges, and outside is true when one end is not touched; a summary drops units.

no citation recorded

plannedUse line 82 · specs/consumers/design-slice.sdp.md:82
{ design, from, to, outside } sorted by from, to and design, one per component a member design declares in uses other than its own, where from is the component the design names and outside is true when to is neither touched nor named by a member design.

no citation recorded

outsideRow line 83 · specs/consumers/design-slice.sdp.md:83
{ id, label, layer, context, anchored, reachedBy } sorted by id, where reachedBy lists, in this order, touchedUses when a touched component uses it, usesTouched when it uses a touched component, and plannedUse when a member design declares it, and anchored says whether an anchor holds it; a summary keeps { id, anchored, reachedBy }.

no citation recorded

architectureShape line 84 · specs/consumers/design-slice.sdp.md:84
{ components, designs, uses, plannedUses, outside, unplaced }, where unplaced lists { unit, member, via }, via being satisfies or references, for each unit of a member that belongs to no component.

no citation recorded

decisionRow line 85 · specs/consumers/design-slice.sdp.md:85
{ id, title, statedReadiness, floorReached, member, shapes, refines, supersedes, supersededBy, openQuestions, blockingQuestions } sorted by id, where shapes lists the members that name the decision through decidedBy and the next three lists come from its decision register row; a summary keeps { id, statedReadiness, member, shapes } with shapes as a count.

no citation recorded

questionRow line 86 · specs/consumers/design-slice.sdp.md:86
{ address, spec, origin, index, question, blocking, deferral, decider, links, provisional, trigger, holds } with the open-question register's fields, where origin is member, decision or restsOn, index the question's authored position from 0, address null without a key, and holds the members whose stated next rung its Spec holds when the question blocks, its own Spec first when that Spec is a member held by the floor's blocking-question clause, empty for a non-blocking question; rows sort blocking first, then by how many members they hold, then by Spec id and position; a summary keeps a non-blocking question as { address, spec, index }.

no citation recorded

Verification

Verifier bindings

  • spec:consumers.design-slice.chain · Members rest on a chain · declared · example enabled · specs/consumers/design-slice.chain.sdp.md

    External run evidence from test/self-hosting-design-slice.test.ts

    Test anchors: test:protocol.design-slice, test:protocol.design-slice.chain, test:protocol.design-slice.component-absent, test:protocol.design-slice.component-differing, test:protocol.design-slice.component-matching, test:protocol.design-slice.component-unreadable, test:protocol.design-slice.component-unrelated, test:protocol.design-slice.decision-backlink, test:protocol.design-slice.dependency-cycle, test:protocol.design-slice.folded-example, test:protocol.design-slice.independent-example, test:protocol.design-slice.outside-components, test:protocol.design-slice.outside-holding, test:protocol.design-slice.outside-satisfied, test:protocol.design-slice.outside-unbound. Specs verified by those bindings: spec:consumers.design-slice, spec:consumers.design-slice.chain, spec:consumers.design-slice.component-absent, spec:consumers.design-slice.component-differing, spec:consumers.design-slice.component-matching, spec:consumers.design-slice.component-unreadable, spec:consumers.design-slice.component-unrelated, spec:consumers.design-slice.decision-backlink, spec:consumers.design-slice.dependency-cycle, spec:consumers.design-slice.folded-example, spec:consumers.design-slice.independent-example, spec:consumers.design-slice.outside-components, spec:consumers.design-slice.outside-holding, spec:consumers.design-slice.outside-satisfied, spec:consumers.design-slice.outside-unbound.

    Run 1: external run evidence from vitest 4.1.10

    Build: CI 380 · Branch: feature/roadmap-and-slices-v0 · Commit: 34909918bf0be0e849959644401797191cae379f · Start: 2026-10-22T17:40:31.456Z · Stop: 2026-10-22T17:42:16.171Z

    NameSuiteResultDuration
    keeps authored order while assigning depth and composing whole-Pack boundarydesign slicepassed39.39 ms
    keeps summary totals, selected full members and explicit omissionsdesign slicepassed44.72 ms
    reads an ordered Spec list and a narrowed Pack, marking excluded Pack membersdesign slicepassed9.41 ms
    only suppresses a refinement the target answers with dependsOndesign slicepassed8.71 ms
    only suppresses a refinement the target answers with constrainedBydesign slicepassed8.55 ms
    only suppresses a refinement the target answers with decidedBydesign slicepassed8.75 ms
    lists cycles at the depth after their deepest outside prerequisitedesign slicepassed4.89 ms
    does not fold an example with another refines in either direction or across the boundarydesign slicepassed8.49 ms
    does not fold an example with another dependsOn in either direction or across the boundarydesign slicepassed8.5 ms
    does not fold an example with another constrainedBy in either direction or across the boundarydesign slicepassed10.23 ms
    does not fold an example with another decidedBy in either direction or across the boundarydesign slicepassed12.47 ms
    accumulates diagnostics in contract order and skips dependent checksdesign slicepassed37.58 ms
    pins the component Design grammar and totals to recipe 43design slicepassed35.05 ms
    executes the bound example against a fresh worldOutside components stop at the touched components' neighbors (spec:consumers.design-slice.outside-components)passed8 ms
    executes the bound example against a fresh worldMembers rest on a chain (spec:consumers.design-slice.chain)passed4.92 ms
    executes the bound example against a fresh worldA shaping decision comes before its member (spec:consumers.design-slice.decision-backlink)passed5.45 ms
    executes the bound example against a fresh worldA cycle shares a depth (spec:consumers.design-slice.dependency-cycle)passed5.25 ms
    executes the bound example against a fresh worldAn example folds without lending its readiness (spec:consumers.design-slice.folded-example)passed5.84 ms
    executes the bound example against a fresh worldAn example with its own dependency stays unfolded (spec:consumers.design-slice.independent-example)passed4.45 ms
    executes the bound example against a fresh worldAn unanchored component design stays visible (spec:consumers.design-slice.component-absent)passed5.03 ms
    executes the bound example against a fresh worldAn anchor alone does not realize a component design (spec:consumers.design-slice.component-unrelated)passed8.67 ms
    executes the bound example against a fresh worldA realized component matches its declared values (spec:consumers.design-slice.component-matching)passed5.56 ms
    executes the bound example against a fresh worldA realized component keeps its differing layer and uses apart (spec:consumers.design-slice.component-differing)passed8.95 ms
    executes the bound example against a fresh worldAn unreadable declared layer stays visible (spec:consumers.design-slice.component-unreadable)passed7.73 ms
    executes the bound example against a fresh worldA prerequisite reaches its satisfying component (spec:consumers.design-slice.outside-satisfied)passed5.09 ms
    executes the bound example against a fresh worldAn unbound prerequisite invents no component (spec:consumers.design-slice.outside-unbound)passed4.3 ms
    executes the bound example against a fresh worldAn outside prerequisite names the member it holds (spec:consumers.design-slice.outside-holding)passed11.09 ms
    keeps unresolved targets and boundary relation reasons in the recipe answerdesign slice compositionpassed4.71 ms
    keeps bindings to unresolved components unplaced rather than touching an invented componentdesign slice compositionpassed6.08 ms
    pins every full and summary row shape to the carrying Design entriesdesign slice compositionpassed49 ms
    reports outside holds, waiting statements, decision replacements and own-Spec question holdsdesign slice compositionpassed15.3 ms
    the executable order observation rejects rest on each other in a chain with setDepth[index] = 1;design slice compositionpassed6.85 ms
    the executable order observation rejects include a decision that refines the member it shapes with setDepth[index] = 1;design slice compositionpassed9.01 ms
    the executable order observation rejects include a decision that refines the member it shapes with edge.orders = true;design slice compositionpassed7 ms
    the executable assertions reject missing rest on each other in a chain evidence for scopedesign slice compositionpassed5.75 ms
    the executable assertions reject missing rest on each other in a chain evidence for memberColumnsdesign slice compositionpassed4.62 ms
    the executable assertions reject missing include a decision that refines the member it shapes evidence for decisionsInScopedesign slice compositionpassed5.86 ms
    the executable assertions reject missing include an example that refines a member and depends on an outside Spec evidence for boundarydesign slice compositionpassed4.84 ms
    the executable assertions reject missing include two members that depend on each other evidence for depthdesign slice compositionpassed6.08 ms
    counts only example-kind declared verifiers as examples, keeping all verifiersdesign slice compositionpassed6.92 ms
    names the hold detail and decision shape lists the summary omitsdesign slice compositionpassed3.75 ms
    summarizes component and design rows without losing totalsdesign slice compositionpassed8.77 ms
    keeps all binding paths, unplaced units, pair counts and planned uses apartdesign slice compositionpassed14.7 ms
    reads outside decisions and orders their questions before non-blocking member questionsdesign slice compositionpassed11.18 ms
    reads declared values with the realization comparison grammar: {"layer":"`domain` explanation","context":"``probe`` explanation","role":"service","uses":"`none` explanation"}design slice compositionpassed4.16 ms
    reads declared values with the realization comparison grammar: {"layer":"Domain","context":"Bad","role":"bad_role","uses":"component:probe.bad, invalid"}design slice compositionpassed6.17 ms
    reads declared values with the realization comparison grammar: {"uses":"component:probe.z, component:probe.a, component:probe.z"}design slice compositionpassed7.39 ms
    reads declared values with the realization comparison grammar: {}design slice compositionpassed6 ms
  • spec:consumers.design-slice.component-absent · An unanchored component design stays visible · declared · example enabled · specs/consumers/design-slice.component-absent.sdp.md
  • spec:consumers.design-slice.component-differing · A realized component keeps its differing layer and uses apart · declared · example enabled · specs/consumers/design-slice.component-differing.sdp.md
  • spec:consumers.design-slice.component-matching · A realized component matches its declared values · declared · example enabled · specs/consumers/design-slice.component-matching.sdp.md
  • spec:consumers.design-slice.component-unreadable · An unreadable declared layer stays visible · declared · example enabled · specs/consumers/design-slice.component-unreadable.sdp.md
  • spec:consumers.design-slice.component-unrelated · An anchor alone does not realize a component design · declared · example enabled · specs/consumers/design-slice.component-unrelated.sdp.md
  • spec:consumers.design-slice.decision-backlink · A shaping decision comes before its member · declared · example enabled · specs/consumers/design-slice.decision-backlink.sdp.md
  • spec:consumers.design-slice.dependency-cycle · A cycle shares a depth · declared · example enabled · specs/consumers/design-slice.dependency-cycle.sdp.md
  • spec:consumers.design-slice.folded-example · An example folds without lending its readiness · declared · example enabled · specs/consumers/design-slice.folded-example.sdp.md
  • spec:consumers.design-slice.independent-example · An example with its own dependency stays unfolded · declared · example enabled · specs/consumers/design-slice.independent-example.sdp.md
  • spec:consumers.design-slice.outside-components · Outside components stop at the touched components' neighbors · declared · example enabled · specs/consumers/design-slice.outside-components.sdp.md
  • spec:consumers.design-slice.outside-holding · An outside prerequisite names the member it holds · declared · example enabled · specs/consumers/design-slice.outside-holding.sdp.md
  • spec:consumers.design-slice.outside-satisfied · A prerequisite reaches its satisfying component · declared · example enabled · specs/consumers/design-slice.outside-satisfied.sdp.md
  • spec:consumers.design-slice.outside-unbound · An unbound prerequisite invents no component · declared · example enabled · specs/consumers/design-slice.outside-unbound.sdp.md
  • test:protocol.design-slice · anchored · test anchor binding present · test/self-hosting-design-slice.test.ts:155

Example space

  • structure · "rest on each other in a chain" | "include a decision that refines the member it shapes" | "include two members that depend on each other" | "include an example that refines a member" | "include an example that refines a member and depends on an outside Spec" · declared by a probe Pack whose members {structure}
  • outside · "that a component's unit satisfies" | "that no code satisfies" | "stated below defined" · declared by one member depends on an outside Spec {outside}
  • anchor · "no anchor holds" | "an anchor holds without satisfying the design" | "an anchor satisfies, matching every declared value" | "an anchor satisfies, with a differing layer and uses" | "an anchor satisfies, with an unreadable layer" · declared by one member is a component design whose component {anchor}

Bound points

Examplestructureoutsideanchor
spec:consumers.design-slice.chain"rest on each other in a chain""that no code satisfies""an anchor satisfies, matching every declared value"
spec:consumers.design-slice.component-absent"rest on each other in a chain""that a component's unit satisfies""no anchor holds"
spec:consumers.design-slice.component-differing"rest on each other in a chain""that a component's unit satisfies""an anchor satisfies, with a differing layer and uses"
spec:consumers.design-slice.component-matching"rest on each other in a chain""that a component's unit satisfies""an anchor satisfies, matching every declared value"
spec:consumers.design-slice.component-unreadable"rest on each other in a chain""that a component's unit satisfies""an anchor satisfies, with an unreadable layer"
spec:consumers.design-slice.component-unrelated"rest on each other in a chain""that a component's unit satisfies""an anchor holds without satisfying the design"
spec:consumers.design-slice.decision-backlink"include a decision that refines the member it shapes""that no code satisfies""an anchor satisfies, matching every declared value"
spec:consumers.design-slice.dependency-cycle"include two members that depend on each other""that no code satisfies""an anchor satisfies, matching every declared value"
spec:consumers.design-slice.folded-example"include an example that refines a member""that no code satisfies""an anchor satisfies, matching every declared value"
spec:consumers.design-slice.independent-example"include an example that refines a member and depends on an outside Spec""that no code satisfies""an anchor satisfies, matching every declared value"
spec:consumers.design-slice.outside-components"include a decision that refines the member it shapes""that a component's unit satisfies""an anchor satisfies, matching every declared value"
spec:consumers.design-slice.outside-holding"include a decision that refines the member it shapes""stated below defined""an anchor holds without satisfying the design"
spec:consumers.design-slice.outside-satisfied"include a decision that refines the member it shapes""that a component's unit satisfies""an anchor holds without satisfying the design"
spec:consumers.design-slice.outside-unbound"include a decision that refines the member it shapes""that no code satisfies""an anchor holds without satisfying the design"

Oracle binding: present · oracle:protocol.design-slice · test/self-hosting-design-slice.test.ts:549

Coverage

Unbound

  • structure: None
  • outside: None
  • anchor: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.design-slice

Scroll horizontally to read the whole drawing.

Requirement drawing for spec:consumers.design-slicerefines, verifies · declaredsatisfies · anchoredreferences · anchoredsatisfies · anchoredmodels · anchoredrefines · declaredrefines · declaredrefines · declaredverifies · anchoredverifies · anchoredIntended Specsspec:consumers.design-sliceA slice reads a Pack as onedesign, with thearchitecture it touches andwhat each member needs next…consumers.design-slicedeclared Specspec:consumers.spec-studio.slice-pageA slice page shows a Pack'sdesign as one whole…consumers.spec-studio.slice-pagedeclared SpecDeclared verifying examples14 verifying examples · declared; 14 test bindings · anchored, folded14 verifying examples ·declared14 test bindings · anchored ·foldedSatisfying or referencingunitsimpl:protocol.design-slice-reciperealizes the design slicein the shipped recipecatalog…protocol.design-slice-recipeanchored codeimpl:protocol.studio-slice-answerfull design slice answerconsumed by the page anddrawings…protocol.studio-slice-answeranchored codeimpl:protocol.studio-slice-pagedesign slice summaries,member needs, architecturecomparisons and boundarytablesimpl:protocol.studio-slice-pageanchored codeTest or oracle bindingsoracle:protocol.design-sliceoracle:protocol.design-sliceoracle:protocol.design-sliceanchored oracle bindingtest:protocol.design-slicetest:protocol.design-slicetest:protocol.design-sliceanchored test binding ·binding presenttest:protocol.studio-slice-pagetest:protocol.studio-slice-pagetest:protocol.studio-slice-pageanchored test binding ·binding presentOutside the selected setspec:consumers.pack-designThe Pack context carriesthe Pack's design…consumers.pack-designdeclared Specspec:consumers.spec-studioThe Spec Studio is a staticHTML workbench over the onegraph…consumers.spec-studiodeclared Spec
The diagram as text
  • spec:consumers.design-slice: A slice reads a Pack as one design, with the architecture it touches and what each member needs next · declared Spec
  • spec:consumers.design-slice.chain: Members rest on a chain · declared Spec
  • spec:consumers.design-slice.component-absent: An unanchored component design stays visible · declared Spec
  • spec:consumers.design-slice.component-differing: A realized component keeps its differing layer and uses apart · declared Spec
  • spec:consumers.design-slice.component-matching: A realized component matches its declared values · declared Spec
  • spec:consumers.design-slice.component-unreadable: An unreadable declared layer stays visible · declared Spec
  • spec:consumers.design-slice.component-unrelated: An anchor alone does not realize a component design · declared Spec
  • spec:consumers.design-slice.decision-backlink: A shaping decision comes before its member · declared Spec
  • spec:consumers.design-slice.dependency-cycle: A cycle shares a depth · declared Spec
  • spec:consumers.design-slice.folded-example: An example folds without lending its readiness · declared Spec
  • spec:consumers.design-slice.independent-example: An example with its own dependency stays unfolded · declared Spec
  • spec:consumers.design-slice.outside-components: Outside components stop at the touched components' neighbors · declared Spec
  • spec:consumers.design-slice.outside-holding: An outside prerequisite names the member it holds · declared Spec
  • spec:consumers.design-slice.outside-satisfied: A prerequisite reaches its satisfying component · declared Spec
  • spec:consumers.design-slice.outside-unbound: An unbound prerequisite invents no component · declared Spec
  • spec:consumers.spec-studio.slice-page: A slice page shows a Pack's design as one whole · declared Spec
  • spec:consumers.pack-design: The Pack context carries the Pack's design · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.design-slice-recipe: realizes the design slice in the shipped recipe catalog · anchored code · test/self-hosting-design-slice.test.ts:148
  • impl:protocol.studio-slice-answer: full design slice answer consumed by the page and drawings · anchored code · src/projections/studio/slice-answer.ts:1
  • impl:protocol.studio-slice-page: design slice summaries, member needs, architecture comparisons and boundary tables · anchored code · src/projections/studio/pages/slice-page.ts:25
  • oracle:protocol.design-slice: oracle:protocol.design-slice · anchored oracle binding · test/self-hosting-design-slice.test.ts:549
  • test:protocol.design-slice: test:protocol.design-slice · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:155
  • test:protocol.design-slice.chain: test:protocol.design-slice.chain · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:768
  • test:protocol.design-slice.component-absent: test:protocol.design-slice.component-absent · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:798
  • test:protocol.design-slice.component-differing: test:protocol.design-slice.component-differing · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:816
  • test:protocol.design-slice.component-matching: test:protocol.design-slice.component-matching · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:810
  • test:protocol.design-slice.component-unreadable: test:protocol.design-slice.component-unreadable · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:822
  • test:protocol.design-slice.component-unrelated: test:protocol.design-slice.component-unrelated · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:804
  • test:protocol.design-slice.decision-backlink: test:protocol.design-slice.decision-backlink · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:774
  • test:protocol.design-slice.dependency-cycle: test:protocol.design-slice.dependency-cycle · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:780
  • test:protocol.design-slice.folded-example: test:protocol.design-slice.folded-example · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:786
  • test:protocol.design-slice.independent-example: test:protocol.design-slice.independent-example · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:792
  • test:protocol.design-slice.outside-components: test:protocol.design-slice.outside-components · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:762
  • test:protocol.design-slice.outside-holding: test:protocol.design-slice.outside-holding · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:840
  • test:protocol.design-slice.outside-satisfied: test:protocol.design-slice.outside-satisfied · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:828
  • test:protocol.design-slice.outside-unbound: test:protocol.design-slice.outside-unbound · anchored test binding · binding present · test/self-hosting-design-slice.test.ts:834
  • test:protocol.studio-slice-page: test:protocol.studio-slice-page · anchored test binding · binding present · test/studio-slice.test.ts:132
  • spec:consumers.design-slice refines spec:consumers.pack-design · declared — a slice reads a Pack's design as one whole, with its architecture and open decisions beside it
  • spec:consumers.design-slice.chain refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.chain verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-absent refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-absent verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-differing refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-differing verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-matching refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-matching verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-unreadable refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-unreadable verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-unrelated refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-unrelated verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.decision-backlink refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.decision-backlink verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.dependency-cycle refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.dependency-cycle verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.folded-example refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.folded-example verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.independent-example refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.independent-example verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-components refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-components verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-holding refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-holding verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-satisfied refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-satisfied verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-unbound refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-unbound verifies spec:consumers.design-slice · declared
  • spec:consumers.spec-studio.slice-page refines spec:consumers.design-slice · declared — the page is the design slice's reading for a person
  • spec:consumers.spec-studio.slice-page refines spec:consumers.spec-studio · declared
  • impl:protocol.design-slice-recipe satisfies spec:consumers.design-slice · anchored
  • impl:protocol.studio-slice-answer references spec:consumers.design-slice · anchored
  • impl:protocol.studio-slice-page satisfies spec:consumers.spec-studio.slice-page · anchored
  • oracle:protocol.design-slice models spec:consumers.design-slice · anchored
  • test:protocol.design-slice verifies spec:consumers.design-slice · anchored
  • test:protocol.design-slice.chain verifies spec:consumers.design-slice.chain · anchored
  • test:protocol.design-slice.component-absent verifies spec:consumers.design-slice.component-absent · anchored
  • test:protocol.design-slice.component-differing verifies spec:consumers.design-slice.component-differing · anchored
  • test:protocol.design-slice.component-matching verifies spec:consumers.design-slice.component-matching · anchored
  • test:protocol.design-slice.component-unreadable verifies spec:consumers.design-slice.component-unreadable · anchored
  • test:protocol.design-slice.component-unrelated verifies spec:consumers.design-slice.component-unrelated · anchored
  • test:protocol.design-slice.decision-backlink verifies spec:consumers.design-slice.decision-backlink · anchored
  • test:protocol.design-slice.dependency-cycle verifies spec:consumers.design-slice.dependency-cycle · anchored
  • test:protocol.design-slice.folded-example verifies spec:consumers.design-slice.folded-example · anchored
  • test:protocol.design-slice.independent-example verifies spec:consumers.design-slice.independent-example · anchored
  • test:protocol.design-slice.outside-components verifies spec:consumers.design-slice.outside-components · anchored
  • test:protocol.design-slice.outside-holding verifies spec:consumers.design-slice.outside-holding · anchored
  • test:protocol.design-slice.outside-satisfied verifies spec:consumers.design-slice.outside-satisfied · anchored
  • test:protocol.design-slice.outside-unbound verifies spec:consumers.design-slice.outside-unbound · anchored
  • test:protocol.studio-slice-page verifies spec:consumers.spec-studio.slice-page · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, references, folds require exact labels unavailable in requirement syntax.

Decisions

  • Bindings are optional, plural, and may reference a design

    On a code anchor, satisfies is optional and plural; on a test anchor, verifies is plural and non-empty. The constant form accepts one ref(…) or a fresh array literal of them. Each resolving target confers its fact, and implemented stays a whole-Spec fact. An anchored edge references runs from a CodeNode to a Spec, from references?: readonly SpecId[] on a code anchor; it may target any Spec, decisions included, confers no delivery fact, moves no readiness floor, and the drift alarm ignores it. It says this code answers to that design without claiming to realize it: the unit follows the design without realizing any of its promises, or realizes part of a Spec whose remaining promises no unit yet realizes, so a change to the design asks the code to follow. A design that builds on existing code states that by a typed relation to the Spec the code satisfies, never by a reference from the code. A target named in both satisfies and references is an error. An identity-only code anchor, with no satisfies and no references, is lawful: it mints a CodeNode for structure and for byFile, and nothing else.

  • Architectural significance is annotated where it is realized

    Architectural significance is annotated on the anchor of the unit that realizes it. A code anchor may carry role, the architectural pattern the unit plays; a component: anchor may additionally carry layer, one of edge, application, domain, adapter, or infrastructure, and context, its bounded context. The component: anchor is anchored architecture: it is the declared component, and there is no separate architecture file, because the anchor sits where the component is realized. It is not the original design's declared Component that could exist before code; an unrealized component lives in Specs and never as an invented CodeNode. A role is a free, corpus-owned vocabulary whose taxonomy the census renders with counts from the graph; service, decider, projection, read-model, codec, contract, barrel, and utility are the lineage set, not a closed list. layer is a closed set, and a value outside it is an envelope error; layer or context on a non-component anchor is an envelope error. All three attributes are optional, and omission is lawful.

Runtime
  • impl:protocol.design-slice-recipe · realizes the design slice in the shipped recipe catalog · test/self-hosting-design-slice.test.ts:148

    Uses

    None.

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.design-slice
The diagram as text
  • spec:consumers.agent-surface.design-recipes: Design work reads its answers from catalog recipes
  • spec:consumers.context-bundle: A context bundle is composed per invocation within a stated budget
  • spec:consumers.design-slice: A slice reads a Pack as one design, with the architecture it touches and what each member needs next
  • spec:consumers.design-slice.chain: Members rest on a chain
  • spec:consumers.design-slice.component-absent: An unanchored component design stays visible
  • spec:consumers.design-slice.component-differing: A realized component keeps its differing layer and uses apart
  • spec:consumers.design-slice.component-matching: A realized component matches its declared values
  • spec:consumers.design-slice.component-unreadable: An unreadable declared layer stays visible
  • spec:consumers.design-slice.component-unrelated: An anchor alone does not realize a component design
  • spec:consumers.design-slice.decision-backlink: A shaping decision comes before its member
  • spec:consumers.design-slice.dependency-cycle: A cycle shares a depth
  • spec:consumers.design-slice.folded-example: An example folds without lending its readiness
  • spec:consumers.design-slice.independent-example: An example with its own dependency stays unfolded
  • spec:consumers.design-slice.outside-components: Outside components stop at the touched components' neighbors
  • spec:consumers.design-slice.outside-holding: An outside prerequisite names the member it holds
  • spec:consumers.design-slice.outside-satisfied: A prerequisite reaches its satisfying component
  • spec:consumers.design-slice.outside-unbound: An unbound prerequisite invents no component
  • spec:consumers.pack-design: The Pack context carries the Pack's design
  • spec:consumers.readiness-planner: The readiness planner orders the statements a person can make
  • spec:consumers.review-perspectives: A Pack is read from a named perspective
  • spec:consumers.spec-studio.diagram-kinds.dependency: A dependency drawing shows the declared footing of a Spec set
  • spec:consumers.spec-studio.diagram-kinds.scoped-architecture: A Spec set draws the architecture it touches
  • spec:consumers.spec-studio.slice-page: A slice page shows a Pack's design as one whole
  • spec:decisions.anchor-binding-grain: Bindings are optional, plural, and may reference a design
  • spec:decisions.architectural-annotation: Architectural significance is annotated where it is realized
  • spec:model.open-question-fields: An open question may name who decides it, its links, a provisional reading and a re-entry trigger
  • spec:model.planned-architecture: Components are designed ahead of their code
  • spec:model.rule-keys: A rule or flow entry may carry a key that addresses it
  • spec:consumers.design-slice decidedBy spec:decisions.anchor-binding-grain · declared — the code a design builds on is reached through the design's own relations, never through a reference from that code
  • spec:consumers.design-slice decidedBy spec:decisions.architectural-annotation · declared — a touched component carries the layer and context its anchor states
  • spec:consumers.design-slice dependsOn spec:consumers.agent-surface.design-recipes · declared — decisions in scope read the decision register's rows
  • spec:consumers.design-slice dependsOn spec:consumers.context-bundle · declared — a slice takes its scope as the bundle does, and builds a Spec list's boundary the same way
  • spec:consumers.design-slice dependsOn spec:consumers.readiness-planner · declared — members rest on each other as the statement queue reads the four typed relations, and a cycle reports in its shape
  • spec:consumers.design-slice dependsOn spec:consumers.review-perspectives · declared — a slice read for one concern takes the members a perspective selects
  • spec:consumers.design-slice dependsOn spec:model.open-question-fields · declared — each question in scope carries its fields
  • spec:consumers.design-slice dependsOn spec:model.planned-architecture · declared — planned components and differing designs come from the realization comparison
  • spec:consumers.design-slice dependsOn spec:model.rule-keys · declared — each member's rule count is the count rule coverage reports
  • spec:consumers.design-slice refines spec:consumers.pack-design · declared — a slice reads a Pack's design as one whole, with its architecture and open decisions beside it
  • spec:consumers.spec-studio.diagram-kinds.dependency dependsOn spec:consumers.design-slice · declared
  • spec:consumers.spec-studio.diagram-kinds.scoped-architecture dependsOn spec:consumers.design-slice · declared
  • spec:consumers.spec-studio.slice-page dependsOn spec:consumers.design-slice · declared — the page renders the slice's answer
  • spec:consumers.design-slice.chain refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-absent refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-differing refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-matching refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-unreadable refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-unrelated refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.decision-backlink refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.dependency-cycle refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.folded-example refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.independent-example refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-components refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-holding refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-satisfied refines spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-unbound refines spec:consumers.design-slice · declared
  • spec:consumers.spec-studio.slice-page refines spec:consumers.design-slice · declared — the page is the design slice's reading for a person
  • spec:consumers.design-slice.chain verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-absent verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-differing verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-matching verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-unreadable verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.component-unrelated verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.decision-backlink verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.dependency-cycle verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.folded-example verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.independent-example verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-components verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-holding verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-satisfied verifies spec:consumers.design-slice · declared
  • spec:consumers.design-slice.outside-unbound verifies spec:consumers.design-slice · 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

Distance 1

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingBindings are optional, plural, and may reference a design
spec:decisions.anchor-binding-grain · resolves
declaredthe code a design builds on is reached through the design's own relations, never through a reference from that codeNone
decidedBy · outgoingArchitectural significance is annotated where it is realized
spec:decisions.architectural-annotation · resolves
declareda touched component carries the layer and context its anchor statesNone
dependsOn · outgoingDesign work reads its answers from catalog recipes
spec:consumers.agent-surface.design-recipes · resolves
declareddecisions in scope read the decision register's rowsNone
dependsOn · outgoingA context bundle is composed per invocation within a stated budget
spec:consumers.context-bundle · resolves
declareda slice takes its scope as the bundle does, and builds a Spec list's boundary the same wayNone
dependsOn · outgoingThe readiness planner orders the statements a person can make
spec:consumers.readiness-planner · resolves
declaredmembers rest on each other as the statement queue reads the four typed relations, and a cycle reports in its shapeNone
dependsOn · outgoingA Pack is read from a named perspective
spec:consumers.review-perspectives · resolves
declareda slice read for one concern takes the members a perspective selectsNone
dependsOn · outgoingAn open question may name who decides it, its links, a provisional reading and a re-entry trigger
spec:model.open-question-fields · resolves
declaredeach question in scope carries its fieldsNone
dependsOn · outgoingComponents are designed ahead of their code
spec:model.planned-architecture · resolves
declaredplanned components and differing designs come from the realization comparisonNone
dependsOn · outgoingA rule or flow entry may carry a key that addresses it
spec:model.rule-keys · resolves
declaredeach member's rule count is the count rule coverage reportsNone
refines · outgoingThe Pack context carries the Pack's design
spec:consumers.pack-design · resolves
declareda slice reads a Pack's design as one whole, with its architecture and open decisions beside itNone
dependsOn · incomingA dependency drawing shows the declared footing of a Spec set
spec:consumers.spec-studio.diagram-kinds.dependency · resolves
declaredNoneNone
dependsOn · incomingA Spec set draws the architecture it touches
spec:consumers.spec-studio.diagram-kinds.scoped-architecture · resolves
declaredNoneNone
dependsOn · incomingA slice page shows a Pack's design as one whole
spec:consumers.spec-studio.slice-page · resolves
declaredthe page renders the slice's answerNone
refines · incomingMembers rest on a chain
spec:consumers.design-slice.chain · resolves
declaredNoneNone
refines · incomingAn unanchored component design stays visible
spec:consumers.design-slice.component-absent · resolves
declaredNoneNone
refines · incomingA realized component keeps its differing layer and uses apart
spec:consumers.design-slice.component-differing · resolves
declaredNoneNone
refines · incomingA realized component matches its declared values
spec:consumers.design-slice.component-matching · resolves
declaredNoneNone
refines · incomingAn unreadable declared layer stays visible
spec:consumers.design-slice.component-unreadable · resolves
declaredNoneNone
refines · incomingAn anchor alone does not realize a component design
spec:consumers.design-slice.component-unrelated · resolves
declaredNoneNone
refines · incomingA shaping decision comes before its member
spec:consumers.design-slice.decision-backlink · resolves
declaredNoneNone
refines · incomingA cycle shares a depth
spec:consumers.design-slice.dependency-cycle · resolves
declaredNoneNone
refines · incomingAn example folds without lending its readiness
spec:consumers.design-slice.folded-example · resolves
declaredNoneNone
refines · incomingAn example with its own dependency stays unfolded
spec:consumers.design-slice.independent-example · resolves
declaredNoneNone
refines · incomingOutside components stop at the touched components' neighbors
spec:consumers.design-slice.outside-components · resolves
declaredNoneNone
refines · incomingAn outside prerequisite names the member it holds
spec:consumers.design-slice.outside-holding · resolves
declaredNoneNone
refines · incomingA prerequisite reaches its satisfying component
spec:consumers.design-slice.outside-satisfied · resolves
declaredNoneNone
refines · incomingAn unbound prerequisite invents no component
spec:consumers.design-slice.outside-unbound · resolves
declaredNoneNone
refines · incomingA slice page shows a Pack's design as one whole
spec:consumers.spec-studio.slice-page · resolves
declaredthe page is the design slice's reading for a personNone
verifies · incomingMembers rest on a chain
spec:consumers.design-slice.chain · resolves
declaredNonedepth, scope, memberColumns
verifies · incomingAn unanchored component design stays visible
spec:consumers.design-slice.component-absent · resolves
declaredNonecomponentDesigns, touchedComponents, touchedUses, outsideNeighbors
verifies · incomingA realized component keeps its differing layer and uses apart
spec:consumers.design-slice.component-differing · resolves
declaredNonecomponentDesigns, touchedComponents, touchedUses, outsideNeighbors
verifies · incomingA realized component matches its declared values
spec:consumers.design-slice.component-matching · resolves
declaredNonecomponentDesigns, touchedComponents, touchedUses, outsideNeighbors
verifies · incomingAn unreadable declared layer stays visible
spec:consumers.design-slice.component-unreadable · resolves
declaredNonecomponentDesigns, touchedComponents, touchedUses, outsideNeighbors
verifies · incomingAn anchor alone does not realize a component design
spec:consumers.design-slice.component-unrelated · resolves
declaredNonecomponentDesigns, touchedComponents, touchedUses, outsideNeighbors
verifies · incomingA shaping decision comes before its member
spec:consumers.design-slice.decision-backlink · resolves
declaredNonerestsOn, depth, decisionsInScope
verifies · incomingA cycle shares a depth
spec:consumers.design-slice.dependency-cycle · resolves
declaredNonedepth, orderAdvisory
verifies · incomingAn example folds without lending its readiness
spec:consumers.design-slice.folded-example · resolves
declaredNoneexamplesFold, memberColumns
verifies · incomingAn example with its own dependency stays unfolded
spec:consumers.design-slice.independent-example · resolves
declaredNoneexamplesFold, boundary
verifies · incomingOutside components stop at the touched components' neighbors
spec:consumers.design-slice.outside-components · resolves
declaredNoneoutsideNeighbors
verifies · incomingAn outside prerequisite names the member it holds
spec:consumers.design-slice.outside-holding · resolves
declaredNoneboundary, questionsInScope
verifies · incomingA prerequisite reaches its satisfying component
spec:consumers.design-slice.outside-satisfied · resolves
declaredNonetouchedComponents, outsideNeighbors, notDownstream
verifies · incomingAn unbound prerequisite invents no component
spec:consumers.design-slice.outside-unbound · resolves
declaredNonetouchedComponents, graphOnly

Bindings

Implementation binding: present

  • impl:protocol.design-slice-recipe · realizes the design slice in the shipped recipe catalog · test/self-hosting-design-slice.test.ts:148 · role projection

Design reference: present

  • impl:protocol.studio-slice-answer · full design slice answer consumed by the page and drawings · src/projections/studio/slice-answer.ts:1 · role contract · component component:protocol.projections · layer edge · context protocol

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.design-slice · test/self-hosting-design-slice.test.ts:549

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

Composing (0)

Composing needs the script.