@rasensio/aidlc-content 1.19.0 → 1.21.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rasensio/aidlc-content",
3
- "version": "1.19.0",
3
+ "version": "1.21.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -167,6 +167,26 @@ When a phase needs substantial input from the user — open decisions, structure
167
167
 
168
168
  When the user shares an idea tangential to the current work, offer to record it in `.aidlc/roadmap/inbox/` (see **aidlc-roadmap**) and continue the current phase — do not derail into ideation. Capture touches no instance state, so it is safe at any point in any phase.
169
169
 
170
+ ## Amendments — changing a completed phase's artifact
171
+
172
+ A completed phase's artifact is changed **only through an amendment**, never edited in
173
+ place. The gates check that artifacts exist, not that they still agree with each other, so a
174
+ direct edit leaves the phase `complete`, the downstream artifacts describing the old
175
+ requirement, and every gate passing. That silent disagreement is the failure mode
176
+ amendments exist to prevent.
177
+
178
+ The protocol: retire the criterion in place (`- AC-<n> (retired YYYY-MM-DD, superseded by
179
+ AC-<m>): ...`), issue its replacement with a fresh ID, append an
180
+ `## Amendment <n> — YYYY-MM-DD` section carrying `Retires:` / `Issues:` / `Reopens:` /
181
+ `Reason:` bullets, then run `aidlc amend <instance>`. Start with `aidlc amend <instance>
182
+ --impact`, which is read-only and lists every task, test and artifact still citing the
183
+ retired criteria. See **aidlc-requirements** for the grammar.
184
+
185
+ Reopening a phase sets it and every phase between it and the current one back to
186
+ `in-progress`, which re-arms the gates that already exist — no new gate is involved — and
187
+ appends a `type: reopen` record so churn is legible in history. Amendments apply in order,
188
+ a second run is a stated no-op, and a completed instance is refused: its change is new work.
189
+
170
190
  ## Instance Completion and Retrospective
171
191
 
172
192
  An instance's **completion moment** is when the last applicable phase (template × scope) reaches `complete` — except when that phase is maintenance: maintenance is open-ended, so maintenance-terminal instances complete on maintenance **entry**. At the completion moment, run the **aidlc-retrospective** skill *before* any cleanup (worktree removal, claim release) and fire `on-instance-complete`. If a retro cannot run (declined, absent), completion proceeds anyway — the retro never blocks. Pending retros are tracked as markers in `<git-common-dir>/aidlc/retro-pending/`; the entry-point and continue skills pick them up.
@@ -136,3 +136,15 @@ When the instance completes, the `roadmap-done` lifecycle action moves the item
136
136
  ## Drop
137
137
 
138
138
  Move the item to `hold/` and append the `history` entry. Dropping is an explicit act — never delete or overwrite an item to get rid of it.
139
+
140
+ ## Projecting to GitHub Issues
141
+
142
+ Optional, opt-in, and inert until a `roadmap.sync` section exists in `.aidlc/config.yaml`. When a user asks how the roadmap can be visible to people who will not clone the repo, or how it can appear where their team already triages, the answer is `aidlc roadmap sync` — see `docs/roadmap.md`.
143
+
144
+ Three things to know before you offer it:
145
+
146
+ - It is a **projection, not sync**. Disk stays the source of truth; nothing is written back to disk, so no item gains a `remote:` field and no flow above changes. The link lives on the issue as a marker carrying the item `id`.
147
+ - **`inbox/` and `hold/` are not projected by default**, because an untriaged idea and a parked one are not decisions anybody has published. Do not widen that list on a user's behalf.
148
+ - **Every write needs consent.** Suggest `aidlc roadmap sync --dry-run` first, always. It prints the plan, names the target repository, and touches nothing.
149
+
150
+ `aidlc roadmap import <issue-url>` is the opposite direction, and it is one-shot: it writes one `inbox/` item with the issue linked and its executive summary left as `Not yet decided.`, which is then a normal triage. Nothing reconciles afterwards.
@@ -70,3 +70,42 @@ If requirements reference sensitive data handling, authentication flows, or acce
70
70
  ## Completion
71
71
 
72
72
  When exit criteria are met, update `phase-requirements.yaml` status to `complete` and append a transition record to `transitions.log`.
