Task manager: a familiar design to browse
This example models a task list manager with reminders, offline sync, notifications and search. Everyone knows what a task manager does, so you can judge the architecture graph itself instead of first learning an unfamiliar system.
It is a design-stage model: there is no application code. Every record is proposed or unresolved, and references point to the requirements and to draft contract files. AG requires an implemented record to reference real implementation files, so marking anything implemented here would be false.
What it shows that hello-world doesn't
| Shape | Where to look |
|---|---|
| One contract with several consumers | contract:task-changed is consumed by reminders, sync, notifications and search |
| Declared contract use | Consumers point at contracts with consumes, instead of only at the capability behind them |
| A two-way module dependency | Tasks reads the next reminder time from Reminders; Reminders asks Tasks to move a due time when snoozing |
| Guarantees as boundaries | "Only the task service changes tasks", "Completed tasks never fire reminders", "Offline edits are never silently lost" |
| Open questions | How repeating tasks are stored, how sync conflicts are resolved, whether reminders fire offline |
Contract files
Each contract node has a schema reference to a draft JSON Schema in contracts/ and an example reference to a payload in contracts/examples/. ag validate checks that each schema is valid and that each example matches it, including the $ref from task-changed.schema.json to task.schema.json. These are contract sidecars. Passing shows the files agree with each other; with no implementation here, it says nothing about code.
Run it
From the repository root, after npm run build:
node bin/ag.js validate --config examples/task-manager/ag.config.json
node bin/ag.js check --config examples/task-manager/ag.config.json
node bin/ag.js context --config examples/task-manager/ag.config.json --id contract:task-changed
node bin/ag.js context --config examples/task-manager/ag.config.json --module module:sync
node bin/ag.js summary --config examples/task-manager/ag.config.json
Validation checks the records and that referenced files exist. It does not show that the design is good or that any future implementation follows it.
How the graph was written
The graph was authored from the requirements. Module imports and exports were derived from the cross-module relationships, so they match the edges exactly. Edit architecture/graph.yaml directly from here on, then run generate and check.