Skip to content

Commit 6664b28

Browse files
AlexStockskiwi-botOmX
authored
build: cache RocksDB C/C++ compile via sccache + add PRD docs (#388)
* build: cache RocksDB C/C++ compile via sccache + add PRD docs - Wrap CC/CXX with sccache in CI (clippy + build-and-test) and dev.sh so librocksdb-sys C++ compile is actually cached (was bypassing RUSTC_WRAPPER, ~18min cold build) - Add target/ to CI cargo cache path - Add docs/prd.md + docs/personas-and-user-stories.md synthesized from .planning/ governance docs * fix: address CI and documentation review findings Preserve MSVC selection on Windows while retaining native sccache defaults on Unix. Remove duplicate target cache ownership and align the PRD, user stories, State, and Kanban with the validated review findings. Constraint: Limit this commit to the seven PR #388 review-fix paths for compiler caching, regression coverage, product documentation, and task state. Confidence: High; the Windows regression is reproduced by the new shell probe and all seven platform/compiler cases pass after the fix. Scope-risk: Build wrapper selection, CI cache ownership, and versioned documentation only; no Rust production code, Cargo dependency, Oracle implementation, or Hot Tier implementation changes. Tested: TDD red reproduced forced GNU CC/CXX on MINGW; green shell probe passed 7/7 cases; Git blob Bash syntax, workflow YAML/cache assertions, documentation ID/table checks, and git diff --cached --check passed. Not-tested: shellcheck and actionlint are unavailable; full Rust/RocksDB build and new remote Head CI require a later push. Co-authored-by: OmX <omx@oh-my-codex.dev> * fix: make compiler regression probe CI-compatible Give the shell probe the repository ASF license header and preserve its executable bit so Linux can execute the symlinked cargo and sccache test doubles. Constraint: Limit the follow-up to scripts/tests/test-dev-sccache-env.sh and the two failures reported by new-Head CI. Confidence: High; the license content matches .licenserc.yaml and the Git index records mode 100755. Scope-risk: Test harness metadata and header only; no production code, compiler selection logic, workflow topology, or dependency changes. Tested: shell regression probe passed 7/7 cases; normalized Bash syntax passed; git diff --cached --check passed; staged mode verified as 100755. Not-tested: GitHub license-eye and hosted Linux execution require the follow-up remote CI run. Co-authored-by: OmX <omx@oh-my-codex.dev> --------- Co-authored-by: kiwi-bot <kiwi@example.com> Co-authored-by: OmX <omx@oh-my-codex.dev>
1 parent 5b9d7fd commit 6664b28

7 files changed

Lines changed: 521 additions & 41 deletions

File tree

.github/workflows/ci.yml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ jobs:
7070
steps:
7171
- uses: actions/checkout@v7
7272

73+
- name: Test development compiler caching
74+
if: matrix.os == 'ubuntu-latest'
75+
run: bash scripts/tests/test-dev-sccache-env.sh
76+
7377
- name: Free disk space (Linux)
7478
if: matrix.os == 'ubuntu-latest'
7579
run: |
@@ -91,6 +95,13 @@ jobs:
9195
echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV
9296
shell: bash
9397

98+
- name: Configure C/C++ compiler caching
99+
if: matrix.os != 'windows-latest'
100+
run: |
101+
echo "CC=sccache cc" >> $GITHUB_ENV
102+
echo "CXX=sccache c++" >> $GITHUB_ENV
103+
shell: bash
104+
94105
- name: Cache Cargo registry
95106
uses: actions/cache@v6
96107
with:
@@ -160,6 +171,13 @@ jobs:
160171
echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV
161172
shell: bash
162173

174+
- name: Configure C/C++ compiler caching
175+
if: matrix.os != 'windows-latest'
176+
run: |
177+
echo "CC=sccache cc" >> $GITHUB_ENV
178+
echo "CXX=sccache c++" >> $GITHUB_ENV
179+
shell: bash
180+
163181
- name: Cache Cargo registry
164182
uses: actions/cache@v6
165183
with:
@@ -234,7 +252,6 @@ jobs:
234252
path: |
235253
~/.cargo/registry
236254
~/.cargo/git
237-
target
238255
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
239256
restore-keys: |
240257
${{ runner.os }}-cargo-

.planning/KANBAN.md

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,28 @@
11
# Kiwi Kanban
22

3-
> 更新日期:2026-07-28
3+
> 更新日期:2026-07-30
44
>
55
> 当前里程碑:M1 Redis 8.8.1 Cache OFF compatibility foundation
66
>
7-
> 当前 task 类型:planning-only;方案 A 规划完成并合并后,implementation 另开 task
7+
> 当前 task:PR `#388` implementation`feat/rocksdb-build-accel-and-prd`);已验证远端 Base `0f8d96238860a5c29a5582e461e4cdeb974431b3`、Head `b47cb1eebe098e2d4d2d784020dc283a8d026d28`
88
>
99
> 当前运行模式:Cache OFF
1010
>
1111
> 规则:每张实现卡必须引用完整 Requirement ID;完成必须附 exact commit、环境和可重复验证证据。
1212
1313
## In Progress
1414

