README
¶
Architecture Control Plane (Local-first MVP)
Статус: MVP beta foundation / runnable local docs-first pipeline baseline + strict contracts Принятый стек реализации: Go (backend/orchestrator) + React/TypeScript UI (embedded), runtime анализа в MVP: headless multi-provider (
claude-codedefault,qwen-codeoptional,codex-coderelease peer) Последняя ревизия: 2026-05-04
Что это
Architecture Control Plane (ACP) — local-first инструмент, который строит и поддерживает as-is архитектурную модель multi-repo системы через agentic runtime.
ACP не является "рисовалкой диаграмм". Архитектура трактуется как версионируемый набор runtime-authored документов + индексов в Git. Совместимый model/* в MVP остаётся производным слоем, а не primary source of truth для live pipeline.
Install -> Start UI -> First Analysis
Для обычного пользователя основной путь — готовый single-binary acp из GitHub Releases. Go и Node нужны только для разработки ProvenArch из исходников.
Release status
- Latest public release:
v0.1.0 - Supported platforms: macOS/Linux on
amd64andarm64 - License: Apache-2.0
- Install command:
curl -fsSL https://raw.githubusercontent.com/GrinRus/ProvenArch/main/install.sh | sh
1) Установите acp
curl -fsSL https://raw.githubusercontent.com/GrinRus/ProvenArch/main/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
Проверьте установленный binary:
acp version
Проверьте локальную готовность:
acp doctor \
--workspace "$HOME/acp-workspaces/my-service" \
--repo-git-url https://github.com/org/my-service.git
2) Запустите UI
acp serve \
--workspace "$HOME/acp-workspaces/my-service" \
--auto-init \
--repo-name my-service \
--repo-git-url https://github.com/org/my-service.git \
--runtime fake
Откройте http://127.0.0.1:8080.
3) Пройдите first-run flow в UI
Setup -> Source: укажите GitHub/GitLab URL или local folder.Workspace: оставьтеdocs.imports_pathили укажите папку импортированных документов.Runtime: для первого walkthrough используйтеfake.Validate: нажмитеSave and validate workspace.yaml, затемCheck local readiness.Run: нажмитеRun first analysis.
Результаты появятся в Results: coverage, artifacts, diagrams. История и логи run'ов доступны в Runs.
4) Переключитесь на real AI runtime
После первого walkthrough установите provider command и перезапустите сервис:
acp serve \
--workspace "$HOME/acp-workspaces/my-service" \
--runtime headless \
--runtime-provider claude-code
Подробно: docs/INSTALL.md, docs/TROUBLESHOOTING.md.
Статус репозитория
Сейчас репозиторий содержит:
- набор документов для стейкхолдеров и инженеров,
- контракты и схемы,
- рабочий local-first backend/API/CLI baseline (
init|refreshexecution path), - staged docs-first runtime pipeline для
reports/taskruns/*с validator-gated promotion в стабильныеreports/*иproposals/*, - deterministic derived materialization для
model/*,reports/*,proposals/*,changelog, - UI shell + first-run guided setup +
makeentrypoints + repo CI, - release packaging для GitHub Releases (
darwin/linuxamd64/arm64) и checksum-awareinstall.sh.
Реализация остаётся incremental по docs/BACKLOG.md, но базовый e2e поток уже исполним: workspace validate -> run pipeline -> inspect artifacts.
Канонический статус stakeholder-plan (implemented vs planned) зафиксирован в docs/STAKEHOLDER_DOC.md, секция Canonical Stakeholder Matrix (source of truth).
Scope MVP (явно)
✅ В MVP включено:
- step-scoped runtime provider selection для headless режима:
claude-code(default fallback),qwen-codeиcodex-code(release peer) - local-first режим (всё запускается локально)
- запуск того же standalone orchestrator в external CI/CD jobs, инициированных GitHub/GitLab hooks и/или manual pipeline/job trigger; ACP не поднимает native SCM webhook listener
- единый формат хранения: central
arch-workspacegit-репозиторий (Variant 2) - источники репозиториев: локальные checkout-папки и/или GitHub/GitLab
git_url, разрешаемые через локальныйgitконтекст пользователя/runner - локально импортированные документы
- интерактивный wizard "Конституции проекта"
- deterministic Step 0 support-artifacts materialization из
charter/wizard/step0-contract.json, а canonicalcharter/overview.md/skills/subagents.yamlпубликуются только из валидных runtime draft artifacts (constitution-draft.json+ draft finals) с warning в run diagnostics при missing/invalid wizard contract - встроенный baseline bundle agents/skills/prompts + редактируемые в UI prompt packs, версионируемые в Git
- domain-first иерархия агентов (domain analysts + architect aggregator)
- docs-first runtime contract: shard analysts пишут dossier packs в run-scoped staging, validator даёт canonical verdict, promotion переносит только approved final set
- markdown-карточки доменов/команд как source-of-truth в
charter/cards - read-only Q&A capability системного аналитика поверх артефактов workspace (
internal/qa,acp qa,POST /api/qa/ask) - итерационный changelog в
reports/changelog - детальный анализ каждого сервиса: архитектура, внешние интеграции, БД, CI/CD
- анализ arbitrary stacks через выбранный headless provider (
claude-code|qwen-code|codex-code) + baseline prompt bundle, без фиксированного whitelist парсеров в MVP - headless runtime получает не только
arch-workspace, но и resolved source repo directories изworkspace.yaml/workspace-validate.json, чтобы live analysis опирался на реальные checkout-ы, а не только на ACP-generated scaffold - явная фиксация недостатка информации через
coverage,questionsи findings - semantic guard в refresh-цикле: фильтрация нерелевантных placeholder-операций, fallback finding при owner-gap, канонизация/дедуп coverage+questions
- Git-based versioning/branching для модели, правил, отчётов и proposal-пакетов
- строгий runtime contract: staged filesystem artifact packs +
shard-pack-manifest/final-run-index/citation-index/validator-verdict - persisted runtime execution metadata сохраняется как internal audit/replay surface для fake/live runners
Docs-First Runtime Pipeline
Primary execution path для step0..step4:
- runtime пишет только в
reports/taskruns/<run_id>/...внутри своегоwrite_rootиdraft_final_root - provider резолвится на уровне шага, а не всего run; global
--runtime-provider/ACP_RUNTIME_PROVIDERостаются fallback только если step override не задан step0/2/4materialize-ят staged draft manifests (constitution-draft.json,asis-draft-manifest.json,proposals-draft-manifest.json)step0/2/4считаются successful только если draft manifest contract валиден и все referenced draft files реально существуют подdraft_final_rootstep2.asis_docsиспользует strict canonical manifest contract:step_contract="as_is", required outputsreports/as-is/overview.md,reports/coverage/summary.md,reports/agent-outputs/architect/summary.md, а extra outputs допускаются только подreports/as-is/<domain>/overview.mdstep4.proposalsиспользует strict canonical manifest contract:step_contract="proposals", allowedoutputs[].canonical_pathтолькоproposals/*иreports/changelog/*; legacy proposal envelopes (pipeline,step,proposals[]) reject-ятся как runtime contract drift- publish для
step0/2/4идёт только из validated runtime draft artifacts через deterministic compile/publish path; direct orchestrator writer больше не является альтернативным source-of-truth для canonical outputs - runtime draft manifest contract (
version=1,run_id,step_id,step_contract,agent_role,outputs[]) является единым internal source of truth для writer + validator; provider-specific retry policy остаётся в adapters - runtime validators для collect manifests и draft manifests read-only: они не нормализуют provider artifacts и не выполняют filesystem reconciliation
- если live provider уже записал валидные required artifacts, но завис до завершения процесса, shared runtime controlled stop принимает artifact-only success.
- shard agents materialize-ят authored docs +
shard-pack-manifest.json - persisted collect manifests с workspace-level
documents[].pathdrift (reports/...,charter/...,proposals/...или duplicatedartifact_root) отбрасываются доstep2; collect recovery остаётся provider-authored: non-silent no-artifact collect может получить одну pair-recovery попытку (suggested overview doc + shard-pack-manifest.json), а authored-doc collect — одну manifest-only попытку с write-set guard только наshard-pack-manifest.json - orchestrator/aggregator собирает staged final doc set в
reports/taskruns/<run_id>/staging/final/ - staged docflow использует один deterministic
document_idmapping дляmanifest.Documents[*].id,citation-index.jsonиfinal-run-index.json; semantic assembly нормализует repo aliases и дедуплицирует entity aliases до validator/promotion - validator пишет
validator-verdict.json - если collect evidence стал
unusable, live runtime дляstep2.asis_docs,step3.findingsиstep4.proposalsне вызывается; orchestrator собирает только triage-only incomplete surface и сохраняет collect как primary root cause - owner-gap остаётся visible signal в coverage/findings/questions, но owner-only residual больше не блокирует verdict сам по себе; terminal
validator verdict is FAILклассифицируется какruntime_flow_failed, а не какruntime_contract_failed - provider-side hard sandbox в текущих headless CLI нет; filesystem isolation обеспечивается только через separated temp roots и step-local
cwd(draft_final_rootдля draft steps,write_rootдля validator) - только schema/semantic/validator gates разрешают promotion в канонические
reports/as-is/*,reports/findings/*,reports/coverage/*,reports/agent-outputs/*,proposals/* - обязательного human gate перед publish больше нет
Machine-readable канон для дальнейшего рендера:
final run indexcitation index
Protected read-only surfaces для runtime:
workspace.yamlschemas/*docs/spec/*charter/*- анализируемые user repos
❌ В MVP не включено:
- security/compliance enforcement
- hosted/multi-tenant режим
- автоматические интеграции Confluence/Jira/Notion (включая autodocs)
- manager-агенты по Jira/resource skew
- org-scale cost optimization/scheduling
- расширенные role-based UX поверхности
Agent Operating Model (MVP)
domain-first модель:
- на каждый домен работает Domain Analyst Agent;
- Team overlay фиксируется отдельными team cards;
- 1 Architect Aggregator Agent собирает и нормализует результаты domain-агентов;
- System Analyst Q&A capability в beta работает как deterministic workspace-backed read-only service + CLI
acp qa+ public read-onlyPOST /api/qa/ask; это не headless runtime agent и не consumerskills/prompt-packs/qa.md; - каждая итерация фиксируется в markdown changelog.
Q&A API baseline surface: read-only endpoint POST /api/qa/ask возвращает answer, citations, unresolved, confidence и не меняет workspace.
Полная матрица статусов epics и boundary зафиксирована в canonical stakeholder matrix: docs/STAKEHOLDER_DOC.md.
Baseline Bundle (MVP)
В продукт поставляется обязательный baseline bundle, который хранится в workspace и редактируется как git-tracked assets:
- agents:
domain-analyst,architect-aggregator,system-analyst-qa - skills:
service-inventory,interface-extraction,integration-mapping,datastore-mapping,cicd-mapping,ownership-coverage,findings,proposals,qa - prompt packs:
constitution,collect-context,findings,proposals,qa
Bundle bootstrap policy:
init-workspaceиserve --auto-initсоздают baseline artifacts по стратегии create-if-missing;- существующие пользовательские правки в baseline файлах не перезаписываются.
- workspace prompt packs участвуют в runtime prompt composition как editable content layer; merge order фиксирован: provider header -> artifact-only contract/filesystem policy -> step-specific policy -> workspace prompt pack -> provider completion footer. Enforced safety/contract rules приходят из internal runtime step policy и не могут быть ослаблены содержимым prompt pack. Editable prompt pack layer подключён к
step0.constitution,step1.collect,step3.findingsиstep4.proposals;step2.asis_docsиспользует enforced policy only и не имеет отдельного editableas-isprompt pack. - baseline prompt defaults структурированы по обязательным секциям (
Goal,Inputs,Required Output Shape,Evidence Policy,Forbidden Behavior,Fallback When Unknown) и покрыты quality-тестом на минимальную насыщенность.
Ключевые понятия (trust model)
ACP разделяет три типа фактов:
- Observation: факт с evidence из артефактов.
- Inference: гипотеза на основе косвенных сигналов.
- Assertion: факт, подтверждённый человеком/организацией.
MVP policy: Observation + Assertion отображаются как рабочая истина, Inference требует review.
Быстрый старт (minimal local MVP)
Минимальные prerequisites для первого запуска
- Git
- release binary
acpиз docs/INSTALL.md - GitHub/GitLab URL или локальный клон хотя бы одного анализируемого репозитория
Go 1.20.x и Node.js 22.21.1/npm 10.x нужны только при сборке из исходников через make bootstrap && make build.
Для первого запуска достаточно --runtime fake.
Для реальных запусков --runtime headless нужен установленный provider command (claude-code/qwen/codex) либо env override (ACP_CLAUDE_CMD/ACP_QWEN_CMD/ACP_CODEX_CMD).
Direct режим ACP_CLAUDE_CMD=claude поддерживается нативно (без wrapper).
1) Поднимите сервис одной командой (auto-init)
acp serve --workspace /path/to/arch-workspace --auto-init --repo-name payments-service --repo-git-url https://github.com/org/payments-service.git --runtime fake
Эта команда:
- создаёт
workspace.yaml, если он отсутствует, - создаёт fixed MVP layout,
- автоматически выполняет
git initв workspace root, если.gitотсутствует, - поднимает backend + embedded UI без блокирующего preflight repo-resolution на старте.
Для multi-repo bootstrap вместо single-repo флагов можно использовать:
acp serve --workspace /path/to/arch-workspace --auto-init --repos-file /path/to/repos.yaml --runtime fake
Опционально для serve --auto-init можно задать --docs-imports-path <path> (default ./docs/imports в workspace.yaml).
2) Запустите первый анализ
Можно из UI (Setup -> Run first analysis) или CLI:
acp run --workspace /path/to/arch-workspace --pipeline init --runtime fake --non-interactive
После запуска UI отображает dashboard со всеми run'ами (queued/running/succeeded/failed), включая уже завершённые запуски.
Для operability UI автоматически выбирает newest active run (или первый из списка), показывает полный warnings list выбранного run, поддерживает top-level navigation Setup / Baseline / Runs / Results / Settings, в Runs: Logs позволяет переключать event timeline | raw agent stream | all и line | line+fields, и поддерживает Cancel selected run.
Results включает отдельную поверхность Diagrams для reports/diagrams/* (Mermaid preview + index).
История сохраняется в workspace: reports/taskruns/run-history.json.
3) Альтернативный явный bootstrap через init-workspace
acp init-workspace --workspace /path/to/arch-workspace --repo-name payments-service --repo-path /path/to/payments-service
Команда:
- создаёт/обновляет
workspace.yaml, - создаёт fixed MVP layout (
charter/,skills/,model/,reports/,proposals/,docs/), - автоматически выполняет
git initв workspace root, если.gitотсутствует, - валидирует manifest и repo source.
Source of truth для manifest contract:
docs/spec/WORKSPACE_SPEC.mdschemas/workspace.schema.jsonexamples/workspace.example.yaml
Для remote source можно использовать:
acp init-workspace --workspace /path/to/arch-workspace --repo-name users-service --repo-git-url https://gitlab.example.com/platform/users-service.git --repo-ref main
Для 2+ репозиториев:
acp init-workspace --workspace /path/to/arch-workspace --repos-file /path/to/repos.yaml
repos.yaml поддерживает формат:
repos: [...]- или top-level массив записей
repos[]
Если repos-file содержит блок runtime.profile.timeouts, init-workspace/serve --auto-init переносят его в workspace.yaml (persisted timeout profile).
3.1) Read-only QA по артефактам workspace (опционально)
acp qa --workspace /path/to/arch-workspace --question "Who owns payments-service?"
curl -fsS -X POST http://127.0.0.1:8080/api/qa/ask \
-H 'Content-Type: application/json' \
-d '{"question":"Who owns payments-service?"}'
4) Самый короткий локальный flow через Makefile
make quickstart-local WORKSPACE=/path/to/arch-workspace REPO_PATH=/path/to/payments-service REPO_NAME=payments-service
Команда выполняет init-workspace + первый init pipeline. После неё можно сразу запускать acp serve.
5) Импортируйте документы вручную (MVP)
Документы (например, выгрузки из Confluence) кладутся в docs.imports_path (default docs/imports/).
Для импортов рекомендуется вести <docs.imports_path>/index.yaml с metadata: required id/path, optional source, checksum, imported_at, source_updated_at, status.
Отсутствие index не считается diagnostic; malformed/semantic issues в index дают warning-only workspace diagnostics.
6) Когда переходить на headless runtime
--runtime fake— default для required deterministic CI surface и первого локального старта.--runtime headless— opt-in для реального анализа через выбранный provider.--runtime-providerподдерживаетclaude-code(default),qwen-codeиcodex-code.- effective precedence выбора provider для каждого шага:
workspace.yaml.runtime.profile.steps.<step>.provider> CLI--runtime-provider/ACP_RUNTIME_PROVIDER>claude-code. - command env:
ACP_CLAUDE_CMD(defaultclaude-code)ACP_QWEN_CMD(defaultqwen)ACP_CODEX_CMD(defaultcodex)
- direct
claudeрежим:ACP_CLAUDE_CMD=claude(native one-shot invocation с envelope parse). - в
--runtime fakeprovider проходит валидацию как config fallback, live command не запускается, а runtime execution metadata пишет neutral providerfake.
6.1) Runtime timeouts (persisted + effective)
Timeout-конфиг хранится в workspace.yaml (runtime.profile.timeouts) и используется backend/full-run/frontend e2e.
Канонический contract для persisted/effective/source representation и API surfaces удерживается в docs/spec/API_SPEC.md; runtime semantics и ownership boundary описаны в docs/ARCHITECTURE.md.
6.2) Runtime execution profile (persisted + effective)
Execution-конфиг хранится в workspace.yaml (runtime.profile.execution) и управляет шардированием runtime-задач.
Step provider overrides живут в workspace.yaml.runtime.profile.steps.*.provider.
Точный wire/API contract, precedence и update surface удерживаются в docs/spec/API_SPEC.md, а sharding/runtime behavior boundary — в docs/ARCHITECTURE.md.
7) Поднимите dev environment
Root entrypoints:
make bootstrapmake contractsmake testmake lintmake buildmake run-backend WORKSPACE=/abs/path/to/arch-workspacemake run-ui
8) Полный локальный прогон (scenario)
Канонические runbook-документы:
- docs/LOCAL_FULL_RUN_AI_ADVENT.md
- docs/RELEASE_LIVE_E2E_RUNBOOK.md — агентский pre-release live gate (
PASS|FAIL, strict zero-failure)
Доступные entrypoint-скрипты:
scripts/full-run-ai-advent.sh— полный локальный cycle overTARGET_REPOS_FILEscripts/full-run-batch.sh— batch re-audit + frontend live e2escripts/full-run-batch-matrix.sh— multi-profile matrix orchestrator; пишет durable profile status + per-batch inventory с key log/report paths и bounded raw-output refsscripts/frontend-live-e2e.sh— локальный UI smoke для выбранного provider; различает genericplaywright_failedиactive_run_timeout, если run остаётся продуктивным, но не успевает дойти доsucceeded- generic capacity/429 сигналы из
codexplugin/Cloudflare/state-db noise не считаются root-causerunner_unavailable, а raw provider text не поднимает secondaryrunner_unavailableтолько из-за упоминания имени категории без реального availability signal - terminal-success backend runs (
result=passed,quality_gates=passed,run-status.env state=completed process_exit=0) не получают failure class из recovered raw provider diagnostics - multi-repo report gate считает cross-repo signal по explicit
semantic.edges[]или поcitations[].repocoverage вместе с multi-repo finding provenance, чтобы не помечать schema-valid focused recovery outputs какanalysis:cross-repo-missing - failed CLI cycles с известным
run_idсохраняют fixed-shaperun-results.tsvrow и best-effort snapshot до terminal cleanup, даже если quality summary отсутствует/битый; provider/runtime failures отображаются как failed headless rows, а не как missing-row infra gaps
Быстрый локальный запуск:
TARGET_REPOS_FILE=/abs/path/to/repos.yaml ./scripts/full-run-ai-advent.sh
Быстрый matrix запуск:
E2E_MATRIX_FILE=/abs/path/to/e2e-matrix.yaml \
ACP_CLAUDE_CMD_BIN=claude \
ACP_QWEN_CMD_BIN=qwen \
ACP_CODEX_CMD_BIN=codex \
./scripts/full-run-batch-matrix.sh
Ключевые правила:
- канонический input для full-run и batch:
TARGET_REPOS_FILE - release matrix и trusted-machine gate не входят в required CI merge gate
- подробные matrix/sweep/shard/release rules, output contracts и troubleshooting удерживаются только в runbook docs выше, а не в
README.md
Для release decision и детального live gate используйте:
Repo CI по умолчанию живёт в GitHub Actions:
contractsbackenduigoldensmoke-clismoke-api
High-level архитектура (локально)
- arch-workspace/: charter, skills, model, reports, proposals
- Repo source resolver: локальные
pathилиgit_url, разрешаемые в локальные checkout через системныйgitтекущего пользователя/runner - Agent topology: domain analysts, architect aggregator, deterministic system analyst Q&A capability + baseline bundle skills/prompts
- UI: guided workspace setup + baseline editors для
charter/*иskills/*, запуск pipeline, просмотр результатов - Orchestrator (Go): шаги pipeline, context/prompt packs, вызов runtime, local execution и CI/CD trigger execution
- Runtime providers: headless jobs анализа через
claude-code|qwen-code|codex-code;fakeостаётся deterministic baseline, default fallback остаётсяclaude-code - Model store:
model/в формате entity-per-file, включая внешние системы и datastores - Reports/Proposals:
reports/(включаяagent-outputs/иchangelog/) иproposals/
Data flow (MVP)
flowchart LR
U[User] --> UI[Local UI]
SCM[GitHub/GitLab hooks or pipeline button] --> ORCH
UI --> ORCH[Orchestrator (Go)]
ORCH --> WS[arch-workspace (git)]
ORCH --> CC[Headless Runtime Provider (claude-code or qwen-code or codex-code)]
ORCH --> SRC[Repo sources from workspace.yaml]
SRC --> REPOS[Local checkout paths]
SRC --> GITLAB[GitHub/GitLab git_url via local git]
GITLAB --> REPOS
CC --> DOCS[Local docs/imports]
CC --> REPOS
CC --> OUT["Docs-first artifact pack (shard/final indexes + verdict)"]
CC --> META["runtime-execution.json (internal metadata)"]
OUT --> ORCH
META --> ORCH
ORCH --> WS
UI --> WS
Каноническая модель (MVP)
Модель хранится в entity-per-file YAML:
model/
entities/
edges/
Минимальные требования к сущностям/связям:
idtypename(для entity)provenance.kind:observation | inference | assertionprovenance.confidence:0..1provenance.evidence[]
MVP-модель должна покрывать как минимум:
- сервисы и их интерфейсы,
- внешние интеграции,
- datastores,
- ownership hints,
- CI/CD evidence в reports/coverage/findings, если это не выносится в core model.
Подробнее: docs/spec/MODEL_SPEC.md.
Контракт runtime output: artifact-only docs-first
Artifact ownership для live docs-first pipeline:
- provider-authored runtime artifacts:
shard-pack-manifest.json,constitution-draft.json,asis-draft-manifest.json,proposals-draft-manifest.json, draft files иvalidator-verdict.json - orchestrator-authored staged indexes/metadata:
final-run-index.json,citation-index.json, run history/logs, shard plans и shard summaries - compiler-derived promoted surfaces:
model/*,reports/diagrams/*, normalized coverage/findings renderers и canonicalreports/*/proposals/*после validator-gated promotion
Docs-first semantic rules:
citation-index.json.claim_idsобразуют глобальное пространство имён в пределах assembled staged final set; один и тот жеclaim_idнельзя переиспользовать между разными shard/citation surfaces.shard-pack-manifest.json.semanticвсегда materialize-ится полностью (coverage,questions,entities,edges,findings), а collect step не считается успешным, если manifest остаётся missing/invalid после разрешённых focused collect recovery попыток.- Все required runtime artifacts должны писаться и проверяться по exact absolute
write_root/draft_final_root; relative CWD checks вродеtest -f validator-verdict.jsonне являются валидным artifact target. - collect prompt даёт provider-у early pair-write target: suggested authored doc path + literal task-specific
shard-pack-manifest.jsonskeleton должны появиться до broad second-pass sweep. - collect pair recovery используется только когда provider оставил diagnostics, но не написал authored artifacts: prompt сначала пишет suggested overview doc и literal
shard-pack-manifest.jsonskeleton по exact absolute targets, а write-set guard разрешает только эту пару файлов. Fully silent no-artifact qwen path остаётсяrunner_unavailable. - manifest-only repair читает только текущий shard
write_rootи repo evidence roots; repair prompt начинается с command-first absolute heredoc write target вокруг literal JSON skeleton, overwrites existing invalid manifests instead of reading/diffing/patching them, and does not repeat validation-error cues that invite field-level patching. Broader workspacereports/taskruns, sibling shard manifests и filesystem schema scavenging не являются repair input. shard-pack-manifest.json.documents[].pathвсегда strictartifact_root-relative; duplicatedartifact_rootprefix, persisted workspace-relative staging paths и absolute paths считаются contract-invalid drift и не нормализуются ACP.- Validator verdict recovery — focused provider-authored pass, который может писать только
write_root/validator-verdict.json; repair prompt начинается с command-first absolute heredoc skeleton,checked_pathsссылается на staged final artifacts,issues[]использует только canonicalcode/severity/message+ optionalpath/document_id/citation_id, legacy finding-shaped issue fields reject-ятся strict validation. - Draft recovery для
step0/2/4может писать только step manifest вwrite_rootи referenced draft files подdraft_final_root; repair prompt начинается с command-first heredoc artifact set для manifest + draft files и запрещает broad analysis до первого валидного draft set. ACP не синтезирует draft artifacts и не делает hidden reconciliation. - Для больших repos structural shard coalescing сохраняет module marker leaf shard groups внутри top-level dirs, если итоговый shard count остаётся в
maxAutoShardsPerRepo; если top-level групп больше cap, они детерминированно merge-ятся в bounded buckets. Root-marker-only repos больше не схлопываются в".", а планируются как root-file group + top-level directory shards. - legacy collect aliases (
covered_topics,question,relation,source,target,evidence_citation_ids, findingsummary/inference, top-levelstep_contract/compatibility) reject-ятся schema/contract validation-ом; отдельного compatibility scanner/repair layer нет. - validator path может чинить только technical/reference drift в staged indexes; дублирующиеся
claim_idдетерминированно переименовываются в citation index без semantic rewrite authored docs.
Persisted runtime execution metadata:
- сериализуется как internal
runtime-execution.jsonpayload рядом с taskrun artifacts - используется для replay/recovery, taskrun diagnostics и raw-output linking
- live headless providers (
claude-code,qwen-code,codex-code) проходят через общий artifact-only process engine; provider adapters задают только CLI invocation и explicit activity/recovery policy qwen-codeadapter invocation передаёт artifact prompt только через CLI-pбез JSON task stdin; custom qwen args нормализуются так, чтобы не подменять artifact prompt.claude-code/codex-codeсохраняют свои transport-specific stdin/machine-mode surfaces- selected-provider preflight фиксирует command/model/version readiness до deep live run; такие blockers являются operational, не product verdict
- provider/API transport transcripts (например
[API Error: ... SSL ...]) классифицируются какrunner_unavailableс обязательным сохранением raw stdout/stderr artifacts - не является semantic source of truth для canonical
reports/*/proposals/*promotion path
Primary promotion gate:
- только
validator-verdict = PASSразрешает promotion staged final docs в canonical stable paths.
Evidence format (MVP)
Каждый evidence item ссылается на локальный артефакт:
{
"repo": "payments-service",
"ref": "main@<commit>",
"path": "internal/http/routes.go",
"lines": { "start": 120, "end": 148 },
"excerpt_hash": "sha256:..."
}
Пример: examples/validator-verdict.example.json.
Пайплайны (MVP)
Init pipeline
- Charter (wizard)
- Collect context
- As-is docs
- Findings
- Proposals
Continuous loop (manual)
- обновление локальных репозиториев/документов
- повторный запуск pipeline
- обновление model/reports/proposals
CI/CD mode (MVP)
- тот же
acp run ... --non-interactiveможет выполняться в GitHub/GitLab pipeline job - запуск инициируется через SCM hooks и/или manual pipeline button/job на стороне CI provider
- ACP не принимает public SCM webhooks сам: native webhook listener / external SCM app integration остаются вне MVP
- входы: workspace repo + локальные checkout и/или доступ к declared
git_urlчерез локальныйgitконтекст пользователя/runner - ACP не хранит отдельные git credentials и не требует hosted control plane
- выходы: обновлённые артефакты workspace и явные gaps по недостающей информации
- GitLab template примеры (push + manual trigger):
scripts/templates/gitlab/
Подробная спецификация: docs/spec/PIPELINE_SPEC.md.
UI требования (MVP baseline)
UI в MVP должен покрывать минимум:
- wizard для Step 0 (charter);
- настройку
repos[](multi-repo) для локальных папок и GitHub/GitLab URL; - baseline-wide редактор
charter/*+skills/*(prompt packs,subagents.yaml, skill prompts); - запуск pipeline (init/update);
- явные top-level секции
Setup / Baseline / Runs / Results / Settings; Settingsкак отдельная вкладка для runtime profile (timeouts+execution) и effective step providers;Runs: Logsс dual stream surface (event timeline+raw agent stream) и quick actions;Resultsс отдельной вкладкойDiagrams(filter/open/preview C4 Mermaid artifacts);- просмотр остальных результатов (
as-is, findings, proposals) и repo validation overview (resolved_repos+ diagnostics по repo); - просмотр coverage/questions по недостающим данным;
- вызовы backend через
/api/*(см.docs/spec/API_SPEC.md).
Стратегия тестирования (baseline)
- source of truth:
docs/TESTING_STRATEGY.md - required CI использует synthetic fixtures and recorded artifacts и не зависит от live headless providers / live network
- baseline layers:
- contract tests для
workspace.yaml,shard-pack-manifest,final-run-index,citation-index,validator-verdictи persisted runtime execution metadata - semantic validator tests
- golden/regression tests для docs-first staged/promoted outputs и derived model layer
- scenario integration tests на synthetic repos
- smoke tests для CLI/API/UI
- contract tests для
- local live-runner smoke выполняется вручную (не через required CI) через
scripts/full-run-ai-advent.shс реально доступным headless runner на доверенной машине
Deterministic scope (beta baseline)
При одинаковом input + одинаковом наборе artifact fixtures expected stable surface:
charter/model/reports/as-is/reports/findings/reports/coverage/reports/agent-outputs/proposals/
Run-specific поверхность (исключена из strict golden compare):
reports/changelog/*reports/taskruns/*- runtime run registry/status (
/api/pipeline/runs/*) - read-only Q&A surface (
/api/qa/ask) - runtime contract/runtime и lifecycle ошибки после async start отражаются в
GET /api/pipeline/runs/<run_id>.error_code(например,runtime_contract_failed,run_canceled,run_reconciled_after_restart)
Статус покрытия epics (single source): docs/STAKEHOLDER_DOC.md → Canonical Stakeholder Matrix (source of truth).
Ключевые файлы
go.mod— root Go moduleMakefile— единые developer entrypoints.github/workflows/*— repo CIdocs/STAKEHOLDER_DOC.md— stakeholder source-of-truth и canonical matrix статусов (v1.0 implementation-aligned)docs/spec/WORKSPACE_SPEC.md— канонический контрактworkspace.yamldocs/spec/MODEL_SPEC.md— каноническая модель v0docs/spec/PIPELINE_SPEC.md— pipeline I/O и expected artifactsdocs/TESTING_STRATEGY.md— baseline strategy для contract/golden/smoke testsdocs/APPENDIX_SCHEMAS.md— человеко-читаемые правила для schema/contractsschemas/shard-pack-manifest.schema.json— JSON Schema primary shard runtime contractschemas/final-run-index.schema.json— JSON Schema staged final run indexschemas/citation-index.schema.json— JSON Schema citation normalization layerschemas/validator-verdict.schema.json— JSON Schema validator release gateschemas/workspace.schema.json— JSON Schema дляworkspace.yamlexamples/workspace.example.yaml— пример workspace configexamples/shard-pack-manifest.example.json— пример shard manifestexamples/final-run-index.example.json— пример final indexexamples/citation-index.example.json— пример citation indexexamples/validator-verdict.example.json— пример validator verdictcmd/acp/main.go— CLI entrypoint (serve,run,qa)ui/package.json— UI toolchain + scriptsfixtures/README.md— baseline fixtures и regression surfacedocs/BACKLOG.md— эпики и acceptance criteriadocs/BASELINE_POLICY.md— правила сопровождения baseline
Порядок реализации
- финализировать artifact-only docs-first runtime contracts + derived model rebuild
- реализовать baseline bundle agents/skills/prompts
- реализовать CI/CD trigger surface: hooks/manual pipeline button/job + batch mode
- реализовать orchestrator + runtime provider adapters (
claude-code,qwen-code,codex-code) - реализовать model store (entity-per-file) и extraction coverage for integrations/datastores/CI-CD
- реализовать UI (workspace setup, charter/skills/run/results)