73
+
74
+ ## Amending a Completed Phase
75
+
76
+ A completed phase's artifact is changed **only through an amendment**. Editing
77
+ `requirements.md` after its phase closed leaves `phase-requirements.yaml` saying
78
+ `complete`, leaves the design and the code describing the old criterion, and leaves every
79
+ gate passing — because gates check that artifacts exist, not that they still agree with
80
+ each other. That is silent drift, and it is the most common real-world mess in any
81
+ lifecycle.
82
+
83
+ To change a criterion after its phase closed:
84
+
85
+ 1. Edit the definition bullet in place into the retired form — `- AC-<n> (retired
86
+ YYYY-MM-DD, superseded by AC-<m>): <one-line summary of what it said>` — and add the
87
+ replacement as a new criterion with a fresh ID. IDs are never renumbered or reused.
88
+ 2. Append an amendment section to `requirements.md`:
89
+
90
+ ```markdown
91
+ ## Amendment 1 — 2026-09-07, after the design review
92
+ - **Retires:** AC-4, AC-9
93
+ - **Issues:** AC-31
94
+ - **Reopens:** design
95
+ - **Reason:** the customer integration needs JSON as well as CSV
96
+ ```
97
+
98
+ Field bullets accept `Retires:`, `**Retires**:` and `**Retires:**` alike. AC lists take
99
+ whole `AC-<n>` tokens only — `AC-4..AC-6` is not a range and contributes nothing. A
100
+ wrapped bullet is still one bullet.
101
+ 3. Run `aidlc amend <instance> --impact` to see which tasks, tests and artifacts still cite
102
+ the retired criteria. The walk is advisory: it suggests phases, it does not choose them.
103
+ 4. Put the phases you actually want reopened in `Reopens:`, then run
104
+ `aidlc amend <instance>`. It reopens that phase and every phase between it and the
105
+ current one, re-arming their gates, and records a `type: reopen` entry in
106
+ `transitions.log` so the churn is visible in history rather than reading as a normal
107
+ forward pass. From testing onwards it requires `--confirm`.
108
+
109
+ Amendments append; the definition bullet's status changes. Never rewrite an amendment that
110
+ has already been applied — write the next one.
111
+
@@ -74,3 +74,10 @@ You MUST flag these explicitly in the design document and note that implementati
74
74
  ## Completion
75
75
 
76
76
  When exit criteria are met, update `phase-design.yaml` status to `complete` and append a transition record to `transitions.log`.
77
+
78
+ **Changing a completed phase's artifact.** Do it only through an amendment — append an
79
+ `## Amendment <n> — YYYY-MM-DD` section to `requirements.md` with `Retires:`, `Issues:`,
80
+ `Reopens:` and `Reason:` bullets, then run `aidlc amend <instance>` (start with `--impact`
81
+ to see what still cites the retired criteria). Editing the artifact directly leaves every
82
+ gate passing while the requirements and the code disagree.
83
+
@@ -67,3 +67,10 @@ Never store credentials, API keys, tokens, or passwords in source code or state
67
67
  ## Completion
68
68
 
69
69
  When exit criteria are met, update `phase-implementation.yaml` status to `complete` and append a transition record to `transitions.log`.
70
+
71
+ **Changing a completed phase's artifact.** Do it only through an amendment — append an
72
+ `## Amendment <n> — YYYY-MM-DD` section to `requirements.md` with `Retires:`, `Issues:`,
73
+ `Reopens:` and `Reason:` bullets, then run `aidlc amend <instance>` (start with `--impact`
74
+ to see what still cites the retired criteria). Editing the artifact directly leaves every
75
+ gate passing while the requirements and the code disagree.
76
+
@@ -85,3 +85,10 @@ You MUST describe the action, confirm it targets a safe environment, and wait fo
85
85
  ## Completion
86
86
 
87
87
  When exit criteria are met, update `phase-testing.yaml` status to `complete` and append a transition record to `transitions.log`.
88
+
89
+ **Changing a completed phase's artifact.** Do it only through an amendment — append an
90
+ `## Amendment <n> — YYYY-MM-DD` section to `requirements.md` with `Retires:`, `Issues:`,
91
+ `Reopens:` and `Reason:` bullets, then run `aidlc amend <instance>` (start with `--impact`
92
+ to see what still cites the retired criteria). Editing the artifact directly leaves every
93
+ gate passing while the requirements and the code disagree.
94
+