15-
无。本 task 只完成方案 A 的规划落盘,不持有 implementation card。
15+
| ID | 工作项 | Requirement / Gate 关系 | 当前状态 |
16+
|---|---|---|---|
17+
| `PR388-001` | C/C++ sccache 构建接入、跨平台回归探针、PRD/用户故事及 review 一致性修复 | `REQ-STABILITY-003``REQ-WORK-001``REQ-WORK-003``REQ-WORK-005`;跨平台构建修复只维护 G6 CI 的可执行性与证据条件,不构成 Gate 通过证据 | 本地针对性验证通过并形成提交;远端发布状态和新 Head CI 结果以 PR/checks/threads 实时查询为准 |
1618

1719
## Ready for a separate implementation task
1820

1921
启动下列卡片必须创建新的 Codex task、linked worktree、TaskId 和 recovery checkpoint。Planning branch 和旧草稿 worktree 都不能直接切换成 implementation。
2022

2123
| ID | 工作项 | Requirement / Decision | 前置条件 |
2224
|---|---|---|---|
23-
| `M1-001-T2` | Redis 8.8.1 trusted Oracle provenance:primary build、fresh-checkout independent rebuild、binary hash equality、rebuild runtime evidence | `REQ-COMPAT-001``REQ-COMPAT-008``REQ-COMPAT-009``REQ-COMPAT-010``D011``D012` | 本规划 PR 合并;新 implementation task/worktree;真实双 checkout reproducibility 是卡片内第一道实现门禁,不是启动前置条件 |
25+
| `M1-001-T2` | Redis 8.8.1 trusted Oracle provenance:primary build、fresh-checkout independent rebuild、binary hash equality、rebuild runtime evidence | `REQ-COMPAT-001``REQ-COMPAT-008``REQ-COMPAT-009``REQ-COMPAT-010``D011``D012` | PR `#383` 已合并;仍须新建专用 implementation task/worktree;当前 PR `#388` 不替代该任务;真实双 checkout reproducibility 是卡片内第一道实现门禁 |
2426
| `M1-002` | RESP2/RESP3 持久连接级 raw wire differential harness | `REQ-COMPAT-002``REQ-COMPAT-006` | `M1-001-T2` 产生可验证 provenance |
2527
| `M1-003` | Redis 8.8.1 TCL external-server runner | `REQ-COMPAT-004` | `M1-001-T2` |
2628
| `M1-004` | redis-rs test-only compatibility crate | `REQ-COMPAT-005``REQ-COMPAT-006` | `M1-001-T2` |
@@ -44,14 +46,14 @@
4446

4547
## Frozen by system stability gate
4648

47-
下列卡片在 `docs/quality/system-stability-gate.md` 全部通过且用户重新批准前不得转入 Ready 或 In Progress。
49+
下列卡片在 `docs/quality/system-stability-gate.md` 全部通过、M7 前置设计完成审查且用户明确批准对应的单独 implementation task 前,不得转入 Ready 或 In Progress。Gate PASS、PR 合并或里程碑 Ready 均不自动授权生产实现
4850

