Summary
Migrate the repo's AICaC context (.ai/*.yaml) from the v1.0 schema to v2.0. Deferred from #226 because it cascades well beyond a schema change — it breaks the repo's own .ai/-consuming tooling and shipped SDK code, so the .ai/ files and every consumer must migrate in lockstep.
Background
aicac-adoption@0.6.0 auto-stages a v1→v2 migration on every default-branch run. We disabled that in #225 (auto-migrate: false, regenerate-index: false) so it stops failing against the signed-commits ruleset / "Actions can't open PRs". The migration is worth doing, just not a drop-in.
Why it's not a simple PR
The v2 schema requires shapes — flat entrypoints string-map, components as a dict, decisions/errors as dicts keyed by id, reshaped data_flow — that every consumer currently parses in the v1 shape:
Acceptance criteria
Starting point
References
#226 (draft v2 .ai/), #225 (interim fix), ADR-029 (the github-actions→Renovate→AICaC-bump→v2 cascade), eFAILution/AICaC:spec/v2/.
Summary
Migrate the repo's AICaC context (
.ai/*.yaml) from the v1.0 schema to v2.0. Deferred from #226 because it cascades well beyond a schema change — it breaks the repo's own.ai/-consuming tooling and shipped SDK code, so the.ai/files and every consumer must migrate in lockstep.Background
aicac-adoption@0.6.0auto-stages a v1→v2 migration on every default-branch run. We disabled that in #225 (auto-migrate: false,regenerate-index: false) so it stops failing against the signed-commits ruleset / "Actions can't open PRs". The migration is worth doing, just not a drop-in.Why it's not a simple PR
The v2 schema requires shapes — flat
entrypointsstring-map,componentsas a dict,decisions/errorsas dicts keyed by id, reshapeddata_flow— that every consumer currently parses in the v1 shape:scripts/ci/check_architecture_sync.py— readsentrypoints.cli_subcommandsas a dict → CI gate fails on v2 (verified: exit 1)scripts/docsite/architecture.py— readscomponentsas a list +cli_subcommandsdict → public docs (Deploy Docs) build breaksargus/architecture_map.py— transformsarchitecture.yaml+decisions.yaml; feeds the MCPargus://architectureresource, the browser viewer/architectureroute, and the docsite → shipped SDK features breakscripts/docsite/tests/test_architecture.py, architecture-map tests, …)Acceptance criteria
.ai/*.yamlmigrated to v2 and validating againsteFAILution/AICaC:spec/v2/*.schema.json(done on the draft branch — see chore(ai): migrate .ai/ AICaC context to the v2.0 schema #226; 0 violations, content counts preserved)check_architecture_sync.pyreads v2 shapes; unit-test job greenscripts/docsite/architecture.pyrenders from v2; Deploy Docs greenargus/architecture_map.pyconsumes v2; MCPargus://architecture+ browser/architectureverifiedauto-migrate/regenerate-index(revert fix(ci): disable AICaC auto-migrate/regenerate-index unsigned pushes #225) once v2 is live — or confirm they're no longer neededaicac/**ruleset bypass + "Allow GitHub Actions to create and approve pull requests" setting added during triage — keep or revertStarting point
chore/aicac-v2-migration) holds the v2-migrated.ai/files, schema-validated (components 9, decisions 29, errors 16, workflows 21 preserved). That's the.ai/-files half; the consumer migration is the remaining work..github/workflows/aicac.yml.References
#226 (draft v2
.ai/), #225 (interim fix), ADR-029 (the github-actions→Renovate→AICaC-bump→v2 cascade),eFAILution/AICaC:spec/v2/.