ai-delivery-workflow 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -6
- package/bin/ai-delivery.mjs +2 -24
- package/docs/CLI-PARAMETER-REFERENCE.zh-CN.md +6 -67
- package/docs/DUAL-REPOSITORY-WORKSPACE.zh-CN.md +1 -1
- package/docs/FILE-REFERENCE.zh-CN.md +6 -28
- package/docs/MAINTENANCE-VERIFICATION.zh-CN.md +2 -2
- package/docs/PROJECT-MANUAL.zh-CN.md +23 -38
- package/docs/STATE-CLI-MAINTENANCE.zh-CN.md +8 -10
- package/docs/STATE-CLI-USER-GUIDE.zh-CN.md +6 -16
- package/docs/agents/workflow-manager-acceptance-matrix.md +9 -15
- package/docs/agents/workflow-manager-current-state.md +12 -15
- package/lib/communication-confirmation.mjs +177 -0
- package/lib/delivery-state.mjs +59 -910
- package/lib/fs-utils.mjs +0 -16
- package/lib/project-bootstrap.mjs +288 -61
- package/lib/project-installer.mjs +49 -181
- package/lib/project-repair.mjs +217 -0
- package/lib/toml-hooks.mjs +2 -4
- package/lib/workflow-manager-governance.mjs +3 -47
- package/lib/workspace.mjs +2 -3
- package/package.json +2 -2
- package/skills/ai-delivery-bootstrap/SKILL.md +5 -1
- package/skills/ai-delivery-bootstrap/references/bootstrap-contract.md +1 -1
- package/skills/ai-delivery-checkpoint-task/SKILL.md +2 -4
- package/skills/ai-delivery-checkpoint-task/references/checkpoint-contract.md +4 -2
- package/skills/ai-delivery-checkpoint-task/scripts/hook-event.mjs +2 -8
- package/skills/ai-delivery-checkpoint-task/scripts/task-state.mjs +26 -46
- package/skills/ai-delivery-close-version/SKILL.md +13 -10
- package/skills/ai-delivery-close-version/references/version-closeout-contract.md +2 -1
- package/skills/ai-delivery-define-product/SKILL.md +6 -3
- package/skills/ai-delivery-design-architecture/SKILL.md +10 -5
- package/skills/ai-delivery-design-architecture/assets/architecture-template/architecture-gate.yaml +2 -0
- package/skills/ai-delivery-design-architecture/assets/architecture-template/prototype-architecture-validation.yaml +2 -0
- package/skills/ai-delivery-design-architecture/references/architecture-contract.md +4 -0
- package/skills/ai-delivery-design-experience/SKILL.md +8 -6
- package/skills/ai-delivery-design-experience/assets/experience-template/product-prototype-reconciliation.yaml +2 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/ui-handoff.yaml +3 -0
- package/skills/ai-delivery-design-experience/references/experience-contract.md +3 -13
- package/skills/ai-delivery-design-experience/references/prototype-management-contract.md +1 -1
- package/skills/ai-delivery-design-tests/SKILL.md +4 -0
- package/skills/ai-delivery-develop-iteration/SKILL.md +6 -1
- package/skills/ai-delivery-develop-iteration/assets/development-template/candidate-manifest.yaml +2 -0
- package/skills/ai-delivery-execute-work-package/SKILL.md +4 -2
- package/skills/ai-delivery-orchestrate/SKILL.md +7 -7
- package/skills/ai-delivery-orchestrate/assets/codebase-template/AGENTS.md +14 -0
- package/skills/ai-delivery-orchestrate/assets/codebase-template/CODEBASE_GUIDE.md +124 -0
- package/skills/ai-delivery-orchestrate/assets/codebase-template/docs/CODEBASE_INDEX.md +87 -0
- package/skills/ai-delivery-orchestrate/assets/communication-template/confirmation-examples.yaml +67 -0
- package/skills/ai-delivery-orchestrate/assets/communication-template/confirmation-summary.yaml +42 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/iterations/ITER-0001/02-solution-design/product-impact-assessment.yaml +42 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/hooks/hook-event.mjs +2 -8
- package/skills/ai-delivery-orchestrate/assets/project-template/AGENTS.md +4 -5
- package/skills/ai-delivery-orchestrate/references/codebase-document-contract.md +91 -0
- package/skills/ai-delivery-orchestrate/references/communication-confirmation-contract.md +52 -0
- package/skills/ai-delivery-orchestrate/references/formal-state-contract.md +11 -20
- package/skills/ai-delivery-orchestrate/references/product-impact-assessment-contract.md +87 -0
- package/skills/ai-delivery-orchestrate/references/workflow-model.md +1 -3
- package/skills/ai-delivery-orchestrate/scripts/confirmation-state.mjs +30 -0
- package/skills/ai-delivery-orchestrate-release/SKILL.md +3 -1
- package/skills/ai-delivery-plan-iteration/SKILL.md +6 -1
- package/skills/ai-delivery-prepare-platform/SKILL.md +1 -1
- package/skills/ai-delivery-prepare-release/SKILL.md +2 -0
- package/skills/ai-delivery-prepare-release/assets/release-template/release-manifest.yaml +0 -2
- package/skills/ai-delivery-review-change/SKILL.md +3 -1
- package/skills/ai-delivery-validate-artifacts/SKILL.md +10 -7
- package/skills/ai-delivery-validate-artifacts/references/artifact-contract.md +2 -1
- package/skills/ai-delivery-verify-candidate/SKILL.md +5 -2
- package/skills/ai-delivery-verify-candidate/references/candidate-verification-contract.md +1 -1
- package/docs/PROTOTYPE-MIGRATION.zh-CN.md +0 -164
- package/docs/VIEWER-MAINTENANCE.zh-CN.md +0 -150
- package/docs/VIEWER-USER-GUIDE.zh-CN.md +0 -113
- package/lib/project-migration.mjs +0 -1193
- package/lib/prototype-migration.mjs +0 -713
- package/skills/ai-delivery-design-experience/assets/experience-template/LEGACY-COMPATIBILITY.md +0 -16
- package/skills/ai-delivery-design-experience/assets/experience-template/canvas-catalog.csv +0 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/canvas-pages.csv +0 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/page-catalog.csv +0 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-file-terminals.csv +0 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-files.csv +0 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-manifest.yaml +0 -76
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-set.yaml +0 -24
package/skills/ai-delivery-orchestrate/assets/communication-template/confirmation-summary.yaml
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
summary_id: CONFIRMATION-SUMMARY-0001
|
|
3
|
+
version: 1
|
|
4
|
+
status: draft
|
|
5
|
+
node: 01-product-shaping
|
|
6
|
+
iteration_id: ITERATION-0001
|
|
7
|
+
task_id: TASK-0001
|
|
8
|
+
owner: team-or-role
|
|
9
|
+
source_revision: REPLACE_WITH_CODE_OR_WORKFLOW_COMMIT
|
|
10
|
+
updated_at: REPLACE_WITH_ISO_TIMESTAMP
|
|
11
|
+
frontier_round: 1
|
|
12
|
+
shared_understanding: false
|
|
13
|
+
shared_understanding_actor: null
|
|
14
|
+
shared_understanding_confirmed_at: null
|
|
15
|
+
grouping_rationale: null
|
|
16
|
+
records:
|
|
17
|
+
- confirmation_id: CONF-0001
|
|
18
|
+
question_id: Q-0001
|
|
19
|
+
parent_decision_id: null
|
|
20
|
+
frontier_round: 1
|
|
21
|
+
category: business_decision
|
|
22
|
+
status: proposed
|
|
23
|
+
question: "What decision must the user make?"
|
|
24
|
+
recommendation: "Recommended option and why."
|
|
25
|
+
options:
|
|
26
|
+
- id: OPTION-A
|
|
27
|
+
label: "Option A"
|
|
28
|
+
rationale: "Tradeoff and evidence."
|
|
29
|
+
decision: null
|
|
30
|
+
rationale: null
|
|
31
|
+
actor: null
|
|
32
|
+
confirmed_at: null
|
|
33
|
+
depends_on: []
|
|
34
|
+
evidence_refs: []
|
|
35
|
+
authority_refs: []
|
|
36
|
+
impact_refs: []
|
|
37
|
+
owner: product-owner
|
|
38
|
+
next_action: "Ask Q-0001 and wait for the user's answer."
|
|
39
|
+
next_action_owner: user
|
|
40
|
+
supersedes: null
|
|
41
|
+
superseded_by: null
|
|
42
|
+
open_questions: []
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
artifact_id: PRODUCT-IMPACT-ASSESSMENT-0001
|
|
2
|
+
artifact_type: product-impact-assessment
|
|
3
|
+
version: 1
|
|
4
|
+
iteration_id: ITER-0001
|
|
5
|
+
status: draft
|
|
6
|
+
producer_skill: ai-delivery-design-architecture
|
|
7
|
+
source_node: 02-solution-design
|
|
8
|
+
input_artifacts: []
|
|
9
|
+
product_baseline:
|
|
10
|
+
id: PRODUCT-BASELINE-0001
|
|
11
|
+
version: 1
|
|
12
|
+
checksum: REPLACE_WITH_SHA256
|
|
13
|
+
decision: clarification-required
|
|
14
|
+
trigger:
|
|
15
|
+
kind: prototype-adjustment
|
|
16
|
+
summary: REPLACE_WITH_OBSERVED_CHANGE
|
|
17
|
+
affected_product_assets:
|
|
18
|
+
terminals: []
|
|
19
|
+
features: []
|
|
20
|
+
stories: []
|
|
21
|
+
acceptance_criteria: []
|
|
22
|
+
non_functional_requirements: []
|
|
23
|
+
business_terms: []
|
|
24
|
+
affected_design_assets:
|
|
25
|
+
experience_changes: []
|
|
26
|
+
prototype_pages: []
|
|
27
|
+
review_scenes: []
|
|
28
|
+
architecture_decisions: []
|
|
29
|
+
quality_budgets: []
|
|
30
|
+
confirmation:
|
|
31
|
+
questions: []
|
|
32
|
+
summary_ref: .workflow/communication/confirmation-summary.yaml
|
|
33
|
+
return:
|
|
34
|
+
required: true
|
|
35
|
+
node: 01-product-shaping
|
|
36
|
+
mode: prototype-reconciliation
|
|
37
|
+
reason: REPLACE_WITH_REASON
|
|
38
|
+
rebaselines_required: []
|
|
39
|
+
stale_artifacts: []
|
|
40
|
+
product_reconciliation_ref: null
|
|
41
|
+
evidence: []
|
|
42
|
+
blocking_issues: []
|
package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/hooks/hook-event.mjs
CHANGED
|
@@ -144,15 +144,9 @@ function enforceFrontendGuard(projectRoot, input) {
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
try {
|
|
147
|
-
const
|
|
148
|
-
const legacyProjectFile = currentProjectFile
|
|
149
|
-
? null
|
|
150
|
-
: findUp(process.cwd(), path.join("delivery", "project.yaml"));
|
|
151
|
-
const projectFile = currentProjectFile || legacyProjectFile;
|
|
147
|
+
const projectFile = findUp(process.cwd(), path.join(".workflow", "delivery", "project.yaml"));
|
|
152
148
|
if (!projectFile) process.exit(0);
|
|
153
|
-
const projectRoot =
|
|
154
|
-
? path.dirname(path.dirname(path.dirname(projectFile)))
|
|
155
|
-
: path.dirname(path.dirname(projectFile));
|
|
149
|
+
const projectRoot = path.dirname(path.dirname(path.dirname(projectFile)));
|
|
156
150
|
const markerFile = path.join(projectRoot, ".workflow", "delivery", "runtime", "active-task.json");
|
|
157
151
|
const marker = fs.existsSync(markerFile) ? JSON.parse(fs.readFileSync(markerFile, "utf8")) : null;
|
|
158
152
|
const raw = await readStdin();
|
|
@@ -36,12 +36,11 @@
|
|
|
36
36
|
4. 任务、checkpoint、恢复状态、活动任务标记和版本归档只能由 `.agents/skills/ai-delivery-checkpoint-task/scripts/task-state.mjs` 修改。
|
|
37
37
|
5. 正式流程、物料和 Gate 状态只能由 `node .workflow/tools/state/state.mjs ...` 修改。禁止直接编辑 `.workflow/delivery/workflow-state.yaml`、`.workflow/delivery/artifact-registry.yaml` 和 `.workflow/delivery/state-events.jsonl`。
|
|
38
38
|
5.1 研发 scope 使用 `iteration-started`,发布 scope 仅在用户明确发布后使用 `release-started`;两者可并行且不得互相重置。节点必须满足流程图前置条件、成功证据和当前尝试的强制 Gate。
|
|
39
|
-
5.1.1 当前研发生产路线是 `development-seven-node`:`00-bootstrap -> 01-product-shaping -> 02-solution-design -> 03-delivery-readiness -> 04-implementation -> 05-candidate-assurance -> 06-version-closeout`。生产 Skill 只能为新任务、物料和正式 transition 使用这些研发节点 ID
|
|
40
|
-
5.1.2
|
|
41
|
-
5.
|
|
42
|
-
5.2 Delivery Readiness 使用 `scope freeze` 冻结带 checksum 的 Slice、需求、验收、任务和物料集合并启用 `scope_contract_version: 1`。冻结后只有带明确人工批准和 `--supersedes` 的 `scope amend` 可以改变范围;预算超限仅用 `scope warn` 登记 `warn-only` 与 `reslice_performed: false`,不得自动重新切片或改变验收。历史 scope 未启用该字段时保持旧契约兼容。
|
|
39
|
+
5.1.1 当前研发生产路线是 `development-seven-node`:`00-bootstrap -> 01-product-shaping -> 02-solution-design -> 03-delivery-readiness -> 04-implementation -> 05-candidate-assurance -> 06-version-closeout`。生产 Skill 只能为新任务、物料和正式 transition 使用这些研发节点 ID。发布节点 `R00-release-request` 至 `R10-release-archive` 继续允许写入。
|
|
40
|
+
5.1.2 当前项目只接受 schema 2 formal state、canonical task shape、当前 `.workflow/` 布局和 v2 Prototype Revision。doctor、state inspect、prototype validation 或 checksum 检查失败时停止并报告精确冲突;修复必须通过受控当前接口完成。
|
|
41
|
+
5.2 Delivery Readiness 使用 `scope freeze` 冻结带 checksum 的 Slice、需求、验收、任务和物料集合并启用 `scope_contract_version: 1`。冻结后只有带明确人工批准和 `--supersedes` 的 `scope amend` 可以改变范围;预算超限仅用 `scope warn` 登记 `warn-only` 与 `reslice_performed: false`,不得自动重新切片或改变验收。
|
|
43
42
|
5.3 从 `inspect.derived_node_states` 读取 `pending | active | waiting | blocked | ready-to-complete | completed`,不得根据聊天或单一任务状态直接写正式节点状态。投影必须综合 task、最新 blocking finding、Gate、artifact、candidate、当前 scope manifest 和 completion receipt;受新契约治理的节点仅能从 `ready-to-complete` 完成,并写入绑定这些事实的 completion receipt。
|
|
44
|
-
5.4 `draft/review-draft` 是 registry 外的可变 working file。提交、拒绝、批准、冻结、失败等语义决定使用新 artifact ID 登记为不可变 revision;后续决定通过 `--supersedes` 创建新 revision
|
|
43
|
+
5.4 `draft/review-draft` 是 registry 外的可变 working file。提交、拒绝、批准、冻结、失败等语义决定使用新 artifact ID 登记为不可变 revision;后续决定通过 `--supersedes` 创建新 revision,不得原地改写。`artifact prune` 默认零写入,只有显式 `--apply` 才能删除 anchor 覆盖的 artifact shard 并写 retention receipt;其模式是 `retained-history`,不得声称重审已删除字节。
|
|
45
44
|
6. 状态脚本失败时必须停止并修复输入、revision 冲突或脚本问题,不得手工修改受控文件绕过失败。
|
|
46
45
|
7. 每次状态变更前运行 `inspect` 获取当前 revision;每次节点交接、版本收尾、生产审批、部署和发布归档前运行 `verify`。
|
|
47
46
|
8. 读取 `.workflow/standards/index.yaml`,只加载适用于当前任务且状态为 `approved` 的规范。
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Codebase Documentation Contract
|
|
2
|
+
|
|
3
|
+
This contract defines the project-owned documentation that lives in the independent code repository. It is a writing and validation contract, not a second workflow state store.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
code/
|
|
9
|
+
├─ AGENTS.md
|
|
10
|
+
├─ CODEBASE_GUIDE.md
|
|
11
|
+
└─ docs/
|
|
12
|
+
└─ CODEBASE_INDEX.md
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
- `CODEBASE_GUIDE.md` is the human-readable handbook for repository maintainers and contributors.
|
|
16
|
+
- `AGENTS.md` is a short agent entrypoint. It contains only high-priority rules and conditional pointers into the handbook and index.
|
|
17
|
+
- `docs/CODEBASE_INDEX.md` is the human-readable navigation map for directories, modules, entrypoints, tests, dependencies, risks, and maintenance ownership.
|
|
18
|
+
|
|
19
|
+
The first release uses Markdown as the source of truth. A YAML or database projection is out of scope until a real consumer and synchronization contract exist.
|
|
20
|
+
|
|
21
|
+
## Authority
|
|
22
|
+
|
|
23
|
+
The project workflow repository remains authoritative for approved architecture, standards, formal state, task scope, Gates, and release identity. Code-repository documentation explains how to apply those decisions while working in source. When the handbook conflicts with an approved workflow artifact, stop relying on the conflicting section, report the conflict, and update the handbook through the owning workflow node.
|
|
24
|
+
|
|
25
|
+
The environment is authoritative for facts it already expresses precisely, such as package scripts, compiler options, CI jobs, and directory names. The handbook should capture rationale, conventions, risks, and entrypoints that the environment cannot express reliably; it should link to rather than duplicate long configuration files.
|
|
26
|
+
|
|
27
|
+
## Audience and language
|
|
28
|
+
|
|
29
|
+
Write for a repository maintainer first. Use plain Simplified Chinese for explanatory prose and preserve technical identifiers, paths, commands, schemas, and protocol values exactly. A maintainer should be able to answer these questions without reading source code first:
|
|
30
|
+
|
|
31
|
+
1. What is this project and where does execution start?
|
|
32
|
+
2. How do I install, run, test, debug, review, and release it?
|
|
33
|
+
3. Which layers and modules may depend on each other?
|
|
34
|
+
4. Which paths are high risk, generated, externally maintained, or not directly editable?
|
|
35
|
+
5. Which tests and evidence are required after a change?
|
|
36
|
+
6. Who maintains this document and when must it be updated?
|
|
37
|
+
|
|
38
|
+
## Guide sections
|
|
39
|
+
|
|
40
|
+
`CODEBASE_GUIDE.md` must contain, or explicitly link to, these sections:
|
|
41
|
+
|
|
42
|
+
1. project overview and ownership;
|
|
43
|
+
2. quick start and verified commands;
|
|
44
|
+
3. repository map and runtime entrypoints;
|
|
45
|
+
4. layering and dependency direction;
|
|
46
|
+
5. naming, testing, error, logging, configuration, security, and migration conventions;
|
|
47
|
+
6. change workflow and verification expectations;
|
|
48
|
+
7. risks, generated files, protected paths, and rollback notes;
|
|
49
|
+
8. documentation ownership, freshness, approval references, and update triggers.
|
|
50
|
+
|
|
51
|
+
## Index fields
|
|
52
|
+
|
|
53
|
+
Every index row describes a directory or a key file relative to the code-repository root. Use these columns when applicable:
|
|
54
|
+
|
|
55
|
+
| Field | Meaning |
|
|
56
|
+
| --- | --- |
|
|
57
|
+
| `path` | Relative path; never an absolute path or a path containing `..`. |
|
|
58
|
+
| `purpose` | Why the directory or file exists. |
|
|
59
|
+
| `entrypoints` | Main executable, route, public API, or command entrypoints. |
|
|
60
|
+
| `tests` | Relevant native test paths or commands. |
|
|
61
|
+
| `dependencies` | Important allowed dependencies or consumers. |
|
|
62
|
+
| `risk` | `low`, `medium`, or `high`, with a short reason for `high`. |
|
|
63
|
+
| `generated` | Whether a command regenerates the content. |
|
|
64
|
+
| `owner` | Team or role responsible for keeping the entry accurate. |
|
|
65
|
+
| `source_commit` | Code commit the entry was checked against. |
|
|
66
|
+
| `last_reviewed` | ISO date of the latest human or validator review. |
|
|
67
|
+
| `status` | `observed`, `approved`, or `stale`. |
|
|
68
|
+
| `references` | Architecture, standards, task, test, or operational references. |
|
|
69
|
+
|
|
70
|
+
Directory-level rows are the default. Use file-level rows for entrypoints, cross-layer adapters, persistence/authentication/deployment configuration, generated boundaries, and high-risk modules. The index is not required to enumerate every ordinary source file.
|
|
71
|
+
|
|
72
|
+
## Freshness and safety
|
|
73
|
+
|
|
74
|
+
- `observed` means discovered by Bootstrap or a tool and not yet approved by a maintainer.
|
|
75
|
+
- `approved` means reviewed against the current code and the relevant approved architecture/standards.
|
|
76
|
+
- `stale` means the recorded `source_commit` or referenced path may no longer describe the code.
|
|
77
|
+
- A missing, stale, conflicting, or path-invalid entry must be reported before code modification relies on it.
|
|
78
|
+
- Never put credentials, private keys, production data, or large source excerpts in these files.
|
|
79
|
+
- `init` and `upgrade` must preserve existing code-repository documentation. Any creation or revision must be explicit, reviewable, and attributable to the owning workflow task.
|
|
80
|
+
|
|
81
|
+
## Writing quality
|
|
82
|
+
|
|
83
|
+
Prefer short paragraphs, tables, links, and concrete examples. Put the answer before the background. Keep one rule in one authoritative location. Link to formal workflow artifacts instead of copying their full contents. Every procedural section should end with a checkable command, file, review, or evidence criterion.
|
|
84
|
+
|
|
85
|
+
## Completion checklist
|
|
86
|
+
|
|
87
|
+
- A maintainer can find the runtime entrypoint, test entrypoint, and high-risk paths within one screen of navigation.
|
|
88
|
+
- Every high-risk index row names its tests, owner, and update trigger.
|
|
89
|
+
- Commands are verified from repository configuration or a recorded validation run.
|
|
90
|
+
- All paths resolve inside the code repository and all status/commit metadata is current.
|
|
91
|
+
- Conflicts with workflow architecture or standards are explicitly linked and not silently resolved in prose.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Communication Confirmation Contract
|
|
2
|
+
|
|
3
|
+
This contract records structured user decisions without storing a conversation transcript. It is a traceability index, not a second product, architecture, standards, task, or formal-state authority.
|
|
4
|
+
|
|
5
|
+
## Placement and authority
|
|
6
|
+
|
|
7
|
+
Store a mutable draft and its later immutable revisions under the current workflow repository's version-scoped node directory:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
.workflow/iterations/<iteration-id>/<node-id>/confirmation-summary.yaml
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The summary may point to product, architecture, standards, task, Gate, or release artifacts, but those owning artifacts remain authoritative. A `confirmed` record is incomplete until its `authority_refs` points to the owning artifact or explicitly records the handoff that will create it.
|
|
14
|
+
|
|
15
|
+
Do not store full chat transcripts, credentials, production data, or model reasoning. Preserve only the question, recommendation, decision, rationale, evidence references, impact, and next action needed to resume safely.
|
|
16
|
+
|
|
17
|
+
## Knowledge categories
|
|
18
|
+
|
|
19
|
+
Allowed `category` values are:
|
|
20
|
+
|
|
21
|
+
- `observed_fact`: source, configuration, Git, test, or runtime fact found by the Agent;
|
|
22
|
+
- `business_fact`, `business_decision`, `domain_term`, `business_constraint`;
|
|
23
|
+
- `architecture_decision`;
|
|
24
|
+
- `standard_decision`;
|
|
25
|
+
- `risk`, `assumption`, `open_question`;
|
|
26
|
+
- `execution_fact`, `execution_decision`.
|
|
27
|
+
|
|
28
|
+
Facts require `evidence_refs`. User decisions require `actor`, `decision`, and `confirmed_at`; an Agent recommendation is never approval. `domain_term` records must point to the Product Manual Business Glossary or a superseding product artifact. `architecture_decision` records must point to an architecture baseline, decision record, or architecture Gate.
|
|
29
|
+
|
|
30
|
+
## Confirmation statuses
|
|
31
|
+
|
|
32
|
+
`proposed` is waiting for a decision. `confirmed` and `rejected` close a decision. `deferred` remains unresolved and must retain a responsible owner and next action. `superseded` is historical and must point to the replacement through `supersedes` or `superseded_by`.
|
|
33
|
+
|
|
34
|
+
## Decision tree and frontier
|
|
35
|
+
|
|
36
|
+
Each record has a stable `confirmation_id`, a `question_id`, a `frontier_round`, and optional `depends_on` decision IDs. The current frontier consists only of `proposed` records whose dependencies are closed by `confirmed`, `rejected`, or a valid superseding record. A dependency cycle, unknown dependency, or proposed record with unresolved dependencies is invalid rather than silently skipped.
|
|
37
|
+
|
|
38
|
+
The default interaction policy is one user decision per round. Multiple questions may be presented together only when they are independent, low-risk, and the summary explicitly records the grouping rationale.
|
|
39
|
+
|
|
40
|
+
## Shared understanding
|
|
41
|
+
|
|
42
|
+
Set `shared_understanding: true` only after the current frontier is empty and the user has confirmed the summary. `deferred` and `open_question` records may remain, but each must identify an owner and an idempotent `next_action`. A node must not perform an action that depends on an unresolved decision.
|
|
43
|
+
|
|
44
|
+
## Wait and mutation boundary
|
|
45
|
+
|
|
46
|
+
When `next_action_owner` is `user` or `external`, the task remains a zero-mutation wait state. Recovery reports the exact recorded question or wait condition; it does not activate tasks, mutate formal state, register artifacts, or change Git. After the required input arrives, the controlled task CLI transfers ownership to `agent` with a new idempotent next action.
|
|
47
|
+
|
|
48
|
+
## Superseding and provenance
|
|
49
|
+
|
|
50
|
+
Never edit a confirmed record in place. A correction creates a new record with `supersedes`, retains the previous checksum/reference, and routes affected artifacts stale or back to their owning node. Every summary revision should retain `summary_id`, `version`, `source_revision`, `owner`, and `updated_at`.
|
|
51
|
+
|
|
52
|
+
See `assets/communication-template/confirmation-examples.yaml` for a maintainer-readable two-round example: a confirmed product decision opens an architecture frontier, and shared understanding is recorded only after both decisions have authority references.
|
|
@@ -12,7 +12,7 @@ Use `.workflow/tools/state/state.mjs` as the only writer for:
|
|
|
12
12
|
|
|
13
13
|
Use `.agents/skills/ai-delivery-checkpoint-task/scripts/task-state.mjs` as the only writer for runtime task snapshots, checkpoints, recovery state, and version archives. Hooks may append their own redacted lifecycle records but may not infer task, artifact, Gate, node, candidate, release, or deployment completion.
|
|
14
14
|
|
|
15
|
-
Use the packaged top-level `ai-delivery
|
|
15
|
+
Use the packaged top-level `ai-delivery repair` command as the only writer for `.workflow/control/repairs/transactions/`. Repair is a checksum-chained forward transaction that records a human actor, reason, RCA evidence, and recovery evidence without rewriting immutable history.
|
|
16
16
|
|
|
17
17
|
Do not edit controlled files directly, including after a command error. Inspect, repair the cause, and rerun with the newly observed revision.
|
|
18
18
|
|
|
@@ -33,9 +33,6 @@ node .workflow/tools/state/state.mjs snapshot references --iteration-id <iterati
|
|
|
33
33
|
node .workflow/tools/state/state.mjs rebuild
|
|
34
34
|
node .workflow/tools/state/state.mjs artifact register --expected-revision <revision> --id <artifact-id> --artifact-type <type> --path <.workflow/path> --node <node-id> --status submitted --version <version> --producer-skill <skill>
|
|
35
35
|
node .workflow/tools/state/state.mjs artifact register --expected-revision <revision> --id <new-id> --path <.workflow/path> --node <node-id> --status <semantic-status> --supersedes <old-id>
|
|
36
|
-
node .workflow/tools/state/state.mjs artifact status --expected-revision <revision> --id <artifact-id> --status <status> --evidence <reference>
|
|
37
|
-
node .workflow/tools/state/state.mjs artifact compact
|
|
38
|
-
node .workflow/tools/state/state.mjs artifact compact --apply
|
|
39
36
|
node .workflow/tools/state/state.mjs artifact prune
|
|
40
37
|
node .workflow/tools/state/state.mjs artifact prune --apply
|
|
41
38
|
node .workflow/tools/state/state.mjs scope freeze --expected-scope-revision <revision> --iteration-id <iteration-id> --manifest-id <manifest-id> --slice <slice-id> --requirement <requirement-id> --acceptance <acceptance-id> --required-task <node-id>:<task-id> --required-artifact <node-id>:<artifact-id> --approved-by <actor-id> --reason <text>
|
|
@@ -52,29 +49,23 @@ node .workflow/tools/state/state.mjs gate decide --expected-scope-revision <revi
|
|
|
52
49
|
|
|
53
50
|
Repeat `--evidence` for multiple evidence IDs. Use `iteration-started` only for development and `release-started` only after explicit user release intent. Other events are `node-started`, `node-completed`, `node-blocked`, `node-unblocked`, `candidate-selected`, `release-selected`, `version-closed`, and `release-archived`.
|
|
54
51
|
|
|
55
|
-
`workflow-state.yaml` schema 2 owns independent `development_state` and `release_state` objects. Each has its own scope ID, revision, node collections, Gate collections, node attempts, and selected identities. Use the owning scope revision for workflow optimistic concurrency. The top-level revision
|
|
52
|
+
`workflow-state.yaml` schema 2 owns independent `development_state` and `release_state` objects. Each has its own scope ID, revision, node collections, Gate collections, node attempts, and selected identities. Use the owning scope revision for workflow optimistic concurrency. The top-level revision is the serialized audit-stream revision; mutations use the owning scope revision. A release may advance while later cumulative development is active; neither scope resets the other.
|
|
56
53
|
|
|
57
|
-
`version-closed` requires completed `06-version-closeout` and a registered `release-ready` artifact from that completed node; it is the only writer of `latest_line_version_id`. `release-archived` requires completed `R10-release-archive`, a registered `released` artifact from that node, and `--production-version-id`; it is the only writer of `production_version_id` and `production_release_id`. These identities live in the audited `workflow-state.yaml`; descriptive
|
|
54
|
+
`version-closed` requires completed `06-version-closeout` and a registered `release-ready` artifact from that completed node; it is the only writer of `latest_line_version_id`. `release-archived` requires completed `R10-release-archive`, a registered `released` artifact from that node, and `--production-version-id`; it is the only writer of `production_version_id` and `production_release_id`. These identities live in the audited `workflow-state.yaml`; descriptive fields in `project.yaml` are not authoritative.
|
|
58
55
|
|
|
59
|
-
##
|
|
56
|
+
## Producer And Release Contracts
|
|
60
57
|
|
|
61
|
-
The installed `development-seven-node
|
|
62
|
-
|
|
63
|
-
`UX-LF` is a retired Gate contract. New `gate request` and `gate decide` writes fail before mutation, while historical decisions and event shards remain readable and verifiable. Package upgrade previews pending `UX-LF` requests in open scopes and applies `contract retire` as a forward `gate-contract-retired` transaction executed only by `system:package-upgrade`. The transaction removes pending requests without adding a Gate decision and appends checksummed `contract_retirement_receipts`; closed iterations, archives, prior decisions, and prior event bytes are never rewritten.
|
|
64
|
-
|
|
65
|
-
Independent release work continues to use `R00-release-request` through `R10-release-archive`. Older production nodes `12-release-preparation` through `16-version-archive` are accepted only when registering or reading historical artifacts; transition and Gate commands reject them as read-only. Use artifact statuses `release-ready` for a closed unpublished version and `included-in-release` when a specific release has consumed that immutable version manifest.
|
|
58
|
+
The installed producer graph is `development-seven-node`: `00-bootstrap -> 01-product-shaping -> 02-solution-design -> 03-delivery-readiness -> 04-implementation -> 05-candidate-assurance -> 06-version-closeout`. Product Shaping owns `GATE-A` and `GATE-B`; Solution Design owns `UX-VS` and `UX-UI`. Independent release work uses `R00-release-request` through `R10-release-archive`. Use artifact statuses `release-ready` for a closed unpublished version and `included-in-release` when a specific release has consumed that immutable version manifest.
|
|
66
59
|
|
|
67
60
|
## Artifact Lifecycle And Retention
|
|
68
61
|
|
|
69
|
-
`draft` and `review-draft` are mutable working-file statuses and must not be registered. Bootstrap observations, planning inputs, prototypes, and other working drafts remain discoverable through their owning checksummed pointers or manifests until a semantic decision is made. Register only immutable semantic revisions such as `submitted`, `rejected`, `approved`, `frozen`, or `failed`. A later decision or content change creates a new file and artifact ID with `--supersedes`; it never changes a formal revision in place. Supersession is derived from the successor's relation while every predecessor field remains unchanged.
|
|
62
|
+
`draft` and `review-draft` are mutable working-file statuses and must not be registered. Bootstrap observations, planning inputs, prototypes, and other working drafts remain discoverable through their owning checksummed pointers or manifests until a semantic decision is made. Register only immutable semantic revisions such as `submitted`, `rejected`, `approved`, `frozen`, or `failed`. A later decision or content change creates a new file and artifact ID with `--supersedes`; it never changes a formal revision in place. Supersession is derived from the successor's relation while every predecessor field remains unchanged.
|
|
70
63
|
|
|
71
64
|
`artifact prune` uses the latest trusted history anchor as its retention boundary. The default command is a byte-for-byte zero-write dry-run that lists eligible `artifact-registry` shards. Only `--apply` removes shards at or before the anchored artifact revision. Apply writes one checksummed receipt under `.workflow/control/retention/artifact-registry/<anchor-id>.yaml`, retains the JSONL boundary and every post-anchor shard, and rolls staged shards back if the receipt cannot be committed. After pruning, `verify --history` reports `retained-history` and verifies the trusted anchor plus retained suffix; it must not claim that deleted pre-anchor shards were re-audited. `rebuild` starts from the latest trusted snapshots and replays only the retained suffix.
|
|
72
65
|
|
|
73
|
-
`artifact compact` is separate from retention pruning. The packaged `ai-delivery compact <project> --dry-run` route is byte-for-byte zero-write and reports the latest trusted anchor, legacy full-snapshot revision coverage, a path-and-bytes history-root digest, loose bytes, archive bytes, and expected net freed bytes. Apply packages only anchored legacy `after_value` shards into `.workflow/control/archives/history/artifact-registry/<anchor-id>.json.gz`; its checksummed manifest binds the archive, exact source entries, coverage, anchor, and registry checksum. The CLI validates the written bundle, every original entry, and a full replay before moving loose shards. Any validation failure retains all loose history. After success, `verify --history` reports `compacted-history`, validates and replays the archive, then verifies the anchored suffix. New delta records continue from the anchor's record checksum when the loose directory is empty.
|
|
74
|
-
|
|
75
66
|
## Frozen Scope And Derived Node State
|
|
76
67
|
|
|
77
|
-
Delivery Readiness freezes the approved Slice, requirement, acceptance, required-task, and required-artifact sets with `scope freeze`. The first freeze sets `scope_contract_version: 1`; every manifest revision is append-only, SHA-256 checksummed, and explicitly approved. After freeze, `scope amend` is the only scope-change path: it must name the current manifest through `--supersedes`, carry a new manifest ID, and record `--approved-by` plus `--reason`.
|
|
68
|
+
Delivery Readiness freezes the approved Slice, requirement, acceptance, required-task, and required-artifact sets with `scope freeze`. The first freeze sets `scope_contract_version: 1`; every manifest revision is append-only, SHA-256 checksummed, and explicitly approved. After freeze, `scope amend` is the only scope-change path: it must name the current manifest through `--supersedes`, carry a new manifest ID, and record `--approved-by` plus `--reason`.
|
|
78
69
|
|
|
79
70
|
`scope warn` records an exceeded Slice budget for `logical-tasks`, `active-hours`, `wall-clock-hours`, or `blocking-repair-rounds`. Its result is always `action: warn-only` and `reslice_performed: false`; it neither changes the frozen manifest nor automatically replans, reslices, or changes acceptance. A human may separately approve a `scope amend` when a real scope change is intended.
|
|
80
71
|
|
|
@@ -91,19 +82,19 @@ In the seven-node model, `04-implementation` must select an immutable candidate
|
|
|
91
82
|
5. Request and decide every required Gate with explicit actor, rationale, and registered evidence.
|
|
92
83
|
6. After Delivery Readiness, freeze the approved manifest with `scope freeze`; use only `scope amend` for a human-approved scope change and `scope warn` for a non-mutating budget warning. Read `inspect.derived_node_states` before transition.
|
|
93
84
|
7. Transition the node only after graph prerequisites are satisfied by current-scope completion or successful registered baseline evidence, completion evidence has an allowed success status, mandatory Gates for the current node attempt pass, and no Gate remains pending. Governed nodes must be `ready-to-complete`; the command writes their completion receipt.
|
|
94
|
-
8. Run routine `verify`. At ordinary task safe points, run `snapshot create --reason configured-interval`; it is a no-op until `project.yaml.formal_state_snapshot_interval` events have accumulated. At version closeout, create a version-boundary anchor. Use `verify --history --since-anchor` for the post-anchor chain. Use `verify --history` for full loose history,
|
|
85
|
+
8. Run routine `verify`. At ordinary task safe points, run `snapshot create --reason configured-interval`; it is a no-op until `project.yaml.formal_state_snapshot_interval` events have accumulated. At version closeout, create a version-boundary anchor. Use `verify --history --since-anchor` for the post-anchor chain. Use `verify --history` for full loose history, or `retained-history` when a retention receipt remains.
|
|
95
86
|
9. Checkpoint or finish the runtime task with the resulting IDs and revisions.
|
|
96
87
|
|
|
97
88
|
Artifact mutations use `--expected-revision`; workflow mutations use `--expected-scope-revision`. Independent development and release commands that were prepared from the same inspection may wait for the current formal transaction and then both commit, because each compares only its owning aggregate. Two writers of the same aggregate fail closed on its revision conflict. Never combine the two revision options. A conflict means another writer won that aggregate; inspect and reconcile before choosing a new command.
|
|
98
89
|
|
|
99
90
|
## Integrity
|
|
100
91
|
|
|
101
|
-
The CLI uses one shared formal-state lock, recoverable transactional replacement, SHA-256 artifact checksums, checksummed authoritative event shards, and append-style JSONL audit events. The shared commit section prevents concurrent streams from overwriting each other's audit append; mutation writers wait up to 30 seconds for an identifiable active writer and then re-read and compare their own aggregate. Artifact and workflow mutations use the same schema 2 delta contract: every record carries a transaction ID, idempotency key, before/after stream revisions, only the affected aggregate operations, the previous record checksum, the resulting view checksum, and its own record checksum. A transition or Gate that consumes registered evidence appends a separate relation to the registry's top-level `handoffs` collection without changing any artifact revision, and commits the workflow and artifact deltas under one transaction ID; either both streams commit or both roll back. The artifact delta carries only the new handoff relation rather than the complete relation history. Scope start commits
|
|
92
|
+
The CLI uses one shared formal-state lock, recoverable transactional replacement, SHA-256 artifact checksums, checksummed authoritative event shards, and append-style JSONL audit events. The shared commit section prevents concurrent streams from overwriting each other's audit append; mutation writers wait up to 30 seconds for an identifiable active writer and then re-read and compare their own aggregate. Artifact and workflow mutations use the same schema 2 delta contract: every record carries a transaction ID, idempotency key, before/after stream revisions, only the affected aggregate operations, the previous record checksum, the resulting view checksum, and its own record checksum. A transition or Gate that consumes registered evidence appends a separate relation to the registry's top-level `handoffs` collection without changing any artifact revision, and commits the workflow and artifact deltas under one transaction ID; either both streams commit or both roll back. The artifact delta carries only the new handoff relation rather than the complete relation history. Scope start commits the project identity in the same journal as the workflow shard, workflow view, and JSONL index. All targets are durably staged before a prepared journal is written. A caught failure rolls the whole semantic action back; after process interruption, read commands fail closed and the next locked mutation or `rebuild` rolls back a prepared journal or validates and cleans a committed journal.
|
|
102
93
|
|
|
103
|
-
Trusted formal-state snapshots live under `.workflow/control/snapshots/formal-state/<anchor-id>/`. Each anchor keeps exact workflow and registry views plus their checksums, stream revisions, record-chain heads, and the JSONL byte/event boundary; `latest.yaml` points to the current trusted anchor. The first anchor requires a successful full-history audit. Later anchors validate only the suffix from the previous trusted anchor before advancing the pointer. Routine `verify` validates the anchor and current invariants, then reads only the JSONL suffix
|
|
94
|
+
Trusted formal-state snapshots live under `.workflow/control/snapshots/formal-state/<anchor-id>/`. Each anchor keeps exact workflow and registry views plus their checksums, stream revisions, record-chain heads, and the JSONL byte/event boundary; `latest.yaml` points to the current trusted anchor. The first anchor requires a successful full-history audit. Later anchors validate only the suffix from the previous trusted anchor before advancing the pointer. Routine `verify` validates the anchor and current invariants, then reads only the JSONL suffix. `verify --history --since-anchor` also reads and replays only post-anchor shards. After retention pruning, `verify --history` verifies the trusted anchor and retained suffix and reports `retained-history`.
|
|
104
95
|
|
|
105
96
|
`snapshot references` is the single trusted projection used by `archive-version`. It validates the latest pointer, anchor, exact snapshots, target scope manifest, and selected immutable candidate under the formal read lock, then returns relative JSON Pointer references and checksums for scope, candidate, every Gate decision, and the history anchor. An optional requested candidate ID is only a consistency assertion and must equal the candidate selected in the anchored workflow state. Missing or mismatched formal evidence fails before task archive files are written; task-state code must not reimplement anchor validation or emit nullable formal references.
|
|
106
97
|
|
|
107
98
|
Formal approval is never inferred. A Gate decision requires an explicit actor, rationale, and registered evidence. A Hook event, chat message, file timestamp, UI state, or successful command alone is not approval.
|
|
108
99
|
|
|
109
|
-
Version completion never implies release intent. Registering a `release-ready` artifact or completing `06-version-closeout`
|
|
100
|
+
Version completion never implies release intent. Registering a `release-ready` artifact or completing `06-version-closeout` must not create an R-node transition. `R00-release-request` requires successful evidence registered on R00 with `artifact_type: release-request`. Mandatory active Gate IDs are `GATE-A`, `GATE-B`, `UX-VS`, `UX-UI`, and `PRODUCTION-APPROVAL`. Only a genuinely non-visual experience scope may use `not-required` for an active UX Gate; the decision must retain its experience evidence and add successful product-terminal evidence from `01-product-shaping` whose artifact type contains `terminal` (the canonical type is `product-terminal-scope`). Gate A, Gate B, and production approval require `approved`.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Product Impact Assessment Contract
|
|
2
|
+
|
|
3
|
+
`product-impact-assessment.yaml` is the shared design-stage receipt for any finding that may change an approved product baseline. It is an impact record, not a product decision. Product intent, scope, terminology, priority, risk acceptance, and terminal selection remain owned by `01-product-shaping`.
|
|
4
|
+
|
|
5
|
+
## When to create one
|
|
6
|
+
|
|
7
|
+
Create one before continuing `02-solution-design` when design discovers any of the following:
|
|
8
|
+
|
|
9
|
+
- a Prototype adjustment changes user-visible behavior, acceptance, or a terminal;
|
|
10
|
+
- a new logical terminal, Page, Review Scene, or channel is needed;
|
|
11
|
+
- a quality, security, privacy, compliance, availability, performance, or cost requirement changes product tradeoffs;
|
|
12
|
+
- an architecture constraint changes a goal, business rule, scope, priority, risk acceptance, or terminology;
|
|
13
|
+
- a user confirmation is needed to choose between materially different product outcomes.
|
|
14
|
+
|
|
15
|
+
Use `no-impact` only when the evidence proves that approved product behavior, scope, terminals, terminology, acceptance, and non-functional requirements are unchanged.
|
|
16
|
+
|
|
17
|
+
## Controlled values
|
|
18
|
+
|
|
19
|
+
`decision` is one of:
|
|
20
|
+
|
|
21
|
+
- `no-impact`: design may continue after recording evidence;
|
|
22
|
+
- `architecture-only`: only implementation structure changes and approved product behavior is unchanged;
|
|
23
|
+
- `product-update-required`: product must create and approve a successor baseline;
|
|
24
|
+
- `clarification-required`: a user decision is needed before classification can close.
|
|
25
|
+
|
|
26
|
+
`status` is `draft`, `awaiting-product`, `resolved`, `invalid`, or `superseded`. A resolved `no-impact` or `architecture-only` assessment has `status: resolved`; `product-update-required` and `clarification-required` remain `awaiting-product` until a valid product reconciliation receipt is linked.
|
|
27
|
+
|
|
28
|
+
## Required fields
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
artifact_id: PRODUCT-IMPACT-ASSESSMENT-0001
|
|
32
|
+
artifact_type: product-impact-assessment
|
|
33
|
+
version: 1
|
|
34
|
+
iteration_id: ITER-0001
|
|
35
|
+
status: draft
|
|
36
|
+
producer_skill: ai-delivery-design-architecture
|
|
37
|
+
source_node: 02-solution-design
|
|
38
|
+
input_artifacts: []
|
|
39
|
+
product_baseline:
|
|
40
|
+
id: PRODUCT-BASELINE-0001
|
|
41
|
+
version: 1
|
|
42
|
+
checksum: SHA256
|
|
43
|
+
decision: clarification-required
|
|
44
|
+
trigger:
|
|
45
|
+
kind: prototype-adjustment
|
|
46
|
+
summary: "Describe the observed change"
|
|
47
|
+
affected_product_assets:
|
|
48
|
+
terminals: []
|
|
49
|
+
features: []
|
|
50
|
+
stories: []
|
|
51
|
+
acceptance_criteria: []
|
|
52
|
+
non_functional_requirements: []
|
|
53
|
+
business_terms: []
|
|
54
|
+
affected_design_assets:
|
|
55
|
+
experience_changes: []
|
|
56
|
+
prototype_pages: []
|
|
57
|
+
review_scenes: []
|
|
58
|
+
architecture_decisions: []
|
|
59
|
+
quality_budgets: []
|
|
60
|
+
confirmation:
|
|
61
|
+
questions: []
|
|
62
|
+
summary_ref: .workflow/communication/confirmation-summary.yaml
|
|
63
|
+
return:
|
|
64
|
+
required: true
|
|
65
|
+
node: 01-product-shaping
|
|
66
|
+
mode: prototype-reconciliation
|
|
67
|
+
reason: "Explain why product ownership is required"
|
|
68
|
+
rebaselines_required: []
|
|
69
|
+
stale_artifacts: []
|
|
70
|
+
product_reconciliation_ref: null
|
|
71
|
+
evidence: []
|
|
72
|
+
blocking_issues: []
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Every listed asset uses a stable ID. Every input and evidence item pins a version and checksum when one exists. `return.node` is `01-product-shaping` for `product-update-required` and `clarification-required`; it is the owning design phase for a closed `no-impact` or `architecture-only` result.
|
|
76
|
+
|
|
77
|
+
## Closure and propagation
|
|
78
|
+
|
|
79
|
+
1. The producing design skill writes the assessment and checkpoints it before asking a user question or changing downstream artifacts.
|
|
80
|
+
2. `product-update-required` or `clarification-required` blocks the current design handoff. Product owns the question and writes `product-prototype-reconciliation.yaml` plus a new approved product baseline when needed.
|
|
81
|
+
3. A successor product baseline supersedes the input baseline. Affected architecture, experience, planning, test, and delivery artifacts become `stale` until revalidated against the successor checksum.
|
|
82
|
+
4. `architecture-only` may continue only when the assessment explicitly proves no product asset changed and any major architecture decision has its own approval.
|
|
83
|
+
5. `no-impact` and `architecture-only` do not authorize editing a frozen Prototype or approved product baseline.
|
|
84
|
+
|
|
85
|
+
## Compatibility
|
|
86
|
+
|
|
87
|
+
The existing `prototype-impact-assessment.yaml` remains a Prototype-local evidence record. Its `assessments`, review checksums, and adjustment log are consumed as `input_artifacts` or `affected_design_assets`; it must be wrapped by this contract before a cross-node return or final handoff. The old `decision: changes-required` maps to `product-update-required` only when an affected product asset is listed; otherwise it maps to `architecture-only` or `clarification-required` after review.
|
|
@@ -10,7 +10,7 @@ Formal state schema 2 separates `development_state` from `release_state`. The tw
|
|
|
10
10
|
|
|
11
11
|
`00-bootstrap -> 01-product-shaping(GATE-A -> GATE-B) -> 02-solution-design(UX-VS -> UX-UI) -> 03-delivery-readiness -> 04-implementation -> 05-candidate-assurance -> 06-version-closeout -> release-ready`
|
|
12
12
|
|
|
13
|
-
This is the installed `development-seven-node` producer route. New producer tasks, artifacts, and requested formal transitions use these node IDs.
|
|
13
|
+
This is the installed `development-seven-node` producer route. New producer tasks, artifacts, and requested formal transitions use these node IDs. Release nodes `R00-release-request` through `R10-release-archive` remain writable.
|
|
14
14
|
|
|
15
15
|
Within `03-delivery-readiness`, platform preparation may start after the initial architecture baseline and must join planning and test design before scope freeze. Within `05-candidate-assurance`, change review and candidate verification bind to the same immutable candidate. Closeout creates an immutable version-ready Tag, advances `line/<product-id>`, archives closed version tasks, and stops. It never changes `main` or starts a release.
|
|
16
16
|
|
|
@@ -27,5 +27,3 @@ Only explicit user release intent may create R00. The user selects a cumulative
|
|
|
27
27
|
Retain discovery Gate A, product Gate B, major architecture decisions, prototype tool selection, mandatory human `UX-VS`/`UX-UI`, standard governance, and exact-package production approval. Product reconciliation after all prototype candidates must be `valid/aligned`; intermediate handoffs use downstream contract validation.
|
|
28
28
|
|
|
29
29
|
Advance only from immutable referenced inputs. Mark dependents stale after upstream change. Preserve failed candidates, releases, Tags, and deployment records. Treat image rollback as deployment state, never Git state. On restart reconcile workspace, Git, artifacts, and external systems; never automatically replay production actions.
|
|
30
|
-
|
|
31
|
-
Legacy nodes `12-release-preparation` through `16-version-archive` remain readable only for historical audit compatibility and are not used for new work.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { readConfirmationSummary } from "../../../lib/communication-confirmation.mjs";
|
|
3
|
+
|
|
4
|
+
const [command, file] = process.argv.slice(2);
|
|
5
|
+
if (!command || !file || !["validate", "frontier"].includes(command)) {
|
|
6
|
+
console.error("Usage: confirmation-state.mjs <validate|frontier> <confirmation-summary.yaml>");
|
|
7
|
+
process.exit(2);
|
|
8
|
+
}
|
|
9
|
+
try {
|
|
10
|
+
const result = readConfirmationSummary(file);
|
|
11
|
+
const payload = {
|
|
12
|
+
summary_checksum: result.checksum,
|
|
13
|
+
valid: result.validation.valid,
|
|
14
|
+
errors: result.validation.errors,
|
|
15
|
+
warnings: result.validation.warnings,
|
|
16
|
+
frontier: result.validation.frontier,
|
|
17
|
+
blocked_proposals: result.validation.blocked_proposals,
|
|
18
|
+
};
|
|
19
|
+
process.stdout.write(`${JSON.stringify(command === "frontier" ? {
|
|
20
|
+
summary_checksum: payload.summary_checksum,
|
|
21
|
+
valid: payload.valid,
|
|
22
|
+
errors: payload.errors,
|
|
23
|
+
frontier: payload.frontier,
|
|
24
|
+
blocked_proposals: payload.blocked_proposals,
|
|
25
|
+
} : payload, null, 2)}\n`);
|
|
26
|
+
process.exit(result.validation.valid ? 0 : 1);
|
|
27
|
+
} catch (error) {
|
|
28
|
+
console.error(error.message);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
@@ -18,7 +18,7 @@ Coordinate `R00` through `R10`. Never infer release intent from completed versio
|
|
|
18
18
|
## Route Release Nodes
|
|
19
19
|
|
|
20
20
|
1. `R01-version-selection`: invoke `$ai-delivery-assemble-release` to calculate and freeze the version selection, including the R00 `main` snapshot and exactly one target `version-ready` Tag.
|
|
21
|
-
2. `R02-release-eligibility`: require continuous lineage, immutable tags, eligible artifacts, and the unchanged R00 main snapshot. For incremental release the snapshot must precede the target Tag; for same-version redeploy the target Tag must already be reachable from the snapshot. Also require every adjacent code and workflow ancestry edge, available images, compatible migrations/configuration, and no stale candidate.
|
|
21
|
+
2. `R02-release-eligibility`: require continuous lineage, immutable tags, eligible artifacts, and the unchanged R00 main snapshot. For incremental release the snapshot must precede the target Tag; for same-version redeploy the target Tag must already be reachable from the snapshot. Also require every adjacent code and workflow ancestry edge, available images, compatible migrations/configuration, a resolved or superseded product impact assessment, and no stale candidate.
|
|
22
22
|
3. `R03-material-aggregation`: aggregate checksummed requirements, architecture, prototypes, code, images, configuration, migrations, tests, risks, operations, and rollback materials.
|
|
23
23
|
4. `R04-release-candidate`: invoke `$ai-delivery-manage-git`'s `scripts/release-git.mjs create-candidate` with `--release-id`, `--release-branch`, `--expected-main`, one `--source-tag`, its exact `--source-commit`, `--receipt`, and `--apply`. It creates `release/<release-id>-<slug>` from that snapshot. It merges the Tag with `--no-ff` for incremental release; for same-version redeploy when the Tag is already in the snapshot, it freezes that snapshot as the no-new-merge candidate. A moved `main` invalidates this release ID's candidate instead of changing its base.
|
|
24
24
|
5. `R05-release-verification`: invoke `$ai-delivery-verify-candidate` with `scope: release`, bound to the exact candidate merge commit. Any release-fix creates a new candidate and repeats affected verification.
|
|
@@ -31,3 +31,5 @@ Coordinate `R00` through `R10`. Never infer release intent from completed versio
|
|
|
31
31
|
Run routine formal `verify` at every handoff and reserve `verify --history` for R10 or an explicit history audit. Preserve failed releases and evidence. Stop instead of replaying a production action after recovery.
|
|
32
32
|
|
|
33
33
|
Read [release-workflow-contract.md](references/release-workflow-contract.md) and use the request and selection assets.
|
|
34
|
+
|
|
35
|
+
Validate the confirmation summary and require an explicit release decision linked to the release artifact. Proposed, deferred, or superseded records cannot authorize release; ambiguity returns to its owning node and leaves the release waiting.
|
|
@@ -23,7 +23,7 @@ This Skill owns the planning task phases inside `03-delivery-readiness` and conv
|
|
|
23
23
|
|
|
24
24
|
## Preflight
|
|
25
25
|
|
|
26
|
-
Read approved product, final architecture, and experience baselines; exact `ui-handoff.yaml`; aligned `product-prototype-reconciliation.yaml`; experience/requirement change sets; interaction, visual, component, and page-component contracts; the exact confirmed Prototype revision and checksum; its source and review-bundle checksums; the normalized terminal, Page, Review Scene, trigger-condition, route, and UI Mapping catalogs; and the accepted architecture receipt; current backlog; production state; applicable standards; and
|
|
26
|
+
Read approved product, final architecture, and experience baselines; exact `ui-handoff.yaml`; aligned `product-prototype-reconciliation.yaml`; experience/requirement change sets; interaction, visual, component, and page-component contracts; the exact confirmed Prototype revision and checksum; its source and review-bundle checksums; the normalized terminal, Page, Review Scene, trigger-condition, route, and UI Mapping catalogs; and the accepted architecture receipt; current backlog; production state; applicable standards; unresolved risks; and the code repository handbook/index entries for affected paths. Require `development_readiness: ready-for-development` and reject stale changes, missing or conflicting references, non-passing decisions, or identity/checksum mismatches. Never infer a relationship from a file name or catalog order. Distinguish product priority from technical execution order.
|
|
27
27
|
|
|
28
28
|
## Workflow
|
|
29
29
|
|
|
@@ -54,9 +54,14 @@ Read approved product, final architecture, and experience baselines; exact `ui-h
|
|
|
54
54
|
- `slice-experience-change-traceability.csv` showing which added/modified/retired experience changes enter each slice;
|
|
55
55
|
- replanning rules and current plan baseline.
|
|
56
56
|
- a draft `scope-manifest.yaml` whose approved contents are frozen through `scope freeze`; later `scope amend` revisions are append-only and budget `scope warn` records never mutate it.
|
|
57
|
+
- handbook/index readiness receipt recording the consulted `source_commit`, path/command/test validation, maintainer owner, and whether affected documentation needs an approved update.
|
|
57
58
|
|
|
58
59
|
Do not output component-level technical tasks. The development orchestrator derives those just in time from a selected slice and the latest architecture.
|
|
59
60
|
|
|
61
|
+
## Confirmation Boundary
|
|
62
|
+
|
|
63
|
+
Read the current confirmation summary before proposing scope. Agent-verifiable facts require evidence; only product-owner scope choices and risk acceptance become user questions. Append each answer, recompute the frontier, and keep unresolved business decisions out of `scope freeze`.
|
|
64
|
+
|
|
60
65
|
Read [planning-contract.md](references/planning-contract.md) and use `assets/planning-template/` for a new iteration.
|
|
61
66
|
|
|
62
67
|
## Handoff
|
|
@@ -23,7 +23,7 @@ This Skill contributes a parallel task stream inside `03-delivery-readiness`; it
|
|
|
23
23
|
|
|
24
24
|
## Preflight
|
|
25
25
|
|
|
26
|
-
Read initial and final architecture as available, deployment topology, stack manifest, quality targets, security standards, current environment baselines, and
|
|
26
|
+
Read initial and final architecture as available, deployment topology, stack manifest, quality targets, security standards, current environment baselines, iteration scope, and the current confirmation summary. Treat cloud, paid-service, privacy, and hard-to-reverse infrastructure changes as major architecture decisions. Agent-investigated platform facts require evidence; user choices about cost, risk, privacy, or irreversible infrastructure require a frontier confirmation and the architecture/approval artifact that owns the decision.
|
|
27
27
|
|
|
28
28
|
## Workflow
|
|
29
29
|
|
|
@@ -46,3 +46,5 @@ Read [release-contract.md](references/release-contract.md) and use `assets/relea
|
|
|
46
46
|
## Handoff
|
|
47
47
|
|
|
48
48
|
Return exactly one immutable prepared release package to `$ai-delivery-orchestrate-release`. Human production approval occurs independently at `R07-production-approval`.
|
|
49
|
+
|
|
50
|
+
Read the closeout confirmation summary and require an explicit, current release intent. Version completion or candidate pass never authorizes publication or external side effects.
|
|
@@ -11,8 +11,6 @@ release_branch: ""
|
|
|
11
11
|
release_candidate_commit: ""
|
|
12
12
|
release_candidate_tag: ""
|
|
13
13
|
candidate_receipt_ref: ""
|
|
14
|
-
commit_sha: "" # Alias of release_candidate_commit for existing consumers.
|
|
15
|
-
tag: "" # Alias of release_candidate_tag for existing consumers.
|
|
16
14
|
package_hash: ""
|
|
17
15
|
artifact_digests: []
|
|
18
16
|
configuration_baseline: ""
|
|
@@ -23,7 +23,7 @@ Use `04-implementation` for pre-merge package review phases. Use `05-candidate-a
|
|
|
23
23
|
|
|
24
24
|
## Preflight
|
|
25
25
|
|
|
26
|
-
Read the work package, diff, approved source artifacts, standards versions, architecture constraints, TDD evidence, test results, allowed modification scope, exact UI handoff and `product-prototype-reconciliation.yaml` checksums, Prototype revision and UI Mapping checksums, task-to-experience-change actions, and terminal/Page/Review Scene/prototype-element/UI component/frontend-source/acceptance mappings for UI-bearing work. Reject missing or conflicting references and never infer relationships from file names or row order. Re-run relevant checks when evidence is absent or stale.
|
|
26
|
+
Read the work package, diff, approved source artifacts, standards versions, architecture constraints, TDD evidence, test results, allowed modification scope, codebase handbook/index read receipt, exact UI handoff and `product-prototype-reconciliation.yaml` checksums, Prototype revision and UI Mapping checksums, task-to-experience-change actions, and terminal/Page/Review Scene/prototype-element/UI component/frontend-source/acceptance mappings for UI-bearing work. Reject missing or conflicting references and never infer relationships from file names or row order. Re-run relevant checks when evidence is absent or stale. Confirm structural changes have a matching index update or an explicit, justified no-change assessment.
|
|
27
27
|
|
|
28
28
|
## Two-Phase Review Protocol
|
|
29
29
|
|
|
@@ -48,3 +48,5 @@ Report findings first, ordered by severity, with tight file and line references.
|
|
|
48
48
|
Do not use `pass` when required checks did not run. Do not repair findings yourself; return the approved change set to the work-package executor and wait for concentrated rereview evidence.
|
|
49
49
|
|
|
50
50
|
Read [review-contract.md](references/review-contract.md).
|
|
51
|
+
|
|
52
|
+
Review findings and confirmation records are separate evidence. If a finding requires user acceptance, an exception, or a product/architecture decision, append a proposed record and stop at its owning node; chat cannot close a Gate or expand allowed scope.
|