SpecMalformedIdcorpus.address.malformed-idA clause id violating the shape, or a clause item under a section its file does not own, raises SpecMalformedId. | A clause id with the wrong shape, contract or operation. | corpus.address.malformed-idcorpus.address.malformed-idA clause id violating the shape, or a clause item under a section its file does not own, raises SpecMalformedId. |
SpecDuplicateIdcorpus.address.duplicate-idA clause id appearing in two items raises SpecDuplicateId, naming both locations. | A clause id in two rows. | corpus.address.duplicate-idcorpus.address.duplicate-idA clause id appearing in two items raises SpecDuplicateId, naming both locations. |
SpecWordCeilingcorpus.anatomy.word-ceilingsThe contract-words ceilings count each contract's statement, Why and lede words, and the adr-words ceilings each contract ADR's words outside fences, table rules and section slugs; a count off its ceiling raises SpecWordCeiling. | A contract or contract ADR whose word count differs from its ceiling. | corpus.anatomy.word-ceilingscorpus.anatomy.word-ceilingsThe contract-words ceilings count each contract's statement, Why and lede words, and the adr-words ceilings each contract ADR's words outside fences, table rules and section slugs; a count off its ceiling raises SpecWordCeiling. |
SpecScenariocorpus.anatomy.bad-scenarioA scenario naming a clause outside its operation, or holding neither a WHEN/THEN sentence nor a fixture path, raises SpecScenario. | A scenario naming a foreign clause, or holding no WHEN/THEN sentence or fixture path. | corpus.anatomy.bad-scenariocorpus.anatomy.bad-scenarioA scenario naming a clause outside its operation, or holding neither a WHEN/THEN sentence nor a fixture path, raises SpecScenario. |
SpecAnatomycorpus.anatomy.bad-anatomyA missing, extra or out-of-order ## section, a missing lede, a broken list, a malformed group or item, a title off the registry, an oversized file or statement, or a long-list count off its ceiling raises SpecAnatomy. | A contract file out of its section order, lede, clause list, title or size. | corpus.anatomy.bad-anatomycorpus.anatomy.bad-anatomyA missing, extra or out-of-order ## section, a missing lede, a broken list, a malformed group or item, a title off the registry, an oversized file or statement, or a long-list count off its ceiling raises SpecAnatomy. |
SpecRegistrycorpus.registry.unregisteredAn unregistered error after raises, an entry naming a missing clause, an error absent from its clause or present in another, and a malformed bound raise SpecRegistry. | A spelling, error or bound out of step with its fragment. | corpus.registry.unregisteredcorpus.registry.unregisteredAn unregistered error after raises, an entry naming a missing clause, an error absent from its clause or present in another, and a malformed bound raise SpecRegistry. |
SpecRegistryDriftcorpus.registry.driftA breach of variant-shape or variant-gloss, a performed refusal whose error has no defining site, and committed refusals with one past the registry-committed-sites ceiling raise SpecRegistryDrift. | A defining variant out of step with its registry entry, or a refusal whose code site and pin disagree. | corpus.registry.driftcorpus.registry.driftA breach of variant-shape or variant-gloss, a performed refusal whose error has no defining site, and committed refusals with one past the registry-committed-sites ceiling raise SpecRegistryDrift. |
SpecTermcorpus.registry.bad-termA term registered in two fragments, a term naming a missing clause or another contract's clause, an empty or longer gloss, and an avoid spelling that is itself a term raise SpecTerm. | A term registered twice, naming a missing or foreign clause, glossed out of bounds, or avoided as itself a term. | corpus.registry.bad-termcorpus.registry.bad-termA term registered in two fragments, a term naming a missing clause or another contract's clause, an empty or longer gloss, and an avoid spelling that is itself a term raise SpecTerm. |
SpecTermFirstUsecorpus.registry.term-first-useA guide's first use of a registered term, in any case or inflection, sits in a paragraph carrying the term's defining clause as a pointer; first uses without one past the term-first-use ceiling raise SpecTermFirstUse. | More guide first uses of a term without its defining pointer than the ceiling records. | corpus.registry.term-first-usecorpus.registry.term-first-useA guide's first use of a registered term, in any case or inflection, sits in a paragraph carrying the term's defining clause as a pointer; first uses without one past the term-first-use ceiling raise SpecTermFirstUse. |
SpecDanglingReferencecorpus.reference.danglingA {{id}} naming no clause raises SpecDanglingReference. | A pointer to no clause. | corpus.reference.danglingcorpus.reference.danglingA {{id}} naming no clause raises SpecDanglingReference. |
SpecTypeUnresolvedcorpus.reference.type-unresolvedA type pointer whose crate and module part names no file defining that struct or enum raises SpecTypeUnresolved. | A type pointer to no struct or enum. | corpus.reference.type-unresolvedcorpus.reference.type-unresolvedA type pointer whose crate and module part names no file defining that struct or enum raises SpecTypeUnresolved. |
SpecExternalLinkcorpus.reference.no-literatureA spec file carries no hyperlink to an external document and no path under references/; either raises SpecExternalLink. Literature lives in references/, which cites clause ids. | A link out of the spec, or into references/. | corpus.reference.no-literaturecorpus.reference.no-literatureA spec file carries no hyperlink to an external document and no path under references/; either raises SpecExternalLink. Literature lives in references/, which cites clause ids. |
SpecUnsettledcorpus.rationale.unsettled-lineAn unknown is one line where it applies: unsettled:, a question ending ?, owner: and a handle, affects: and a <contract>.<operation>. Another form, or a heading Open questions, Out of scope or See also, raises SpecUnsettled. | A malformed unknown, or an appendix heading. | corpus.rationale.unsettled-linecorpus.rationale.unsettled-lineAn unknown is one line where it applies: unsettled:, a question ending ?, owner: and a handle, affects: and a <contract>.<operation>. Another form, or a heading Open questions, Out of scope or See also, raises SpecUnsettled. |
SpecRecordcorpus.rationale.orphan-recordA record no Why cites, a Why naming no record or section, a record breaking its anatomy, and a section below record-threshold in an ADR every citation of which names a section raise SpecRecord. | An uncited or missing record, a bad Why, or a record out of anatomy. | corpus.rationale.orphan-recordcorpus.rationale.orphan-recordA record no Why cites, a Why naming no record or section, a record breaking its anatomy, and a section below record-threshold in an ADR every citation of which names a section raise SpecRecord. |
SpecWhyUnscopedcorpus.rationale.why-scopedA Why citing a contract ADR names its section as A-<contract>#<slug>. Bare A-<contract> citations count toward the why-unscoped ceiling; past it, each raises SpecWhyUnscoped. | More Why citations naming a contract ADR without a section than the ceiling records. | corpus.rationale.why-scopedcorpus.rationale.why-scopedA Why citing a contract ADR names its section as A-<contract>#<slug>. Bare A-<contract> citations count toward the why-unscoped ceiling; past it, each raises SpecWhyUnscoped. |
SpecProofObligationUnpinnedcorpus.state.proof-obligationformal/obligations.toml lists clause ids under clauses; a listed clause that does not compute proved raises SpecProofObligationUnpinned, so an entry joins once its theorem counts and stays while it does. | A clause listed as a proof obligation that does not compute proved. | corpus.state.proof-obligationcorpus.state.proof-obligationformal/obligations.toml lists clause ids under clauses; a listed clause that does not compute proved raises SpecProofObligationUnpinned, so an entry joins once its theorem counts and stays while it does. |
SpecStalePincorpus.state.stale-pinA tag whose <rev> differs from the digest of its clause's current statement raises SpecStalePin, and its clause computes broken. | A tag recording a statement revision the clause no longer carries. | corpus.state.stale-pincorpus.state.stale-pinA tag whose <rev> differs from the digest of its clause's current statement raises SpecStalePin, and its clause computes broken. |
SpecUnwiredcorpus.state.unwired-ceilingtools/ci/unwired.toml records a ceiling for the unwired count; a count above it raises SpecUnwired, and contextful-ci unwired --lower sets it to a lower live count, so the ceiling only falls. | More public items only a performed pin’s test reaches than the recorded ceiling. | corpus.state.unwired-ceilingcorpus.state.unwired-ceilingtools/ci/unwired.toml records a ceiling for the unwired count; a count above it raises SpecUnwired, and contextful-ci unwired --lower sets it to a lower live count, so the ceiling only falls. |
SpecCoverageRegressioncorpus.state.coverage-floorspec/pins.toml carries a per-contract floor of pinned clauses. A live count below its floor raises SpecCoverageRegression. | Fewer performed pins than the floor. | corpus.state.coverage-floorcorpus.state.coverage-floorspec/pins.toml carries a per-contract floor of pinned clauses. A live count below its floor raises SpecCoverageRegression. |
SpecBrokenPincorpus.state.bad-pinA pin naming no clause, a tag above no declaration, an item pin on a refusal or limit, a broken or unexercised pin, and one clause pinned to two theorems raise SpecBrokenPin. | A pin that names no clause, mismatches its kind, does not resolve, or competes with a second test. | corpus.state.bad-pincorpus.state.bad-pinA pin naming no clause, a tag above no declaration, an item pin on a refusal or limit, a broken or unexercised pin, and one clause pinned to two theorems raise SpecBrokenPin. |
SpecRoadmapcorpus.state.roadmapspec/roadmap.md names operations as <contract>.<operation> or <contract>.. A name resolving to no operation, an operation claimed by two milestones, or a milestone lacking its Reach: or Acceptance: line raises SpecRoadmap. | A roadmap name resolving to nothing, claimed twice, or a milestone missing its reach or acceptance line. | corpus.state.roadmapcorpus.state.roadmapspec/roadmap.md names operations as <contract>.<operation> or <contract>.. A name resolving to no operation, an operation claimed by two milestones, or a milestone lacking its Reach: or Acceptance: line raises SpecRoadmap. |
SpecAcceptanceMissingcorpus.state.acceptance-firstA milestone holding a pinned clause while its acceptance test computes absent raises SpecAcceptanceMissing. | A milestone with a pinned clause and no acceptance test. | corpus.state.acceptance-firstcorpus.state.acceptance-firstA milestone holding a pinned clause while its acceptance test computes absent raises SpecAcceptanceMissing. |
SpecClauseUnownedcorpus.state.unownedAn unpinned clause outside every operation an open milestone names, and named in backticks by no unsettled: line of its operation, is unowned; unowned clauses past the clause-unowned ceiling raise SpecClauseUnowned. | More unpinned, unscheduled and unquestioned clauses than the ceiling records. | corpus.state.unownedcorpus.state.unownedAn unpinned clause outside every operation an open milestone names, and named in backticks by no unsettled: line of its operation, is unowned; unowned clauses past the clause-unowned ceiling raise SpecClauseUnowned. |
SpecDeferredBehaviorcorpus.state.deferred-depthA milestone carrying a Depth: operation line admits only refusal and limit clauses; a behavior clause of an operation it schedules raises SpecDeferredBehavior. | A behavior clause in a milestone marked Depth: operation. | corpus.state.deferred-depthcorpus.state.deferred-depthA milestone carrying a Depth: operation line admits only refusal and limit clauses; a behavior clause of an operation it schedules raises SpecDeferredBehavior. |
SpecStaleRendercorpus.render.generatedcontextful-spec state regenerates spec/status.md, spec/targets.md, spec/cards/ and spec/spec.lock.json, and contextful-spec extract the lock file alone. A committed copy differing from regeneration raises SpecStaleRender. | A generated file differing from regeneration. | corpus.render.generatedcorpus.render.generatedcontextful-spec state regenerates spec/status.md, spec/targets.md, spec/cards/ and spec/spec.lock.json, and contextful-spec extract the lock file alone. A committed copy differing from regeneration raises SpecStaleRender. |
SpecDatedProsecorpus.render.dated-proseThe words planned, not yet, currently, today, shipped, implemented, previously, used to, legacy, TODO, FIXME and WIP, and an ISO date, raise SpecDatedProse in any authored file. | Build-state words or a date in authored text. | corpus.render.dated-prosecorpus.render.dated-proseThe words planned, not yet, currently, today, shipped, implemented, previously, used to, legacy, TODO, FIXME and WIP, and an ISO date, raise SpecDatedProse in any authored file. |
SpecCounterfactualcorpus.render.counterfactualThe words will, would and shall raise SpecCounterfactual in a contract file or a guide. | Future or conditional mood in a contract file. | corpus.render.counterfactualcorpus.render.counterfactualThe words will, would and shall raise SpecCounterfactual in a contract file or a guide. |
SpecBannedWordcorpus.render.banned-vocabularyThe nouns seam, load-bearing, wedge, rung, land-grab and an unbackticked axiom, a word whose digest spec/terms/refused-names.toml lists, a bare #<digits> and a pull-request link raise SpecBannedWord. | A banned noun, refused name or provenance link. | corpus.render.banned-vocabularycorpus.render.banned-vocabularyThe nouns seam, load-bearing, wedge, rung, land-grab and an unbackticked axiom, a word whose digest spec/terms/refused-names.toml lists, a bare #<digits> and a pull-request link raise SpecBannedWord. |
SpecLocalPathcorpus.render.local-pathA path beginning /Users/, /home/, $HOME/ or ~/ raises SpecLocalPath. | An absolute path from a local machine. | corpus.render.local-pathcorpus.render.local-pathA path beginning /Users/, /home/, $HOME/ or ~/ raises SpecLocalPath. |
SpecAsciiDiagramcorpus.diagram.fenceA diagram is a fenced mermaid block; box-drawing characters outside a fence raise SpecAsciiDiagram. | Box-drawing outside a mermaid fence. | corpus.diagram.fencecorpus.diagram.fenceA diagram is a fenced mermaid block; box-drawing characters outside a fence raise SpecAsciiDiagram. |
SpecDiagramBoundarycorpus.diagram.boundaryA diagram draws a contract, party, process or trust zone as a container — a flowchart subgraph or a sequence box — holding its components. A flowchart node naming a contract or a boundary raises SpecDiagramBoundary. | A flowchart node standing for a contract or a boundary instead of a container. | corpus.diagram.boundarycorpus.diagram.boundaryA diagram draws a contract, party, process or trust zone as a container — a flowchart subgraph or a sequence box — holding its components. A flowchart node naming a contract or a boundary raises SpecDiagramBoundary. |
SpecDiagramNodecorpus.diagram.nodeA flowchart node names one thing in at most 5 words: its label holds no ·, <br/>, ,, ;, : or error identifier, is no operation name, and sets no article second. A breach raises SpecDiagramNode. | A flowchart node bundling attributes, naming an error or an operation, or over its word bound. | corpus.diagram.nodecorpus.diagram.nodeA flowchart node names one thing in at most 5 words: its label holds no ·, <br/>, ,, ;, : or error identifier, is no operation name, and sets no article second. A breach raises SpecDiagramNode. |
SpecDiagramShapecorpus.diagram.shapeA node labelled with a snake_case identifier or a phrase ending table, store, log or queue is a cylinder [( )], and a label ending ? is a decision { }. A breach raises SpecDiagramShape. | A table, store, log or queue drawn other than as a cylinder, or a question drawn other than as a decision. | corpus.diagram.shapecorpus.diagram.shapeA node labelled with a snake_case identifier or a phrase ending table, store, log or queue is a cylinder [( )], and a label ending ? is a decision { }. A breach raises SpecDiagramShape. |
SpecDiagramEdgecorpus.diagram.edgeA flowchart edge points one way; its label holds at most 5 words and no ·, and an edge touching no decision node carries one. A breach raises SpecDiagramEdge. | A two-way edge, an unlabelled edge between non-decision nodes, or an edge label over its bound. | corpus.diagram.edgecorpus.diagram.edgeA flowchart edge points one way; its label holds at most 5 words and no ·, and an edge touching no decision node carries one. A breach raises SpecDiagramEdge. |
SpecDiagramDecisioncorpus.diagram.decisionA decision node asks a question or names a condition in at most 8 words and no error identifier, has an incoming edge, and has two or more outgoing edges each labelled with a distinct outcome. A breach raises SpecDiagramDecision. | A decision node with a long label, an error name, no incoming edge, or exits not each labelled with a distinct outcome. | corpus.diagram.decisioncorpus.diagram.decisionA decision node asks a question or names a condition in at most 8 words and no error identifier, has an incoming edge, and has two or more outgoing edges each labelled with a distinct outcome. A breach raises SpecDiagramDecision. |
SpecDiagramBranchcorpus.diagram.branchA non-decision node with an outgoing edge labelled yes or no, an outgoing error identifier beside another exit, or two exits opening if, when, over, under or else raises SpecDiagramBranch; a branch is a decision node. | A non-decision node branching on a condition through its edge labels. | corpus.diagram.branchcorpus.diagram.branchA non-decision node with an outgoing edge labelled yes or no, an outgoing error identifier beside another exit, or two exits opening if, when, over, under or else raises SpecDiagramBranch; a branch is a decision node. |
SpecDiagramOrphancorpus.diagram.connectedEvery flowchart node, or a subgraph enclosing it, is an edge endpoint. A breach raises SpecDiagramOrphan. | A flowchart node no edge reaches, directly or through its subgraph. | corpus.diagram.connectedcorpus.diagram.connectedEvery flowchart node, or a subgraph enclosing it, is an edge endpoint. A breach raises SpecDiagramOrphan. |
SpecDiagramDuplicatecorpus.diagram.unique-labelNo two nodes of one flowchart carry the same label; a second mention reuses the node id. A breach raises SpecDiagramDuplicate. | Two nodes of one flowchart carrying one label. | corpus.diagram.unique-labelcorpus.diagram.unique-labelNo two nodes of one flowchart carry the same label; a second mention reuses the node id. A breach raises SpecDiagramDuplicate. |
SpecDiagramLayoutcorpus.diagram.layoutA flowchart header declares LR, TB or TD, no subgraph declares direction, subgraphs nest at most 2 levels, and the chart holds at most 20 nodes and 25 edges. A breach raises SpecDiagramLayout. | A flowchart without a direction, with a subgraph direction, nested too deep, or over its size. | corpus.diagram.layoutcorpus.diagram.layoutA flowchart header declares LR, TB or TD, no subgraph declares direction, subgraphs nest at most 2 levels, and the chart holds at most 20 nodes and 25 edges. A breach raises SpecDiagramLayout. |
SpecDiagramLinkcorpus.diagram.no-linkA flowchart carries no click directive; a node's link or tooltip raises SpecDiagramLink. | A flowchart node carrying a click link or tooltip. | corpus.diagram.no-linkcorpus.diagram.no-linkA flowchart carries no click directive; a node's link or tooltip raises SpecDiagramLink. |
SpecDiagramSequencecorpus.diagram.sequenceA sequence diagram declares each participant it messages and messages each it declares, and holds at most 6 participants, 15 messages, 2 messages from a participant to itself and fragments nested 2 levels. A breach raises SpecDiagramSequence. | A sequence diagram with undeclared or unused participants, or over a size bound. | corpus.diagram.sequencecorpus.diagram.sequenceA sequence diagram declares each participant it messages and messages each it declares, and holds at most 6 participants, 15 messages, 2 messages from a participant to itself and fragments nested 2 levels. A breach raises SpecDiagramSequence. |
SpecDiagramMessagecorpus.diagram.messageA sequence message label holds at most 8 words and a note at most 12 words. A breach raises SpecDiagramMessage. | A sequence message or note over its word bound. | corpus.diagram.messagecorpus.diagram.messageA sequence message label holds at most 8 words and a note at most 12 words. A breach raises SpecDiagramMessage. |
SpecDiagramStatecorpus.diagram.stateA state diagram has one top-level [] start reaching every state, every state has an outgoing transition, [] counting as a target, and a transition label holds at most 6 words. A breach raises SpecDiagramState. | A state diagram without one start, with an unreachable or dead-end state, or a long transition label. | corpus.diagram.statecorpus.diagram.stateA state diagram has one top-level [] start reaching every state, every state has an outgoing transition, [] counting as a target, and a transition label holds at most 6 words. A breach raises SpecDiagramState. |
SpecTargetIncompletecorpus.targets.incompleteA shape leaving a role unfilled, or a target file marking other than one default shape, raises SpecTargetIncomplete, naming the provider, the shape and the role. | A target shape leaving a role unfilled, or a target file without exactly one default shape. | corpus.targets.incompletecorpus.targets.incompleteA shape leaving a role unfilled, or a target file marking other than one default shape, raises SpecTargetIncomplete, naming the provider, the shape and the role. |
SpecTargetCapUnrecordedcorpus.targets.cap-unrecordedA shape whose cap sits at or below the wall-clock-cap bound and whose exclusions omit first-time-backfill or component-connector raises SpecTargetCapUnrecorded. | A capped target shape not recording its backfill and component-connector exclusions. | corpus.targets.cap-unrecordedcorpus.targets.cap-unrecordedA shape whose cap sits at or below the wall-clock-cap bound and whose exclusions omit first-time-backfill or component-connector raises SpecTargetCapUnrecorded. |
SpecTargetFunctionProfilecorpus.targets.function-profileA function-class shape listing a profile other than edge raises SpecTargetFunctionProfile, naming the provider and the shape. | A function-class target shape listing a profile other than edge. | corpus.targets.function-profilecorpus.targets.function-profileA function-class shape listing a profile other than edge raises SpecTargetFunctionProfile, naming the provider and the shape. |
SpecGuideReachcorpus.guide.reachEach operation a contract's fragment registers appears in the contract's guide as an operation pointer or a pointer to one of its clauses; an operation the guide misses raises SpecGuideReach, naming it. | A registered operation its contract’s guide never points into. | corpus.guide.reachcorpus.guide.reachEach operation a contract's fragment registers appears in the contract's guide as an operation pointer or a pointer to one of its clauses; an operation the guide misses raises SpecGuideReach, naming it. |
SpecGuidePointerDensitycorpus.guide.pointer-densityA guide paragraph, list item or table row holds at most 3 pointers to clauses and at least 8 words of prose per clause pointer; a denser one raises SpecGuidePointerDensity. | A guide paragraph with too many clause pointers or too little prose per pointer. | corpus.guide.pointer-densitycorpus.guide.pointer-densityA guide paragraph, list item or table row holds at most 3 pointers to clauses and at least 8 words of prose per clause pointer; a denser one raises SpecGuidePointerDensity. |
SpecGuideBoundcorpus.guide.boundA guide sentence holding a number equal to a bound value in its contract's fragment also holds the pointer to a clause owning a bound of that value; a sentence without one raises SpecGuideBound. | A guide sentence restating a bound value without the bound’s clause pointer. | corpus.guide.boundcorpus.guide.boundA guide sentence holding a number equal to a bound value in its contract's fragment also holds the pointer to a clause owning a bound of that value; a sentence without one raises SpecGuideBound. |
SpecGuidecorpus.guide.bad-guideA contract without a guide, a guide breaking its shape or length, a guide holding a clause item or an error name, and a contract file linking a guide raise SpecGuide. | A missing or malformed guide, or one restating a rule. | corpus.guide.bad-guidecorpus.guide.bad-guideA contract without a guide, a guide breaking its shape or length, a guide holding a clause item or an error name, and a contract file linking a guide raise SpecGuide. |
SpecTopiccorpus.topic.bad-topicA page without an entry or an entry without a page, a page off its shape, words, pointer bound or non-normative, more pages than pages, and an unreachable or missing answer raise SpecTopic. | A topic page out of its registry entry, shape or bounds, restating a rule, or leaving an answer unreachable. | corpus.topic.bad-topiccorpus.topic.bad-topicA page without an entry or an entry without a page, a page off its shape, words, pointer bound or non-normative, more pages than pages, and an unreachable or missing answer raise SpecTopic. |