actorThe capability map reads every epic and its refinement descendants
spec:consumers.capability-mapNew 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: 10 design entries · 4 pinned declarations · 1 decision
Findings: no errors, no warnings
specs/consumers/capability-map.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
The map answers what a corpus intends to do before a reader chooses a Pack. Refinement can skip an altitude, repeat an altitude, or give a Spec several parents. The map keeps that structure. An epic's descendants are a set of Specs, not a measure of completion.
Intent
- A person or agent choosing which capability's design to read.
problem- An altitude filter gives a flat list and Pack membership does not explain refinement.
outcome- Read every epic with its refinement descendants, its design maturity and direct binding evidence, and expose every Spec no epic reaches.
Behavior
rule.graphOnlyline 29 ·specs/consumers/capability-map.sdp.md:29- The map follows only declared
refinesedges between resolving Specs, from parent to child for reading. It reads every kind at every altitude, preserves intermediate Specs, and derives no parent from a title, path, Pack, dependency or binding.no example exercises it
rule.epicsline 30 ·specs/consumers/capability-map.sdp.md:30- Every Spec at epic altitude is an entry, whatever its kind. An epic may itself refine another epic; both remain selectable, and a parent's descendant set includes the nested epic and its descendants.
no example exercises it
rule.nodeEvidenceline 31 ·specs/consumers/capability-map.sdp.md:31- Each Spec carries its own stated readiness, structural floor reached, delivery facts, and open questions with their blocking flags. A missing floor reads
none. No value propagates from a child to its parent.no example exercises it
rule.multipleParentsline 32 ·specs/consumers/capability-map.sdp.md:32- Every refining parent remains in the answer; a Spec appears once in nodes with all its parents, and a page decides where it expands.
no example exercises it
rule.rollupline 33 ·specs/consumers/capability-map.sdp.md:33- An epic's rollup counts distinct descendants, excluding the epic itself, by stated rung, floor reached, kind and altitude; it counts those with implementation bindings and those with verifier bindings separately. Open and blocking question totals count the questions on those distinct descendants. Rollups for overlapping epics are never added to form a corpus total.
no example exercises it
rule.examplesAndDecisionsline 34 ·specs/consumers/capability-map.sdp.md:34- Examples and decisions participate in reach, counts and edges like every other kind. The page may fold them into labelled disclosures, but exposes their rows and any descendants they parent. A verifier count means a binding exists, never that a test passed; the map states no percent complete, inherited fact or work order.
no example exercises it
rule.unreachedline 35 ·specs/consumers/capability-map.sdp.md:35- A Spec is unreached when no epic reaches it, counting an epic as reaching itself. The answer lists every unreached id, including examples and decisions, and groups the unreached subgraph by its roots. A branch that is also reached remains outside that subgraph, with its cross-edge retained in the full answer.
no example exercises it
rule.damagedGraphline 36 ·specs/consumers/capability-map.sdp.md:36- Unresolved or non-Spec refinement endpoints are reported in damage and excluded from traversal. Cyclic refinement is reported as sorted groups whose members all reach one another, including self-links. Traversal visits each id once per root. The map displays the damage without inventing ancestry or withholding the rest.
no example exercises it
rule.scopeline 37 ·specs/consumers/capability-map.sdp.md:37- With an epic selected, the answer contains that epic and its distinct descendants. Node parent and epic memberships still name their full-corpus memberships so narrowing never claims exclusive ownership. Without an epic the answer includes every Spec, including an empty corpus or a corpus with no epics.
no example exercises it
0 unkeyed rules.
Design
mapRecipeline 41 ·specs/consumers/capability-map.sdp.md:41- recipe 52 takes optional
params.epic, a resolving epic Spec id, andparams.detail, a boolean. Omitted epic means the whole corpus. An unknown parameter returns{ unknownParams, accepts: ["epic", "detail"] }; a wrong type, absent id or non-epic returns{ diagnostics: [{ parameter, problem }] }without a map, namingepicordetailas appropriate. There is no sample epic and no filtering by kind. mapAnswerline 42 ·specs/consumers/capability-map.sdp.md:42- the full answer is
{ input: { epic }, totals, nodes, edges, epics, unreached: { ids, roots }, cycles, damage };epicis the selected id or null. The selected node set defines all totals; unselected nodes are never counted. Full-corpus memberships on a selected node are context, not extra selected nodes. mapDetailline 43 ·specs/consumers/capability-map.sdp.md:43- recipe 52 reads
params.detail, absent orfalsefor the summary andtruefor the full answer; the summary keepsinput,totals,epicsas{ id, title, parentEpicIds, rollup },unreached.ids,cyclesanddamage, and addsleftOut, one line for each omitted field.detail: trueaddsnodes,edges, each epic'sdescendantIdsandunreached.roots, and omitsleftOut. nodeRowline 44 ·specs/consumers/capability-map.sdp.md:44{ id, title, specKind, altitude, statedReadiness, floorReached, deliveryFacts, questions, parents, children, epicIds }; parents and children are all resolving direct refinement neighbors in the corpus, and epicIds lists all epics that reach this node, including itself when epic. Questions preserve authored order as{ index, address, question, blocking }, with a keyed question's entry address or null.no citation recorded
edgeRowline 45 ·specs/consumers/capability-map.sdp.md:45{ from, to, claim: "declared", reason }, child to parent, for each resolving refinement whose ends are selected. An absent reason is null. Other relation types never enter this list.no citation recorded
epicRowline 46 ·specs/consumers/capability-map.sdp.md:46{ id, title, parentEpicIds, descendantIds, rollup }for every selected epic, with its distinct descendants in the selected set.parentEpicIdslists resolving direct refinement parents at epic altitude in the full corpus, in id order. Selection by one epic includes every descendant of a nested epic, so its rollup stays complete.no citation recorded
countShapeline 47 ·specs/consumers/capability-map.sdp.md:47- totals and each rollup carry
{ specs, byStatedReadiness, byFloorReached, byKind, byAltitude, withImplementationBinding, withVerifierBinding, openQuestions, blockingQuestions }; every descriptor value has a key including zero, floor counts addnone, and totals additionally carry{ epics, reached, unreached }. Reached and unreached partition selected nodes, using their full-corpus epic membership. The epic's own evidence stays on its node row, outside its rollup. unreachedRootsline 48 ·specs/consumers/capability-map.sdp.md:48- a root is an unreached Spec with no unreached parent; a group of unreached Specs that refine one another in a cycle, with no unreached parent outside the group, uses its smallest id as its root. Reach may overlap between roots; unreached.ids stays unique and complete. In an epic selection both lists are empty.
graphDamageline 49 ·specs/consumers/capability-map.sdp.md:49damagelists{ code: "unresolved-refinement", from, to }for a missing or non-Spec endpoint touching the selected scope, or every such edge in whole-corpus scope. Cycles are separate{ members }rows for cyclic groups in the selected graph, members sorted by id; they are graph damage, not parameter failures or a new validator.no citation recorded
stableOrderline 50 ·specs/consumers/capability-map.sdp.md:50- ids, nodes, epic rows, descendant ids, memberships and unreached roots use code-unit id order; edges and damage sort by from then to; cycles sort by first member. Question order stays authored. The answer has no clock, recorded work order or mutable state.
Verification · reviewed
criteria- A diamond retains both parent edges, lists the shared child once in nodes, and counts it once in that epic's descendants.
- A corpus with no epics still exposes every Spec; a cyclic unreached component has a root and finite traversal.
- An epic with a bound example and a ratified decision counts both descendants while retaining its own empty delivery facts.
- Summary and full answers have identical totals, epic rollups, cycles and damage; the summary names every omitted field.
- An epic selection includes its whole reachable set and no unrelated roots; invalid parameters return diagnostics without a plausible empty map.
mode- reviewed
Verification
Verifier bindings
- test:protocol.capability-map · anchored · test anchor binding present ·
test/recipes.test.ts:7610External run evidence from
test/recipes.test.tsTest anchors:
test:protocol.address-and-cycle-recipes,test:protocol.answer-shape-recipes,test:protocol.authoring-grammar-recipes,test:protocol.authoring-recipes,test:protocol.capability-epics,test:protocol.capability-map,test:protocol.design-recipes,test:protocol.recipe-parameters,test:protocol.register-recipes. Specs verified by those bindings: spec:consumers.agent-surface.address-and-cycle-recipes, spec:consumers.agent-surface.answer-shapes, spec:consumers.agent-surface.authoring-recipes, spec:consumers.agent-surface.design-recipes, spec:consumers.agent-surface.recipe-parameters, spec:consumers.agent-surface.register-recipes, spec:consumers.capability-map, spec:extraction.contract-declarations, spec:model.open-question-fields, spec:model.relation-reasons, spec:model.rule-keys, spec:protocol.capability-epics.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
Name Suite Result Duration cites each recipe that a Spec names by number and heading under the catalog's number the agent-surface recipe corpus passed 213.54 ms pairs every documented recipe with exactly one fenced body the agent-surface recipe corpus passed 0.81 ms keeps self-hosting and adopter invocation forms distinct the agent-surface recipe corpus passed 4.35 ms teaches parameters as data and keeps the on-ramps naming the CLI verbs and recipes the agent-surface recipe corpus passed 3.84 ms keeps every body plain JavaScript with a return the agent-surface recipe corpus passed 5.18 ms runs every body through the front door without throwing the agent-surface recipe corpus passed 4864.59 ms returns the non-example build backlog and audits excluded example evidence the agent-surface recipe corpus passed 74.13 ms returns a drift alarm of code-bound specs below ready, with the floor named the agent-surface recipe corpus passed 63.42 ms returns one spec's guarantees with its relations and verifier bindings the agent-surface recipe corpus passed 26.84 ms keeps hostile changed filenames as inert JSON data the agent-surface recipe corpus passed 40.2 ms returns the complete diff-to-at-risk bridge the agent-surface recipe corpus passed 52.87 ms names a changed identity-only unit as unlinked, never coverage-unknown or dropped the agent-surface recipe corpus passed 74.55 ms returns a pack's review backbone with its verifier gaps the agent-surface recipe corpus passed 53.36 ms returns concept matches carrying the fields that matched the agent-surface recipe corpus passed 97.83 ms returns readiness divergence as an array, where empty is lawful the agent-surface recipe corpus passed 128.59 ms returns the warn-level signals as data rather than as a gate the agent-surface recipe corpus passed 73.52 ms returns promotion preflight without conferring a readiness edit the agent-surface recipe corpus passed 32.89 ms names the next rung's unmet clause and the dependency that breaks it on a probe the agent-surface recipe corpus passed 3.63 ms keeps declared examples distinct from enabled verifier bindings the agent-surface recipe corpus passed 243.11 ms returns the complete non-ready ladder grouped by family the agent-surface recipe corpus passed 85.21 ms distinguishes a passing current floor from a blocked or clear stated next rung the agent-surface recipe corpus passed 1.73 ms returns every committed structural component with non-empty membership the agent-surface recipe corpus passed 57.07 ms returns exact component uses fan-in and fan-out from the structural oracle the agent-surface recipe corpus passed 36.72 ms returns a component structural neighborhood and an exact absent shape the agent-surface recipe corpus passed 57.12 ms reports census structural coverage from graph and report ground truth the agent-surface recipe corpus passed 32.63 ms reports graph-side upper bounds for every shipped projection root the agent-surface recipe corpus passed 35.68 ms returns the architecture map of every live component with recomputed fan-in and fan-out the agent-surface recipe corpus passed 66.26 ms explains the shared policy and adapter collaborations from graph intent and binding claims the agent-surface recipe corpus passed 71.08 ms retains local uses and their claims without counting a component as its own dependency the agent-surface recipe corpus passed 108.03 ms preserves an unresolved responsibility without inventing its design the agent-surface recipe corpus passed 104.03 ms keeps a dangling component row and surfaces unresolved uses edges the agent-surface recipe corpus passed 94.74 ms preserves an unresolved architecture-map member when memberOf outlives the node the agent-surface recipe corpus passed 126.1 ms returns the decision map ranked by live shaping fan-in the agent-surface recipe corpus passed 66.23 ms returns a planning-slice neighborhood and an exact absent shape the agent-surface recipe corpus passed 109.75 ms returns non-empty bidirectional dependencies for the binding-grain planning slice the agent-surface recipe corpus passed 50.88 ms returns planning-slice implementations, never abstractions the agent-surface recipe corpus passed 48.26 ms preserves an unresolved component row when memberOf outlives the node the agent-surface recipe corpus passed 115.85 ms reports derived design columns beside the existing backlog fields the agent-surface recipe corpus passed 0.91 ms groups backlog rows under lawful Object.prototype path segments the agent-surface recipe corpus passed 65.08 ms groups lower-ladder rows under lawful Object.prototype path segments the agent-surface recipe corpus passed 50.37 ms groups decided subjects under lawful Object.prototype path segments the agent-surface recipe corpus passed 44.22 ms lists key families across the corpus in key, Spec and section order with the documented sample register recipe semantics passed 91.93 ms lists Design and UI key families without a row cap, preserving values, lines and overlapping prefixes register recipe semantics passed 9.14 ms diagnoses an unresolved Pack member without returning a partial register register recipe semantics passed 2.01 ms diagnoses malformed key-family parameters without a register: {"prefixes":[]} register recipe semantics passed 40.51 ms diagnoses malformed key-family parameters without a register: {"prefixes":[""]} register recipe semantics passed 39.18 ms diagnoses malformed key-family parameters without a register: {"prefixes":["a","a"]} register recipe semantics passed 57.21 ms diagnoses malformed key-family parameters without a register: {"prefixes":"limit"} register recipe semantics passed 44.46 ms diagnoses malformed key-family parameters without a register: {"pack":"pack:absent"} register recipe semantics passed 37.73 ms diagnoses malformed key-family parameters without a register: {"specs":["spec:absent"]} register recipe semantics passed 54.73 ms diagnoses malformed key-family parameters without a register: {"specs":"bad"} register recipe semantics passed 45.75 ms diagnoses malformed key-family parameters without a register: {"pack":"pack:self-hosting-v1","specs":[]} register recipe semantics passed 69.9 ms runs recipe 20 as written in default output register recipe semantics passed 102.17 ms runs recipe 21 as written in default output register recipe semantics passed 55.05 ms runs recipe 22 as written in default output register recipe semantics passed 91.83 ms runs recipe 23 as written in default output register recipe semantics passed 111.17 ms runs recipe 24 as written in default output register recipe semantics passed 78.19 ms runs recipe 25 as written in default output register recipe semantics passed 39.83 ms runs recipe 26 as written in default output register recipe semantics passed 35.69 ms runs recipe 27 as written in default output register recipe semantics passed 40.73 ms runs recipe 28 as written in default output register recipe semantics passed 28.53 ms runs recipe 29 as written in default output register recipe semantics passed 28.55 ms runs recipe 30 as written in default output register recipe semantics passed 113.58 ms runs recipe 31 as written in default output register recipe semantics passed 39.91 ms runs recipe 32 as written in default output register recipe semantics passed 27.27 ms renders long JSON values with the same default text bound as strings register recipe semantics passed 7.28 ms registers an omitted blocking flag through a TypeScript carrier register recipe semantics passed 3.03 ms searches coined keys of every value shape through a TypeScript carrier register recipe semantics passed 2.71 ms searches strings inside a matching coined list or object key register recipe semantics passed 2.2 ms searches a null coined-key value in the reader graph register recipe semantics passed 1.75 ms keeps register counts under totals and top-level plural nouns as arrays register recipe semantics passed 821.5 ms pins whole-token matching for 'retry' in 'entry' / 'retry' register recipe semantics passed 1.24 ms pins whole-token matching for 'retry' in 'entry' / 'retryable' register recipe semantics passed 0.4 ms pins whole-token matching for 'retry' in 'entry' / 'retry-worker' register recipe semantics passed 0.35 ms pins whole-token matching for 'retry' in 'retryWorker' / 'unrelated' register recipe semantics passed 0.32 ms pins whole-token matching for 'Retry' in 'entry' / 'RETRY.' register recipe semantics passed 0.32 ms pins whole-token matching for 'retry worker' in 'retryWorker' / 'retry-worker' register recipe semantics passed 0.33 ms pins whole-token matching for 'retry worker' in 'entry' / 'worker retry' register recipe semantics passed 0.36 ms pins whole-token matching for 'retry worker' in 'entry' / 'retry the worker' register recipe semantics passed 0.29 ms pins whole-token matching for 'server' in 'entry' / 'HTTPServer' register recipe semantics passed 0.43 ms pins whole-token matching for 'v' in 'entry' / 'v2' register recipe semantics passed 0.33 ms registers every authored question, blocking Specs first register recipe semantics passed 81.67 ms reports one-hop footing of all four types, including unresolved targets register recipe semantics passed 116.61 ms audits mention pairs, skips fences, and preserves full ids and direction register recipe semantics passed 1.37 ms resolves entry mentions and retains every token and pair location through a probe root register recipe semantics passed 8.35 ms reads the whole mention token through an underscore as malformed, never the existing prefix register recipe semantics passed 0.8 ms reads the whole mention token through a slash as malformed, never the existing prefix register recipe semantics passed 0.5 ms reads the whole mention token through a comma as malformed, never the existing prefix register recipe semantics passed 9.19 ms reads the whole mention token through an underscore and a letter as malformed, never the existing prefix register recipe semantics passed 0.75 ms reads the whole mention token through a slash and a letter as malformed, never the existing prefix register recipe semantics passed 0.49 ms reads the whole mention token through a comma and a letter as malformed, never the existing prefix register recipe semantics passed 0.48 ms reads the whole mention token through a letter outside ASCII as malformed, never the existing prefix register recipe semantics passed 0.48 ms reads the whole mention token through an escaped underscore as malformed, never the existing prefix register recipe semantics passed 3.54 ms reads the whole mention token through a combining mark as malformed, never the existing prefix register recipe semantics passed 0.6 ms reads the whole mention token through a combining mark after an entry key as malformed, never the existing prefix register recipe semantics passed 0.54 ms reads the whole mention token through a zero-width space as malformed, never the existing prefix register recipe semantics passed 0.45 ms reads the whole mention token through fullwidth connector punctuation as malformed, never the existing prefix register recipe semantics passed 0.45 ms reads the whole mention token through a NUL as malformed, never the existing prefix register recipe semantics passed 0.42 ms reads the whole mention token through an escape character as malformed, never the existing prefix register recipe semantics passed 3.48 ms reads the whole mention token through a delete character as malformed, never the existing prefix register recipe semantics passed 0.57 ms reads the whole mention token through a C1 control character as malformed, never the existing prefix register recipe semantics passed 0.47 ms reads the whole mention token through a hyphenated entry key as malformed, never the existing prefix register recipe semantics passed 0.44 ms reads the whole mention token through an entry suffix with no key as malformed, never the existing prefix register recipe semantics passed 0.47 ms reads the whole mention token through an entry suffix outside design and ui as malformed, never the existing prefix register recipe semantics passed 0.44 ms reads the clean id through Markdown punctuation: a sentence dot register recipe semantics passed 3.84 ms reads the clean id through Markdown punctuation: a comma register recipe semantics passed 0.64 ms reads the clean id through Markdown punctuation: a colon register recipe semantics passed 0.49 ms reads the clean id through Markdown punctuation: a closing parenthesis register recipe semantics passed 0.51 ms reads the clean id through Markdown punctuation: bold register recipe semantics passed 0.49 ms reads the clean id through Markdown punctuation: emphasis register recipe semantics passed 0.46 ms reads the clean id through Markdown punctuation: strikethrough register recipe semantics passed 0.43 ms reads the clean id through Markdown punctuation: backticks register recipe semantics passed 0.41 ms reads the clean id through Markdown punctuation: ASCII double quotes register recipe semantics passed 0.45 ms reads the clean id through Markdown punctuation: ASCII single quotes register recipe semantics passed 0.41 ms reads the clean id through Markdown punctuation: typographic double quotes register recipe semantics passed 0.83 ms reads the clean id through Markdown punctuation: typographic single quotes register recipe semantics passed 0.44 ms reads the clean id through Markdown punctuation: an em dash register recipe semantics passed 0.38 ms reads the clean id through Markdown punctuation: an en dash register recipe semantics passed 0.36 ms reads the clean id through Markdown punctuation: an ellipsis register recipe semantics passed 0.41 ms reads the clean id through Markdown punctuation: an escaped star register recipe semantics passed 0.45 ms reads the clean id through Markdown punctuation: an escaped exclamation mark register recipe semantics passed 0.47 ms reads the clean id through Markdown punctuation: U+0085 register recipe semantics passed 0.42 ms reads the clean id through Markdown punctuation: a no-break space register recipe semantics passed 0.44 ms reads the clean id through Markdown punctuation: a tab register recipe semantics passed 0.45 ms reads the clean id through Markdown punctuation: an arrow register recipe semantics passed 0.48 ms reads a placeholder or a bare prefix as prose, not a mention register recipe semantics passed 0.45 ms scans nested arrays in examples while skipping object fences by position register recipe semantics passed 3.07 ms addresses only lawful Design and UI entry keys in search results register recipe semantics passed 1.09 ms scopes mentions by the mentioning Spec only register recipe semantics passed 3.21 ms reports malformed open questions without counting them: "one question" register recipe semantics passed 2.52 ms reports malformed open questions without counting them: {} register recipe semantics passed 0.29 ms reports malformed open questions without counting them: 42 register recipe semantics passed 0.26 ms reports malformed open questions without counting them: {"blocking":true} register recipe semantics passed 0.26 ms reports malformed open questions without counting them: null register recipe semantics passed 0.21 ms reports malformed open questions without counting them: "" register recipe semantics passed 0.23 ms reports malformed open questions without counting them: {"question":"valid","blocking":"yes"} register recipe semantics passed 0.22 ms reports malformed open questions without counting them: {"question":"valid","blocking":null} register recipe semantics passed 0.28 ms reports malformed open questions without counting them: {"question":"valid"} register recipe semantics passed 0.34 ms reports an off-grammar question key as malformed: {"question":"valid","key":"AggregateReach"} register recipe semantics passed 0.5 ms reports an off-grammar question key as malformed: {"question":"valid","key":"aggregate-reach"} register recipe semantics passed 0.3 ms reports an off-grammar question key as malformed: {"question":"valid","key":""} register recipe semantics passed 0.29 ms reports an off-grammar question key as malformed: {"question":"valid","key":7} register recipe semantics passed 0.26 ms reports an off-grammar question key as malformed: {"question":"valid","key":null} register recipe semantics passed 0.29 ms reports an off-grammar question key as malformed: {"question":"valid","blocking":true} register recipe semantics passed 0.29 ms searches whole tokens, coined keys, narrative and fence steps register recipe semantics passed 9.63 ms lists every pinned declaration this corpus holds register recipe semantics passed 212.89 ms reads spans of any run length and skips every entry that pins nothing register recipe semantics passed 7.15 ms resolves the catalog's addresses on this corpus as written address resolution and dependency cycles passed 75.33 ms reports this corpus's dependency cycles as an independent reachability check finds them address resolution and dependency cycles passed 82.92 ms reports the probe's one set and one self-dependent Spec, and nothing for a Spec that only reaches a set address resolution and dependency cycles passed 6.38 ms reports a self-loop inside a larger set only with that set address resolution and dependency cycles passed 3.61 ms walks targets in code-unit order, so of two tied shortest cycles the first target's is reported address resolution and dependency cycles passed 2.43 ms walks a chain of 10,000 Specs and one cycle of 5,000 without recursing address resolution and dependency cycles passed 211.99 ms resolves an inherited property name only where the Spec authors it as a key address resolution and dependency cycles passed 4.43 ms resolves the design's probe addresses with one row and one reason each address resolution and dependency cycles passed 3.17 ms resolves a keyed question, refuses description in Design and UI, and keeps repeats address resolution and dependency cycles passed 9.75 ms registers a keyed question with its key and an unkeyed one with a null key address resolution and dependency cycles passed 3.09 ms audits a question address against the target's open question keys address resolution and dependency cycles passed 2.01 ms addresses a keyed question's text and matches its key, never the key as a row address resolution and dependency cycles passed 6.51 ms returns one row per Studio member with four independent facts design references and the architecture taxonomy passed 151.01 ms lists a referencing unit beside the realizing units without conferring implemented design references and the architecture taxonomy passed 177.28 ms lists the reader beside each Studio member that depends on it, with its realizing units design references and the architecture taxonomy passed 58.06 ms derives builds-on from the member's relations without conferring a fact on it design references and the architecture taxonomy passed 184.39 ms returns the role, layer, and context taxonomy from the code units alone design references and the architecture taxonomy passed 41.05 ms counts references as edges apart from the units that carry them design references and the architecture taxonomy passed 86.84 ms creates each taxonomy bucket once, however many units share the value design references and the architecture taxonomy passed 76.57 ms declares and checks only its indexed parameter names first: 1 recipe parameters and the shipped recipe files passed 0.79 ms declares and checks only its indexed parameter names first: 2 recipe parameters and the shipped recipe files passed 0.48 ms declares and checks only its indexed parameter names first: 3 recipe parameters and the shipped recipe files passed 0.45 ms declares and checks only its indexed parameter names first: 4 recipe parameters and the shipped recipe files passed 0.46 ms declares and checks only its indexed parameter names first: 5 recipe parameters and the shipped recipe files passed 0.42 ms declares and checks only its indexed parameter names first: 6 recipe parameters and the shipped recipe files passed 0.4 ms declares and checks only its indexed parameter names first: 7 recipe parameters and the shipped recipe files passed 0.42 ms declares and checks only its indexed parameter names first: 8 recipe parameters and the shipped recipe files passed 0.41 ms declares and checks only its indexed parameter names first: 9 recipe parameters and the shipped recipe files passed 0.48 ms declares and checks only its indexed parameter names first: 10 recipe parameters and the shipped recipe files passed 0.37 ms declares and checks only its indexed parameter names first: 11 recipe parameters and the shipped recipe files passed 0.34 ms declares and checks only its indexed parameter names first: 12 recipe parameters and the shipped recipe files passed 0.44 ms declares and checks only its indexed parameter names first: 13 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 14 recipe parameters and the shipped recipe files passed 0.42 ms declares and checks only its indexed parameter names first: 15 recipe parameters and the shipped recipe files passed 0.37 ms declares and checks only its indexed parameter names first: 16 recipe parameters and the shipped recipe files passed 0.37 ms declares and checks only its indexed parameter names first: 17 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 18 recipe parameters and the shipped recipe files passed 0.34 ms declares and checks only its indexed parameter names first: 19 recipe parameters and the shipped recipe files passed 0.38 ms declares and checks only its indexed parameter names first: 20 recipe parameters and the shipped recipe files passed 0.35 ms declares and checks only its indexed parameter names first: 21 recipe parameters and the shipped recipe files passed 0.34 ms declares and checks only its indexed parameter names first: 22 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 23 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 24 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 25 recipe parameters and the shipped recipe files passed 0.42 ms declares and checks only its indexed parameter names first: 26 recipe parameters and the shipped recipe files passed 0.4 ms declares and checks only its indexed parameter names first: 27 recipe parameters and the shipped recipe files passed 0.44 ms declares and checks only its indexed parameter names first: 28 recipe parameters and the shipped recipe files passed 0.4 ms declares and checks only its indexed parameter names first: 29 recipe parameters and the shipped recipe files passed 0.43 ms declares and checks only its indexed parameter names first: 30 recipe parameters and the shipped recipe files passed 0.4 ms declares and checks only its indexed parameter names first: 31 recipe parameters and the shipped recipe files passed 0.38 ms declares and checks only its indexed parameter names first: 32 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 33 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 34 recipe parameters and the shipped recipe files passed 0.42 ms declares and checks only its indexed parameter names first: 35 recipe parameters and the shipped recipe files passed 0.41 ms declares and checks only its indexed parameter names first: 36 recipe parameters and the shipped recipe files passed 0.41 ms declares and checks only its indexed parameter names first: 37 recipe parameters and the shipped recipe files passed 0.41 ms declares and checks only its indexed parameter names first: 38 recipe parameters and the shipped recipe files passed 0.42 ms declares and checks only its indexed parameter names first: 39 recipe parameters and the shipped recipe files passed 0.42 ms declares and checks only its indexed parameter names first: 40 recipe parameters and the shipped recipe files passed 0.42 ms declares and checks only its indexed parameter names first: 41 recipe parameters and the shipped recipe files passed 0.44 ms declares and checks only its indexed parameter names first: 42 recipe parameters and the shipped recipe files passed 0.54 ms declares and checks only its indexed parameter names first: 43 recipe parameters and the shipped recipe files passed 0.37 ms declares and checks only its indexed parameter names first: 44 recipe parameters and the shipped recipe files passed 0.44 ms declares and checks only its indexed parameter names first: 45 recipe parameters and the shipped recipe files passed 0.42 ms declares and checks only its indexed parameter names first: 46 recipe parameters and the shipped recipe files passed 0.44 ms declares and checks only its indexed parameter names first: 47 recipe parameters and the shipped recipe files passed 0.38 ms declares and checks only its indexed parameter names first: 48 recipe parameters and the shipped recipe files passed 0.41 ms declares and checks only its indexed parameter names first: 49 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 50 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 51 recipe parameters and the shipped recipe files passed 0.41 ms declares and checks only its indexed parameter names first: 52 recipe parameters and the shipped recipe files passed 0.4 ms declares and checks only its indexed parameter names first: 53 recipe parameters and the shipped recipe files passed 0.41 ms declares and checks only its indexed parameter names first: 54 recipe parameters and the shipped recipe files passed 0.47 ms declares and checks only its indexed parameter names first: 55 recipe parameters and the shipped recipe files passed 0.42 ms returns only the unknown-name answer before reading recipe inputs: 1 recipe parameters and the shipped recipe files passed 51.01 ms returns only the unknown-name answer before reading recipe inputs: 2 recipe parameters and the shipped recipe files passed 52.58 ms returns only the unknown-name answer before reading recipe inputs: 3 recipe parameters and the shipped recipe files passed 100.63 ms returns only the unknown-name answer before reading recipe inputs: 4 recipe parameters and the shipped recipe files passed 91.08 ms returns only the unknown-name answer before reading recipe inputs: 5 recipe parameters and the shipped recipe files passed 47.65 ms returns only the unknown-name answer before reading recipe inputs: 6 recipe parameters and the shipped recipe files passed 43.57 ms returns only the unknown-name answer before reading recipe inputs: 7 recipe parameters and the shipped recipe files passed 58.12 ms returns only the unknown-name answer before reading recipe inputs: 8 recipe parameters and the shipped recipe files passed 51.43 ms returns only the unknown-name answer before reading recipe inputs: 9 recipe parameters and the shipped recipe files passed 39.48 ms returns only the unknown-name answer before reading recipe inputs: 10 recipe parameters and the shipped recipe files passed 39.28 ms returns only the unknown-name answer before reading recipe inputs: 11 recipe parameters and the shipped recipe files passed 38.46 ms returns only the unknown-name answer before reading recipe inputs: 12 recipe parameters and the shipped recipe files passed 35.14 ms returns only the unknown-name answer before reading recipe inputs: 13 recipe parameters and the shipped recipe files passed 30.1 ms returns only the unknown-name answer before reading recipe inputs: 14 recipe parameters and the shipped recipe files passed 24.97 ms returns only the unknown-name answer before reading recipe inputs: 15 recipe parameters and the shipped recipe files passed 49.06 ms returns only the unknown-name answer before reading recipe inputs: 16 recipe parameters and the shipped recipe files passed 34.98 ms returns only the unknown-name answer before reading recipe inputs: 17 recipe parameters and the shipped recipe files passed 40.63 ms returns only the unknown-name answer before reading recipe inputs: 18 recipe parameters and the shipped recipe files passed 47.48 ms returns only the unknown-name answer before reading recipe inputs: 19 recipe parameters and the shipped recipe files passed 32.12 ms returns only the unknown-name answer before reading recipe inputs: 20 recipe parameters and the shipped recipe files passed 29.38 ms returns only the unknown-name answer before reading recipe inputs: 21 recipe parameters and the shipped recipe files passed 35.4 ms returns only the unknown-name answer before reading recipe inputs: 22 recipe parameters and the shipped recipe files passed 35.22 ms returns only the unknown-name answer before reading recipe inputs: 23 recipe parameters and the shipped recipe files passed 30.44 ms returns only the unknown-name answer before reading recipe inputs: 24 recipe parameters and the shipped recipe files passed 44.73 ms returns only the unknown-name answer before reading recipe inputs: 25 recipe parameters and the shipped recipe files passed 35.84 ms returns only the unknown-name answer before reading recipe inputs: 26 recipe parameters and the shipped recipe files passed 35.92 ms returns only the unknown-name answer before reading recipe inputs: 27 recipe parameters and the shipped recipe files passed 37.36 ms returns only the unknown-name answer before reading recipe inputs: 28 recipe parameters and the shipped recipe files passed 34.43 ms returns only the unknown-name answer before reading recipe inputs: 29 recipe parameters and the shipped recipe files passed 37.29 ms returns only the unknown-name answer before reading recipe inputs: 30 recipe parameters and the shipped recipe files passed 34.53 ms returns only the unknown-name answer before reading recipe inputs: 31 recipe parameters and the shipped recipe files passed 37.03 ms returns only the unknown-name answer before reading recipe inputs: 32 recipe parameters and the shipped recipe files passed 36.83 ms returns only the unknown-name answer before reading recipe inputs: 33 recipe parameters and the shipped recipe files passed 32.3 ms returns only the unknown-name answer before reading recipe inputs: 34 recipe parameters and the shipped recipe files passed 35.47 ms returns only the unknown-name answer before reading recipe inputs: 35 recipe parameters and the shipped recipe files passed 29.61 ms returns only the unknown-name answer before reading recipe inputs: 36 recipe parameters and the shipped recipe files passed 24.05 ms returns only the unknown-name answer before reading recipe inputs: 37 recipe parameters and the shipped recipe files passed 26.88 ms returns only the unknown-name answer before reading recipe inputs: 38 recipe parameters and the shipped recipe files passed 27.56 ms returns only the unknown-name answer before reading recipe inputs: 39 recipe parameters and the shipped recipe files passed 36.86 ms returns only the unknown-name answer before reading recipe inputs: 40 recipe parameters and the shipped recipe files passed 35.16 ms returns only the unknown-name answer before reading recipe inputs: 41 recipe parameters and the shipped recipe files passed 37.01 ms returns only the unknown-name answer before reading recipe inputs: 42 recipe parameters and the shipped recipe files passed 35.48 ms returns only the unknown-name answer before reading recipe inputs: 43 recipe parameters and the shipped recipe files passed 37.25 ms returns only the unknown-name answer before reading recipe inputs: 44 recipe parameters and the shipped recipe files passed 33.94 ms returns only the unknown-name answer before reading recipe inputs: 45 recipe parameters and the shipped recipe files passed 36.1 ms returns only the unknown-name answer before reading recipe inputs: 46 recipe parameters and the shipped recipe files passed 35.61 ms returns only the unknown-name answer before reading recipe inputs: 47 recipe parameters and the shipped recipe files passed 36.31 ms returns only the unknown-name answer before reading recipe inputs: 48 recipe parameters and the shipped recipe files passed 37.58 ms returns only the unknown-name answer before reading recipe inputs: 49 recipe parameters and the shipped recipe files passed 35.48 ms returns only the unknown-name answer before reading recipe inputs: 50 recipe parameters and the shipped recipe files passed 53.29 ms returns only the unknown-name answer before reading recipe inputs: 51 recipe parameters and the shipped recipe files passed 27.25 ms returns only the unknown-name answer before reading recipe inputs: 52 recipe parameters and the shipped recipe files passed 36.52 ms returns only the unknown-name answer before reading recipe inputs: 53 recipe parameters and the shipped recipe files passed 38.97 ms returns only the unknown-name answer before reading recipe inputs: 54 recipe parameters and the shipped recipe files passed 36.76 ms returns only the unknown-name answer before reading recipe inputs: 55 recipe parameters and the shipped recipe files passed 36.94 ms diagnoses wrong subject names, mixed known names and ordered unknown names through shipped bodies recipe parameters and the shipped recipe files passed 104.45 ms reads and names each parameter, with a fallback only when the contract supplies one recipe parameters and the shipped recipe files passed 8.38 ms ships every catalog body as dist/recipes/NN-slug.js, byte for byte recipe parameters and the shipped recipe files passed 8.03 ms runs every shipped file, read whole, to the answer its catalog body gives recipe parameters and the shipped recipe files passed 6717.44 ms refuses a catalog whose bodies and headings do not pair, rather than guess a file name recipe parameters and the shipped recipe files passed 1.71 ms reads a CRLF catalog as its LF bodies, and refuses a catalog with no recipe before publishing recipe parameters and the shipped recipe files passed 17.69 ms removes only completed recipe files the catalog no longer owes, never another run's temporary file recipe parameters and the shipped recipe files passed 0.66 ms passes recipe 4 its changed files from a file named with @PATH recipe parameters and the shipped recipe files passed 44.98 ms resolves the addresses recipe 25 receives as data recipe parameters and the shipped recipe files passed 58.78 ms reads the Pack the Pack recipes review from params.pack recipe parameters and the shipped recipe files passed 205.22 ms returns the Pack design of every corpus Pack as the raw graph states it design recipes passed 749.92 ms returns the probe Pack's design exactly, member by member design recipes passed 9.73 ms reaches every Spec resting on the corpus sample, by a shortest path of real edges design recipes passed 342.59 ms walks a dependency chain inbound only, once per Spec, and keeps a reference apart design recipes passed 1.76 ms registers every corpus decision with its supersession, subjects and keyed questions design recipes passed 71.82 ms registers a supersedes pair both ways and a decision that shapes nothing design recipes passed 1.4 ms carries a relation's reason beside the relation in recipes 3, 19, 21 and 31 design recipes passed 1.56 ms registers narrowing decisions both ways and excludes refinement by other kinds design recipes passed 0.55 ms keeps the decoder in reader without adding crossings against the lawful notation alternative design recipes passed 125.17 ms reports the corpus's architecture crossings as the raw edges state them design recipes passed 70.26 ms names a crossing of two contexts and of two layers, and skips what cannot cross design recipes passed 0.79 ms resolves every keyed corpus entry to its value and the line the location table records entry lines in entry search and address resolution passed 179.39 ms gives each corpus entry-search row the line of a located entry and null otherwise entry lines in entry search and address resolution passed 173.89 ms never gives a nested entry the line of a literal top-level key its path spells entry lines in entry search and address resolution passed 3.85 ms counts a verifying Spec of another kind as a verifier, never as an example, in the Pack design entry lines in entry search and address resolution passed 2.27 ms gives a string-form open question the line its question[n] row records, as the object form entry lines in entry search and address resolution passed 2.46 ms counts equal layers and contexts between distinct components even without crossings answers that fit passed 0.36 ms returns guarantee entries and complete unit and verifier locations from context answers that fit passed 4.73 ms reports directions relative to an impacted Pack answers that fit passed 0.74 ms indexes exactly the present recipes with names, parameters and uses answers that fit passed 3.7 ms runs a shipped body wrapped inside a caller's filter answers that fit passed 98.75 ms keeps impact totals and puts both edge directions in the summary answers that fit passed 2.43 ms keeps the reader's Pack value in summary, full and selected-member answers answers that fit passed 11.46 ms reports both next rungs when the stated rung is below the floor answers that fit passed 0.56 ms reports no next rung at ready answers that fit passed 37.39 ms reports gap exemptions and every omitted warning beyond the first 25 answers that fit passed 1.41 ms lists only defined unimplemented designs and keeps exclusions and references answers that fit passed 0.88 ms registers fields and counts deferrals apart from design holds authoring grammar recipes passed 3.39 ms lists intended mentions apart and preserves the validator's warnings authoring grammar recipes passed 8.29 ms matches rule keys beside their text without searching the derived map authoring grammar recipes passed 2.45 ms locates unkeyed rule text and question field text authoring grammar recipes passed 3.44 ms resolves rule addresses and preserves every parsed part of a miss authoring grammar recipes passed 2.85 ms counts rule coverage from bound examples and reports unbound intent beside it authoring grammar recipes passed 4.82 ms reports missing rule-coverage scopes and accepts a scope with no rules authoring grammar recipes passed 2.94 ms runs the catalog body in the evaluator without a module loader entry citations recipe passed 0.74 ms orders a declaration's citing files and lines independently of input order entry citations recipe passed 0.54 ms joins declarations and other cited entries, including uncited declarations entry citations recipe passed 0.69 ms includes absent Specs and malformed tokens only in the corpus unresolved list entry citations recipe passed 1.07 ms returns diagnostics without findings for {"pack":"pack:missing"} entry citations recipe passed 0.69 ms returns diagnostics without findings for {"specs":["spec:missing"]} entry citations recipe passed 0.42 ms returns diagnostics without findings for {"specs":"spec:probe.cited"} entry citations recipe passed 0.32 ms returns diagnostics without findings for {"pack":"pack:probe.citations","specs":[]} entry citations recipe passed 0.36 ms returns diagnostics without findings for {"severity":"fatal"} entry citations recipe passed 0.34 ms returns diagnostics without findings for {"severity":null} entry citations recipe passed 0.75 ms reads an absent table as empty, and accepts an empty Spec scope entry citations recipe passed 0.64 ms adds recorded component fields, references, member roles and exact crossing-use counts Studio architecture and example-space recipe additions passed 97.49 ms runs shipped recipe 44 over every decoded space and refuses bad scopes Studio architecture and example-space recipe additions passed 407.84 ms runs recipe 45 as shipped and reports missing and malformed CTRF metadata not recorded passed 535.5 ms recipe 49 renders the panel memo from its catalog body and refuses a malformed document not recorded passed 69.85 ms reports text-preserving rule and flow key changes apart from rewording not recorded passed 6.76 ms preserves a removed keyed rule address beside new unkeyed text not recorded passed 1.93 ms preserves a removed keyed flow address beside new unkeyed text not recorded passed 1.67 ms distinguishes removed unkeyed rule base positions from head positions not recorded passed 2.38 ms distinguishes removed unkeyed flow base positions from head positions not recorded passed 1.8 ms retains every diamond edge and intermediate node while counting each descendant once the capability map recipe passed 0.87 ms returns summary/full parity with explicit omissions for scope {} the capability map recipe passed 1.4 ms returns summary/full parity with explicit omissions for scope {"epic":"spec:probe.epic"} the capability map recipe passed 1 ms normalizes prose and unflagged questions while preserving authored indices the capability map recipe passed 0.35 ms retains null titles in serialized node and epic rows when a title degrades the capability map recipe passed 0.6 ms reports a self-refining epic as a cycle without making it its own parent epic the capability map recipe passed 0.3 ms uses the outside unreached parent as root rather than its child cycle group the capability map recipe passed 0.42 ms selects an epic of kind behavior without changing its kind the capability map recipe passed 0.4 ms selects an epic of kind workflow without changing its kind the capability map recipe passed 0.24 ms selects an epic of kind example without changing its kind the capability map recipe passed 0.22 ms selects an epic of kind rule without changing its kind the capability map recipe passed 0.2 ms selects an epic of kind constraint without changing its kind the capability map recipe passed 0.18 ms selects an epic of kind model without changing its kind the capability map recipe passed 0.18 ms selects an epic of kind decision without changing its kind the capability map recipe passed 0.19 ms selects an epic of kind contract without changing its kind the capability map recipe passed 0.2 ms reads node evidence and ordered questions directly, including examples and decisions as parents the capability map recipe passed 0.66 ms represents a missing floor as none and keeps the epic's evidence outside its rollup the capability map recipe passed 0.42 ms counts stated rungs separately from reached floors without lending a bound example's facts to its epic the capability map recipe passed 0.89 ms keeps nested and overlapping memberships and outside parents when selecting one epic the capability map recipe passed 1.07 ms traverses only declared refinement and never infers ancestry from other graph structure the capability map recipe passed 0.56 ms reports cycles, self-links and unresolved or non-Spec endpoints separately from parameter failures the capability map recipe passed 0.65 ms limits damage to edges touching a selected epic scope and terminates reached cycles the capability map recipe passed 0.44 ms keeps overlapping unreached root scopes unique and exposes an empty corpus the capability map recipe passed 0.52 ms refuses invalid parameters without a map: { epic: null } the capability map recipe passed 0.24 ms refuses invalid parameters without a map: { epic: 1 } the capability map recipe passed 0.14 ms refuses invalid parameters without a map: { epic: [] } the capability map recipe passed 0.1 ms refuses invalid parameters without a map: { epic: 'spec:probe.absent' } the capability map recipe passed 0.09 ms refuses invalid parameters without a map: { epic: 'spec:probe.plain' } the capability map recipe passed 0.09 ms refuses invalid parameters without a map: { epic: 'impl:probe.non-spec' } the capability map recipe passed 0.11 ms refuses invalid parameters without a map: { detail: 'true' } the capability map recipe passed 0.09 ms refuses invalid parameters without a map: { detail: 1 } the capability map recipe passed 0.09 ms refuses invalid parameters without a map: { detail: null } the capability map recipe passed 0.09 ms refuses invalid parameters without a map: { epic: 1, detail: 'x' } the capability map recipe passed 0.16 ms checks unknown names before known values the capability map recipe passed 0.15 ms answers deterministically in code-unit id order even when graph arrays are reversed the capability map recipe passed 1.41 ms reaches every Spec from the intended epic owners while preserving kinds and overlapping refinement the Protocol's capability epics passed 196.63 ms keeps refinement and dependency from spec:extraction.build-pipeline to spec:extraction.derive-graph the Protocol's capability epics passed 3.01 ms keeps refinement and dependency from spec:validation.corpus-rules to spec:consumers.agent-surface the Protocol's capability epics passed 4.22 ms keeps refinement and dependency from spec:validation.architecture-constraints to spec:validation.corpus-rules the Protocol's capability epics passed 3.84 ms keeps refinement and dependency from spec:validation.external-registers to spec:validation.corpus-rules the Protocol's capability epics passed 1.69 ms keeps every ready statement at the ready floor and leaves the drift alarm empty the Protocol's capability epics passed 63.69 ms runs the catalog body over the arc Pack through the CLI and keeps its summary totals the shipped design slice passed 322.71 ms runs the roadmap and its memo from the catalog over a named Pack not recorded passed 372.97 ms pins the adopter roadmap and its forward memo over the worked example not recorded passed 38.84 ms
Design view
Requirement drawing
- Declared verifying examples: no declared verifying example.
The diagram as text
- spec:consumers.capability-map: The capability map reads every epic and its refinement descendants · declared Spec
- spec:consumers.spec-studio.capability-map-page: The capability map page makes refinement readable by epic · declared Spec
- spec:decisions.epics-of-any-kind: Capability epics keep kind independent of altitude · declared Spec
- spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores · declared Spec
- spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence · declared Spec
- impl:protocol.capability-map-recipe: asserts realization of The capability map in docs/agent-surface/recipes.md · anchored code ·
test/recipes.test.ts:7602 - impl:protocol.studio-capabilities-page: renders epic evidence, refinement and unreached Specs from the capability map · anchored code ·
src/projections/studio/pages/capabilities-page.ts:78 - impl:protocol.studio-filter: filters build-rendered rows through their recorded attributes · anchored code ·
src/studio-elements/filter.ts:25 - impl:protocol.studio-frame: renders Studio navigation, page rails and composing controls · anchored code ·
src/projections/studio/pages/frame.ts:6 - impl:protocol.studio-index-page: renders Pack disclosures and filterable Spec rows · anchored code ·
src/projections/studio/pages/index-page.ts:8 - test:protocol.capability-map: test:protocol.capability-map · anchored test binding · binding present ·
test/recipes.test.ts:7610 - test:protocol.studio-capabilities: test:protocol.studio-capabilities · anchored test binding · binding present ·
test/studio-capabilities.test.ts:89 - spec:consumers.capability-map refines spec:consumers.projections-model · declared — the capability map projects authored refinement without introducing a grouping
- spec:consumers.spec-studio.capability-map-page refines spec:consumers.capability-map · declared — the page is the capability map's reading for a person
- spec:consumers.spec-studio.capability-map-page refines spec:consumers.spec-studio.lenses · declared — the Capabilities page is a lens that reads refinement
- spec:decisions.epics-of-any-kind refines spec:consumers.capability-map · declared — settles which Specs the capability map reads as epics
- impl:protocol.capability-map-recipe satisfies spec:consumers.capability-map · anchored
- impl:protocol.capability-map-recipe references spec:decisions.epics-of-any-kind · anchored
- impl:protocol.studio-capabilities-page satisfies spec:consumers.spec-studio.capability-map-page · anchored
- impl:protocol.studio-filter satisfies spec:consumers.spec-studio.capability-map-page · anchored
- impl:protocol.studio-frame satisfies spec:consumers.spec-studio.capability-map-page · anchored
- impl:protocol.studio-index-page satisfies spec:consumers.spec-studio.capability-map-page · anchored
- test:protocol.capability-map verifies spec:consumers.capability-map · anchored
- test:protocol.studio-capabilities verifies spec:consumers.spec-studio.capability-map-page · anchored
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because references, folds require exact labels unavailable in requirement syntax.
Decisions
- Capability epics keep kind independent of altitude
Any Spec stated at epic altitude is an epic, whatever its kind, and keeps its kind: the capability map reads every epic and its refinement descendants, and the glossary row broadens from high-altitude behavior Specs to epic Specs of every kind.
Runtime
impl:protocol.capability-map-recipe· asserts realization of The capability map in docs/agent-surface/recipes.md ·test/recipes.test.ts:7602Uses
None.
Runtime observation: not tracked.
Evidence
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Impact
The diagram as text
- spec:consumers.capability-map: The capability map reads every epic and its refinement descendants
- spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores
- spec:consumers.spec-studio.capability-map-page: The capability map page makes refinement readable by epic
- spec:consumers.spec-studio.diagram-kinds.capability-tree: A refinement drawing follows the capability map
- spec:consumers.upgrade-kit: The upgrade kit shows a corpus what it could adopt
- spec:decisions.epics-of-any-kind: Capability epics keep kind independent of altitude
- spec:extraction.delivery-facts: Resolving bindings confer direct delivery facts
- spec:protocol.capability-epics: The Protocol organizes its own features in capability epics
- spec:validation.readiness-floor: Stated readiness must clear its floor
- spec:consumers.capability-map decidedBy spec:decisions.epics-of-any-kind · declared
- spec:consumers.capability-map dependsOn spec:extraction.delivery-facts · declared — rollups count direct bindings without conferring facts on ancestors
- spec:consumers.capability-map dependsOn spec:validation.readiness-floor · declared — each node reads the existing floor beside the author's statement
- spec:consumers.capability-map refines spec:consumers.projections-model · declared — the capability map projects authored refinement without introducing a grouping
- spec:consumers.spec-studio.capability-map-page dependsOn spec:consumers.capability-map · declared — the page and index filter render the capability map's answer
- spec:consumers.spec-studio.diagram-kinds.capability-tree dependsOn spec:consumers.capability-map · declared
- spec:consumers.upgrade-kit dependsOn spec:consumers.capability-map · declared — the guide teaches epic organization through the capability map
- spec:protocol.capability-epics dependsOn spec:consumers.capability-map · declared — the capability map exposes the corpus's authored refinement
- spec:consumers.spec-studio.capability-map-page refines spec:consumers.capability-map · declared — the page is the capability map's reading for a person
- spec:decisions.epics-of-any-kind refines spec:consumers.capability-map · declared — settles which Specs the capability map reads as epics
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
Rests on
- refines · spec:consumers.projections-model · stated ready, floor ready
- dependsOn · spec:extraction.delivery-facts · stated ready, floor ready
- dependsOn · spec:validation.readiness-floor · stated ready, floor ready
- decidedBy · spec:decisions.epics-of-any-kind · stated ready, floor ready
Rested on by
Distance 1
- spec:consumers.spec-studio.capability-map-page
Implementing units
impl:protocol.studio-capabilities-page·src/projections/studio/pages/capabilities-page.ts:78impl:protocol.studio-filter·src/studio-elements/filter.ts:25impl:protocol.studio-frame·src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page·src/projections/studio/pages/index-page.ts:8
Referencing units
None.
Enabled verifiers: test:protocol.studio-capabilities
- spec:consumers.spec-studio.diagram-kinds.capability-tree
Implementing units
impl:protocol.studio-capability-diagrams·src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-source·src/projections/studio/diagrams/mermaid.ts:13
Referencing units
None.
Enabled verifiers: test:protocol.studio-capabilities
- spec:consumers.upgrade-kit
Implementing units
impl:protocol.upgrade-guide·test/upgrade-kit.test.ts:87
Referencing units
None.
Enabled verifiers: test:protocol.upgrade-guide
- spec:decisions.epics-of-any-kind
Implementing units
None.
Referencing units
impl:protocol.capability-map-recipe·test/recipes.test.ts:7602
Enabled verifiers: None
- spec:protocol.capability-epics
Implementing units
impl:protocol.capability-epics·test/recipes.test.ts:8173
Referencing units
None.
Enabled verifiers: test:protocol.capability-epics
Distance 2
- spec:consumers.upgrade-kit.capability-adoption
Implementing units
impl:protocol.capability-adoption-recipe·test/upgrade-kit.test.ts:514
Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
- spec:consumers.upgrade-kit.rule-key-proposal
Implementing units
impl:protocol.rule-key-proposal-recipe·test/upgrade-kit.test.ts:742
Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable, spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean
Distance 3
- spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus
- spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.rule-key-proposal.collision-and-unkeyable
- spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.rule-key-proposal.proposal-applies-clean
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| decidedBy · outgoing | Capability epics keep kind independent of altitudespec:decisions.epics-of-any-kind · resolves | declared | None | None |
| dependsOn · outgoing | Resolving bindings confer direct delivery factsspec:extraction.delivery-facts · resolves | declared | rollups count direct bindings without conferring facts on ancestors | None |
| dependsOn · outgoing | Stated readiness must clear its floorspec:validation.readiness-floor · resolves | declared | each node reads the existing floor beside the author's statement | None |
| refines · outgoing | Projections fan out from one graph without becoming truth storesspec:consumers.projections-model · resolves | declared | the capability map projects authored refinement without introducing a grouping | None |
| dependsOn · incoming | The capability map page makes refinement readable by epicspec:consumers.spec-studio.capability-map-page · resolves | declared | the page and index filter render the capability map's answer | None |
| dependsOn · incoming | A refinement drawing follows the capability mapspec:consumers.spec-studio.diagram-kinds.capability-tree · resolves | declared | None | None |
| dependsOn · incoming | The upgrade kit shows a corpus what it could adoptspec:consumers.upgrade-kit · resolves | declared | the guide teaches epic organization through the capability map | None |
| dependsOn · incoming | The Protocol organizes its own features in capability epicsspec:protocol.capability-epics · resolves | declared | the capability map exposes the corpus's authored refinement | None |
| refines · incoming | The capability map page makes refinement readable by epicspec:consumers.spec-studio.capability-map-page · resolves | declared | the page is the capability map's reading for a person | None |
| refines · incoming | Capability epics keep kind independent of altitudespec:decisions.epics-of-any-kind · resolves | declared | settles which Specs the capability map reads as epics | None |
Bindings
Implementation binding: present
impl:protocol.capability-map-recipe· asserts realization of The capability map in docs/agent-surface/recipes.md ·test/recipes.test.ts:7602· role projection
Design reference: none
Verifier binding: present
- test:protocol.capability-map · anchored ·
test/recipes.test.ts:7610· 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.