@seanyao/roll 3.606.1 → 3.606.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/CHANGELOG.md +58 -0
- package/README.md +8 -30
- package/bin/roll +28 -3
- package/dist/roll.mjs +6333 -1538
- package/package.json +1 -1
- package/skills/roll-build/SKILL.md +53 -5
- package/skills/roll-fix/SKILL.md +56 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,63 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v3.606.3 — 2026-06-06
|
|
4
|
+
|
|
5
|
+
### 新功能
|
|
6
|
+
|
|
7
|
+
- 档案制写入端:待办与交付物同夹的布局支持,含编号到史诗的索引与垃圾回收命令(US-META-001)
|
|
8
|
+
|
|
9
|
+
### 稳定性
|
|
10
|
+
|
|
11
|
+
- 版本探针读冻结引擎的化石串:version 显示旧号、update 自检误报、升级 nag 永不消失,三症同根(FIX-202) `[loop]`
|
|
12
|
+
|
|
13
|
+
### 可见性
|
|
14
|
+
|
|
15
|
+
- 完成状态抢跑:PR 还没合并卡片就翻了完成,违反完成即已合主干的纪律(FIX-211) `[loop]`
|
|
16
|
+
- 面板对历史全瞎:周期记录缺时间戳,八次真实交付显示零,统计无从分桶(FIX-213) `[loop]`
|
|
17
|
+
- 面板对运行中的周期全盲:活性探测还读旧信号,真在干活却显示空闲零周期(FIX-203) `[loop]`
|
|
18
|
+
- (最小核) — roll loop now 改前台直跑:重入本 CLI run-once,agent 转录经 ROLL_LOOP_STREAM 实时打到当前终端(零 tmux 零弹窗零 tail);launchd 排程仍走静默 runner;buffered 用量采集不变 (#470)(US-PORT-011)
|
|
19
|
+
|
|
20
|
+
### 自动化流水线
|
|
21
|
+
|
|
22
|
+
- 终态失真:真实交付已合并完成,周期记录却写失败,失败语义被稀释(FIX-214) `[loop]`
|
|
23
|
+
- 无人值守周期自产实拍:给截屏调度器加终端通道,无图形环境时诚实跳过留痕(US-ATTEST-011)
|
|
24
|
+
- roll release v3 原生重写:版本号引导、changelog、PR 与 tag 流程提示;发版闸已在 CI(US-PORT-004)
|
|
25
|
+
- loop 读面子命令 TS 薄读取(eval、runs、story、signals);tmux 流的 monitor 与 attach 退役(US-PORT-007)
|
|
26
|
+
- dream 服务出 v3 runner(复用调度模板模式)或裁定退役;现状是断链僵尸(US-PORT-008)
|
|
27
|
+
- loop cycle cycle-20260606-050516-6852 (#477)(PR#477)
|
|
28
|
+
|
|
29
|
+
### 工程和测试
|
|
30
|
+
|
|
31
|
+
- 迁移命令嵌套仓盲区:对私仓的搬迁打到主仓上,吞错自报成功,修执行面并补嵌套形态测试(FIX-215) `[loop]`
|
|
32
|
+
- 档案迁移命令:读索引按清单搬树改名重建链,演练模式先行,可重入有测试(US-META-002a)
|
|
33
|
+
- difftest 卸 oracle:领域服务层一批对拍全部转冻结期望,测试期不再起 bash 或 python 引擎(US-PORT-009b)
|
|
34
|
+
|
|
35
|
+
### 其他
|
|
36
|
+
|
|
37
|
+
- v3 心脏首跑即瘫:skill 路径化石致 agent 盲开、改动漏回主仓、被杀不留痕、cycle 不可观测;修解析+钉题+连 .roll+信号善后+tmux 观测窗(FIX-204) `[loop]`
|
|
38
|
+
- 交付可以悄悄跳过验收报告:文本约束没牙,缺报告要在运行时留痕可审计,政策可升硬闸(FIX-207) `[loop]`
|
|
39
|
+
- 排程静默死亡:启用命令吞掉挂载失败照报成功,三小时无 tick 全靠人肉掩盖(FIX-212) `[loop]`
|
|
40
|
+
- 验收证据惯例升级:文本证据属 agent 自述可伪造,CLI 卡默认改为真实终端截屏走独立捕获通道,文本降级为补充(US-ATTEST-010)
|
|
41
|
+
- 验收口径补全:失败与阻塞有名分、敏感信息进档前遮蔽、报告生成后冒烟自检(US-ATTEST-012)
|
|
42
|
+
- 验收报告分层且自含待办全貌:卡情上下文与业务结论在前技术折叠,空章节裁剪,设计审查不改证据(US-ATTEST-013)
|
|
43
|
+
- 过程内联进报告:时间线与关键转折加折叠全转录,无人过程也可回溯(US-ATTEST-014)
|
|
44
|
+
- 执行存量迁移:演练过目后真跑,重写唯一活引用,全仓对账校验存档(US-META-002b)
|
|
45
|
+
- skills 验收文案同步新档案布局,跨仓改 roll-skills 后 bump submodule manual-only(US-META-004)
|
|
46
|
+
- changelog 生成同输入两次运行结果漂移:探针偶发失败静默切换过滤分支,17 条目消失(FIX-199) `[loop]`
|
|
47
|
+
- 观测窗可读性:裸流换三层关键节点转录,信号口径与验收报告时间线同源(US-PORT-012)
|
|
48
|
+
- roll brief TS 化:汇报口吻保留,默认一屏精简、细节折叠,跟随 locale 单语;agent 经结构化流只取终稿,绝不漏思考过程(US-PORT-002)
|
|
49
|
+
- roll idea TS 化:分类、自动编号、过 lint 规则落卡,与 backlog 存取同源(US-PORT-003)
|
|
50
|
+
- changelog 确定性输出转正:AI 润色降级为可选路径或退役,默认不再回落 bash(US-PORT-005)
|
|
51
|
+
- config 写面 TS 化,整个 config 命令收口(US-PORT-006)
|
|
52
|
+
- difftest 卸 oracle 第一步:立可复用的冻结期望转换范式,先转规格层与基础设施层两批验证可行(US-PORT-009a)
|
|
53
|
+
- difftest 卸 oracle:命令行只读命令一批对拍转冻结期望(US-PORT-009c)
|
|
54
|
+
|
|
55
|
+
## v3.606.2
|
|
56
|
+
|
|
57
|
+
### 稳定性
|
|
58
|
+
|
|
59
|
+
- **修复 loop 在姊妹 worktree 布局下整体空转** — 项目身份此前会被解析到 git 主 worktree(对 roll 自身即 v2 冻结 checkout),所有周期在错误目录 idle;现在身份 = 当前 worktree 顶层,状态、日志、取卡全部回到正确项目
|
|
60
|
+
|
|
3
61
|
## v3.606.1
|
|
4
62
|
|
|
5
63
|
### 新功能
|
package/README.md
CHANGED
|
@@ -80,36 +80,14 @@ Published as a single npm package `@seanyao/roll`: `dist/` (TS bundled by esbuil
|
|
|
80
80
|
|
|
81
81
|
## Documentation
|
|
82
82
|
|
|
83
|
-
|
|
|
84
|
-
|
|
85
|
-
| Overview & architecture
|
|
86
|
-
|
|
|
87
|
-
|
|
|
88
|
-
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
| AI agents & complexity routing | [guide/en/ai-agents.md](guide/en/ai-agents.md) | [guide/zh/ai-agents.md](guide/zh/ai-agents.md) |
|
|
92
|
-
| Configuration (env vars) | [guide/en/configuration.md](guide/en/configuration.md) | [guide/zh/configuration.md](guide/zh/configuration.md) |
|
|
93
|
-
| Skill selection guide | [guide/en/skills.md](guide/en/skills.md) | [guide/zh/skills.md](guide/zh/skills.md) |
|
|
94
|
-
| roll-doc (legacy doc automation: four phases + Phase 3b deep read) | [guide/en/roll-doc.md](guide/en/roll-doc.md) | [guide/zh/roll-doc.md](guide/zh/roll-doc.md) |
|
|
95
|
-
| Slides (deck generator) | [guide/en/slides.md](guide/en/slides.md) | [guide/zh/slides.md](guide/zh/slides.md) |
|
|
96
|
-
| Slides — Layouts reference | [guide/en/slides.md#layouts](guide/en/slides.md#layouts) | [guide/zh/slides.md#layouts布局](guide/zh/slides.md#layouts%E5%B8%83%E5%B1%80) |
|
|
97
|
-
| Feedback (`roll feedback`) | [guide/en/feedback.md](guide/en/feedback.md) | [guide/zh/feedback.md](guide/zh/feedback.md) |
|
|
98
|
-
| Backlog GitHub sync (`roll backlog sync`) | [guide/en/backlog-github-sync.md](guide/en/backlog-github-sync.md) | [guide/zh/backlog-github-sync.md](guide/zh/backlog-github-sync.md) |
|
|
99
|
-
| Test isolation (`roll test`) | [guide/en/test-isolation.md](guide/en/test-isolation.md) | [guide/zh/test-isolation.md](guide/zh/test-isolation.md) |
|
|
100
|
-
| Acceptance evidence (`roll attest`) | [guide/en/acceptance-evidence.md](guide/en/acceptance-evidence.md) | [guide/zh/acceptance-evidence.md](guide/zh/acceptance-evidence.md) |
|
|
101
|
-
| Consistency & release gate | [guide/en/consistency.md](guide/en/consistency.md) | [guide/zh/consistency.md](guide/zh/consistency.md) |
|
|
102
|
-
| Architecture (layers · domain · invariants) | [docs/architecture.md](docs/architecture.md) | — |
|
|
103
|
-
| Verification system | [docs/verification.md](docs/verification.md) | — |
|
|
104
|
-
| Manifesto · 理念 | [docs/manifesto.md](docs/manifesto.md) | — |
|
|
105
|
-
| Acceptance evidence (`roll attest`) | [guide/en/acceptance-evidence.md](guide/en/acceptance-evidence.md) | [guide/zh/acceptance-evidence.md](guide/zh/acceptance-evidence.md) |
|
|
106
|
-
| Cross-machine sync | [guide/en/loop.md#cross-machine-sync](guide/en/loop.md#cross-machine-sync) | [guide/zh/loop.md#跨机器同步](guide/zh/loop.md#%E8%B7%A8%E6%9C%BA%E5%99%A8%E5%90%8C%E6%AD%A5) |
|
|
107
|
-
| Remote monitoring (watch loop from a phone via `remote-watch`) | [guide/en/loop.md#remote-monitoring](guide/en/loop.md#remote-monitoring) | [guide/zh/loop.md#远程监控remote-monitoring](guide/zh/loop.md#%E8%BF%9C%E7%A8%8B%E7%9B%91%E6%8E%A7remote-monitoring) |
|
|
108
|
-
| Cycle result eval (`roll loop eval`) | [guide/en/loop.md#cycle-result-eval](guide/en/loop.md#cycle-result-eval) | [guide/zh/loop.md#cycle-结果评分result-eval](guide/zh/loop.md#cycle-%E7%BB%93%E6%9E%9C%E8%AF%84%E5%88%86result-eval) |
|
|
109
|
-
| Cycle exit summary (`.command` window recap) | [guide/en/loop.md#cycle-exit-summary](guide/en/loop.md#cycle-exit-summary) | [guide/zh/loop.md#cycle-退出摘要cycle-exit-summary](guide/zh/loop.md#cycle-%E9%80%80%E5%87%BA%E6%91%98%E8%A6%81cycle-exit-summary) |
|
|
110
|
-
| Pricing (cost visibility) | [guide/en/pricing.md](guide/en/pricing.md) | [guide/zh/pricing.md](guide/zh/pricing.md) |
|
|
111
|
-
| FAQ (troubleshooting) | [guide/en/faq.md](guide/en/faq.md) | [guide/zh/faq.md](guide/zh/faq.md) |
|
|
112
|
-
| Adoption patterns | [guide/en/patterns/](guide/en/patterns/) | [guide/zh/patterns/](guide/zh/patterns/) |
|
|
83
|
+
| | |
|
|
84
|
+
|---|---|
|
|
85
|
+
| **Start here** | [Overview & architecture](guide/en/overview.md) · [Engineering methodology](guide/en/methodology.md) |
|
|
86
|
+
| **Daily driving** | [The loop (autonomous executor)](guide/en/loop.md) · [Configuration](guide/en/configuration.md) · [Pricing & cost](guide/en/pricing.md) · [FAQ](guide/en/faq.md) |
|
|
87
|
+
| **Quality machinery** | [Acceptance evidence (`roll attest`)](guide/en/acceptance-evidence.md) · [Consistency & release gate](guide/en/consistency.md) · [Test isolation](guide/en/test-isolation.md) |
|
|
88
|
+
| **Under the hood** | [Architecture: layers · domain · invariants](docs/architecture.md) · [Verification system](docs/verification.md) · [Manifesto](docs/manifesto.md) |
|
|
89
|
+
|
|
90
|
+
Full guide index: [guide/en/](guide/en/) — agents, peer review, slides, feedback, backlog sync, adoption patterns, and more.
|
|
113
91
|
|
|
114
92
|
## Contributing
|
|
115
93
|
|
package/bin/roll
CHANGED
|
@@ -1948,7 +1948,7 @@ _check_installed_version_or_retry() {
|
|
|
1948
1948
|
local expected installed pkg_dir
|
|
1949
1949
|
expected="$(npm view @seanyao/roll version 2>/dev/null || true)"
|
|
1950
1950
|
pkg_dir="$(npm root -g 2>/dev/null || true)"
|
|
1951
|
-
installed="$(
|
|
1951
|
+
installed="$(_tree_version "${pkg_dir}/@seanyao/roll")" # FIX-202: package.json, not fossil VERSION=
|
|
1952
1952
|
|
|
1953
1953
|
[[ -z "$expected" || -z "$installed" ]] && return 0
|
|
1954
1954
|
|
|
@@ -1957,7 +1957,7 @@ _check_installed_version_or_retry() {
|
|
|
1957
1957
|
npm cache clean --force &>/dev/null || true
|
|
1958
1958
|
npm install -g @seanyao/roll@latest &>/dev/null || true
|
|
1959
1959
|
local after
|
|
1960
|
-
after="$(
|
|
1960
|
+
after="$(_tree_version "${pkg_dir}/@seanyao/roll")"
|
|
1961
1961
|
if [[ -n "$after" && "$after" != "$expected" ]]; then
|
|
1962
1962
|
warn "$(msg update.still_mismatch "$after")"
|
|
1963
1963
|
fi
|
|
@@ -1987,7 +1987,7 @@ cmd_update() {
|
|
|
1987
1987
|
fi
|
|
1988
1988
|
|
|
1989
1989
|
local new_version
|
|
1990
|
-
new_version="$(
|
|
1990
|
+
new_version="$(_tree_version "$ROLL_PKG_DIR")" # FIX-202: package.json, not fossil VERSION=
|
|
1991
1991
|
if [[ -n "$new_version" ]]; then
|
|
1992
1992
|
info "$(msg update.new_version "$new_version")"
|
|
1993
1993
|
fi
|
|
@@ -15326,6 +15326,31 @@ _notify_update() {
|
|
|
15326
15326
|
warn "$(msg update.available "$latest")"
|
|
15327
15327
|
}
|
|
15328
15328
|
|
|
15329
|
+
# FIX-202: read an install tree's version — package.json is the single source of
|
|
15330
|
+
# truth (v3 bumps it on release); the bin/roll VERSION= literal is only a
|
|
15331
|
+
# last-resort fallback for a tree predating the package.json convention. Used for
|
|
15332
|
+
# $VERSION (the running version) and by the update self-checks. Defined at the
|
|
15333
|
+
# foot so the resolution runs after every helper is sourced and so it adds no
|
|
15334
|
+
# lines above the line-coupled extraction regions other difftests rely on.
|
|
15335
|
+
_tree_version() {
|
|
15336
|
+
local tree="$1" v=""
|
|
15337
|
+
if [[ -f "${tree}/package.json" ]]; then
|
|
15338
|
+
v="$(grep -m1 '"version"' "${tree}/package.json" 2>/dev/null \
|
|
15339
|
+
| sed 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/' || true)"
|
|
15340
|
+
fi
|
|
15341
|
+
if [[ -z "$v" ]]; then
|
|
15342
|
+
v="$(grep "^VERSION=" "${tree}/bin/roll" 2>/dev/null \
|
|
15343
|
+
| sed 's/.*VERSION="\([^"]*\)".*/\1/' || true)"
|
|
15344
|
+
fi
|
|
15345
|
+
echo "$v"
|
|
15346
|
+
}
|
|
15347
|
+
|
|
15348
|
+
# The running version is the tree containing THIS bin/roll ($(dirname SCRIPT_DIR)),
|
|
15349
|
+
# independent of any ROLL_PKG_DIR override (tests isolate the curl-swap tree there).
|
|
15350
|
+
_running_v="$(_tree_version "$(dirname "$SCRIPT_DIR")")"
|
|
15351
|
+
[[ -n "$_running_v" ]] && VERSION="$_running_v"
|
|
15352
|
+
unset _running_v
|
|
15353
|
+
|
|
15329
15354
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
15330
15355
|
_check_update_async
|
|
15331
15356
|
main "$@"
|