@rasensio/aidlc-content 1.14.1 → 1.14.3

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.14.1",
3
+ "version": "1.14.3",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -43,7 +43,7 @@ it:
43
43
  ```
44
44
  ---
45
45
  id: item-YYYYMMDD-short-slug
46
- title: <one line, sentence case>
46
+ title: "<one line, sentence case>"
47
47
  created_at: YYYY-MM-DD
48
48
  author: <their name, as they gave it>
49
49
  source: agent
@@ -56,6 +56,12 @@ history:
56
56
 
57
57
  Rules for those fields:
58
58
 
59
+ - `title` goes inside double quotes every time, even when it looks like it does not need
60
+ them. If the title itself contains a double quote, escape it as `\"`. This is not a style
61
+ preference: an unquoted title that starts with a backtick, `*`, `&`, `[`, `{`, `!` or `%`
62
+ is invalid YAML, and the whole item then vanishes from every list and every automation
63
+ with no error message anywhere. Quoting always is the only version of this rule that
64
+ works, because the risky characters are exactly the ones that look harmless.
59
65
  - `id` is the filename without `.md`, prefixed with `item-`. It never changes afterwards,
60
66
  even if the file is renamed or moved.
61
67
  - `created_at` and the `history` date are both today, and both match the filename's date.
@@ -40,7 +40,7 @@ One file per item: `.aidlc/roadmap/<status>/YYYYMMDD-<slug>.md`, beginning with
40
40
  ```yaml
41
41
  ---
42
42
  id: item-20260814-cost-tracking
43
- title: Cost tracking
43
+ title: "Cost tracking"
44
44
  created_at: 2026-08-14
45
45
  author: Rodrigo Asensio - rasensio@ # optional; omit rather than guess
46
46
  source: human # human | agent | import
@@ -51,6 +51,7 @@ history:
51
51
  ---
52
52
  ```
53
53
 
54
+ - **`title`** is **always** written inside double quotes, with no exceptions and no judgement call about whether this one needs them. An unquoted title is a YAML plain scalar, and a plain scalar may not begin with a reserved indicator character — so the single most natural way to name a code defect, `` title: `readItem` returns null ``, does not parse. Nothing reports it: the whole item then goes missing from browse, from promotion lookup, from the `roadmap-done` action and from `aidlc doctor`, because an item that will not parse and an item that was never written look identical. Five of this project's first 49 items were lost this way for up to ten days. Quoting unconditionally is three keystrokes and removes the class; "quote it when it looks risky" does not, because backticks do not look risky.
54
55
  - **`id`** is assigned once and never recomputed. Renaming the file or moving it between statuses leaves it unchanged. The `item-` prefix keeps it textually distinct from the filename so nothing derives one from the other.
55
56
  - **`source`** records how the item was written: `human` directly, `agent` drafted by an AI agent from someone's description, `import` migrated from an older format.
56
57
  - **`depends_on`** names other items by `id`, so a dependency survives its target moving. Build order is derived from this graph when needed — there is no global `order` field, because concurrent capture from independent sessions cannot coordinate a sequence.