You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Problem — Amicode's installation layout is implied but never declared: four root-bridging symlinks (~/.amico/{vaults,problems,runs,julia} → ~/armonia/data/*), research capital inside the dotdir (ledger/, profile.json), the catalog inside a team vault, and path knowledge duplicated as env vars and hardcoded defaults across the extension, amico-run, and telaio. Three half-migrations have left husks. Every new consumer re-derives where things live.
Approach — The manifest: one config file (~/.amicode/config.toml) declaring the binding — studio_root, the ordered vault mount stack, catalog, ledger, harness, pack roots, tenant — read by every consumer with today's-path fallbacks. NO file moves in this slice; absence of the manifest means exactly today's behavior. Ships with amicode doctor, the validation surface that makes the binding checkable (and later, the fleet health check's data source).
Scope — in: manifest schema + reader library, consumer adoption (extension boot, amico-run, telaio store default), doctor, parity when absent · out: relocations, symlink retirement, the dotdir rename + alias, workspace generation (later slices of the same design-of-record).
Acceptance Criteria
A manifest at ~/.amicode/config.toml validates (strict shape: studio_root, ordered mounts with kind+mode, catalog/ledger/harness paths, tenant) and one reader library owns its parsing — no consumer re-parses
The extension, amico-run, and telaio resolve their roots through the manifest, falling back to today's paths (incl. following the existing symlinks) when it is absent — behavior identical, proven by the existing suites with no fixture changes
Hermetic overrides still win: test/env paths override the manifest (the suites stay hermetic)
amicode doctor validates the binding: paths exist, mounts readable, exactly one rw personal mount, and reports drift as a table with reason codes
doctor flags (does not fix) the known drift: catalog not under the studio root, ledger under the dotdir — the relocation slices' to-do list
Testing Decisions
Extend the extension prep-integration suite with manifest fixtures (present/absent/malformed); amico-run's config resolution gains table tests over the fallback ladder; doctor gets its own suite against fixture trees. No new test surface beyond doctor.
Key Decisions
The manifest is the single source of binding; env-var overrides remain as hermetic escapes, documented as test-only.
Important
Problem — Amicode's installation layout is implied but never declared: four root-bridging symlinks (~/.amico/{vaults,problems,runs,julia} → ~/armonia/data/*), research capital inside the dotdir (ledger/, profile.json), the catalog inside a team vault, and path knowledge duplicated as env vars and hardcoded defaults across the extension, amico-run, and telaio. Three half-migrations have left husks. Every new consumer re-derives where things live.
Approach — The manifest: one config file (~/.amicode/config.toml) declaring the binding — studio_root, the ordered vault mount stack, catalog, ledger, harness, pack roots, tenant — read by every consumer with today's-path fallbacks. NO file moves in this slice; absence of the manifest means exactly today's behavior. Ships with
amicode doctor, the validation surface that makes the binding checkable (and later, the fleet health check's data source).Scope — in: manifest schema + reader library, consumer adoption (extension boot, amico-run, telaio store default), doctor, parity when absent · out: relocations, symlink retirement, the dotdir rename + alias, workspace generation (later slices of the same design-of-record).
Acceptance Criteria
amicode doctorvalidates the binding: paths exist, mounts readable, exactly one rw personal mount, and reports drift as a table with reason codesTesting Decisions
Extend the extension prep-integration suite with manifest fixtures (present/absent/malformed); amico-run's config resolution gains table tests over the fallback ladder; doctor gets its own suite against fixture trees. No new test surface beyond doctor.
Key Decisions
amicode-config, JSON-schema-validated TOML.Constraints & Invariants
Prior Art
Source
Design-of-record: vault spec note
spec-20260817-120000-installation-architecture(installation architecture — three planes, one manifest). Design session 2026-08-17.