4951
| ID | 工作项 | Requirement | Gate | 冻结范围 |
5052
|---|---|---|---|---|
51-
| `M7-001` | 建立并修改用于 Kiwi 发行的 Redis fork | `REQ-HOT-002``REQ-LICENSE-002``REQ-LICENSE-008` | System Stability Gate + 用户新批准 | fork 代码、patch、生产构建均禁止 |
52-
| `M7-002` | Embedded Redis Hot Tier 动态库 C ABI spike | `REQ-HOT-010``REQ-HOT-012``REQ-LICENSE-003``REQ-LICENSE-005``REQ-LICENSE-007` | System Stability Gate + 用户新批准 | `.so``.dylib``.dll`、import/static library 均禁止 |
53-
| `M7-003` | Kiwi 安全 loader、pairing manifest 和 FFI binding | `REQ-HOT-010``REQ-HOT-011``REQ-HOT-012` | System Stability Gate + 用户新批准 | 生产 crate 依赖、配置和加载路径均禁止 |
54-
| `M7-004` | String update-or-invalidate MVP | `REQ-HOT-001``REQ-HOT-003``REQ-HOT-007``REQ-HOT-009` | System Stability Gate + 用户新批准 | Cache ON 读写路径禁止 |
53+
| `M7-001` | 建立并修改用于 Kiwi 发行的 Redis fork | `REQ-HOT-002``REQ-LICENSE-002``REQ-LICENSE-008` | Gate PASS + 单独 implementation task 明确批准 | fork 代码、patch、生产构建均禁止 |
54+
| `M7-002` | Embedded Redis Hot Tier 动态库 C ABI spike | `REQ-HOT-010``REQ-HOT-012``REQ-LICENSE-003``REQ-LICENSE-005``REQ-LICENSE-007` | Gate PASS + 单独 implementation task 明确批准 | `.so``.dylib``.dll`、import/static library 均禁止 |
55+
| `M7-003` | Kiwi 安全 loader、pairing manifest 和 FFI binding | `REQ-HOT-010``REQ-HOT-011``REQ-HOT-012` | Gate PASS + 单独 implementation task 明确批准 | 生产 crate 依赖、配置和加载路径均禁止 |
56+
| `M7-004` | String update-or-invalidate MVP | `REQ-HOT-001``REQ-HOT-003``REQ-HOT-007``REQ-HOT-009` | Gate PASS + 单独 implementation task 明确批准 | Cache ON 读写路径禁止 |
5557
| `M8-001` | Cache OFF/ON differential 与热层故障注入 | `REQ-HOT-004``REQ-HOT-008``REQ-RAFT-002` | M7 全部资格门禁 | 不得用未实现热层替代当前正确性测试 |
5658
| `M8-002` | Redis/Kiwi OFF/Kiwi ON 性能与资源基线 | `REQ-PERF-001``REQ-PERF-002``REQ-PERF-003``REQ-OBS-003` | M7/M8 正确性门禁 | 性能工作不得先于语义与故障证明 |
5759

@@ -87,9 +89,9 @@
8789

8890
## WIP 与授权规则
8991

90-
- 同一时间只允许一个 implementation card 处于 In Progress;planning/docs task 不得隐式持有 implementation card。
92+
- 同一时间只允许一个 implementation card 处于 In Progress;当前为 `PR388-001`planning/docs task 不得隐式持有 implementation card。
9193
- 规划批准不授权修改 source、tests、build scripts 或 CI,也不授权 stage/commit/push 实现文件。
9294
- 从 planning 转 implementation 必须创建新 Codex task、TaskId、worktree、dirty allowlist 和 recovery checkpoint;不能只把 recovery mode 从 `planning` 改成 `implementation`
9395
- 冻结草稿不得覆盖、续写、清理或回退;后续实施只读参考并重新审计。
9496
- `M1-001-T2` 必须先通过真实双 checkout reproducibility;不能把方案 A 降级为 metadata self-attestation。
95-
- 系统稳定门禁通过后,M7 仍需用户重新明确批准,不能自动启动
97+
- 系统稳定门禁通过后,M7 仍需用户明确批准一个单独 implementation task,不能因 Gate PASS、PR 合并或 Ready 状态自动启动

.planning/STATE.md

Lines changed: 37 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,51 @@
11
# Kiwi 当前状态
22

