Matrix health
Live status of the
{adapter × stack × tier}combinationsaidokitsupports. The grid below is updated nightly by the Matrix snapshot workflow and committed tohealth/matrix-status.jsonin the repo.Last verified data is in
health/matrix-status.json— open it for the timestamp, the commit SHA, and the per-combination outcome.
Why this page exists #
aidokit declares support for three adapters × five stack packs × three
tiers. The cartesian product is large; not every combination is
meaningful (Codex / Copilot at Strict is BAD_INVOCATION; React requires
a Node base). This page tracks the curated supported combinations
and surfaces drift as it happens — a regression in one combination is
visible the next morning without anyone having to ask.
The data behind this page is regenerated nightly by running
aidokit init --dry-run for each combination and recording the
outcome.
Supported combinations #
The fourteen combinations the nightly job checks:
| Adapter | Stack | Tier | Notes |
|---|---|---|---|
claude-code |
node-ts |
starter | canonical 60-second setup |
claude-code |
node-ts |
standard | default for serious teams |
claude-code |
node-ts |
strict | audit-ready, capability declarations on |
claude-code |
node-js |
standard | plain Node JavaScript |
claude-code |
python |
standard | the first non-JS stack |
claude-code |
react,node-ts |
standard | React composed with Node-TS |
claude-code |
go |
standard | Go 1.22+ |
claude-code |
python |
strict | Strict-tier python audit packet |
claude-code |
go |
strict | Strict-tier go audit packet |
codex |
node-ts |
starter | Codex adapter at Minimum conformance |
codex |
python |
starter | Codex × Python |
copilot |
node-ts |
starter | Copilot adapter at Minimum conformance |
copilot |
python |
starter | Copilot × Python |
claude-code,codex |
node-ts |
starter | Multi-adapter shared docs / Beads |
Smart-skips applied:
- Codex / Copilot only at
starter. Their adapter manifests declareminimumconformance; targetingstrictis BAD_INVOCATION by design (init.tsCONFORMANCE_RANK guard). - React only composed with Node-TS. React is an additive pack on a Node base, never standalone.
Reading the JSON snapshot #
The snapshot file health/matrix-status.json carries:
{
"schemaVersion": 1,
"generatedAt": "2026-05-25T06:00:00.000Z",
"gitSha": "...",
"summary": { "total": 14, "passed": 14, "failed": 0 },
"entries": [
{
"adapter": "claude-code",
"stack": "node-ts",
"tier": "starter",
"label": "claude-code · node-ts · starter",
"status": "pass" | "fail" | "pending",
"filesPlanned": 87
}
// ... 13 more
]
}
A "pending" status only appears on the initial seed before the first
nightly run completes. After that, every entry is "pass" or "fail".
What "pass" means #
A combination is pass when aidokit init --dry-run for that
combination:
- Exits with code 0.
- Reports at least one planned file.
- Did not throw an uncaught error.
pass does not verify that the emitted files are useful — only
that the planner ran without crashing. The full test suite under
packages/cli/test/ and the per-combination matrix workflow
(matrix.yml) cover the deeper assertions.
What to do if a combination goes red #
- Open
health/matrix-status.jsonand identify the failing combination. - Reproduce locally:
bash
pnpm -r build
tmp=$(mktemp -d) && cd "$tmp" && git init
node /path/to/aidokit/packages/cli/dist/bin/aidokit.js init \
--adapter <ADAPTER> --stack <STACK> --tier <TIER> \
--no-beads --no-mcp --yes --dry-run --json
3. Diagnose. The most common causes:
- Adapter manifest declared conformance is lower than the requested tier.
- Stack pack's detect() is throwing for the empty test directory.
- File-plan computation collided on two adapters emitting the same path.
4. Open an issue tagged health-regression with the reproducer.
See also #
- Matrix snapshot workflow — the producer
health/matrix-status.json— the raw data- Per-combination CI matrix — per-PR depth
- Conformance levels — why some combinations are intentionally invalid