@rasensio/aidlc-content 1.57.0 → 1.59.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/docs/index.yaml CHANGED
@@ -42,7 +42,7 @@ entries:
42
42
  title: The lifecycle
43
43
  file: lifecycle.md
44
44
  source: packages/cli/src/core
45
- commands: [init, start, continue, status, transition, gate, menu, amend, templates, spec, cross-check]
45
+ commands: [init, start, continue, status, transition, gate, menu, amend, templates, spec, cross-check, revert]
46
46
 
47
47
  - id: state-and-concurrency
48
48
  kind: topic
package/docs/lifecycle.md CHANGED
@@ -181,6 +181,23 @@ carry `(wave: <n>)` in `tasks.md`; a wave must be a run of consecutive tasks, an
181
181
  the task and warns rather than dropping it from gate coverage. The whole loop is one rule file,
182
182
  `.aidlc/resources/rules/task-agents.md`, so a session that runs its tasks itself never reads it.
183
183
 
184
+ **Undoing a task.** Each commit made for a task ends with a `Task: <instance>/T<n>` git trailer. `aidlc revert <instance> --task T3` reads those trailers on the commits since the branch left `main`, prints
185
+ the commits it would undo — newest first, marking any that also belong to another task as shared — and
186
+ asks first:
187
+
188
+ ```
189
+ Plan: undo T3 of add-export — 2 commits on feat/add-export since main, newest first:
190
+ 4f1c2ab feat: csv writer handles quotes [T3, T4] — shared: also T4
191
+ 9e0d311 feat: csv writer [T3]
192
+ Tasks reset to open in tasks.md (if done): T3, T4
193
+ ```
194
+
195
+ On a yes it adds one commit that undoes them, leaves `.aidlc/state/` as it was except those checkboxes,
196
+ and abandons cleanly if the undo conflicts with later work. A clash inside `.aidlc/state/` alone — the
197
+ next task's checkbox on the line below — is not such a conflict. `--phase implementation` undoes every task
198
+ commit at once; `--dry-run` only prints the plan; without a terminal it needs `--yes`. It works only
199
+ during implementation and never on `main`.
200
+
184
201
  ## Where the code lives
185
202
 
186
203
  - `packages/cli/src/core` — templates, scope resolution, and the gate engine.
@@ -197,6 +214,11 @@ the task and warns rather than dropping it from gate coverage. The whole loop is
197
214
  leave the corpus untouched.
198
215
  - `packages/cli/src/crosscheck` — `aidlc cross-check`, a pure comparison of one instance's three
199
216
  planning artifacts. Nothing but its own command imports it, and a test keeps it that way.
217
+ - `packages/cli/src/revert` — `aidlc revert`: reads `Task:` trailers over `main..HEAD`, builds the plan
218
+ (pure), and applies it as one commit, returning to the recorded `HEAD` on any failure. It reads
219
+ `git log -z` with NUL between fields because NUL is the one byte a commit message cannot carry; git
220
+ keeps every other control character, and a body carrying the first separators chosen forged a
221
+ commit from `main` into the plan.
200
222
  - `packages/cli/src/menu` — the interactive picker. It reads no lifecycle state by design, because
201
223
  "what should I do next?" belongs to the skill, not the menu.
202
224
  - `packages/content/templates` — the five templates, as data.
package/docs/roadmap.md CHANGED
@@ -108,7 +108,15 @@ also lists every unranked backlog item, so one sitting last is visible rather th
108
108
  **Parking from an instance** is `aidlc roadmap park <instance> --reason "<why>"`: it moves the item
109
109
  promoted to that instance into `hold/` with a `parked — ` reason. It exists for unattended mode's hard
110
110
  stops — see [Skills and platforms](skills-and-platforms.md) — where the agent works in a worktree but
