create-agdf 0.6.9 → 0.7.1

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.
@@ -27,6 +27,20 @@ Use this compact output shape when no formal gate artefact is required:
27
27
 
28
28
  Do not add a separate `Quality outlook` line for pure Quick Tasks unless the task became a relevant run.
29
29
 
30
+ ### Verified Change
31
+
32
+ `verified_change` is a compact, fail-closed path for a bounded user-visible change with one canonical owner and deterministic proof. It is neither a prose exception nor a new user approval gate.
33
+
34
+ After `Approval: UR`, Brownfield Review may select `verified_change` only when a durable `VERIFIED_CHANGE.md` record can prove all of the following before implementation:
35
+
36
+ 1. exactly one repository-relative canonical owner and bounded source/derived paths;
37
+ 2. no gate, permission, security, persistence, architecture, external API, CLI or release behavior impact;
38
+ 3. deterministic propagation when derived paths exist, plus at least one deterministic validation command;
39
+ 4. tracked and untracked worktree baseline paths captured before eligibility, with no candidate path already dirty; and
40
+ 5. an explicit `structured_slice` or `structured_delivery` escalation target.
41
+
42
+ The record is the compact eligibility, execution and mini-closeout artefact. A missing, failed, unknown or ambiguous field/check must fail closed: mark the record `escalated` and continue at its declared structured target. Unrelated paths already dirty at baseline remain isolated; newly introduced unlisted paths invalidate the compact path. An executed record requires passing validation evidence and, where applicable, passing propagation evidence.
43
+
30
44
  ### Non-Normative Trivial Change Boundary
31
45
 
32
46
  A `quick_task` whose entire diff stays fully outside all of the following paths may close using only
@@ -68,10 +82,10 @@ the full existing ceremony unchanged:
68
82
  When a run needs an operational status view, use the Run Status Card as a compact projection of existing control state.
69
83
  It must not introduce a second gate model or override `gate-check`, `delivery-map`, QA, OR, or user approvals.
70
84
 
71
- - `mode`: `quick_task | structured_delivery | unknown`
85
+ - `mode`: `quick_task | verified_change | structured_delivery | unknown`
72
86
  - `status`: `open | blocked | pass | warn | revise | block | in_progress`
73
87
  - `current_gate`: current user gate or internal step
74
- - `mode_slice_decision`: `undecided | quick_task | structured_slice | structured_delivery | block`
88
+ - `mode_slice_decision`: `undecided | quick_task | verified_change | structured_slice | structured_delivery | block`
75
89
  - `allowed_now`: outputs or actions currently permitted
76
90
  - `forbidden_now`: outputs or actions currently forbidden
77
91
  - `blocking_condition`: current blocker or `none`
@@ -232,7 +246,8 @@ section or any other existing line.
232
246
  ## Gate Rules
233
247
 
234
248
  - User gates: `UR -> PRD -> SD -> TP -> QA -> UAT`
235
- - Internal mandatory steps: `Brownfield Review -> Mode/Slice Decision -> Brownfield Analysis -> CD+Tests -> CR -> OR`
249
+ - Internal mandatory steps: `Brownfield Review -> Mode/Slice Decision -> Verified Change Execution | Brownfield Analysis -> CD+Tests -> CR -> OR`
250
+ - On the approved-TP path, `CD+Tests` and `CR` are satisfied only by `done`; `not_applicable` may satisfy Brownfield Review or Brownfield Analysis, but it must not bypass implementation/test evidence or mandatory Code Review.
236
251
  - Exact approval formula: `Approval: <GateName>`
237
252
  - Legacy alias: `Freigabe: <GateName>` may be accepted when reviewing older German runs, but all new outputs must use `Approval: <GateName>`.
238
253
  - Implicit consent is not approval. Phrases such as "ok", "go ahead", "do it", "approved", "continue", "leg los" or "looks good" are work intent, not gate approval.
@@ -263,7 +278,7 @@ It is the sizing and routing step that decides how much later gate discipline is
263
278
  Its output is limited to:
264
279
 
265
280
  - workstream or follow-up-slice classification
266
- - `Mode/Slice Decision`: `quick_task | structured_slice | structured_delivery | block`
281
+ - `Mode/Slice Decision`: `quick_task | verified_change | structured_slice | structured_delivery | block`
267
282
  - affected existing owners, source-of-truth artefacts, contracts, policies, runtime paths or tests
268
283
  - reuse-before-create risks and parallel-structure risks
269
284
  - open questions that PRD or SD must resolve
@@ -272,6 +287,7 @@ Its output is limited to:
272
287
  Mode/Slice Decision rules:
