Skip to main content

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:

  1. Greenfield — eai-supinit
  2. 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​

  1. 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/
  2. Commit vs local: committed .tools/esys/…; gitignored .tools_local/
  3. 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.
  4. eai-supcore: shared PyPI library owns steady-state bootstrap APIs used by both CLIs. Journey-only logic stays in each CLI package.
  5. V2 hooks: consumer pre-commit/gitlint land only in eai-supcore + method templates/. 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

References​