# Rule: A2C product architecture

## Requirement

The A2C **product** uses exactly **two repositories**: **`a2c-workflow`** and **`a2c-vscode-extension`**. AI workflow runtime assets live in **`a2c-workflow`** (`a2c_core`) — not a third repository.

**Repository:** `a2c-workflow`
**Primary Python packages:** `a2c_core`, `a2c_cli`, `a2c_tui`

## Packages (`a2c-workflow`)

| Package | Role |
|---------|------|
| **`a2c_core`** | Engine — domain, schemas, AI workflows |
| **`a2c_cli`** | CLI — commands, JSON/human surfaces |
| **`a2c_tui`** | Textual TUI |

All three version **in lockstep** in one product semver.

## Extension

**`a2c-vscode-extension`** is a **thin client**: UI and host shims only. Each release bundles **one** platform-specific CLI build from the matching **`a2c-workflow`** version.

## AI behavior

- **Bootstrap product:** use three-package layout in `a2c-workflow`; put orchestration in `a2c_core`, not in extension
- **Bootstrap extension:** invoke bundled CLI; do not embed workflow engine logic
- **Implement product:** follow [implementation-plan.md](../docs/architecture/implementation-plan.md) one milestone at a time; obey [package-boundaries.md](../docs/architecture/package-boundaries.md)
- **Layout changes:** propose ADR updates if repository or package boundaries change

## Canonical reference

[docs/architecture/overview.md](../docs/architecture/overview.md), [implementation-plan.md](../docs/architecture/implementation-plan.md), [package-boundaries.md](../docs/architecture/package-boundaries.md), [ADR-0005](../docs/adr/0005-a2c-product-repository-boundaries.md), [ADR-0006](../docs/adr/0006-three-package-python-structure-in-a2c-core.md), [ADR-0007](../docs/adr/0007-vscode-extension-thin-client-bundled-cli.md).