273
288
 
274
289
  - `quick_task`: use only when Brownfield Review shows a narrow local change, no new product semantics beyond the approved UR, no architecture/policy/persistence/contract expansion, and evidence is sufficient to proceed with a small implementation plus relevant checks.
290
+ - `verified_change`: use only when the compact record can prove one canonical owner, bounded clean-at-baseline paths, no prohibited impact, deterministic propagation/validation and a structured escalation target. It skips later approvals only after every condition is evidenced and machine-validated.
275
291
  - `structured_slice`: use when some formal artefacts are needed, but they can stay intentionally small and scoped to the approved slice.
276
292
  - `structured_delivery`: use when the change has broad product, architecture, runtime, policy, persistence, release or cross-owner impact.
277
293
  - `block`: use when ownership, SoT, impact, evidence or product direction is not clear enough to choose a safe path.
@@ -286,14 +302,22 @@ This table is the canonical transition model. Skills may reference it, but must
286
302
  |---|---|---|---|---|
287
303
  | No approved UR | `UR` | clarify user need, formulate and persist UR, request `Approval: UR` | PRD, SD, TP, Brownfield Analysis, implementation, QA, release | `Approval: UR` |
288
304
  | `UR` approved and UR artefact persisted or linked, Brownfield Review missing | `Brownfield Review` | classify workstream, existing owners, SoT, reuse risks, change size and PRD/SD open questions; mark review done or not_applicable | PRD, SD, TP, implementation, QA, release | none |
289
- | Brownfield Review done or not_applicable, Mode/Slice Decision missing or incomplete | `Mode/Slice Decision` | decide `quick_task`, `structured_slice`, `structured_delivery` or `block`; record scope reason, evidence and required next gate depth | PRD, SD, TP, implementation, QA, release | none |
305
+ | Brownfield Review done or not_applicable, Mode/Slice Decision missing or incomplete | `Mode/Slice Decision` | decide `quick_task`, `verified_change`, `structured_slice`, `structured_delivery` or `block`; record scope reason, evidence and required next gate depth | PRD, SD, TP, implementation, QA, release | none |
290
306
  | Mode/Slice Decision is `quick_task` | `Quick Task Execution` | implement only the narrow approved UR scope, run relevant checks, record evidence and OR-lite when the run is relevant | broad PRD/SD/TP by ritual, scope expansion, QA or release claims without evidence | none |
307
+ | Mode/Slice Decision is `verified_change`, record missing/draft/invalid | `Verified Change Execution` | create or repair compact record, capture baseline and prove eligibility with doctor/gate-check | implementation, QA, UAT, release | none |
308
+ | Verified Change record is `eligible` | `Verified Change Execution` | implement only declared paths, run declared propagation/validation, record mini-closeout | unlisted paths, prohibited impacts, QA/UAT/release claims | none |
309
+ | Verified Change record is `executed` | `OR` | use mini-closeout and offer delivery closeout when requested | PRD/SD/TP/QA/UAT by ritual; automatic VCS actions | none |
310
+ | Verified Change record is `escalated` | `PRD` | draft the PRD for declared `structured_slice` or `structured_delivery` escalation target | implementation through Verified Change | `Approval: PRD` |
291
311
  | Mode/Slice Decision is `structured_slice` or `structured_delivery`, PRD missing or draft | `PRD` | draft/refine PRD at the smallest justified depth, define scope, acceptance criteria and non-goals, persist/link PRD, request `Approval: PRD` | SD, TP, implementation-preparation Brownfield Analysis, implementation, QA, release | `Approval: PRD` |
292
312
  | `PRD` approved and PRD artefact persisted or linked, SD missing or draft | `SD` | draft/refine Solution Design, ownership and architecture, persist/link SD, request `Approval: SD` | TP, implementation, QA, release | `Approval: SD` |
293
313
  | `SD` approved and SD artefact persisted or linked, TP missing or draft | `TP` | draft/refine Task/Test Plan, task IDs, evidence plan, persist/link TP, request `Approval: TP` | implementation, QA, release | `Approval: TP` |
294
314
  | `TP` approved and TP artefact persisted or linked, Brownfield Analysis missing | `Brownfield Analysis` | run Brownfield Analysis for approved TP scope | implementation, QA, release | none |
295
315
  | Brownfield Analysis passed for approved TP | `CD+Tests` | implement approved TP tasks and run tests | QA pass, UAT, release | none |
