@hegemonart/get-design-done 1.39.2 → 1.40.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.
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: gdd-unlock-decision
3
+ description: "Reopens a LOCKED design decision — the only escape hatch from the hard lock. Requires an explicit --approver and writes an audit entry, then moves the decision locked → reviewing (via scripts/lib/collab/review-queue.cjs). Previews the audit record before writing; never unlocks silently. Use when a locked decision genuinely must change (a later constraint invalidated it) and a reviewer has signed off."
4
+ argument-hint: "<decision-id> --approver <who> [--reason <text>] [--dry-run]"
5
+ user-invocable: true
6
+ tools: Read, Write, Bash, Grep, Glob
7
+ ---
8
+
9
+ # /gdd:unlock-decision
10
+
11
+ A `locked` decision is hard — it cannot be amended. This skill is the **only** way back, and it is
12
+ deliberately heavyweight: it requires a named approver and records an audit entry, so reopening a
13
+ locked decision is always traceable. Contract: `../../reference/multi-author-model.md`.
14
+
15
+ ## Invocation
16
+
17
+ | Command | Behavior |
18
+ |---|---|
19
+ | `/gdd:unlock-decision <id> --approver <who>` | Unlock `<id>` (locked → reviewing), recording the approver. |
20
+ | `/gdd:unlock-decision <id> --approver <who> --reason <text>` | Same, with a reason in the audit entry. |
21
+ | `/gdd:unlock-decision <id> --dry-run` | Preview the audit record + the resulting state; change nothing. |
22
+
23
+ ## Steps
24
+
25
+ 1. **Validate args.** `<decision-id>` required; `--approver` required (a non-empty name). Missing
26
+ `--approver` → print the usage + exit without changing anything.
27
+ 2. **Load the entry** from `.design/reviews/<decision-id>/state.json`. Not found → report it. Not in
28
+ `locked` state → print `unlock-decision: <id> is not locked (state: <state>); nothing to unlock.`
29
+ 3. **Preview.** Show the audit entry that will be appended (`{ action: unlock, from: locked, to:
30
+ reviewing, approver, reason }`) and the resulting state. If `--dry-run`, stop here.
31
+ 4. **Apply** via the pure helper:
32
+
33
+ ```bash
34
+ node -e '
35
+ const fs = require("fs");
36
+ const rq = require("./scripts/lib/collab/review-queue.cjs");
37
+ const p = process.argv[1], approver = process.argv[2], reason = process.argv[3] || "";
38
+ const entry = JSON.parse(fs.readFileSync(p, "utf8"));
39
+ const next = rq.unlock(entry, { approver, reason });
40
+ fs.writeFileSync(p, JSON.stringify(next, null, 2) + "\n");
41
+ console.log(JSON.stringify(next.audit[next.audit.length - 1]));
42
+ ' ".design/reviews/<id>/state.json" "<who>" "<reason>"
43
+ ```
44
+
45
+ 5. **Report** the new state + the recorded approver. The decision is now `reviewing` and amendable
46
+ again; it must be re-reviewed + re-locked to become durable.
47
+
48
+ ## Output
49
+
50
+ End with:
51
+
52
+ ```
53
+ ## UNLOCK-DECISION COMPLETE
54
+ ```
@@ -23,6 +23,24 @@ Updates the `get-design-done` plugin to the latest release (or a specific tag),
23
23
 
24
24
  > Run `/gdd:reapply-patches` if you have customized any `reference/` files to restore your modifications.
25
25
 
26
+ 7.5. **Deprecation advisory** (Phase 39.5) — load the path-migration registry and report anything that
27
+ crossed into `deprecated` or `removed` over the `[prevVersion → currentVersion]` window:
28
+
29
+ ```bash
30
+ node -e '
31
+ const fs = require("fs");
32
+ const dr = require("./scripts/lib/deprecation-registry.cjs");
33
+ const entries = dr.parseDeprecations(fs.readFileSync("reference/DEPRECATIONS.md","utf8"));
34
+ const crossed = entries.filter(e =>
35
+ dr.classify(e, currentVersion) !== "pending" &&
36
+ (prevVersion == null || dr.classify(e, prevVersion) !== dr.classify(e, currentVersion)));
37
+ console.log(JSON.stringify(crossed));
38
+ '
39
+ ```
40
+
41
+ If any entry crossed, print a `## Deprecations in this update` list (old → new + status) and point
42
+ the user at **`/gdd:migrate`** to rewrite their local references. If none crossed, say nothing.
43
+
26
44
  8. Print the new version and the changelog URL (`https://github.com/hegemonart/get-design-done/releases`).
27
45
 
28
46
  ## Output