The roof. A canonical inventory of every GrayCodeAI product, the versioned contracts that cross between them, the boundaries that keep them independent, and the decisions that affect more than one of them.
This repository is not a product. It contains no product code, no product depends on it, and it depends on nobody. If you are looking for something to install, it is not here.
| Path | What it is |
|---|---|
ecosystem.yaml |
Every repository, what it owns, how mature it is |
BOUNDARIES.md |
The independence rules and the check that enforces each |
contracts/ |
Versioned values that cross repository boundaries |
adr/ |
Decisions that affect more than one repository |
Start with ecosystem.yaml. It is the only file most people need.
Products are independent by default and coordinate by versioned contracts.
The ecosystem has exactly one compile-time dependency, rho to flux, and it
is machine-checked. Everything else is HTTP, a schema, or a documented file
format. Adding a repository that imports a sibling is the exception, not the
default, and it must be recorded in an ADR with a check that fails when the
dependency is removed.
Independence that lives only in a CONTRIBUTING.md is an aspiration. Every
boundary here names the check that enforces it.
ecosystem.yaml carries a maturity field per product, and the values are
deliberately unflattering: shipped, working, alpha, scaffold. Several
products in this ecosystem are alpha or scaffold. That is recorded rather
than hidden, because the inventory is only useful if it is true.
A product that overstates its maturity here is worse than one that is absent.
- Add an entry to
ecosystem.yamlwith an honestmaturity. - Write the repository's own
AGENTS.md, stating what it owns and what it refuses to own. - Depend on no sibling. Coordinate by contract.
- If a contract you need does not exist, write it in
contracts/first. - Record any cross-repository decision as an ADR.
- State your limitations in your README. Every repository here does this.
Write the JSON Schema before the Go type. A vendored struct drifts silently; a
schema does not. See contracts/README.md for the three
that exist and what each one is honestly missing.
This file set is maintained by people who are sometimes wrong in public. When a
repository is renamed, this inventory is updated in the same change, because a
stale inventory is worse than none. ecosystem.yaml records prior names in
renamed_from so that nobody has to re-derive them from search results.
If you find an error here, open a pull request against this repository and say which file and which entry is wrong. Do not work around it in your own product.