3-
> 更新时间:2026-07-28
3+
> 更新时间:2026-07-30
44
>
5-
> 当前 task 类型:planning-only
5+
> 当前 task 类型:implementation
66
>
7-
> 规划 PR:`#383``codex/redis-8.8.1-oracle-provenance-plan`
7+
> 当前 PR:`#388``feat/rocksdb-build-accel-and-prd`
88
>
9-
> 规划 Base:`main` at `9e91707d774ad367d682e23677dcef79ecb14338`
9+
> 已验证远端快照:Base `main` at `0f8d96238860a5c29a5582e461e4cdeb974431b3`;Head `b47cb1eebe098e2d4d2d784020dc283a8d026d28`
1010
>
11-
> 状态:Task 1 已由 PR `#372` 合并;方案 A 已由规划 PR `#383` 固化;恢复时必须实时确认该 PR 是否已合并,implementation 只能在规划合并后另开 Codex task
11+
> 状态:PR `#388` 在 2026-07-30 复检时为 OPEN;本轮 review fix 已形成提交,发布状态、checks 和 review threads 必须实时查询
1212
>
13-
> 当前设计:`docs/superpowers/specs/2026-07-28-redis-8.8.1-trusted-oracle-provenance-design.md`
13+
> 当前范围:修复 C/C++ sccache 的 Windows 编译器回归和重复 `target` 缓存,补充自动回归探针,并统一版本化 PRD、用户故事与项目状态
1414
>
15-
> 当前实施计划:`docs/superpowers/plans/2026-07-28-redis-8.8.1-trusted-oracle-provenance.md`
15+
> Requirement 边界:`REQ-STABILITY-003``REQ-WORK-001``REQ-WORK-003``REQ-WORK-005`;跨平台构建修复只维护 G6 CI 的可执行性与证据条件,不构成任何稳定性 Gate 已通过的证据
1616
1717
## 当前目标
1818

19-
本 task 只把 Redis 8.8.1 可信 Oracle provenance 的方案 A 固化到项目文档:primary build 产生候选和审计 metadata,verifier 在 fresh disposable exact checkout 中独立重建,要求 primary/rebuild binary SHA-256 完全一致,只运行 rebuild binary 取得正式 `INFO server` evidence,并在全部 cleanup 成功后发布 provenance v2
19+
PR `#388` 是与 PR `#383` 规划任务分离的 implementation task。其既有范围是在 CI 与 `scripts/dev.sh` 中为 RocksDB C/C++ 编译接入 sccache,并新增由权威规划文档综合出的 PRD 与用户故事。本轮 review fix 处理 Windows compiler wrapper 回归、重复缓存、自动回归探针、文档 Requirement 映射、Hot Tier 授权边界和当前项目状态问题
2020

21-
本 task 不继续任何 Rust、test、Bash、PowerShell 或 CI 实现。Kiwi 底层兼容、RocksDB 和 OpenRaft 工作按既有 Roadmap 保持原节奏,方案 A 只替换 `M1-001` Task 2 的 provenance 信任模型
21+
本 task 不实现 Redis Oracle provenance,不接受旧六文件 Oracle 草稿,也不启动 Embedded Redis Hot Tier。PR `#388` 的合并、CI 通过或 M7 Ready 均不能替代 Oracle implementation task 或 Hot Tier implementation task 的单独授权
2222

2323
## 当前授权边界
2424

2525
允许:
2626

27-
- 更新 `AGENTS.md` 实际指向的 `CLAUDE.md``.planning/`、兼容/系统边界/稳定门禁合同、设计规格和实施计划
28-
- 执行 Markdown、链接、Requirement/Decision ID、一致性和 Git diff 检查
29-
- 在独立 planning branch 保存、提交和发布纯规划成果;不得带入实现草稿
27+
- 在本轮 review fix 中修改 `.github/workflows/ci.yml``scripts/dev.sh``scripts/tests/test-dev-sccache-env.sh``docs/prd.md``docs/personas-and-user-stories.md``.planning/STATE.md``.planning/KANBAN.md`
28+
- 执行 Markdown、链接、Requirement/Decision ID、一致性和 Git diff 等只读检查
29+
- 记录已经发生并可验证的 PR/Base/Head 历史;瞬时 checks、threads 和 dirty ownership 继续实时查询
3030

3131
禁止:
3232

33-
- 修改 `tools/compat``scripts/compat`、Cargo、CI 或生产源码
33+
- 修改 Cargo、生产源码、Oracle provenance 实现、Hot Tier 实现或其他未授权路径
3434
- 在旧 `redis-8.8.1-stability-foundation` worktree 继续、暂存、提交、push、清理或回退六文件实现草稿。
3535
- 把旧草稿的绿色测试、审查或真实构建准备表述为方案 A 已实现。
3636
- 扩大到 Embedded Redis Hot Tier、Redis fork、动态库、loader、Cache ON 或组合发行实现。
37-
- 在本 task 从 planning mode 静默切换到 implementation mode
37+
- 在未获授权时 commit、push、merge、rebase、Resolve 或回复 GitHub review thread
3838

