Decision records
Each record holds one decision the demo rests on: its context, the decision, the alternatives that lost, the consequences, the requirements it affects and its sources. The form is the one Michael Nygard proposed, with the alternatives, requirements and sources added. Five views and twenty-six decisions tells the story of the first twenty-six.
There are thirty-four, all accepted. Twenty-six were written in the design phase, before any code. AD-0027 and AD-0028 came during the build, and the second replaced the first. AD-0029 to AD-0034 came after the first release, with the demo’s own model, the check session, the language model experiment, the host configuration and the Gherkin scenarios.
When building the system changed what a record decides, the record kept its number and its first date and gained a dated amendment line at its head. The list below marks those records as amended. A decision that replaces another gets a number of its own, and no number is ever reused.
Inside the records, SR-nn is a system requirement and SC-nn a design constraint. From use cases to requirements describes the first forty-five requirements and the seven constraints. SR-46 to SR-48 came with the demo’s own model, and SR-49 with the host configuration. A name beginning PIPE- is a short name in the example model. C-nn is an entry on the design phase’s technical constraints card, which isn’t published, so those references show what a decision rested on and aren’t there to be looked up. The four gates are the design phase’s own, and How the design was run says what each produced.
The shape of the system
- AD-0001 Federation over a single GraphQL service
- AD-0002 Cosmo as the federation platform
- AD-0010 The router as a child process from the copied binary (amended)
- AD-0011 One binary, one process tree, one port, one UI server
- AD-0012 Composition as a maintainer step with committed output and a drift test (amended)
- AD-0013 Telemetry disabled by environment baked into the image (amended)
The analysis
- AD-0006 An idealised capacity model
- AD-0007 Rollup as maximum flow with the source-side minimum cut
- AD-0008 Quantity, comparison and limit read from the constraint
- AD-0009 Connection direction from the order of the ends
- AD-0024 Verdict reasons built from the capacity service templates
The adapter
- AD-0003 The adapter reads files rather than fronting a repository
- AD-0004 Editing through the projection as scaffolding
- AD-0005 A curated generic projection rather than generated metamodel types
- AD-0015 A hand-written strict subset parser
- AD-0018 Short names as entity keys with the qualified name as fallback
- AD-0019 SysML 2.0 formal as the target, validated with the pilot and OpenSysML
The apps
- AD-0014 Subscriptions as version events with client refetch (amended)
- AD-0017 Vanilla web apps with one vendored file (amended)
- AD-0025 The document owns its structure and nothing else
- AD-0026 The viewer shows the model’s text beside a sketch of its wiring (amended)
The repository
- AD-0016 Generated code exempt from the empty-interface rule
- AD-0020 The image published by a tag-triggered workflow to GHCR (amended)
- AD-0021 The Markdown architecture description as the record, A3 sheets as the overview (amended)
- AD-0022 Track internal/assert and internal/tabletest (amended)
- AD-0023 The light requirements scheme (amended)
- AD-0027 The adapter’s expected scale raised to 2750 lines (superseded)
- AD-0028 The line figures are estimates and never a limit
- AD-0029 The demo’s own model in SysML v2
- AD-0030 Model validation in continuous integration
- AD-0031 An optional check session through a tunnel, with traces
- AD-0032 A language model experiment kept outside the product (amended)
- AD-0033 The demo on the owner’s Proxmox host, declared in OpenTofu
- AD-0034 Acceptance criteria as Gherkin scenarios, run by godog from go test