316
+ | `CD+Tests` done for approved TP, CR missing | `CR` | run mandatory Code Review and resolve blocking findings | QA pass, UAT, release | none |
317
+ | `CR` done, QA not approved | `QA` | run QA gate, persist/refine QA report, request `Approval: QA` | UAT, release | `Approval: QA` |
296
318
  | `QA` approved but QA report missing or not pass | `QA` | persist/link QA report with `pass` decision or revise/block evidence | UAT, release | none |
319
+ | QA approved and QA report is `pass` or `passed`, UAT not approved | `UAT` | request `Approval: UAT`, prepare non-operative delivery summary | release and automatic VCS actions | `Approval: UAT` |
320
+ | UAT approved | `OR` | produce OR or delivery closeout; prepare VCS handoff only when requested | automatic commit, push, PR or release | none |
297
321
 
298
322
  ## Brownfield Modes
299
323
 
@@ -23,6 +23,11 @@ you *MUST* honor the following **GENERIC TENETS**:
23
23
  and tooling maintenance when no new product meaning, user capability,
24
24
  architecture, policy or persistence decision is introduced.
25
25
 
26
+ Verified Change may handle a bounded user-visible canonical metadata or
27
+ copy change only after approved UR and Brownfield Review when the Runtime
28
+ Contract record proves one owner, clean-at-baseline paths, no prohibited
29
+ impact and deterministic validation; every uncertainty escalates.
30
+
26
31
  - **Fail Closed**:
27
32
  When a necessary approval, input, or quality statement is missing,
28
33
  the process must stop or demand revision.
@@ -101,11 +101,13 @@ export function parseControlState(
101
101
  const approvals = new Map();
102
102
  for (const h of ["Approvals", "Gate Checklist"])
103
103
  for (const [g, s, e] of rows(section(content, h))) {
104
- if (userGates.includes(g))
104
+ if (userGates.includes(g)) {
105
+ const status = clean(s);
105
106
  approvals.set(g, {
106
- status: clean(s) === "passed" && g === "QA" ? "approved" : clean(s),
107
+ status: g === "QA" && (status === "pass" || status === "passed") ? "approved" : status,
107
108
  evidence: e ?? "",
108
109
  });
110
+ }
109
111
  }
110
112
  const artefacts = new Map();
111
113
  for (const [t, p, s, n] of rows(section(content, "Artefacts"))) {
@@ -113,7 +115,9 @@ export function parseControlState(
113
115
  artefacts.set(t, { path: p ?? "", status: clean(s), notes: n ?? "" });
114
116
  }
115
117
  const mapRows = (h, header, fn) => dataRows(content, h, header).map(fn);
116
- const mode = "Mode / Slice Decision",
118
+ const mode = section(content, "Mode/Slice Decision").trim()
119
+ ? "Mode/Slice Decision"
120
+ : "Mode / Slice Decision",
117
121
  source = "Source And Scope State",
118
122
  memory = "Knowledge Persistence Decision";
119
123
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-agdf",
3
- "version": "0.6.9",
3
+ "version": "0.7.1",
4
4
  "description": "Bootstrap AGDF repository-local plugin files, Copilot/OpenCode instructions, skills, control files and machine-readable checks.",
5
5
  "type": "module",
6
6
  "files": [
@@ -25,9 +25,11 @@
25
25
  "test:delivery-path-search-unit": "node ./scripts/delivery-path-search-unit-test.js",
26
26
  "test:delivery-path-search-generator": "node ./scripts/delivery-path-search-generator-test.js",
27
27
  "test:control-state": "node ./scripts/control-state-test.js",
28
+ "test:verified-change": "node ./scripts/verified-change-test.js",
29
+ "test:runtime-integrity-negative": "node ./scripts/runtime-integrity-negative-test.js",
28
30
  "test:release-bootstrap": "node ./scripts/release-bootstrap-smoke-test.js",
29
31
  "test:routing": "npm run sync-package-assets && node ./scripts/test-routing.js",
30
- "smoke-test": "npm run sync-package-assets && npm run test:control-state && npm run test:delivery-path-search && npm run test:delivery-path-search-unit && npm run test:delivery-path-search-generator && node ./scripts/smoke-test.js && node ./scripts/test-routing.js",
32
+ "smoke-test": "npm run sync-package-assets && npm run test:control-state && npm run test:verified-change && npm run test:runtime-integrity-negative && npm run test:delivery-path-search && npm run test:delivery-path-search-unit && npm run test:delivery-path-search-generator && node ./scripts/smoke-test.js && node ./scripts/test-routing.js",
31
33
  "prepack": "npm run sync-package-assets"
32
34
  },
33
35
  "keywords": [