3939
## 已确认决定
4040

41+
- PR `#383` 已于 2026-07-28 合并:final Head `42c16bef899385bd2e1b1e16e2e0202d4a614590`,merge commit `58030e1331655546ea4547a9a94efc493534ef7d`;它只完成 Oracle 方案 A 的规划闭环。
42+
- PR `#388` 是独立 implementation task,不得继承或隐式扩大 PR `#383` 的 Oracle 实施授权。
4143
- `D011`:Redis Oracle required provenance 采用 verifier fresh-checkout independent rebuild 和 exact binary hash equality。
4244
- `D012`:规划 task 与实施 task 分离;规划批准不授权源码实现,提前产生的实现草稿冻结。
4345
- Redis 8.8.1 tag `8.8.1` / commit `77b6c308396c9700672390a210143a8496fb4b10` 是唯一兼容和 Oracle 基线。
4446
- Cache OFF、RocksDB 权威存储、OpenRaft 实现和 Embedded Redis Hot Tier 冻结边界均未改变。
4547

46-
## M1-001 当前分解
48+
## Oracle provenance 历史状态(不属于当前 task)
4749

4850
### Task 1:exact compatibility manifest
4951

@@ -55,14 +57,14 @@
5557
### Task 2:trusted Oracle provenance
5658

5759
- 设计:已采用方案 A。
58-
- 规划状态:方案 A 的 15 路径 planning-only Diff PR `#383` 发布;本文件不缓存其易漂移的 Head、checks 或 merge 状态,恢复时必须实时查询
60+
- 规划状态:方案 A 的 15 路径 planning-only Diff 已由 PR `#383` 合并;final Head `42c16bef899385bd2e1b1e16e2e0202d4a614590`merge commit `58030e1331655546ea4547a9a94efc493534ef7d`
5961
- 实施状态:未在已接受边界中开始。
6062
- 实施入口:`docs/superpowers/plans/2026-07-28-redis-8.8.1-trusted-oracle-provenance.md`
61-
- 启动条件:PR `#383` 合并后另开 Codex task,从包含本规划的 clean commit 创建新 worktree,保存新 TaskId 和 recovery checkpoint。
63+
- 启动条件:另开专用于 Oracle provenance 的 implementation task,从包含本规划的 clean commit 创建新 worktree,保存新 TaskId 和 recovery checkpoint;当前 PR `#388` 不满足或替代该条件
6264

6365
## 冻结实现草稿
6466

65-
相关但不属于本 planning task dirty ownership:
67+
相关但不属于当前 PR `#388` dirty ownership:
6668

6769
```text
6870
Worktree:
@@ -80,7 +82,7 @@ D:\test\github\kiwi\.worktrees\redis-8.8.1-stability-foundation\.codex\recovery\
8082

8183
该 worktree 存在六文件未提交草稿。它没有被方案 A 接受,不能在本 task 处理。后续 implementation task 可以只读分析其中的测试思想,但所有复用必须对照 `D011``REQ-COMPAT-008``REQ-COMPAT-009``REQ-COMPAT-010` 重新审计。
8284

83-
## 本规划 task 的交付
85+
## PR `#383` 规划交付(历史)
8486

8587
1. `D011`:独立重建信任模型。
8688
2. `D012`:规划/实施 task 分离。
@@ -94,19 +96,24 @@ D:\test\github\kiwi\.worktrees\redis-8.8.1-stability-foundation\.codex\recovery\
9496
## 当前验证证据
9597

