Skip to main content

Module product

Module product 

Source
Expand description

The product model: what this repository’s product does for a person, as the features under the layer’s features section declare it, with every fact a surface may say about a feature derived from the registries that own those facts.

Nothing here discovers or parses a file. A feature is an ordinary declarative object of the layer — kind feature in share/kinds.yaml, discovered by the source class in the repository’s sources.yaml, validated against its JSON Schema by the time the index holds it. This module projects that validated metadata into typed records, resolves every reference the records make against the registry that owns it, and derives what nobody authored: which interfaces expose a feature, the tools, routes and command-line paths behind it, how many objects of its kinds the layer holds, which operational moments it answers, and what is guaranteed about it.

Built once, when a crate::capability::Context is composed, and shared by every projection: the command line, the HTTP routes, the MCP tools, the derived graph and the site’s dataset are readers of this one value.

Two directions are kept apart on purpose, exactly as the Why catalogue keeps them. Authored is what a file says: the headline, the summary, the order, whether the homepage features it, and the typed references to what the feature is made of. Derived is everything else, and none of it may be written into a source file: the schema refuses a surfaces or a route key, and this module is where those come from.

Structs§

AdrRef
One architecture decision the feature names.
CapabilityRef
One capability of a module the feature names, with the projections the registry declares for it.
ClaimRef
One claim the feature names, with the status the matrix gives it.
CockpitAreaRef
One area of the Cockpit the feature names.
CommandRef
One public command of the shell tool the feature names, as share/commands.yaml declares it.
DocRef
One document the feature names.
Domain
One product domain, as its file declares it plus where it came from and where it is published. A domain never lists its features; ResolvedDomain derives them.
DomainCounts
How much stands behind a domain: sums and distinct counts over its stable features.
DomainMember
One stable feature of a domain, as a card shows it.
DomainRef
A domain as a feature points at it: enough for a breadcrumb.
Feature
One product feature, as its file declares it plus the facts the file cannot hold: where it came from and where it is published.
FeatureCounts
How much stands behind a feature, every number derived.
FeatureEvidence
What is guaranteed about a feature, counted from the claims it names: never a word a person wrote about the feature’s maturity.
KindRef
One object kind the feature names, with how many objects of it the layer holds.
ModuleRef
One capability module the feature names.
MomentRef
One operational moment the feature answers: derived from the moments that name any of the feature’s commands, capabilities, claims or rules.
ProductCoverage
One thing of the product — a module, a public command, a kind — and the features that name it. Empty means the product page says nothing about it, which is a gap the validation reports and the matrix shows rather than hides.
ProductFinding
One thing wrong with the product model, named where it is, with the nearest candidate when there is one.
ProductModel
The validated product model and every index derived from it. Immutable: built once from an index and a registry, read many times.
ProductProvider
One provider the tool has an adapter for, discovered from the templates the distribution ships and decorated with what this repository does with it.
ProviderBootstrap
One bootstrap a provider renders.
ResolvedDomain
One domain, resolved: the record as its file declares it, and everything derived from the stable features that name it.
ResolvedRefs
One feature, resolved: the record as its file declares it, and everything derived.
RuleRef
One rule the feature names.
SurfaceRef
One web surface of the topology the feature names.
Surfaces
The interfaces a feature is exposed through, decided from what its references project and from nothing a file says. Each is a fact with a reason a reader can check: cli is true when a module of the feature has a capability with a command-line path or the feature names a shell command; api when a module has an HTTP route; mcp when a module has an MCP tool or resource, or the feature names a kind, since every object of the layer is an MCP resource; cockpit when the feature names a Cockpit area or a module, since every capability has a Cockpit page; docs when it names a document.
UseCaseRef
One use case the feature names.

Constants§

DOMAIN
The kind of a product domain: one of the few things the product controls, under which every feature is filed exactly once (ADR 0104).
DOMAIN_ROUTE
The section the domains are published under.
FEATURE
The kind of a product feature.
RESERVED
The identities the section’s own routes use; a feature called one of these would claim a route the section already owns.
ROUTE
The section the features are published under.
STABLE
A feature that is complete and public.
SURFACES
The vocabulary of surfaces a feature can be exposed through: id, title, and the route on the website where that surface is documented. Five, because the executable has five ways to be reached, and nothing else is a surface.