@seanyao/roll 2026.518.4 → 2026.519.2

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.
@@ -293,8 +293,8 @@ def _render_this_project(d: Dict[str, Any]) -> None:
293
293
  print(line)
294
294
 
295
295
  _file_row("AGENTS.md", d["project_has_agents"])
296
- _file_row("BACKLOG.md", d["project_has_backlog"])
297
- _file_row("docs/features/", d["project_features_count"] > 0,
296
+ _file_row(".roll/backlog.md", d["project_has_backlog"])
297
+ _file_row(".roll/features/", d["project_features_count"] > 0,
298
298
  f"{d['project_features_count']} feature docs")
299
299
 
300
300
  # Loop & dream launchd
@@ -329,14 +329,14 @@ def _live_data() -> Dict[str, Any]:
329
329
  "skills": _ai_skill_count(e),
330
330
  })
331
331
  templates = [(t, _template_count(t)) for t in TEMPLATES]
332
- feat_dir = Path("docs/features")
332
+ feat_dir = Path(".roll/features")
333
333
  return dict(
334
334
  conventions = _global_conventions(),
335
335
  ai_clients = ai_clients,
336
336
  templates = templates,
337
337
  skills_installed = _skills_installed(),
338
338
  project_has_agents = Path("AGENTS.md").exists(),
339
- project_has_backlog = Path("BACKLOG.md").exists(),
339
+ project_has_backlog = Path(".roll/backlog.md").exists(),
340
340
  project_features_count = sum(1 for _ in feat_dir.glob("*.md")) if feat_dir.exists() else 0,
341
341
  loop_state = _launchd_state("loop", slug),
342
342
  dream_state = _launchd_state("dream", slug),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seanyao/roll",
3
- "version": "2026.518.4",
3
+ "version": "2026.519.2",
4
4
  "description": "Roll — Roll out features with AI agents",
5
5
  "scripts": {
6
6
  "test": "bash tests/run.sh"
@@ -3,12 +3,12 @@ hidden: true
3
3
  name: roll-.changelog
4
4
  license: MIT
5
5
  allowed-tools: "Read, Edit, Write, Bash(git:*)"
6
- description: After build completion, extracts completed Stories from BACKLOG.md to generate CHANGELOG.md. Auto-triggered after successful deploy, keeping the external changelog in sync with the internal backlog.
6
+ description: After build completion, extracts completed Stories from .roll/backlog.md to generate CHANGELOG.md. Auto-triggered after successful deploy, keeping the external changelog in sync with the internal backlog.
7
7
  ---
8
8
 
9
9
  # WK Generate Changelog
10
10
 
11
- After successful Build & Deploy, extracts completed Stories from BACKLOG.md to generate a user-friendly `CHANGELOG.md`.
11
+ After successful Build & Deploy, extracts completed Stories from .roll/backlog.md to generate a user-friendly `CHANGELOG.md`.
12
12
 
13
13
  ## When Triggered
14
14
 
@@ -31,7 +31,7 @@ CHANGELOG.md exists?
31
31
  └── No → Create mode (backfill all historical completed Stories)
32
32
  ```
33
33
 
34
- ### 2. Read BACKLOG.md
34
+ ### 2. Read .roll/backlog.md
35
35
 
36
36
  ```
37
37
  Append mode:
@@ -39,7 +39,7 @@ Append mode:
39
39
 
40
40
  Create mode:
41
41
  Extract ALL Stories and Fixes with status ✅ Done.
42
- Read each Story's docs/features/<feature>.md for Completed date.
42
+ Read each Story's .roll/features/<feature>.md for Completed date.
43
43
  Group entries by completion date, reverse chronological order.
44
44
  ```
45
45
 
@@ -361,25 +361,25 @@ After successful deploy in `$roll-build` / `$roll-fix`:
361
361
  ## 8. features.md 重写模式(产品 SOT)
362
362
 
363
363
  US-DOC-008 — `scripts/release.sh` 在 changelog/release-notes 生成完后会再
364
- 调一次本 skill,请求"整体重写 `docs/features.md`"。这次调用的语义和上面
364
+ 调一次本 skill,请求"整体重写 `.roll/features.md`"。这次调用的语义和上面
365
365
  两种完全不同:**不是基于本版 Story 增量**,而是基于**项目整体当前状态**。
366
366
 
367
367
  ### 8.1 何时触发
368
368
 
369
369
  release.sh 完成 changelog/release-notes 写盘后,喂一段以
370
- `## 当前任务:重写 docs/features.md(Section 8)` 开头的 prompt。
370
+ `## 当前任务:重写 .roll/features.md(Section 8)` 开头的 prompt。
371
371
 
372
372
  ### 8.2 输入
373
373
 
374
374
  prompt 会包含:
375
- - 当前 `docs/features.md`(可能为空,可能上一版本的)
376
- - 当前 `BACKLOG.md` 全文(Epic / Feature 分组结构)
377
- - 当前 `docs/features/` 目录清单
375
+ - 当前 `.roll/features.md`(可能为空,可能上一版本的)
376
+ - 当前 `.roll/backlog.md` 全文(Epic / Feature 分组结构)
377
+ - 当前 `.roll/features/` 目录清单
378
378
  - 当前版本号
379
379
 
380
380
  ### 8.3 输出契约
381
381
 
382
- 把整个 `docs/features.md` 写出来。结构固定为三段:
382
+ 把整个 `.roll/features.md` 写出来。结构固定为三段:
383
383
 
384
384
  ```
385
385
  # Roll — Features
@@ -399,7 +399,7 @@ prompt 会包含:
399
399
  ## Features by Epic
400
400
 
401
401
  ### <Epic 名>
402
- - [<Feature 名>](docs/features/<file>.md) — 1 句话描述
402
+ - [<Feature 名>](.roll/features/<file>.md) — 1 句话描述
403
403
  - <Feature 名> — 1 句话描述(缺 deep doc 时不加链接)
404
404
 
405
405
  ### <Epic 名>
@@ -414,7 +414,7 @@ prompt 会包含:
414
414
 
415
415
  - **Catalog 必须列出 BACKLOG 中所有 `### Feature:` 出现的 Feature 名**
416
416
  (即使没有 deep doc 也要列)
417
- - Feature 名跟 `docs/features/<file>.md` 文件名一致时,加链接到该 md
417
+ - Feature 名跟 `.roll/features/<file>.md` 文件名一致时,加链接到该 md
418
418
  - 没有对应 deep doc 的 Feature,**只写 plain text 不加链接**
419
419
  - **Planning distinction(US-DOC-011)**:
420
420
  - 该 Feature 下**所有** Story 均为 `📋 Todo` → 在描述末尾追加 `*(规划中)*`
@@ -424,7 +424,7 @@ prompt 会包含:
424
424
  `_enforce_planning_markers`,即使本规则被 AI 漏掉也会自动补 `*(规划中)*`;
425
425
  规则的权威实现是 release.sh 里的纯 shell 函数,prompt 这条只是软提示
426
426
  - 描述写 1 句话 **产品视角**:用户能用它做什么,避免实现细节
427
- - **语言:单一中文**。Feature 名(如 `roll-loop` / `Cross-Agent Peer Review`)和命令、环境变量等术语保留英文原样;描述句一律中文。**不要**在条目下追加英文翻译行(早期 v517.x 双语混排版式已废弃,理由:扫读困难、维护翻倍、与 `docs/guide/en|zh/` 平行目录约定不一致;英文受众走 site 端 i18n)
427
+ - **语言:单一中文**。Feature 名(如 `roll-loop` / `Cross-Agent Peer Review`)和命令、环境变量等术语保留英文原样;描述句一律中文。**不要**在条目下追加英文翻译行(早期 v517.x 双语混排版式已废弃,理由:扫读困难、维护翻倍、与 `guide/en|zh/` 平行目录约定不一致;英文受众走 site 端 i18n)
428
428
  - 分组用 BACKLOG 的 Epic 名,原序,不重排
429
429
  - Core Highlights 从所有 Features 里挑 3-5 个最能代表产品定位的,
430
430
  描述用 bold 标 Feature 名后接说明;不照搬 catalog 文案
@@ -8,7 +8,7 @@ description: |
8
8
  (cron or GitHub Actions), not invoked by users directly. Detects dead code,
9
9
  architectural drift from domain model, pruning candidates, emerging patterns,
10
10
  doc coverage gaps, and doc staleness (文档新鲜度). Outputs REFACTOR entries
11
- to BACKLOG.md and a daily log to docs/dream/.
11
+ to .roll/backlog.md and a daily log to .roll/dream/.
12
12
  Distinct from roll-sentinel: sentinel monitors runtime behavior; dream reviews
13
13
  code structure and architectural health.
14
14
  ---
@@ -56,7 +56,7 @@ Flag: files or exports with zero references outside their own file.
56
56
 
57
57
  ### Scan 2 — Architectural Drift
58
58
 
59
- Compare current code structure against the domain model in `docs/domain/`:
59
+ Compare current code structure against the domain model in `.roll/domain/`:
60
60
 
61
61
  ```bash
62
62
  # Read context-map.md and ubiquitous-language.md if they exist
@@ -69,7 +69,7 @@ Flag: modules that import directly from a different Bounded Context without
69
69
  an Anti-Corruption Layer, or module names that have diverged from the
70
70
  Ubiquitous Language.
71
71
 
72
- **Distinction from Scan 6C**: Scan 2 flags *import boundary violations* (cross-context coupling). Scan 6C flags *missing documentation entries* (module exists but has no entry in `docs/domain/*.md`). Never double-flag — Scan 2 and Scan 6C are orthogonal checks.
72
+ **Distinction from Scan 6C**: Scan 2 flags *import boundary violations* (cross-context coupling). Scan 6C flags *missing documentation entries* (module exists but has no entry in `.roll/domain/*.md`). Never double-flag — Scan 2 and Scan 6C are orthogonal checks.
73
73
 
74
74
  ### Scan 3 — Pruning Candidates
75
75
 
@@ -106,18 +106,18 @@ Check documentation structure against the conventions in `AGENTS.md § Documenta
106
106
 
107
107
  **Check A — BACKLOG Done stories missing guide/en/ docs:**
108
108
 
109
- Scan BACKLOG.md for features with multiple ✅ Done stories. For each feature epic, check whether a corresponding `docs/guide/en/<topic>.md` exists. If a feature has ≥3 Done stories and no guide doc, flag it.
109
+ Scan .roll/backlog.md for features with multiple ✅ Done stories. For each feature epic, check whether a corresponding `guide/en/<topic>.md` exists. If a feature has ≥3 Done stories and no guide doc, flag it.
110
110
 
111
111
  **Check B — guide/en/ files missing guide/zh/ translations:**
112
112
 
113
113
  ```bash
114
- for f in docs/guide/en/*.md; do
114
+ for f in guide/en/*.md; do
115
115
  base=$(basename "$f")
116
- [ ! -f "docs/guide/zh/$base" ] && echo "missing ZH: $base"
116
+ [ ! -f "guide/zh/$base" ] && echo "missing ZH: $base"
117
117
  done
118
118
  ```
119
119
 
120
- Flag any `docs/guide/en/<topic>.md` that has no matching `docs/guide/zh/<topic>.md`, provided the EN file has existed since before the most recent git tag (i.e., at least one release cycle old).
120
+ Flag any `guide/en/<topic>.md` that has no matching `guide/zh/<topic>.md`, provided the EN file has existed since before the most recent git tag (i.e., at least one release cycle old).
121
121
 
122
122
  **Check C — stray files in docs/ root (根目录散落文件):**
123
123
 
@@ -129,9 +129,9 @@ Flag any `.md` file directly in `docs/` root (allowed subdirs: `guide/`, `domain
129
129
 
130
130
  **Check D — features.md Feature Coverage (US-DOC-009):**
131
131
 
132
- Dependency gate: skip when `docs/features.md` does not exist.
132
+ Dependency gate: skip when `.roll/features.md` does not exist.
133
133
 
134
- Parse BACKLOG.md for all `### Feature: <name>` groups that contain ≥1 ✅ Done story. Parse `docs/features.md` for Feature names. If any Feature group with Done stories is absent from `docs/features.md`, the catalog is stale — flag as REFACTOR:
134
+ Parse .roll/backlog.md for all `### Feature: <name>` groups that contain ≥1 ✅ Done story. Parse `.roll/features.md` for Feature names. If any Feature group with Done stories is absent from `.roll/features.md`, the catalog is stale — flag as REFACTOR:
135
135
 
136
136
  ```markdown
137
137
  | REFACTOR-XXX | features.md 功能目录落后于 BACKLOG,N 个已完成功能区未收录,用户无法通过产品目录发现这些功能 — flagged by dream YYYY-MM-DD | 📋 Todo |
@@ -168,14 +168,14 @@ When deployed, each finding produces a REFACTOR entry with `$roll-doc` as execut
168
168
  Flag source files whose owning doc is >30 days stale:
169
169
 
170
170
  ```bash
171
- # For each file listed in docs/features/*.md or README.md "## Files:" sections:
171
+ # For each file listed in .roll/features/*.md or README.md "## Files:" sections:
172
172
  # owner_doc_commit = git log -1 --format="%ci" -- <doc_file>
173
173
  # source_commit = git log -1 --format="%ci" -- <source_file>
174
174
  # lag_days = (source_commit - owner_doc_commit) in days
175
175
  # if lag_days > 30 AND doc contains at least one specific file path reference → flag
176
176
  ```
177
177
 
178
- The "owner doc" for a source file is the nearest `README.md` or `docs/features/*.md` that lists the file path in a `## Files:` section. Skip docs that contain only conceptual descriptions (no specific file path references) — they cannot be objectively stale.
178
+ The "owner doc" for a source file is the nearest `README.md` or `.roll/features/*.md` that lists the file path in a `## Files:` section. Skip docs that contain only conceptual descriptions (no specific file path references) — they cannot be objectively stale.
179
179
 
180
180
  #### Check B — Undocumented ENV Vars
181
181
 
@@ -204,13 +204,13 @@ This is distinct from Scan 2 (which checks *import violations*) — Scan 6C chec
204
204
  ```bash
205
205
  # Walk all non-excluded directories
206
206
  # For each dir with >= 3 non-hidden, non-.md source files:
207
- # check if any docs/domain/*.md contains the directory name
207
+ # check if any .roll/domain/*.md contains the directory name
208
208
  # if not found → flag as "existence drift"
209
209
  ```
210
210
 
211
211
  Exclusions: `node_modules/`, `.git/`, `dist/`, `build/`, `.shared/`, `docs/`, `tests/`.
212
212
 
213
- Flag directories with ≥3 source files and zero name-match in `docs/domain/*.md`.
213
+ Flag directories with ≥3 source files and zero name-match in `.roll/domain/*.md`.
214
214
 
215
215
  #### Dream Log Section
216
216
 
@@ -220,16 +220,16 @@ Add after `## 文档覆盖度` section:
220
220
  ## 文档新鲜度
221
221
  - 滞后文档:{N} 个(超过 30 天未更新但绑定了代码文件)
222
222
  - 未记录 ENV 变量:{N} 个(出现 ≥5 次但无文档)
223
- - 架构文档缺失模块:{N} 个(≥3 个源文件的目录未出现在 docs/domain/)
223
+ - 架构文档缺失模块:{N} 个(≥3 个源文件的目录未出现在 .roll/domain/)
224
224
  {发现内容列表 或 "文档新鲜度良好,无滞后或缺失项。"}
225
225
  ```
226
226
 
227
227
  ## Output
228
228
 
229
- ### REFACTOR Entry (BACKLOG.md)
229
+ ### REFACTOR Entry (.roll/backlog.md)
230
230
 
231
231
  For each finding that warrants action, append one row to the `## ♻️ Refactor`
232
- section of BACKLOG.md:
232
+ section of .roll/backlog.md:
233
233
 
234
234
  ```markdown
235
235
  | REFACTOR-XXX | {one-line description} — flagged by dream {YYYY-MM-DD} | 📋 Todo |
@@ -240,7 +240,7 @@ section of BACKLOG.md:
240
240
  **Threshold**: only flag items where the fix would meaningfully reduce
241
241
  complexity or prevent future bugs. Ignore cosmetic issues.
242
242
 
243
- ### Dream Log (docs/dream/YYYY-MM-DD.md)
243
+ ### Dream Log (.roll/dream/YYYY-MM-DD.md)
244
244
 
245
245
  Always write a log, even when no REFACTOR entries are created. Output uses
246
246
  Chinese to align with roll-brief style — easier for the morning reader to scan
@@ -283,7 +283,7 @@ without context switching:
283
283
  扫描完成后立即提交,把 dream 发现纳入 git 历史,便于晨报追溯:
284
284
 
285
285
  ```bash
286
- git add BACKLOG.md docs/dream/YYYY-MM-DD.md
286
+ git add .roll/backlog.md .roll/dream/YYYY-MM-DD.md
287
287
  # 有 REFACTOR 条目时:
288
288
  git commit -m "chore: dream scan YYYY-MM-DD — {N} REFACTOR entries"
289
289
  # 无发现时:
@@ -291,9 +291,9 @@ git commit -m "chore: dream scan YYYY-MM-DD — no findings"
291
291
  git push origin main
292
292
  ```
293
293
 
294
- - BACKLOG.md 和 dream 日志必须在**同一个 commit** 里入库,避免出现"REFACTOR 已加但日志找不到"或反过来的撕裂状态
294
+ - .roll/backlog.md 和 dream 日志必须在**同一个 commit** 里入库,避免出现"REFACTOR 已加但日志找不到"或反过来的撕裂状态
295
295
  - 写文件失败时不要执行 commit;保持工作区干净,由调度器负责重试
296
- - 仅 `BACKLOG.md` 和 `docs/dream/YYYY-MM-DD.md` 入 commit,不要顺带带入其他无关变更
296
+ - 仅 `.roll/backlog.md` 和 `.roll/dream/YYYY-MM-DD.md` 入 commit,不要顺带带入其他无关变更
297
297
 
298
298
  ## Scheduler Configuration
299
299
 
@@ -308,7 +308,7 @@ The cron entry is generated using the configured agent — no manual cron editin
308
308
 
309
309
  If the scan fails partway through:
310
310
 
311
- 1. Write partial results to `docs/dream/YYYY-MM-DD.md` with a `## 状态:部分完成` header
311
+ 1. Write partial results to `.roll/dream/YYYY-MM-DD.md` with a `## 状态:部分完成` header
312
312
  2. Do not write incomplete REFACTOR entries to BACKLOG
313
313
  3. Log the error to `~/.shared/roll/dream/error.log`
314
314
 
@@ -62,25 +62,25 @@ $roll-brief --feature auth # scoped to one feature
62
62
 
63
63
  ```bash
64
64
  # Find timestamp of last brief
65
- ls docs/briefs/ | sort | tail -1
65
+ ls .roll/briefs/ | sort | tail -1
66
66
 
67
- # Read BACKLOG.md — collect all status changes since last brief
67
+ # Read .roll/backlog.md — collect all status changes since last brief
68
68
  # Read git log — commits since last brief timestamp
69
69
  git log --since="{last_brief_timestamp}" --oneline
70
70
  ```
71
71
 
72
72
  ### Step 2 — Collect Activity
73
73
 
74
- From BACKLOG.md and git log, classify all items since last brief:
74
+ From .roll/backlog.md and git log, classify all items since last brief:
75
75
 
76
76
  - **Completed**: US-XXX ✅, FIX-XXX ✅, REFACTOR-XXX ✅
77
77
  - **In progress**: items currently 🔨
78
78
  - **Queue**: items still 📋 Todo (ordered by priority)
79
79
  - **Dream findings**: any REFACTOR entries added by roll-.dream since last brief
80
80
  - **Escalations**: any ALERT files in `~/.shared/roll/loop/` or `~/.shared/roll/dream/`
81
- - **Doc coverage**: compute from `docs/guide/en/` and `docs/guide/zh/`:
82
- - EN coverage = number of files in `docs/guide/en/`
83
- - ZH translation rate = files in `docs/guide/zh/` ÷ files in `docs/guide/en/` × 100%
81
+ - **Doc coverage**: compute from `guide/en/` and `guide/zh/`:
82
+ - EN coverage = number of files in `guide/en/`
83
+ - ZH translation rate = files in `guide/zh/` ÷ files in `guide/en/` × 100%
84
84
 
85
85
  ### Step 3 — Assess Release Readiness
86
86
 
@@ -98,8 +98,8 @@ A simple heuristic — not a gate, just a signal for the human:
98
98
 
99
99
  ### Step 4 — Write Brief
100
100
 
101
- 文件命名:`docs/briefs/YYYY-MM-DD-{NN}.md`,NN 为当日序号(01 起,零填充两位)。
102
- 计算方式:`ls docs/briefs/YYYY-MM-DD-*.md 2>/dev/null | wc -l`,+1 即为本次序号。
101
+ 文件命名:`.roll/briefs/YYYY-MM-DD-{NN}.md`,NN 为当日序号(01 起,零填充两位)。
102
+ 计算方式:`ls .roll/briefs/YYYY-MM-DD-*.md 2>/dev/null | wc -l`,+1 即为本次序号。
103
103
 
104
104
  全部用中文输出。**省略空 section**(无内容时连标题一起不输出):
105
105
 
@@ -129,7 +129,7 @@ A simple heuristic — not a gate, just a signal for the human:
129
129
 
130
130
  <!-- 仅当 roll-.dream 有新发现时输出 -->
131
131
  ## 悟见
132
- {来自 docs/dream/ 的摘要}
132
+ {来自 .roll/dream/ 的摘要}
133
133
 
134
134
  <!-- 仅当有 ESCALATE 告警时输出 -->
135
135
  ## 需人工介入
@@ -165,21 +165,21 @@ A simple heuristic — not a gate, just a signal for the human:
165
165
  写完文件后立即提交,让简报进入 git 历史,便于后续追溯与跨会话审计:
166
166
 
167
167
  ```bash
168
- git add docs/briefs/YYYY-MM-DD-NN.md
168
+ git add .roll/briefs/YYYY-MM-DD-NN.md
169
169
  git commit -m "docs: roll-brief YYYY-MM-DD-NN — {触发原因}"
170
170
  git push origin main
171
171
  ```
172
172
 
173
173
  - 触发原因来自调用上下文(Feature 完成 / 每日 / 手动 / `--feature` / `--since`),用一句话填入
174
174
  - 写文件失败时不要执行 commit;保持工作区干净,由调用方处理重试
175
- - 仅 `docs/briefs/` 下新文件入 commit,不要顺带带入其他无关变更
175
+ - 仅 `.roll/briefs/` 下新文件入 commit,不要顺带带入其他无关变更
176
176
 
177
177
  ### Step 5 — Notify
178
178
 
179
179
  写完文件后在终端或 CI 日志中打印简报路径:
180
180
 
181
181
  ```
182
- 📋 简报已生成:docs/briefs/2026-05-10-01.md
182
+ 📋 简报已生成:.roll/briefs/2026-05-10-01.md
183
183
  发布就绪:✅ 可发版
184
184
  ```
185
185
 
@@ -54,7 +54,7 @@ Activate when input is a `US-[A-Z]+-[0-9]+` identifier.
54
54
 
55
55
  ### Step 1: Read the Story
56
56
 
57
- 1. Open `BACKLOG.md`, find the US row, follow the link to `docs/features/<feature>.md`
57
+ 1. Open `.roll/backlog.md`, find the US row, follow the link to `.roll/features/<feature>.md`
58
58
  2. Read the full AC / Files / Dependencies section
59
59
  3. If a plan doc (`<feature>-plan.md`) exists, read it for context
60
60
 
@@ -160,8 +160,8 @@ Wait for the user's response before editing files. If the user does not object w
160
160
  ### Phase 2: Create US / Actions
161
161
 
162
162
  - Use `$roll-design` to split vague request into INVEST-compliant User Stories
163
- - Insert US into `BACKLOG.md` under the relevant Epic > Feature group
164
- - If a new `docs/features/<feature>.md` is needed, create it
163
+ - Insert US into `.roll/backlog.md` under the relevant Epic > Feature group
164
+ - If a new `.roll/features/<feature>.md` is needed, create it
165
165
 
166
166
  After creation, switch to **Story mode** and execute the first US immediately.
167
167
 
@@ -275,19 +275,19 @@ While implementing, watch for these signals:
275
275
  When any signal appears, **do not stop — flag it**:
276
276
 
277
277
  ```bash
278
- # 1. Append to BACKLOG.md under ## ♻️ Refactor
278
+ # 1. Append to .roll/backlog.md under ## ♻️ Refactor
279
279
  # REFACTOR-XXX | <one-line description> | 📋 Todo
280
280
 
281
- # 2. Append a brief entry to docs/features/refactor-log.md
281
+ # 2. Append a brief entry to .roll/features/refactor-log.md
282
282
  ```
283
283
 
284
- **REFACTOR entry format in BACKLOG.md:**
284
+ **REFACTOR entry format in .roll/backlog.md:**
285
285
 
286
286
  ```markdown
287
287
  | REFACTOR-001 | {one-line plain-language description} | 📋 Todo |
288
288
  ```
289
289
 
290
- 描述写法:参见 AGENTS.md "Backlog descriptions" 规则。说清楚"什么需要改"以及"不改会怎样",技术细节写在 `docs/features/refactor-log.md`。
290
+ 描述写法:参见 AGENTS.md "Backlog descriptions" 规则。说清楚"什么需要改"以及"不改会怎样",技术细节写在 `.roll/features/refactor-log.md`。
291
291
 
292
292
  **refactor-log.md entry format:**
293
293
 
@@ -504,16 +504,16 @@ Follow the repo's deployment path (Vercel / Railway / etc.) and record the deplo
504
504
 
505
505
  Both locations must be updated — neither can be skipped:
506
506
 
507
- **① Update BACKLOG.md index row (Status column):**
507
+ **① Update .roll/backlog.md index row (Status column):**
508
508
 
509
509
  ```markdown
510
- | [US-{ID}](docs/features/<feature>.md#us-{id}) | {Title} | ✅ Done |
510
+ | [US-{ID}](.roll/features/<feature>.md#us-{id}) | {Title} | ✅ Done |
511
511
  ```
512
512
 
513
513
  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.
514
514
  For Fly mode: first append an index row under the appropriate Epic > Feature group, then mark it done.
515
515
 
516
- **② Update `docs/features/<feature>.md` US section:**
516
+ **② Update `.roll/features/<feature>.md` US section:**
517
517
 
518
518
  ```markdown
519
519
  ## US-{ID} {Story Title} ✅
@@ -544,7 +544,7 @@ it in the completion commit so no separate changelog commit is created.
544
544
  $roll-.changelog
545
545
 
546
546
  # 2. Commit BACKLOG + feature doc + CHANGELOG.md together
547
- git add BACKLOG.md docs/features/ CHANGELOG.md
547
+ git add .roll/backlog.md .roll/features/ CHANGELOG.md
548
548
  git commit -m "docs: mark {US-ID} as completed"
549
549
  git push
550
550
  ```
@@ -614,7 +614,7 @@ Before creating any file or directory:
614
614
  - No "while I'm here" refactors unless in a separate TCR cycle
615
615
 
616
616
  7. **Always update BACKLOG status**
617
- - BACKLOG.md index row and `docs/features/<feature>.md` US section are both required
617
+ - .roll/backlog.md index row and `.roll/features/<feature>.md` US section are both required
618
618
  - Neither can be skipped
619
619
 
620
620
  ---
@@ -633,8 +633,8 @@ Before creating any file or directory:
633
633
  - [ ] Deployed to production
634
634
  - [ ] Online verification performed
635
635
  - [ ] **Verification Gate passed** (fresh evidence for tests, build, deploy, no regression)
636
- - [ ] **BACKLOG.md index status updated** (📋 → ✅, REQUIRED)
637
- - [ ] **`docs/features/<feature>.md` US section updated** (Completed date + [x] ACs, REQUIRED)
636
+ - [ ] **.roll/backlog.md index status updated** (📋 → ✅, REQUIRED)
637
+ - [ ] **`.roll/features/<feature>.md` US section updated** (Completed date + [x] ACs, REQUIRED)
638
638
  - [ ] **CHANGELOG.md staged and bundled** into completion commit via `$roll-.changelog` in Phase 11 (REQUIRED)
639
639
  - [ ] Summary reported to user
640
640
 
@@ -685,7 +685,7 @@ When complex state management is error-prone → consider full reset + re-initia
685
685
  roll-build → ship anything (new idea, US-ID, free-text request)
686
686
  roll-fix → fix a specific known bug (FIX-XXX / BUG-XXX)
687
687
  roll-design → plan and design before building (no code output)
688
- roll-idea → fast capture a bug or idea into BACKLOG.md
688
+ roll-idea → fast capture a bug or idea into .roll/backlog.md
689
689
  roll-.clarify → passive scope clarification for vague build requests
690
690
  ```
691
691
 
@@ -587,7 +587,7 @@ Root cause identified
587
587
  │ └── Re-mount BB → re-verify on page
588
588
 
589
589
  ├── In project source + cross-module / architectural
590
- │ └── ESCALATE: create US-XXX in BACKLOG.md
590
+ │ └── ESCALATE: create US-XXX in .roll/backlog.md
591
591
  │ ├── Suggest: $roll-build US-XXX
592
592
  │ └── Report diagnosis findings
593
593