9698
- PR `#372` 的合并状态、final Head 和 `main` merge commit 已实时确认。
97-
- PR `#383` 的规划提交只涉及 15 个 planning/docs 路径,并从 Task 1 合并后的 `main` 重放;禁止带入 Cargo、脚本、CI 或实现路径。
99+
- PR `#383` 已合并;其规划提交只涉及 15 个 planning/docs 路径,并从 Task 1 合并后的 `main` 重放,未带入 Cargo、脚本、CI 或实现路径。
98100
- 旧六文件草稿 worktree 已只读核对,并继续冻结。
99-
- 本规划 PR 只执行与文档风险相匹配的 Diff、链接、ID、Markdown 和 GitHub 状态检查;不运行 Kiwi、RocksDB 或 Redis 编译测试。
101+
- PR `#388` 的远端审查快照为 Base `0f8d96238860a5c29a5582e461e4cdeb974431b3`、Head `b47cb1eebe098e2d4d2d784020dc283a8d026d28`;本轮 review fix 已形成提交,当前发布状态须通过 GitHub 实时查询。
102+
- `wsl.exe --cd /mnt/d/test/github/review/kiwi-pr-388/source -- bash scripts/tests/test-dev-sccache-env.sh`:7 个 Windows/Unix/compiler 场景全部 PASS。
103+
- WSL Python/PyYAML 解析 `.github/workflows/ci.yml`:8 个 job 可解析,手写 `actions/cache``target` owner 为 0,compiler regression probe 恰有 1 个 CI step。
104+
- 文档一致性探针:59 个使用中的 `REQ-*`、4 个 `D*` 均能在权威文件解析,Markdown 表格结构通过。
105+
- `git diff --check`:通过;暂存区为空。当前环境没有 `shellcheck``actionlint`,未执行这两项。
106+
- checks、review threads 和 PR 状态不在本文件中缓存;任何当前结论必须重新查询 GitHub。
100107

101-
这些结果只证明规划闭环,不证明方案 A 已实现。
108+
PR `#383` 的结果只证明 Oracle 规划闭环,不证明方案 A 已实现;PR `#388` 也不改变该结论
102109

103110
## 下一条安全动作
104111

105-
1. 实时查询 PR `#383` 的 state、Head、Base、checks、review threads 和文件列表,不从本文件推断 GitHub 当前状态
106-
2. 若 PR `#383` 仍为 OPEN,保持 Task 2 六文件草稿冻结;只有用户另行明确授权后才能 merge
107-
3. PR `#383` 已 MERGED,确认 `main` 包含本规划,并继续保持旧六文件草稿冻结
108-
4. 只有用户另开 implementation task 后,才从包含本规划的 clean `main` 创建新 worktree、TaskId 和 recovery checkpoint。
109-
5. 新 implementation task 先执行真实 Redis 双 checkout reproducibility 门禁;门禁通过前不复用或提交旧草稿
112+
1. 对本轮七个 task-owned 路径执行 shell 回归、workflow YAML、Markdown、引用、Requirement/Decision ID、Git diff 和路径边界检查
113+
2. 本轮 push 已获得单独授权;发布后重新查询新 Head 的 checks。Resolve 或回复 review thread 仍须对应的单独授权,不得把已发布提交表述为 CI 已验证内容
114+
3. PR `#383` 的规划历史保持不变,旧六文件 Oracle 草稿继续冻结
115+
4. 只有用户另开 Oracle provenance implementation task 后,才从包含方案 A 的 clean `main` 创建新 worktree、TaskId 和 recovery checkpoint,并先执行真实 Redis 双 checkout reproducibility 门禁
116+
5. Hot Tier 继续 Frozen;Gate PASS 后仍须用户明确批准一个单独的 implementation task
110117

111118
## 恢复检查
112119

@@ -115,11 +122,12 @@ Get-Content -Raw AGENTS.md
115122
Get-Content -Raw .planning\PROJECT.md
116123
Get-Content -Raw .planning\STATE.md
117124
Get-Content -Raw .planning\KANBAN.md
118-
Get-Content -Raw docs\superpowers\specs\2026-07-28-redis-8.8.1-trusted-oracle-provenance-design.md
119-
Get-Content -Raw docs\superpowers\plans\2026-07-28-redis-8.8.1-trusted-oracle-provenance.md
125+
Get-Content -Raw docs\prd.md
126+
Get-Content -Raw docs\personas-and-user-stories.md
120127
if (Test-Path .codex\recovery\ACTIVE.md) { Get-Content -Raw .codex\recovery\ACTIVE.md }
121128
git status --porcelain=v2 --branch --untracked-files=all
122129
git diff --cached --name-only
130+
gh pr view 388 -R arana-db/kiwi --json state,baseRefOid,headRefOid,statusCheckRollup,reviewDecision
123131
```
124132

125133
如果 branch、HEAD、task type 或 dirty ownership 与 recovery 记录不同,先报告差异,不得自动 checkout、restore、reset、stash、clean 或覆盖文件。

0 commit comments

Comments
 (0)