actorThe capability map reads every epic and its refinement descendants
spec:consumers.capability-mapPacks: 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 391 · Branch: cursor/media-plan-and-articles-09b1 · Commit: 076cd4f1f85640d8236e5cca1bffffa68ab79a33 · Start: 2026-10-31T15:32:20.471Z · Stop: 2026-10-31T15:34:02.073Z
Name Suite Result Duration cites each recipe that a Spec names by number and heading under the catalog's number the agent-surface recipe corpus passed 203.44 ms pairs every documented recipe with exactly one fenced body the agent-surface recipe corpus passed 1.09 ms keeps self-hosting and adopter invocation forms distinct the agent-surface recipe corpus passed 7.14 ms teaches parameters as data and keeps the on-ramps naming the CLI verbs and recipes the agent-surface recipe corpus passed 4.55 ms keeps every body plain JavaScript with a return the agent-surface recipe corpus passed 5.66 ms runs every body through the front door without throwing the agent-surface recipe corpus passed 4526.76 ms returns the non-example build backlog and audits excluded example evidence the agent-surface recipe corpus passed 71.36 ms returns a drift alarm of code-bound specs below ready, with the floor named the agent-surface recipe corpus passed 46.65 ms returns one spec's guarantees with its relations and verifier bindings the agent-surface recipe corpus passed 38.2 ms keeps hostile changed filenames as inert JSON data the agent-surface recipe corpus passed 36.27 ms returns the complete diff-to-at-risk bridge the agent-surface recipe corpus passed 48.16 ms names a changed identity-only unit as unlinked, never coverage-unknown or dropped the agent-surface recipe corpus passed 66.24 ms returns a pack's review backbone with its verifier gaps the agent-surface recipe corpus passed 54.38 ms returns concept matches carrying the fields that matched the agent-surface recipe corpus passed 86.65 ms returns readiness divergence as an array, where empty is lawful the agent-surface recipe corpus passed 94.47 ms returns the warn-level signals as data rather than as a gate the agent-surface recipe corpus passed 57.35 ms returns promotion preflight without conferring a readiness edit the agent-surface recipe corpus passed 29.14 ms names the next rung's unmet clause and the dependency that breaks it on a probe the agent-surface recipe corpus passed 1.95 ms keeps declared examples distinct from enabled verifier bindings the agent-surface recipe corpus passed 315.12 ms returns the complete non-ready ladder grouped by family the agent-surface recipe corpus passed 112.21 ms distinguishes a passing current floor from a blocked or clear stated next rung the agent-surface recipe corpus passed 4.94 ms returns every committed structural component with non-empty membership the agent-surface recipe corpus passed 59.76 ms returns exact component uses fan-in and fan-out from the structural oracle the agent-surface recipe corpus passed 47.86 ms returns a component structural neighborhood and an exact absent shape the agent-surface recipe corpus passed 87.05 ms reports census structural coverage from graph and report ground truth the agent-surface recipe corpus passed 40.04 ms reports graph-side upper bounds for every shipped projection root the agent-surface recipe corpus passed 34.89 ms returns the architecture map of every live component with recomputed fan-in and fan-out the agent-surface recipe corpus passed 54.87 ms explains the shared policy and adapter collaborations from graph intent and binding claims the agent-surface recipe corpus passed 69.84 ms retains local uses and their claims without counting a component as its own dependency the agent-surface recipe corpus passed 75.74 ms preserves an unresolved responsibility without inventing its design the agent-surface recipe corpus passed 89.93 ms keeps a dangling component row and surfaces unresolved uses edges the agent-surface recipe corpus passed 92.01 ms preserves an unresolved architecture-map member when memberOf outlives the node the agent-surface recipe corpus passed 86.53 ms returns the decision map ranked by live shaping fan-in the agent-surface recipe corpus passed 49.06 ms returns a planning-slice neighborhood and an exact absent shape the agent-surface recipe corpus passed 100.85 ms returns non-empty bidirectional dependencies for the binding-grain planning slice the agent-surface recipe corpus passed 55.05 ms returns planning-slice implementations, never abstractions the agent-surface recipe corpus passed 49.58 ms preserves an unresolved component row when memberOf outlives the node the agent-surface recipe corpus passed 114.57 ms reports derived design columns beside the existing backlog fields the agent-surface recipe corpus passed 5.97 ms groups backlog rows under lawful Object.prototype path segments the agent-surface recipe corpus passed 70.12 ms groups lower-ladder rows under lawful Object.prototype path segments the agent-surface recipe corpus passed 65.98 ms groups decided subjects under lawful Object.prototype path segments the agent-surface recipe corpus passed 50.79 ms lists key families across the corpus in key, Spec and section order with the documented sample register recipe semantics passed 87.47 ms lists Design and UI key families without a row cap, preserving values, lines and overlapping prefixes register recipe semantics passed 6.93 ms diagnoses an unresolved Pack member without returning a partial register register recipe semantics passed 2 ms diagnoses malformed key-family parameters without a register: {"prefixes":[]} register recipe semantics passed 47.39 ms diagnoses malformed key-family parameters without a register: {"prefixes":[""]} register recipe semantics passed 51.9 ms diagnoses malformed key-family parameters without a register: {"prefixes":["a","a"]} register recipe semantics passed 60.77 ms diagnoses malformed key-family parameters without a register: {"prefixes":"limit"} register recipe semantics passed 48.71 ms diagnoses malformed key-family parameters without a register: {"pack":"pack:absent"} register recipe semantics passed 47.17 ms diagnoses malformed key-family parameters without a register: {"specs":["spec:absent"]} register recipe semantics passed 47.63 ms diagnoses malformed key-family parameters without a register: {"specs":"bad"} register recipe semantics passed 48.35 ms diagnoses malformed key-family parameters without a register: {"pack":"pack:self-hosting-v1","specs":[]} register recipe semantics passed 61.9 ms runs recipe 20 as written in default output register recipe semantics passed 83.5 ms runs recipe 21 as written in default output register recipe semantics passed 43.91 ms runs recipe 22 as written in default output register recipe semantics passed 140.26 ms runs recipe 23 as written in default output register recipe semantics passed 135.22 ms runs recipe 24 as written in default output register recipe semantics passed 76.44 ms runs recipe 25 as written in default output register recipe semantics passed 32.84 ms runs recipe 26 as written in default output register recipe semantics passed 34.44 ms runs recipe 27 as written in default output register recipe semantics passed 35.78 ms runs recipe 28 as written in default output register recipe semantics passed 28.08 ms runs recipe 29 as written in default output register recipe semantics passed 25.29 ms runs recipe 30 as written in default output register recipe semantics passed 66.24 ms runs recipe 31 as written in default output register recipe semantics passed 36.6 ms runs recipe 32 as written in default output register recipe semantics passed 22.72 ms renders long JSON values with the same default text bound as strings register recipe semantics passed 7.07 ms registers an omitted blocking flag through a TypeScript carrier register recipe semantics passed 2.89 ms searches coined keys of every value shape through a TypeScript carrier register recipe semantics passed 2.3 ms searches strings inside a matching coined list or object key register recipe semantics passed 2.92 ms searches a null coined-key value in the reader graph register recipe semantics passed 2.36 ms keeps register counts under totals and top-level plural nouns as arrays register recipe semantics passed 602.26 ms pins whole-token matching for 'retry' in 'entry' / 'retry' register recipe semantics passed 1 ms pins whole-token matching for 'retry' in 'entry' / 'retryable' register recipe semantics passed 0.29 ms pins whole-token matching for 'retry' in 'entry' / 'retry-worker' register recipe semantics passed 0.22 ms pins whole-token matching for 'retry' in 'retryWorker' / 'unrelated' register recipe semantics passed 0.21 ms pins whole-token matching for 'Retry' in 'entry' / 'RETRY.' register recipe semantics passed 0.19 ms pins whole-token matching for 'retry worker' in 'retryWorker' / 'retry-worker' register recipe semantics passed 0.18 ms pins whole-token matching for 'retry worker' in 'entry' / 'worker retry' register recipe semantics passed 0.27 ms pins whole-token matching for 'retry worker' in 'entry' / 'retry the worker' register recipe semantics passed 0.18 ms pins whole-token matching for 'server' in 'entry' / 'HTTPServer' register recipe semantics passed 0.27 ms pins whole-token matching for 'v' in 'entry' / 'v2' register recipe semantics passed 0.21 ms registers every authored question, blocking Specs first register recipe semantics passed 65.36 ms reports one-hop footing of all four types, including unresolved targets register recipe semantics passed 94.97 ms audits mention pairs, skips fences, and preserves full ids and direction register recipe semantics passed 1.17 ms resolves entry mentions and retains every token and pair location through a probe root register recipe semantics passed 5.54 ms reads the whole mention token through an underscore as malformed, never the existing prefix register recipe semantics passed 0.73 ms reads the whole mention token through a slash as malformed, never the existing prefix register recipe semantics passed 0.46 ms reads the whole mention token through a comma as malformed, never the existing prefix register recipe semantics passed 0.49 ms reads the whole mention token through an underscore and a letter as malformed, never the existing prefix register recipe semantics passed 0.42 ms reads the whole mention token through a slash and a letter as malformed, never the existing prefix register recipe semantics passed 0.38 ms reads the whole mention token through a comma and a letter as malformed, never the existing prefix register recipe semantics passed 0.4 ms reads the whole mention token through a letter outside ASCII as malformed, never the existing prefix register recipe semantics passed 0.37 ms reads the whole mention token through an escaped underscore as malformed, never the existing prefix register recipe semantics passed 0.36 ms reads the whole mention token through a combining mark as malformed, never the existing prefix register recipe semantics passed 0.48 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.45 ms reads the whole mention token through a zero-width space as malformed, never the existing prefix register recipe semantics passed 0.44 ms reads the whole mention token through fullwidth connector punctuation as malformed, never the existing prefix register recipe semantics passed 0.4 ms reads the whole mention token through a NUL as malformed, never the existing prefix register recipe semantics passed 0.41 ms reads the whole mention token through an escape character as malformed, never the existing prefix register recipe semantics passed 0.39 ms reads the whole mention token through a delete character as malformed, never the existing prefix register recipe semantics passed 0.55 ms reads the whole mention token through a C1 control character as malformed, never the existing prefix register recipe semantics passed 0.43 ms reads the whole mention token through a hyphenated entry key as malformed, never the existing prefix register recipe semantics passed 0.43 ms reads the whole mention token through an entry suffix with no key as malformed, never the existing prefix register recipe semantics passed 0.43 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 0.51 ms reads the clean id through Markdown punctuation: a comma register recipe semantics passed 0.42 ms reads the clean id through Markdown punctuation: a colon register recipe semantics passed 0.43 ms reads the clean id through Markdown punctuation: a closing parenthesis register recipe semantics passed 0.41 ms reads the clean id through Markdown punctuation: bold register recipe semantics passed 0.41 ms reads the clean id through Markdown punctuation: emphasis register recipe semantics passed 0.41 ms reads the clean id through Markdown punctuation: strikethrough register recipe semantics passed 0.38 ms reads the clean id through Markdown punctuation: backticks register recipe semantics passed 0.43 ms reads the clean id through Markdown punctuation: ASCII double quotes register recipe semantics passed 0.38 ms reads the clean id through Markdown punctuation: ASCII single quotes register recipe semantics passed 0.53 ms reads the clean id through Markdown punctuation: typographic double quotes register recipe semantics passed 0.46 ms reads the clean id through Markdown punctuation: typographic single quotes register recipe semantics passed 0.43 ms reads the clean id through Markdown punctuation: an em dash register recipe semantics passed 0.41 ms reads the clean id through Markdown punctuation: an en dash register recipe semantics passed 0.43 ms reads the clean id through Markdown punctuation: an ellipsis register recipe semantics passed 0.42 ms reads the clean id through Markdown punctuation: an escaped star register recipe semantics passed 0.42 ms reads the clean id through Markdown punctuation: an escaped exclamation mark register recipe semantics passed 0.45 ms reads the clean id through Markdown punctuation: U+0085 register recipe semantics passed 0.4 ms reads the clean id through Markdown punctuation: a no-break space register recipe semantics passed 0.4 ms reads the clean id through Markdown punctuation: a tab register recipe semantics passed 0.38 ms reads the clean id through Markdown punctuation: an arrow register recipe semantics passed 0.37 ms reads a placeholder or a bare prefix as prose, not a mention register recipe semantics passed 0.47 ms scans nested arrays in examples while skipping object fences by position register recipe semantics passed 1.04 ms addresses only lawful Design and UI entry keys in search results register recipe semantics passed 1.08 ms scopes mentions by the mentioning Spec only register recipe semantics passed 3.1 ms reports malformed open questions without counting them: "one question" register recipe semantics passed 0.51 ms reports malformed open questions without counting them: {} register recipe semantics passed 0.28 ms reports malformed open questions without counting them: 42 register recipe semantics passed 0.29 ms reports malformed open questions without counting them: {"blocking":true} register recipe semantics passed 0.27 ms reports malformed open questions without counting them: null register recipe semantics passed 0.32 ms reports malformed open questions without counting them: "" register recipe semantics passed 0.3 ms reports malformed open questions without counting them: {"question":"valid","blocking":"yes"} register recipe semantics passed 0.31 ms reports malformed open questions without counting them: {"question":"valid","blocking":null} register recipe semantics passed 0.33 ms reports malformed open questions without counting them: {"question":"valid"} register recipe semantics passed 0.38 ms reports an off-grammar question key as malformed: {"question":"valid","key":"AggregateReach"} register recipe semantics passed 0.46 ms reports an off-grammar question key as malformed: {"question":"valid","key":"aggregate-reach"} register recipe semantics passed 0.32 ms reports an off-grammar question key as malformed: {"question":"valid","key":""} register recipe semantics passed 0.33 ms reports an off-grammar question key as malformed: {"question":"valid","key":7} register recipe semantics passed 0.33 ms reports an off-grammar question key as malformed: {"question":"valid","key":null} register recipe semantics passed 0.31 ms reports an off-grammar question key as malformed: {"question":"valid","blocking":true} register recipe semantics passed 0.32 ms searches whole tokens, coined keys, narrative and fence steps register recipe semantics passed 10.86 ms lists every pinned declaration this corpus holds register recipe semantics passed 151.14 ms reads spans of any run length and skips every entry that pins nothing register recipe semantics passed 0.81 ms resolves the catalog's addresses on this corpus as written address resolution and dependency cycles passed 64.16 ms reports this corpus's dependency cycles as an independent reachability check finds them address resolution and dependency cycles passed 88.32 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 4.2 ms reports a self-loop inside a larger set only with that set address resolution and dependency cycles passed 4.72 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 6.46 ms walks a chain of 10,000 Specs and one cycle of 5,000 without recursing address resolution and dependency cycles passed 178.94 ms resolves an inherited property name only where the Spec authors it as a key address resolution and dependency cycles passed 3.03 ms resolves the design's probe addresses with one row and one reason each address resolution and dependency cycles passed 2.86 ms resolves a keyed question, refuses description in Design and UI, and keeps repeats address resolution and dependency cycles passed 2.69 ms registers a keyed question with its key and an unkeyed one with a null key address resolution and dependency cycles passed 1.76 ms audits a question address against the target's open question keys address resolution and dependency cycles passed 1.86 ms addresses a keyed question's text and matches its key, never the key as a row address resolution and dependency cycles passed 5.05 ms returns one row per Studio member with four independent facts design references and the architecture taxonomy passed 114.98 ms lists a referencing unit beside the realizing units without conferring implemented design references and the architecture taxonomy passed 152.22 ms lists the reader beside each Studio member that depends on it, with its realizing units design references and the architecture taxonomy passed 66.69 ms derives builds-on from the member's relations without conferring a fact on it design references and the architecture taxonomy passed 154.09 ms returns the role, layer, and context taxonomy from the code units alone design references and the architecture taxonomy passed 33.37 ms counts references as edges apart from the units that carry them design references and the architecture taxonomy passed 83.72 ms creates each taxonomy bucket once, however many units share the value design references and the architecture taxonomy passed 102.31 ms declares and checks only its indexed parameter names first: 1 recipe parameters and the shipped recipe files passed 0.86 ms declares and checks only its indexed parameter names first: 2 recipe parameters and the shipped recipe files passed 0.45 ms declares and checks only its indexed parameter names first: 3 recipe parameters and the shipped recipe files passed 0.48 ms declares and checks only its indexed parameter names first: 4 recipe parameters and the shipped recipe files passed 0.4 ms declares and checks only its indexed parameter names first: 5 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 6 recipe parameters and the shipped recipe files passed 0.39 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.45 ms declares and checks only its indexed parameter names first: 9 recipe parameters and the shipped recipe files passed 0.44 ms declares and checks only its indexed parameter names first: 10 recipe parameters and the shipped recipe files passed 0.41 ms declares and checks only its indexed parameter names first: 11 recipe parameters and the shipped recipe files passed 0.36 ms declares and checks only its indexed parameter names first: 12 recipe parameters and the shipped recipe files passed 0.35 ms declares and checks only its indexed parameter names first: 13 recipe parameters and the shipped recipe files passed 0.98 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.38 ms declares and checks only its indexed parameter names first: 16 recipe parameters and the shipped recipe files passed 0.38 ms declares and checks only its indexed parameter names first: 17 recipe parameters and the shipped recipe files passed 0.34 ms declares and checks only its indexed parameter names first: 18 recipe parameters and the shipped recipe files passed 0.36 ms declares and checks only its indexed parameter names first: 19 recipe parameters and the shipped recipe files passed 3.5 ms declares and checks only its indexed parameter names first: 20 recipe parameters and the shipped recipe files passed 0.42 ms declares and checks only its indexed parameter names first: 21 recipe parameters and the shipped recipe files passed 0.42 ms declares and checks only its indexed parameter names first: 22 recipe parameters and the shipped recipe files passed 0.4 ms declares and checks only its indexed parameter names first: 23 recipe parameters and the shipped recipe files passed 0.38 ms declares and checks only its indexed parameter names first: 24 recipe parameters and the shipped recipe files passed 3.6 ms declares and checks only its indexed parameter names first: 25 recipe parameters and the shipped recipe files passed 0.41 ms declares and checks only its indexed parameter names first: 26 recipe parameters and the shipped recipe files passed 0.41 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 3.48 ms declares and checks only its indexed parameter names first: 29 recipe parameters and the shipped recipe files passed 0.4 ms declares and checks only its indexed parameter names first: 30 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 31 recipe parameters and the shipped recipe files passed 0.36 ms declares and checks only its indexed parameter names first: 32 recipe parameters and the shipped recipe files passed 3.39 ms declares and checks only its indexed parameter names first: 33 recipe parameters and the shipped recipe files passed 0.45 ms declares and checks only its indexed parameter names first: 34 recipe parameters and the shipped recipe files passed 0.36 ms declares and checks only its indexed parameter names first: 35 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 36 recipe parameters and the shipped recipe files passed 0.45 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.37 ms declares and checks only its indexed parameter names first: 39 recipe parameters and the shipped recipe files passed 0.38 ms declares and checks only its indexed parameter names first: 40 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 41 recipe parameters and the shipped recipe files passed 0.38 ms declares and checks only its indexed parameter names first: 42 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 43 recipe parameters and the shipped recipe files passed 0.43 ms declares and checks only its indexed parameter names first: 44 recipe parameters and the shipped recipe files passed 0.4 ms declares and checks only its indexed parameter names first: 45 recipe parameters and the shipped recipe files passed 0.39 ms declares and checks only its indexed parameter names first: 46 recipe parameters and the shipped recipe files passed 0.37 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.42 ms declares and checks only its indexed parameter names first: 49 recipe parameters and the shipped recipe files passed 0.41 ms declares and checks only its indexed parameter names first: 50 recipe parameters and the shipped recipe files passed 0.42 ms declares and checks only its indexed parameter names first: 51 recipe parameters and the shipped recipe files passed 0.37 ms declares and checks only its indexed parameter names first: 52 recipe parameters and the shipped recipe files passed 0.47 ms declares and checks only its indexed parameter names first: 53 recipe parameters and the shipped recipe files passed 0.48 ms declares and checks only its indexed parameter names first: 54 recipe parameters and the shipped recipe files passed 0.56 ms declares and checks only its indexed parameter names first: 55 recipe parameters and the shipped recipe files passed 0.44 ms returns only the unknown-name answer before reading recipe inputs: 1 recipe parameters and the shipped recipe files passed 64.45 ms returns only the unknown-name answer before reading recipe inputs: 2 recipe parameters and the shipped recipe files passed 86.74 ms returns only the unknown-name answer before reading recipe inputs: 3 recipe parameters and the shipped recipe files passed 64.56 ms returns only the unknown-name answer before reading recipe inputs: 4 recipe parameters and the shipped recipe files passed 40.29 ms returns only the unknown-name answer before reading recipe inputs: 5 recipe parameters and the shipped recipe files passed 46.83 ms returns only the unknown-name answer before reading recipe inputs: 6 recipe parameters and the shipped recipe files passed 46.25 ms returns only the unknown-name answer before reading recipe inputs: 7 recipe parameters and the shipped recipe files passed 48.18 ms returns only the unknown-name answer before reading recipe inputs: 8 recipe parameters and the shipped recipe files passed 42.23 ms returns only the unknown-name answer before reading recipe inputs: 9 recipe parameters and the shipped recipe files passed 71.25 ms returns only the unknown-name answer before reading recipe inputs: 10 recipe parameters and the shipped recipe files passed 31.24 ms returns only the unknown-name answer before reading recipe inputs: 11 recipe parameters and the shipped recipe files passed 31.96 ms returns only the unknown-name answer before reading recipe inputs: 12 recipe parameters and the shipped recipe files passed 49.78 ms returns only the unknown-name answer before reading recipe inputs: 13 recipe parameters and the shipped recipe files passed 39.97 ms returns only the unknown-name answer before reading recipe inputs: 14 recipe parameters and the shipped recipe files passed 63.85 ms returns only the unknown-name answer before reading recipe inputs: 15 recipe parameters and the shipped recipe files passed 52.92 ms returns only the unknown-name answer before reading recipe inputs: 16 recipe parameters and the shipped recipe files passed 35.88 ms returns only the unknown-name answer before reading recipe inputs: 17 recipe parameters and the shipped recipe files passed 33.16 ms returns only the unknown-name answer before reading recipe inputs: 18 recipe parameters and the shipped recipe files passed 39.7 ms returns only the unknown-name answer before reading recipe inputs: 19 recipe parameters and the shipped recipe files passed 36.47 ms returns only the unknown-name answer before reading recipe inputs: 20 recipe parameters and the shipped recipe files passed 34.05 ms returns only the unknown-name answer before reading recipe inputs: 21 recipe parameters and the shipped recipe files passed 37.69 ms returns only the unknown-name answer before reading recipe inputs: 22 recipe parameters and the shipped recipe files passed 34.48 ms returns only the unknown-name answer before reading recipe inputs: 23 recipe parameters and the shipped recipe files passed 45.55 ms returns only the unknown-name answer before reading recipe inputs: 24 recipe parameters and the shipped recipe files passed 37.07 ms returns only the unknown-name answer before reading recipe inputs: 25 recipe parameters and the shipped recipe files passed 41.58 ms returns only the unknown-name answer before reading recipe inputs: 26 recipe parameters and the shipped recipe files passed 36.43 ms returns only the unknown-name answer before reading recipe inputs: 27 recipe parameters and the shipped recipe files passed 40.71 ms returns only the unknown-name answer before reading recipe inputs: 28 recipe parameters and the shipped recipe files passed 40.12 ms returns only the unknown-name answer before reading recipe inputs: 29 recipe parameters and the shipped recipe files passed 34.37 ms returns only the unknown-name answer before reading recipe inputs: 30 recipe parameters and the shipped recipe files passed 41.06 ms returns only the unknown-name answer before reading recipe inputs: 31 recipe parameters and the shipped recipe files passed 35.56 ms returns only the unknown-name answer before reading recipe inputs: 32 recipe parameters and the shipped recipe files passed 43.01 ms returns only the unknown-name answer before reading recipe inputs: 33 recipe parameters and the shipped recipe files passed 37.21 ms returns only the unknown-name answer before reading recipe inputs: 34 recipe parameters and the shipped recipe files passed 41.37 ms returns only the unknown-name answer before reading recipe inputs: 35 recipe parameters and the shipped recipe files passed 39.18 ms returns only the unknown-name answer before reading recipe inputs: 36 recipe parameters and the shipped recipe files passed 38.62 ms returns only the unknown-name answer before reading recipe inputs: 37 recipe parameters and the shipped recipe files passed 43.69 ms returns only the unknown-name answer before reading recipe inputs: 38 recipe parameters and the shipped recipe files passed 38.21 ms returns only the unknown-name answer before reading recipe inputs: 39 recipe parameters and the shipped recipe files passed 37.8 ms returns only the unknown-name answer before reading recipe inputs: 40 recipe parameters and the shipped recipe files passed 34.85 ms returns only the unknown-name answer before reading recipe inputs: 41 recipe parameters and the shipped recipe files passed 38.46 ms returns only the unknown-name answer before reading recipe inputs: 42 recipe parameters and the shipped recipe files passed 37.37 ms returns only the unknown-name answer before reading recipe inputs: 43 recipe parameters and the shipped recipe files passed 31.83 ms returns only the unknown-name answer before reading recipe inputs: 44 recipe parameters and the shipped recipe files passed 25.05 ms returns only the unknown-name answer before reading recipe inputs: 45 recipe parameters and the shipped recipe files passed 35.12 ms returns only the unknown-name answer before reading recipe inputs: 46 recipe parameters and the shipped recipe files passed 41.83 ms returns only the unknown-name answer before reading recipe inputs: 47 recipe parameters and the shipped recipe files passed 35.78 ms returns only the unknown-name answer before reading recipe inputs: 48 recipe parameters and the shipped recipe files passed 40.67 ms returns only the unknown-name answer before reading recipe inputs: 49 recipe parameters and the shipped recipe files passed 40.51 ms returns only the unknown-name answer before reading recipe inputs: 50 recipe parameters and the shipped recipe files passed 37.07 ms returns only the unknown-name answer before reading recipe inputs: 51 recipe parameters and the shipped recipe files passed 40.67 ms returns only the unknown-name answer before reading recipe inputs: 52 recipe parameters and the shipped recipe files passed 39.56 ms returns only the unknown-name answer before reading recipe inputs: 53 recipe parameters and the shipped recipe files passed 27.59 ms returns only the unknown-name answer before reading recipe inputs: 54 recipe parameters and the shipped recipe files passed 33.04 ms returns only the unknown-name answer before reading recipe inputs: 55 recipe parameters and the shipped recipe files passed 41.41 ms diagnoses wrong subject names, mixed known names and ordered unknown names through shipped bodies recipe parameters and the shipped recipe files passed 100 ms reads and names each parameter, with a fallback only when the contract supplies one recipe parameters and the shipped recipe files passed 9.19 ms ships every catalog body as dist/recipes/NN-slug.js, byte for byte recipe parameters and the shipped recipe files passed 8.28 ms runs every shipped file, read whole, to the answer its catalog body gives recipe parameters and the shipped recipe files passed 6827.51 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.37 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.95 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.82 ms passes recipe 4 its changed files from a file named with @PATH recipe parameters and the shipped recipe files passed 40.39 ms resolves the addresses recipe 25 receives as data recipe parameters and the shipped recipe files passed 67.17 ms reads the Pack the Pack recipes review from params.pack recipe parameters and the shipped recipe files passed 187.66 ms returns the Pack design of every corpus Pack as the raw graph states it design recipes passed 789.57 ms returns the probe Pack's design exactly, member by member design recipes passed 8.24 ms reaches every Spec resting on the corpus sample, by a shortest path of real edges design recipes passed 364.56 ms walks a dependency chain inbound only, once per Spec, and keeps a reference apart design recipes passed 1.71 ms registers every corpus decision with its supersession, subjects and keyed questions design recipes passed 86.75 ms registers a supersedes pair both ways and a decision that shapes nothing design recipes passed 4.58 ms carries a relation's reason beside the relation in recipes 3, 19, 21 and 31 design recipes passed 1.68 ms registers narrowing decisions both ways and excludes refinement by other kinds design recipes passed 0.54 ms keeps the decoder in reader without adding crossings against the lawful notation alternative design recipes passed 90.25 ms reports the corpus's architecture crossings as the raw edges state them design recipes passed 61.19 ms names a crossing of two contexts and of two layers, and skips what cannot cross design recipes passed 4.2 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 134.85 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 220.2 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 4.76 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.88 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 5.46 ms counts equal layers and contexts between distinct components even without crossings answers that fit passed 0.51 ms returns guarantee entries and complete unit and verifier locations from context answers that fit passed 6.21 ms reports directions relative to an impacted Pack answers that fit passed 0.89 ms indexes exactly the present recipes with names, parameters and uses answers that fit passed 3.39 ms runs a shipped body wrapped inside a caller's filter answers that fit passed 112.01 ms keeps impact totals and puts both edge directions in the summary answers that fit passed 2.35 ms keeps the reader's Pack value in summary, full and selected-member answers answers that fit passed 7.28 ms reports both next rungs when the stated rung is below the floor answers that fit passed 0.62 ms reports no next rung at ready answers that fit passed 35.24 ms reports gap exemptions and every omitted warning beyond the first 25 answers that fit passed 2.84 ms lists only defined unimplemented designs and keeps exclusions and references answers that fit passed 1.08 ms registers fields and counts deferrals apart from design holds authoring grammar recipes passed 4.32 ms lists intended mentions apart and preserves the validator's warnings authoring grammar recipes passed 8.87 ms matches rule keys beside their text without searching the derived map authoring grammar recipes passed 5.29 ms locates unkeyed rule text and question field text authoring grammar recipes passed 7.51 ms resolves rule addresses and preserves every parsed part of a miss authoring grammar recipes passed 3 ms counts rule coverage from bound examples and reports unbound intent beside it authoring grammar recipes passed 3.01 ms reports missing rule-coverage scopes and accepts a scope with no rules authoring grammar recipes passed 2.53 ms runs the catalog body in the evaluator without a module loader entry citations recipe passed 0.77 ms orders a declaration's citing files and lines independently of input order entry citations recipe passed 0.6 ms joins declarations and other cited entries, including uncited declarations entry citations recipe passed 0.74 ms includes absent Specs and malformed tokens only in the corpus unresolved list entry citations recipe passed 1.17 ms returns diagnostics without findings for {"pack":"pack:missing"} entry citations recipe passed 0.78 ms returns diagnostics without findings for {"specs":["spec:missing"]} entry citations recipe passed 0.44 ms returns diagnostics without findings for {"specs":"spec:probe.cited"} entry citations recipe passed 0.38 ms returns diagnostics without findings for {"pack":"pack:probe.citations","specs":[]} entry citations recipe passed 0.41 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.44 ms reads an absent table as empty, and accepts an empty Spec scope entry citations recipe passed 0.48 ms adds recorded component fields, references, member roles and exact crossing-use counts Studio architecture and example-space recipe additions passed 82.69 ms runs shipped recipe 44 over every decoded space and refuses bad scopes Studio architecture and example-space recipe additions passed 425.18 ms runs recipe 45 as shipped and reports missing and malformed CTRF metadata not recorded passed 462.11 ms recipe 49 renders the panel memo from its catalog body and refuses a malformed document not recorded passed 116.15 ms reports text-preserving rule and flow key changes apart from rewording not recorded passed 8.96 ms preserves a removed keyed rule address beside new unkeyed text not recorded passed 2.6 ms preserves a removed keyed flow address beside new unkeyed text not recorded passed 2.19 ms distinguishes removed unkeyed rule base positions from head positions not recorded passed 3.04 ms distinguishes removed unkeyed flow base positions from head positions not recorded passed 2.55 ms retains every diamond edge and intermediate node while counting each descendant once the capability map recipe passed 1.25 ms returns summary/full parity with explicit omissions for scope {} the capability map recipe passed 1.76 ms returns summary/full parity with explicit omissions for scope {"epic":"spec:probe.epic"} the capability map recipe passed 1.06 ms normalizes prose and unflagged questions while preserving authored indices the capability map recipe passed 0.38 ms retains null titles in serialized node and epic rows when a title degrades the capability map recipe passed 0.71 ms reports a self-refining epic as a cycle without making it its own parent epic the capability map recipe passed 2.75 ms uses the outside unreached parent as root rather than its child cycle group the capability map recipe passed 0.49 ms selects an epic of kind behavior without changing its kind the capability map recipe passed 0.45 ms selects an epic of kind workflow without changing its kind the capability map recipe passed 0.25 ms selects an epic of kind example without changing its kind the capability map recipe passed 0.19 ms selects an epic of kind rule without changing its kind the capability map recipe passed 0.18 ms selects an epic of kind constraint without changing its kind the capability map recipe passed 0.19 ms selects an epic of kind model without changing its kind the capability map recipe passed 0.23 ms selects an epic of kind decision without changing its kind the capability map recipe passed 0.23 ms selects an epic of kind contract without changing its kind the capability map recipe passed 0.22 ms reads node evidence and ordered questions directly, including examples and decisions as parents the capability map recipe passed 0.77 ms represents a missing floor as none and keeps the epic's evidence outside its rollup the capability map recipe passed 0.49 ms counts stated rungs separately from reached floors without lending a bound example's facts to its epic the capability map recipe passed 0.78 ms keeps nested and overlapping memberships and outside parents when selecting one epic the capability map recipe passed 1.12 ms traverses only declared refinement and never infers ancestry from other graph structure the capability map recipe passed 0.63 ms reports cycles, self-links and unresolved or non-Spec endpoints separately from parameter failures the capability map recipe passed 0.54 ms limits damage to edges touching a selected epic scope and terminates reached cycles the capability map recipe passed 0.34 ms keeps overlapping unreached root scopes unique and exposes an empty corpus the capability map recipe passed 0.34 ms refuses invalid parameters without a map: { epic: null } the capability map recipe passed 0.17 ms refuses invalid parameters without a map: { epic: 1 } the capability map recipe passed 0.11 ms refuses invalid parameters without a map: { epic: [] } the capability map recipe passed 0.07 ms refuses invalid parameters without a map: { epic: 'spec:probe.absent' } the capability map recipe passed 0.06 ms refuses invalid parameters without a map: { epic: 'spec:probe.plain' } the capability map recipe passed 0.05 ms refuses invalid parameters without a map: { epic: 'impl:probe.non-spec' } the capability map recipe passed 0.05 ms refuses invalid parameters without a map: { detail: 'true' } the capability map recipe passed 0.05 ms refuses invalid parameters without a map: { detail: 1 } the capability map recipe passed 0.05 ms refuses invalid parameters without a map: { detail: null } the capability map recipe passed 0.05 ms refuses invalid parameters without a map: { epic: 1, detail: 'x' } the capability map recipe passed 0.11 ms checks unknown names before known values the capability map recipe passed 0.11 ms answers deterministically in code-unit id order even when graph arrays are reversed the capability map recipe passed 1.22 ms reaches every Spec from the intended epic owners while preserving kinds and overlapping refinement the Protocol's capability epics passed 207.42 ms keeps refinement and dependency from spec:extraction.build-pipeline to spec:extraction.derive-graph the Protocol's capability epics passed 2.08 ms keeps refinement and dependency from spec:validation.corpus-rules to spec:consumers.agent-surface the Protocol's capability epics passed 2.24 ms keeps refinement and dependency from spec:validation.architecture-constraints to spec:validation.corpus-rules the Protocol's capability epics passed 2.19 ms keeps refinement and dependency from spec:validation.external-registers to spec:validation.corpus-rules the Protocol's capability epics passed 2.35 ms keeps every ready statement at the ready floor and leaves the drift alarm empty the Protocol's capability epics passed 73.37 ms runs the catalog body over the arc Pack through the CLI and keeps its summary totals the shipped design slice passed 359.23 ms runs the roadmap and its memo from the catalog over a named Pack not recorded passed 283.82 ms pins the adopter roadmap and its forward memo over the worked example not recorded passed 24.1 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.