111
- the item's status lives in the primary checkout.
111
+ the item's status lives in the primary checkout. `aidlc roadmap park --item <item> --reason "<why>"`
112
+ parks an open item by file name or id instead, whatever its `promoted_to` — for an item no instance
113
+ was ever linked to, such as one whose `aidlc start` failed.
114
+
115
+ **An item keeps its `promoted_to` when it is parked.** Moving it back from `hold/` to `backlog/` by
116
+ hand leaves the link set, and `aidlc start --roadmap-item` refuses an item that is already promoted.
117
+ `aidlc roadmap next` applies the same rule: it leaves such an item out of the order, warns about it,
118
+ and lists it under `skipped` in `--explain` and `--json`, naming the instance. Clear the
119
+ `promoted_to` line to make it ready again.
112
120
 
113
121
  Keep the raw idea count around a dozen. At the cap, promote or drop before capturing anything new. A
114
122
  completed instance queues **at most two** follow-up items and records the rest in its own
@@ -136,7 +144,10 @@ Each item goes through these steps:
136
144
  1. **Pick.** `aidlc roadmap next` names the next ready backlog item.
137
145
  2. **Build.** `aidlc start … --worktree --roadmap-item <item>` creates the instance in its own
138
146
  worktree, then the configured agent runs there with `AIDLC_UNATTENDED=1`. The agent follows the
139
- unattended rule and stops at the release boundary, or parks the item on a hard stop.
147
+ unattended rule and stops at the release boundary, or parks the item on a hard stop. A start that
148
+ fails parks the item with `parked — could not start: <error>` and autopilot goes straight on to
149
+ the next ready item; the parked one does not count toward `--items`. Retrying the same item every
150
+ pass is what held a whole `--all` run on one item for five hours.
140
151
  3. **PR and CI.** Autopilot pushes the branch and opens the pull request. Green checks queue it;
141
152
  a failure relaunches the agent once with the failing checks, and a second failure parks the item.
142
153
  4. **Up to date with main.** Before merging, autopilot merges `origin/main` into the branch in the
@@ -151,8 +162,8 @@ Each item goes through these steps:
151
162
  nothing is retried — a half-finished release is for a person.
152
163
 
153
164
  At most two items build at once, and never more than you asked for. Autopilot never moves anything
154
- between `inbox/`, `backlog/` and `hold/` except to park what it is building, and never edits a rank or
155
- a dependency: deciding what is agreed work stays a person's job.
165
+ between `inbox/`, `backlog/` and `hold/` except to park what it is building or could not start, and
166
+ never edits a rank or a dependency: deciding what is agreed work stays a person's job.
156
167
 
157
168
  **Setup** comes first, once per machine. A plain `aidlc init` ends by asking "Set up autopilot now?"
158
169
  (default no); `aidlc init --autopilot` skips that question, and `aidlc autopilot setup` asks the same
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rasensio/aidlc-content",
3
- "version": "1.57.0",
3
+ "version": "1.59.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -53,7 +53,7 @@ Then the source files that task touches. See **The context rule** (`.aidlc/resou
53
53
  - Infrastructure changes (provisioning, configuration)
54
54
  - Permission or access control modifications
55
55
  - Credential or secret handling
56
- 7. **Commit incrementally.** Produce working code at each step; avoid large uncommittable diffs.
56
+ 7. **Commit incrementally, one task per commit where you can.** Produce working code at each step; avoid large uncommittable diffs. End every commit made for a task with a git trailer naming it — `Task: <instance>/T<n>` on its own line in the last paragraph of the message, one line per task when a commit spans two. The trailer is what lets `aidlc revert <instance> --task T<n>` find that task's commits later and undo them in one step, after showing the plan; a commit without it is invisible to the command.
57
57
  8. **Update the knowledge graph.** After modifying code, record what changed with `aidlc knowledge add` / `relate` / `update`: new or restructured modules, decisions taken, debt introduced or paid down. Keep the graph in sync with the code you just changed.
58
58
  9. **Update state.** As implementation artifacts are produced, mark them in `phase-implementation.yaml`.
59
59