@seanyao/roll 3.606.3 → 3.607.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seanyao/roll",
3
- "version": "3.606.3",
3
+ "version": "3.607.1",
4
4
  "description": "Roll \u2014 Roll out features with AI agents",
5
5
  "packageManager": "pnpm@11.1.3",
6
6
  "scripts": {
@@ -116,7 +116,7 @@ If `roll-design` cannot produce ≥2 sub-stories (story is already irreducible),
116
116
 
117
117
  ### Step 1: Read the Story
118
118
 
119
- 1. Open `.roll/backlog.md`, find the US row, follow the link to `.roll/features/<feature>.md`
119
+ 1. Open `.roll/backlog.md`, find the US row, follow the link to `.roll/features/<epic>/<story>/spec.md`
120
120
  2. Read the full AC / Files / Dependencies section
121
121
  3. If a plan doc (`<feature>-plan.md`) exists, read it for context
122
122
 
@@ -233,7 +233,7 @@ Wait for the user's response before editing files. If the user does not object w
233
233
 
234
234
  - Use `$roll-design` to split vague request into INVEST-compliant User Stories
235
235
  - Insert US into `.roll/backlog.md` under the relevant Epic > Feature group
236
- - If a new `.roll/features/<feature>.md` is needed, create it
236
+ - If a new story folder is needed, create `.roll/features/<epic>/<story>/spec.md` (with `roll idea` or manually)
237
237
 
238
238
  After creation, switch to **Story mode** and execute the first US immediately.
239
239
 
@@ -359,7 +359,7 @@ When any signal appears, **do not stop — flag it**:
359
359
  | REFACTOR-001 | {one-line plain-language description} | 📋 Todo |
360
360
  ```
361
361
 
362
- 描述写法:参见 AGENTS.md "Backlog descriptions" 规则。说清楚"什么需要改"以及"不改会怎样",技术细节写在 `.roll/features/autonomous-evolution/refactor-log.md`。
362
+ 描述写法:参见 AGENTS.md "Backlog descriptions" 规则。说清楚"什么需要改"以及"不改会怎样",技术细节写在 `.roll/features/<epic>/refactor-log.md`。
363
363
 
364
364
  **refactor-log.md entry format:**
365
365
 
@@ -647,13 +647,13 @@ Both locations must be updated — neither can be skipped:
647
647
 
648
648
 
649
649
  ```markdown
650
- | [US-{ID}](.roll/features/<feature>.md#us-{id}) | {Title} | ✅ Done · [evidence](.roll/verification/US-{ID}/latest/report.html) |
650
+ | [US-{ID}](.roll/features/<epic>/US-{ID}/spec.md) | {Title} | ✅ Done · [evidence](.roll/features/<epic>/US-{ID}/delivery/latest/report.html) |
651
651
  ```
652
652
 
653
653
  Change the Status from `📋 Todo` or `🔨 In Progress` (whichever the row currently shows) to `✅ Done`. When invoked by `roll-loop`, the row will already be `🔨 In Progress` — that is the expected starting state, and the transition is the same Edit operation.
654
654
  For Fly mode: first append an index row under the appropriate Epic > Feature group, then mark it done.
655
655
 
656
- **② Update `.roll/features/<feature>.md` US section:**
656
+ **② Update `.roll/features/<epic>/<story>/spec.md`:**
657
657
 
658
658
  ```markdown
659
659
  ## US-{ID} {Story Title} ✅
@@ -102,32 +102,40 @@ Bug Fix 信号:
102
102
 
103
103
  ## Workspace Configuration
104
104
 
105
- Document structure (two-layer separation):
105
+ Document structure (story-first layout, US-META-005):
106
106
 
107
107
  ```
108
- .roll/backlog.md # US index page (status + one-liner + link)
108
+ .roll/backlog.md # story index (status + one-liner)
109
109
  .roll/features/
110
- <feature>.md # US details (AC / Files / Dependencies)
111
- <feature>-plan.md # Design document (why / how)
112
- .roll/domain/ # DDD domain model (greenfield / cross-feature)
113
- context-map.md # Bounded Contexts + 关系图
114
- ubiquitous-language.md # 统一语言词汇表
115
- <context>-model.md # 每个 Context 的 Tactical Model
110
+ <epic>/ # epic folder
111
+ <feature>.md # feature design doc (optional, multi-story overview)
112
+ <feature>-plan.md # design plan (optional)
113
+ <story>/ # individual story folder (one per card)
114
+ spec.md # story definition (AC, depends-on, etc.)
115
+ index.html # auto-generated story portal
116
+ delivery/ # attest evidence (auto-generated on Done)
117
+ .roll/domain/ # DDD domain model
118
+ context-map.md
119
+ ubiquitous-language.md
116
120
  ```
117
121
 
118
122
  **Important rules:**
119
- 1. Plan files go in `.roll/features/<feature>-plan.md` (**no longer using** `docs/plans/`)
120
- 2. US details go in the corresponding `.roll/features/<feature>.md`
121
- 3. **FIX / IDEA detail files use ID-prefixed filenames**: `.roll/features/<epic>/FIX-097.md`, not `.roll/features/<epic>/some-descriptive-slug.md`. Reason: a single FIX is one card, not a long-lived feature; the ID is the most stable handle, descriptive slugs date quickly and break links. US can keep feature-slug naming (US lives inside a multi-Story feature file). Quick lookup: `ls .roll/features/<epic>/FIX-*.md` finds all bugs in that area without grepping content.
122
- 4. .roll/backlog.md only contains index rows (one row per US), **do not write** AC / Files / Notes
123
- 5. Domain model files go in `.roll/domain/` create on first greenfield design, update incrementally
124
- 6. **Do not** write to `~/.kimi/`, `~/.kimi-code/`, or any global config directory
125
-
126
- **File path resolution order:**
127
- 1. Determine Feature ownership (based on the requirement domain: compiler / ingest / qa / ...)
128
- 2. Feature file: `.roll/features/<feature>.md` (create if it doesn't exist)
129
- 3. Plan file: `.roll/features/<feature>-plan.md` (create if it doesn't exist)
130
- 4. .roll/backlog.md index row goes under the corresponding Epic > Feature group
123
+ 1. **Every story card gets its own folder**: `features/<epic>/<story>/`
124
+ 2. **spec.md is the single definition file** — contains full AC, Files, Dependencies
125
+ 3. **FIX / IDEA / US all follow the same folder layout** `features/<epic>/FIX-097/spec.md`
126
+ 4. **Feature design docs stay at epic root** `<feature>.md` and `<feature>-plan.md` are optional, multi-story design overviews
127
+ 5. **index.html is auto-generated** by `roll idea` (skeleton) and updated by `roll attest` (delivery section)
128
+ 6. **delivery/ is auto-created** by `roll attest` on Done do not create manually
129
+ 7. .roll/backlog.md only contains index rows (one row per story), **do not write** AC / Files there
130
+ 8. Domain model files go in `.roll/domain/`
131
+ 9. **Do not** write to `~/.kimi/`, `~/.kimi-code/`, or any global config directory
132
+
133
+ **File path resolution:**
134
+ 1. Determine epic from story ID prefix (e.g., US-META-* backlog-lifecycle, FIX-* → query index.json)
135
+ 2. Create story folder: `.roll/features/<epic>/<story>/`
136
+ 3. Write spec.md: `.roll/features/<epic>/<story>/spec.md` (full AC + details)
137
+ 4. Backlog row links to: `.roll/features/<epic>/<story>/spec.md`
138
+ 5. Design / plan docs (when needed): `.roll/features/<epic>/<feature>.md` + `<feature>-plan.md`
131
139
 
132
140
  ## Non-Interactive Mode
133
141
 
@@ -633,10 +641,10 @@ Do **not** infer "approach confirmed" from the user's reaction to the comparison
633
641
  FEATURE="compiler"
634
642
 
635
643
  # 2. Write Plan document (if there is a solution design)
636
- PLAN_FILE=".roll/features/${FEATURE}-plan.md"
644
+ PLAN_FILE=".roll/features/${EPIC}/${FEATURE}-plan.md"
637
645
 
638
- # 3. Append US section in .roll/features/<feature>.md (with full AC)
639
- FEATURE_FILE=".roll/features/${FEATURE}.md"
646
+ # 3. Write story spec: .roll/features/<epic>/<story>/spec.md (full AC)
647
+ # Story specs: .roll/features/<epic>/<story>/spec.md
640
648
 
641
649
  # 4. Append index row under the corresponding Epic > Feature group in .roll/backlog.md
642
650
  # | [US-XXX](.roll/features/compiler.md#us-xxx) | One-line description | 📋 Todo |
@@ -655,7 +663,7 @@ DOMAIN_DIR=".roll/domain/"
655
663
  **.roll/backlog.md index row (only write this one line):**
656
664
 
657
665
  ```markdown
658
- | [US-{DOMAIN}-{N}](.roll/features/<feature>.md#us-{domain}-{n}) | {one-line description} | 📋 Todo |
666
+ | [US-{DOMAIN}-{N}](.roll/features/<epic>/US-{DOMAIN}-{N}/spec.md) | {one-line description} | 📋 Todo |
659
667
  ```
660
668
 
661
669
  `{one-line description}` 写法:用户能读懂的一句话,说清楚"能做什么"或"解决了什么麻烦"。不写实现细节、文件路径、函数名。细节和 AC 写在 `.roll/features/` 里。写好了可以直接当 CHANGELOG 条目用。
@@ -770,11 +778,11 @@ Each story must be:
770
778
  ### Feature Name
771
779
  | Story | Description | Status |
772
780
  |-------|-------------|--------|
773
- | [US-XXX](.roll/features/<feature>.md#us-xxx) | One-line description | 📋 Todo |
774
- | [US-YYY](.roll/features/<feature>.md#us-yyy) | One-line description | ✅ Done |
781
+ | [US-XXX](.roll/features/<epic>/<story>/spec.md#us-xxx) | One-line description | 📋 Todo |
782
+ | [US-YYY](.roll/features/<epic>/<story>/spec.md#us-yyy) | One-line description | ✅ Done |
775
783
  ```
776
784
 
777
- **Note**: .roll/backlog.md only contains index rows; full AC / Files / Dependencies go in `.roll/features/<feature>.md`.
785
+ **Note**: .roll/backlog.md only contains index rows; full AC / Files / Dependencies go in `.roll/features/<epic>/<story>/spec.md`.
778
786
 
779
787
  ---
780
788
 
@@ -20,7 +20,7 @@ Use when:
20
20
  - It does not need to be split into multiple Stories / Actions to deliver
21
21
 
22
22
  **Workflow:**
23
- 1. Read .roll/backlog.md index → Find FIX/BUG row → Follow link to `.roll/features/<feature>.md`
23
+ 1. Read .roll/backlog.md index → Find FIX/BUG row → Follow link to `.roll/features/<epic>/<story>/spec.md`
24
24
  2. Single Action (no splitting)
25
25
  3. Execute via TCR workflow
26
26
  4. Write back: update .roll/backlog.md status column + update FIX section in Feature file
@@ -419,12 +419,12 @@ Both locations must be updated — neither can be skipped:
419
419
 
420
420
 
421
421
  ```markdown
422
- | [FIX-{ID}](.roll/features/<feature>.md#fix-{id}) | {Title} | ✅ Done · [evidence](.roll/verification/FIX-{ID}/latest/report.html) |
422
+ | [FIX-{ID}](.roll/features/<epic>/FIX-{ID}/spec.md) | {Title} | ✅ Done · [evidence](.roll/features/<epic>/FIX-{ID}/delivery/latest/report.html) |
423
423
  ```
424
424
 
425
425
  Change the Status of the corresponding row from `📋 Todo` or `🔨 In Progress` (whichever the row currently shows) to `✅ Done`. When invoked by `roll-loop`, the row will already be `🔨 In Progress` — that is the expected starting state.
426
426
 
427
- **② Update `.roll/features/<feature>.md` FIX section:**
427
+ **② Update `.roll/features/<epic>/<story>/spec.md`:**
428
428
 
429
429
  ```markdown
430
430
  ## FIX-{ID} {description} ✅