ADR-0001: Eai family tool state, convergence, and eai-supcore
- Status: Accepted
- Date: 2026-09-26
- Deciders: Michel Gillet
Context
Consumers need two entry paths into the same multi-repo / superbuild operating model:
- Greenfield —
eai-supinit - Legacy Google-repo migration —
eai-supmig
A2C ADR-0024 established committed tool state under .tools/esys/<tool-id>/ and
gitignored .tools_local/. New eai tools must follow that binding. Shared steady-state
scaffolding must not fork between the two CLIs (including future pre-commit/gitlint).
Decision
- Tool state roots (CLI name as folder id):
eai-supinit→.tools/esys/eai-supinit/eai-supmig→.migration/today; future move to.tools/esys/eai-supmig/
- Commit vs local: committed
.tools/esys/…; gitignored.tools_local/ - Steady-state convergence: after init sign-off or migration complete, layout roles
(
src/,libs/,docs/adr/,AGENTS.md,tools/ai-rules/, Cursor adapters) match repository-layout.md. eai-supcore: shared PyPI library owns steady-state bootstrap APIs used by both CLIs. Journey-only logic stays in each CLI package.- V2 hooks: consumer pre-commit/gitlint land only in
eai-supcore+ methodtemplates/. No per-CLI fork. No shared package with A2C (UX precedent only; revisit if a real need appears). See ADR-0002 for rails + extensions.
Consequences
- Three distributions:
eai-supcore,eai-supinit,eai-supmig - Init and mig remain first-class; different journeys, same end state
- Relocating mig off
.migration/is a follow-up