ADR-0005: A2C product repository boundaries
- Status: Accepted
- Date: 2026-06-12
- Deciders: Michel Gillet
Context
A2C is evolving from a workflow-method repository into an implementable product with Python tooling and IDE integration. Without explicit repository boundaries, teams may:
- split AI workflow orchestration into a third repository
- duplicate domain logic in IDE-specific code
- blur the line between method definition, product implementation, and consumer application repos
A2C principles require repo-first truth, thin clients over a stable core, and deterministic automation. The product needs a small, explicit repository count and clear ownership of the AI workflow runtime.
Decision
The A2C product consists of exactly two repositories:
| Repository | Owns |
|---|---|
a2c-workflow | Python core library (a2c_core), CLI (a2c_cli), TUI (a2c_tui), metadata schemas, repository contracts, bootstrap/configuration assets, method assets (rules/, prompts/, templates/, etc.), AI workflows, orchestration, evaluation fixtures, and related tests |
a2c-vscode-extension | VS Code–compatible extension, UI/webviews/visualizations, host compatibility (VS Code, Cursor, Theia-like), packaged-binary invocation |
AI workflow location
The A2C AI workflow remains inside the a2c-workflow repository — primarily in the a2c_core package. There is no third repository dedicated to AI workflow, prompts, or orchestration.
Method assets (rules/, prompts/, templates/, etc.) and runtime Python packages are co-located in a2c-workflow (ADR-0000).
Extension role
a2c-vscode-extension is a thin client. It does not own workflow engine logic, schemas, or AI orchestration. Details of CLI bundling are in ADR-0007.
Consumer application repositories
Repositories that use A2C to build other software remain separate. They adopt the method (ADR-0000) and are operated on by A2C tooling — they are not part of the two-product-repo count.
Rationale
- Stable core — one place (
a2c-workflow/a2c_core) for contracts, workflows, and automation semantics - Thin IDE surface — extension focuses on UX and host integration, not duplicated business logic
- No workflow sprawl — a third AI repo would fragment prompts, rules, and execution paths
- Clear contributor mental model — engine in
a2c_core, IDE in extension, method and product ina2c-workflow - Human-in-control AI — orchestration and policy live in
a2c_core; the extension presents state and triggers commands, not autonomous workflow policy
Alternatives considered
| Alternative | Verdict | Reason |
|---|---|---|
| One repository for everything (Python backend + TypeScript extension) | Rejected | Mixes runtime/backend and editor-extension concerns; increases contributor and operational complexity too early |
| Three repositories (core, AI workflow, extension) | Rejected | AI workflow is tightly coupled to core schemas, CLI contracts, and automation behavior — a separate repo would fragment the bounded context |
| Two Python packages with combined terminal surface (see ADR-0006) | Rejected at package level | Weakens visible product surfaces; recorded in ADR-0006 |
Consequences
Positive
- Predictable locations for schemas, AI workflows, CLI, TUI, and IDE code
- Schema, CLI, TUI, and AI workflow changes can be developed and tested atomically in
a2c-workflow - Extension and TUI can evolve UI without forking orchestration logic
- Extension remains a thin client over a stable backend, reducing architectural blur
- Consumer projects stay distinct from product implementation
Negative
- Method assets and Python product share one repository — strong internal package boundaries are required
- Two repos still require coordinated releases (core build → extension bundle)
- Naming (
a2c-workflowrepository vsa2c_corepackage) must be documented to avoid confusion
Migration
- Bootstrap
a2c-workflowwith accepted package layout (ADR-0006) — Milestone 1 complete - Create
a2c-vscode-extensionper ADR-0007 - Incrementally wire runtime execution of method assets through
a2c_coreworkflows - Record extension ADR-0000 when that repository is bootstrapped
Relationship to other ADRs
| ADR | Relationship |
|---|---|
| ADR-0000 | Complements — a2c-workflow is the canonical workflow and product repository |
| ADR-0006 | Defines Python layout inside a2c-workflow |
| ADR-0007 | Defines extension thin-client and bundled CLI strategy |