Architecture, not code. Ports, not dependencies. Choice, not discipline.
fw is a specification of product capabilities, registry records, and a
conformance suite. A team describes a product declaratively; fwyml is the
only CLI that compiles that manifest against an external registry into a
repository containing exactly the selected modules, implemented on the stack
that team already knows.
This repository ships schemas, port specs, capability records, and conformance assets. It does not ship adapters, a materializer, a runtime plugin loader, a mandatory language, or an application with feature switches. Adapter pins and product catalogs live in an external registry.
If an adapter is not in the product manifest, it is not in the tree, not in vendor, and not in the link.
Absence is physical. There is no if !enabled.
| Layer | Artifact | Knows | Does not know |
|---|---|---|---|
| Contract | fw-spec |
ports, DTOs, invariants, events | languages, vendors, files |
| Adapter | fw-adapter-* |
one implementation of one port | other adapters, the product |
| Product | a studio repository | which adapters are composed | adapter internals |
schemaVersion: urn:fwyml:manifest:v0alpha1
kind: Product
metadata:
name: example-product
composition:
capabilities:
workspace: { use: workspace-local, contractRange: ">=1 <2" }
ui: { use: ui-runtime }
host: { use: host-desktop }
constraints:
required: [desktop]
forbidden: [agent]The manifest selects records without embedding package versions. Exact source references, artifact versions, and SHA-256 digests live in registry records and the generated lock.
| Document | Question it answers |
|---|---|
.project/intent.md |
Why this exists and what is out of scope |
.project/architecture.md |
How the three layers hold |
.project/capabilities.md |
Which ports exist and what they promise |
.project/roadmap.md |
Phases, deliverables, exit criteria |
The conveyor intake records the local baseline, implemented compiler corrections, and outstanding first-conveyor gates.
Draft contracts. Schemas and port specs are in this repository. Adapter implementations and product catalogs are not.