Ailment checker
Paste the output of any vant CLI command and get back the known-issue rows it matches: what it is, how bad it is, where it is tracked. The paste never leaves your browser: the check runs client-side against a static registry, no daemon, no network.
Run the check
CLI → copy → paste → read the receipt rows. Severity ranked: actionable first, benign last. Copy the receipt and it is agent-legible as plain text — paste it back into chat, a lesson, or an issue.
Loading the checker…
The interactive paste box needs JavaScript. The full known-rows table is below this card, readable without it — and agents can skip the browser entirely: GET /api/ailments/check?q=<your paste> on this site runs the same matcher on the edge and answers JSON.
The known rows
The registry is data, not code (6 rows, version 2): every row carries its regex, its severity, its evidence samples, and its issue refs. The gate suite (web/home/test/ailments.test.mjs) pins every sample against its own regex before build, so the table below cannot document a pattern it does not match.
How to read a tier:
- Benign — Supposed to be there. No action, ever.
- Informational — Worth reading once. No action required.
- Cosmetic — Display art only. Your install is fine.
- Nuisance — Noise or a surprising behavior with an open ask. Nothing is broken.
- Actionable — A real fault. Read the row and act.
| ID | Row | Tier | What it means | Refs |
|---|---|---|---|---|
| AIL-2 | state.json schema fault (corrupt content) | Actionable | state.json exists but is unreadable or wrong-typed (truncated write, hand edit, partial file). This is a REAL fault and the runtime refuses loudly by design — restore the file from a backup, or remove it so a fresh default can be seeded. INSIDE the refusals-are-loud fail-closed chain: the runtime never half-writes state. | — |
| AIL-4 | Starter brain seeded without asking | Nuisance | A first `vant start` planted a starter brain (identity, goals, lessons, start) into models/private/<brain>/ of whatever directory you were standing in — no consent, location, or name ask. Nothing is broken and the files are yours to edit or delete; the consent ask is tracked at the linked issue. Surprise write, not corruption: delete the files or keep them — vant never re-seeds over an existing brain. | #257 |
| AIL-6 | Sandbox not configured | Informational | No sandbox capability policy is configured, so reads/writes allow by default. Convenience posture, not a fault: configure the sandbox in config to enforce the fail-closed capability chain. Fires once per process while boot configures capabilities. | — |
| AIL-7 | Install-state decode | Informational | Decode of the install-state line on start/onboard: 🌱 fresh = no brain seeded yet, ⏳ legacy = pre-multi-brain layout detected (migrate runs), 🧠 current = multi-brain layout healthy. All three are normal. | — |
| AIL-8 | Bare stack trace, no named reason-code | Actionable | A crash reached the surface as a bare stack trace with no named reason code. That violates the 0-1-2 exit contract under the honest-refusal law and is worth filing as a bug with the pasted trace. This checker RETURNS for it because the honest-boot contract says surfacing should be named, not raw. | — |
| AIL-9 | Starter brain seed skipped | Benign | Seeding is a convenience, never a hard failure: an existing brain was found (existing-wins), so the seed refused and moved on. Normal. | — |
The honest ceiling
What this is
A known-issue index for vant CLI output: pattern → meaning → tier → refs. The same matcher the CI gates pin, the page island runs, and the edge door serves.
What this is NOT
Not a doctor. A clean paste means “nothing here is in the index”, not “your install is healthy”. Output still looks wrong? File it with the paste attached.
New issue →Extending the registry
Rows live in src/ailments/ailments.json as pure data. Fix a row’s ailment and the row retires to fixed in vX.YZ — visible history beats silent deletion. Rows extend without touching the matcher.