@xulthekl/team-flow 0.67.0 → 0.68.0

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.
Files changed (37) hide show
  1. package/.claude/always/phase-guard.md +1 -1
  2. package/.claude-plugin/marketplace.json +1 -1
  3. package/.claude-plugin/plugin.json +1 -1
  4. package/.codex-plugin/plugin.json +1 -1
  5. package/.cursor-plugin/marketplace.json +1 -1
  6. package/.cursor-plugin/plugin.json +1 -1
  7. package/.github/plugin/marketplace.json +2 -2
  8. package/CHANGELOG.md +33 -0
  9. package/GEMINI.md +1 -1
  10. package/INSTALL.md +1 -1
  11. package/README.md +1 -1
  12. package/agents/code-reviewer.md +11 -4
  13. package/docs/README_en.md +1 -1
  14. package/docs/team-flow /344/275/277/347/224/250/350/257/264/346/230/216/357/274/210/347/240/224/345/217/221/345/233/242/351/230/237/347/211/210/357/274/211.md" +7 -5
  15. package/gemini-extension.json +1 -1
  16. package/hooks/session-start +2 -2
  17. package/llms.txt +1 -1
  18. package/package.json +1 -1
  19. package/plugin.json +1 -1
  20. package/scripts/guard/checks/security-baseline-light.mjs +9 -0
  21. package/scripts/guard/checks/security-baseline.mjs +141 -0
  22. package/scripts/guard/guard.mjs +22 -5
  23. package/scripts/lib/cmd-security.mjs +61 -0
  24. package/scripts/lib/cmd-state.mjs +5 -0
  25. package/scripts/lib/security-scope.mjs +188 -0
  26. package/scripts/lib/state-loader.mjs +12 -0
  27. package/scripts/team-flow.mjs +7 -0
  28. package/skills/ce-brainstorm/references/security-baseline.json +50 -0
  29. package/skills/ce-brainstorm/references/security-baseline.md +80 -0
  30. package/skills/ce-compound/references/agents/security-sentinel.md +5 -0
  31. package/skills/ce-plan/references/agents/security-sentinel.md +5 -0
  32. package/skills/code-reviewer/SKILL.md +5 -1
  33. package/skills/code-reviewer/code-reviewer-prompt.md +10 -0
  34. package/skills/release-archivist/SKILL.md +21 -2
  35. package/skills/spec-writer/SKILL.md +5 -0
  36. package/skills/workflow-start/SKILL.md +8 -3
  37. package/skills/workflow-start/references/routing-rules.md +1 -0
@@ -1,3 +1,3 @@
1
- # team-flow v0.67.0 | 阶段: {{state}} | 工作流: {{workflow}}
1
+ # team-flow v0.68.0 | 阶段: {{state}} | 工作流: {{workflow}}
2
2
  当前阶段允许的操作由 workflow-start 路由规则定义。
3
3
  禁止跨越 DP gate 进入下一阶段。变更范围以 execution-contract.md 的 Intent Lock 为准。
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "team-flow",
11
11
  "description": "8-state spec workflow + compound global compounding + architecture-design (4A/DDD) + local HTML prototype + product-level orchestration + bootstrap + e2e + session handoff + workflow feedback + independent business analysis. 28 skills + 17 agents with embedded TDD, SDD, code review, debugging, delta spec sync, and design-system-driven prototyping.",
12
- "version": "0.67.0",
12
+ "version": "0.68.0",
13
13
  "source": "./",
14
14
  "author": {
15
15
  "name": "LT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "team-flow",
3
- "version": "0.67.0",
3
+ "version": "0.68.0",
4
4
  "description": "Unified workflow plugin: team-flow (spec-driven dev: TDD/SDD/code-review/debugging) + compound-engineering core subset (brainstorm/plan/compound/strategy/ideate/proof, global compounding) + architecture-design (4A+DDD incremental design & global compounding) + prototype (local HTML prototype, zero external deps) + e2e (Playwright E2E, AC-driven) + workflow-orchestrator (product-level workflow orchestration) + workflow-bootstrap (existing project onboarding) + session-handoff (context transfer) + workflow-feedback (issue tracking) + business-analysis (independent requirement/scenario artifact) + design-system (design tokens + component contract + AI primer + showcase) + test-strategy (test strategy design) + project-initialize (new service onboarding) + jarvis (team-flow decision agent, opt-in). 28 skills + 17 agents, one install.",
5
5
  "source": "./",
6
6
  "author": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "team-flow",
3
- "version": "0.67.0",
3
+ "version": "0.68.0",
4
4
  "description": "Spec-first workflow that bridges OpenSpec-style planning and Superpowers-style execution discipline.",
5
5
  "author": {
6
6
  "name": "MageByte",
@@ -5,7 +5,7 @@
5
5
  },
6
6
  "metadata": {
7
7
  "description": "Unified workflow plugin marketplace for Cursor (team-flow: team-flow + compound + architecture-design + prototype).",
8
- "version": "0.67.0"
8
+ "version": "0.68.0"
9
9
  },
10
10
  "plugins": [
11
11
  {
@@ -2,7 +2,7 @@
2
2
  "name": "team-flow",
3
3
  "displayName": "team-flow",
4
4
  "description": "Unified workflow plugin: team-flow (spec-driven dev: TDD/SDD/code-review/debugging) + compound-engineering core subset (brainstorm/plan/compound/strategy/ideate/proof, global compounding) + architecture-design (4A+DDD incremental design & global compounding) + prototype (local HTML prototype, zero external deps) + e2e (Playwright E2E, AC-driven) + workflow-orchestrator (product-level workflow orchestration) + workflow-bootstrap (existing project onboarding) + session-handoff (context transfer) + workflow-feedback (issue tracking) + business-analysis (independent requirement/scenario artifact) + jarvis (team-flow decision agent, opt-in). 28 skills + 17 agents, one install.",
5
- "version": "0.67.0",
5
+ "version": "0.68.0",
6
6
  "author": {
7
7
  "name": "LT",
8
8
  "url": "https://github.com/LT"
@@ -6,13 +6,13 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Unified workflow plugins and skills for AI coding agents (team-flow: team-flow + compound + architecture-design + prototype).",
9
- "version": "0.67.0"
9
+ "version": "0.68.0"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "team-flow",
14
14
  "description": "Unified workflow with planning artifacts, execution contracts, TDD, review gates, systematic debugging, delta spec sync, architecture-design, independent business analysis, and local HTML prototyping.",
15
- "version": "0.67.0",
15
+ "version": "0.68.0",
16
16
  "source": ".",
17
17
  "author": {
18
18
  "name": "LT",
package/CHANGELOG.md CHANGED
@@ -4,6 +4,39 @@ All notable changes to `team-flow` will be documented in this file.
4
4
 
5
5
  The format loosely follows Keep a Changelog.
6
6
 
7
+ ## [0.68.0] - 2026-09-30
8
+
9
+ ### Added(security-baseline 企业安全基线集成:四层全量落地;设计 = 工作区 `docs/plan/security-baseline-integration-design.md` v1.3 + P3 修正,P1.5 完整档三轮闭合 0 Critical)
10
+
11
+ **L1 基线双载体(单一真相源)**
12
+ - 新增 `skills/ce-brainstorm/references/security-baseline.md`(44 项企业安全设计控制点人类可读权威 + verdict→门禁映射)+ `security-baseline.json`(机器可读,`baseline_version` + 逐项 trigger/locus/severity)——测试断言 md↔json 44 行逐项对齐。**企业 xlsx 原件不入本仓**(脱敏,来源指针留 workspace 设计文档)。
13
+
14
+ **Scope Deriver(范围推导,唯一实现)**
15
+ - 新增 `scripts/lib/security-scope.mjs`:gitChangedFiles(base_sha 锚定)+ 路径启发式 + spec/arch 关键词 → 10 类触发类别 + 适用项;**排除 change 目录自身**(realpath 归一防 macOS /var 符号链接);推导结果落盘 `<change-dir>/.security-scope.json`(含 `scope_hash`,预像 = 规范化触发集+适用集)。
16
+ - 新增 CLI `tf security scope <change-dir> [--json]` + `tf security baseline`(`scripts/lib/cmd-security.mjs`,COMMANDS + HELP 双注册)。LLM/人从不手写 scope JSON——对账是脚本 vs 脚本(设计 §二.6)。
17
+
18
+ **L2 守卫双维度(guard 33→35 维)**
19
+ - 新增 `scripts/guard/checks/security-baseline.mjs`(重档 full/hotfix/planned)+ `security-baseline-light.mjs`(轻档 quick/lightweight;tweak 豁免)。判定序:存量分档(无 `schema_version` → WARN 软着陆)→ 现场推导落盘 → 无触发静默 PASS(留痕)→ skip 短路(`security_scope_hash` 不匹配即失效)→ 档位分流(重档查 `.security-verification.json` 完备性:适用集 ⊆ items、缺席=uncovered、must uncovered=FAIL / should=WARN、not-applicable reason ≥10 字符或含序号)→ infra 项交接检查(`security/handoff.md` transition 前置)。
20
+ - guard.mjs 四表分挂(基础 TRANSITION / WORKFLOW hotfix / QUICK ×2 / PLANNED);state 三环三键(BUILTIN_DEFAULTS + writeState + SETTABLE_FIELDS:`security_baseline_skipped/_skip_reason/security_scope_hash`)。
21
+ - 反向验证通过:临时移除维度 → 单测 14 红 / 恢复 → 19 绿。
22
+
23
+ **L3/L4/L5 判据送达(三通道 + 时序前置)**
24
+ - L3 code-reviewer 三处同步(agents Output Contract / SKILL Step 2.5 / prompt 模板内联 `[SECURITY_SCOPE_JSON]` 占位);派发侧 workflow-start SKILL + routing-rules 加 `tf security scope` 前置与 dispatch 传参。
25
+ - L4 spec-writer design.md「适用触发类别确认」小节 + planned 主代理分支指引(planned 无 spec-writer);security-sentinel **双副本**(ce-plan + ce-compound)同步增引基线。
26
+ - L5 release-archivist 三分支 handoff 时序前置(legacy ①b / planned ④b / direct ⓪,各在 transition 之前)+ 跨 change 台账 `.team-flow/security-todos.md`;**planned verification 生产者 = 最终审查(P3 修正,planned 不派 code-reviewer)**;hotfix 重档归属 + tweak L5 豁免注记。
27
+ - `doc-consistency.test.mjs` 新增 19 条安全基线注入锚点 + 三分支时序断言(规则送到执行者/派发者,机械守护)。
28
+
29
+ ### Changed
30
+ - 维度计数横展 33→35 共 12 处(guard-dimensions 头部映射 / 使用说明矩阵与出路表 / test-matrix / e2e skill 描述等);`docs/team-flow 使用说明` 新增 security-baseline 维度行 + 门禁出路行。
31
+ - `code-reviewer` "6-step" 计数宣称去数字化(实际已 9 步);`report_path` 交叉核验措辞改「写入者自约束」(当前无机械对账,不虚称)。
32
+
33
+ ### Fixed
34
+ - 非 git 目录跑 `tf security scope` 的 stderr `fatal:` 泄漏(stdio 收窄,只给结构化 `error=no-baseline` 提示)。
35
+
36
+ ### Testing
37
+ - 新增 `tests/lib/guard-security-baseline.test.mjs` 19 例(存量软着陆正反例 / 推导留痕 / skip 三态 / verdict 映射 / 完备性对账 / infra 交接 / 三环写入 / 双载体一致性 / 四档分流);doc-consistency +15;e2e P7 planned 夹具按新流程补 scope+verification。
38
+ - `npm test` 1383→**1419** + `test:e2e` **103** 全绿;`check-versions` PASS;`lint:skills` 本迭代引入 error 清零(余 7 存量);`tf doctor` All checks passed;P4 双门禁 plugin-validator **PASS** / skill-reviewer **PASS_WITH_WARNINGS**(Major/Minor 全修,遗留见 Roadmap P2-72/73)。
39
+
7
40
  ## [0.67.0] - 2026-09-25
8
41
 
9
42
  ### Added(agent-governance 治理演进全量:P0–P2 七批次;设计 = 工作区 `teamflow-agent-governance-design-memo.md` v0.5 + 实施计划 v1.2,P1.5 标准档两轮 + 收官验证 0 Critical)
package/GEMINI.md CHANGED
@@ -8,7 +8,7 @@ The workflow is self-contained and does not require OpenSpec or Superpowers at r
8
8
 
9
9
 
10
10
  <!-- team-flow-phase-guard-start -->
11
- # team-flow v0.67.0 | 阶段: {{state}} | 工作流: {{workflow}}
11
+ # team-flow v0.68.0 | 阶段: {{state}} | 工作流: {{workflow}}
12
12
  当前阶段允许的操作由 workflow-start 路由规则定义。
13
13
  禁止跨越 DP gate 进入下一阶段。变更范围以 execution-contract.md 的 Intent Lock 为准。
14
14
  <!-- team-flow-phase-guard-end -->
package/INSTALL.md CHANGED
@@ -7,7 +7,7 @@
7
7
  - [Fission-AI/OpenSpec](https://github.com/Fission-AI/OpenSpec) — 规划引擎(Schema 验证、Delta Spec、工件解析)
8
8
  - [obra/superpowers](https://github.com/obra/superpowers) — 执行纪律(TDD 铁律、SDD、系统化调试、代码审查)
9
9
 
10
- 当前发布版本:**v0.67.0**。
10
+ 当前发布版本:**v0.68.0**。
11
11
 
12
12
  ---
13
13
 
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # team-flow
2
2
 
3
- > 当前版本:`v0.67.0`
3
+ > 当前版本:`v0.68.0`
4
4
 
5
5
  > 统一插件:**team-flow**(spec 驱动开发)+ **compound-engineering 核心子集**(全局复利)+ **architecture-design**(4A+DDD 增量设计)+ **prototype**(本地 HTML 原型)+ **e2e**(AC 驱动 E2E)+ **workflow-orchestrator**(产品级编排)+ **workflow-bootstrap**(既有项目接入)。一次安装,十三套能力协同(详见下文「十三套能力」)。
6
6
 
@@ -12,7 +12,7 @@ skills:
12
12
 
13
13
  You are an independent Code Reviewer. You review code changes for quality, spec compliance, architecture soundness, and implementation completeness. You write the review report to disk and return a summary.
14
14
 
15
- **Your preloaded Skill contains the detailed methodology** (6-step review process, calibration rules, severity definitions, critical rules). Follow it for HOW. This prompt defines WHO you are and WHAT you must deliver.
15
+ **Your preloaded Skill contains the detailed methodology** (step-by-step review process, calibration rules, severity definitions, critical rules). Follow it for HOW. This prompt defines WHO you are and WHAT you must deliver.
16
16
 
17
17
  ## Iron Law
18
18
 
@@ -37,8 +37,15 @@ Produce a structured review report with the following sections:
37
37
  2. **Verdict**: PASS / PASS_WITH_WARNINGS / FAIL
38
38
  3. **Findings table**: severity, category, file, line, description, suggestion
39
39
  4. **Spec compliance matrix**: spec requirement → implementation status
40
- 5. **Summary**: key strengths, critical issues, recommendations
41
- 6. **Report File**: path to the written report file + confirmation
40
+ 5. **Security Baseline 核验**(security-baseline-integration-design v1.3): 逐条 verdict
41
+ - 适用子集 = 派发时 dispatch prompt 显式传入的 `.security-scope.json` **code-locus 适用项**(**不要自行推导**;缺传参时先跑 `tf security scope <change-dir>` 取)。
42
+ - 每项 verdict ∈ `satisfied | not-applicable | uncovered`;`not-applicable` 必须带 reason(≥10 字符或含控制点序号,否则视同 uncovered);must 项 uncovered = Critical。
43
+ - 核验完成**必须写盘** `<change-dir>/.security-verification.json`:
44
+ `{"items":[{"id":<序号>,"verdict":"...","reason":"..."}], "report_path":"<本报告路径>", "round":<n>}`
45
+ - `report_path` **写为 receipt `--report` 同一路径**(写入者自约束——当前无机械对账,勿声称已核验);guard 只读该 JSON,不解析本报告 markdown。
46
+ - 仅末 wave 产一份;**planned 档不派本 agent**(其 JSON 由 release-archivist 最终审查产,见其 SKILL ④)。
47
+ 6. **Summary**: key strengths, critical issues, recommendations
48
+ 7. **Report File**: path to the written report file + confirmation
42
49
 
43
50
  Your preloaded Skill provides the full report template and formatting guidelines. Write the report to disk, then return summary + file path.
44
51
 
@@ -54,7 +61,7 @@ Your preloaded Skill defines severity levels (Critical / Important / Minor) and
54
61
  ## Red Lines
55
62
 
56
63
  **DO:**
57
- - Follow the preloaded Skill's 6-step review methodology
64
+ - Follow the preloaded Skill's review methodology
58
65
  - Read specs and design BEFORE reading implementation — establish requirements baseline
59
66
  - Cite specific file:line for every finding
60
67
  - Distinguish spec violations (Critical) from style issues (Minor)
package/docs/README_en.md CHANGED
@@ -126,7 +126,7 @@ npm install -g team-flow
126
126
 
127
127
  ### Version
128
128
 
129
- - Current: `v0.67.0`
129
+ - Current: `v0.68.0`
130
130
  - v0.9.1 highlights: DP-4 execution-mode recommendations, a portable runtime across 17 platforms, and a raw-package smoke with no plugin-root variable.
131
131
  - Self-contained — no OpenSpec or Superpowers runtime required
132
132
  - Upstream: [Fission-AI/OpenSpec](https://github.com/Fission-AI/OpenSpec), [obra/superpowers](https://github.com/obra/superpowers)
@@ -1,6 +1,6 @@
1
1
  # team-flow 使用说明(研发团队版)
2
2
 
3
- > 版本锚点:v0.67.0(28 skills + 17 agents)· 更新日期:2026-09-21
3
+ > 版本锚点:v0.68.0(28 skills + 17 agents)· 更新日期:2026-09-21
4
4
  > 读者:使用 team-flow 做日常研发的工程师。不需要你懂插件内部实现,只需要照着路径走。
5
5
  > 配套文档:安装细节见 [INSTALL.md](../INSTALL.md);状态机细节见 [state-machine.md](state-machine.md);决策点细节见 [decision-points.md](decision-points.md);平台差异见 [platform-matrix.md](platform-matrix.md)。
6
6
 
@@ -173,7 +173,7 @@ workflow-start 在初始化时自动推断(`tf runtime infer`),你也可
173
173
  | 模式 | 判据(自动推断) | 特点 | 门禁差异(对比 full) |
174
174
  |------|----------------|------|--------|
175
175
  | **full** | 默认(不满足下面两个) | 全流程:需求探索→架构门→四件套→契约→执行计划→TDD→逐 wave 审查→完整收尾 | 基准:`executing→closing` 挂 10 维 |
176
- | **hotfix** | ≤2 任务、≤2 文件,且不动 schema/API、不新增模块 | 跳过需求探索和规划制品,最小契约仍需 DP-3 批准 | 入口换一套更轻的维度:`contract-current`+`dp3-approved` 取代 full 的 artifacts-exist / schema-valid / contract-fresh / dp-gate-passed;不查 `test-matrix-ready`。出口 6 维——省 `test-matrix-complete`、`arch-snapshot`、`delegation-status`、`arch-merged`,**但执行计划与逐 wave 审查回执仍要** |
176
+ | **hotfix** | ≤2 任务、≤2 文件,且不动 schema/API、不新增模块 | 跳过需求探索和规划制品,最小契约仍需 DP-3 批准 | 入口换一套更轻的维度:`contract-current`+`dp3-approved` 取代 full 的 artifacts-exist / schema-valid / contract-fresh / dp-gate-passed;不查 `test-matrix-ready`。出口 7 维——省 `test-matrix-complete`、`arch-snapshot`、`delegation-status`、`arch-merged`,**但执行计划、逐 wave 审查回执与 `security-baseline`(v1.3 重档)仍要** |
177
177
  | **tweak** | ≤4 任务,且文件全是配置/文档类(无代码文件)、不动 schema/API、不新增模块 | 直接进 approved-for-build,直接编辑 | 入口不查 `execution-plan-ready` / `test-matrix-ready`,但仍查 `artifacts-exist`+`contract-fresh`+`dp-gate-passed`。出口仅 3 维(`tasks-complete`、`tests-passing`、`specs-merged`),省掉其余 7 项 |
178
178
 
179
179
  **注意三件事**:
@@ -232,7 +232,7 @@ workflow-start 在初始化时自动推断(`tf runtime infer`),你也可
232
232
  tf runtime guard check <change-dir> <from-state> <to-state> [--workflow full|hotfix|tweak]
233
233
  ```
234
234
 
235
- **full 模式的完整转换矩阵**(**33 个维度** + 1 个 workflow 限制维度;v0.64.0 增 quick/lightweight/planned 轻路径 11 维;agent-governance P1-1 增 **prd-clarity / history-risk** 接活前双维度——**无记录/INDEX 空的冷启动场景**零行为变化;INDEX 积累丰富的项目 history-risk 命中即阻断,属该维 experimental 设计而非回归):
235
+ **full 模式的完整转换矩阵**(**35 个维度** + 1 个 workflow 限制维度;v0.64.0 增 quick/lightweight/planned 轻路径 11 维;agent-governance P1-1 增 **prd-clarity / history-risk** 接活前双维度——**无记录/INDEX 空的冷启动场景**零行为变化;INDEX 积累丰富的项目 history-risk 命中即阻断,属该维 experimental 设计而非回归):
236
236
 
237
237
  | 转换 | 维度 |
238
238
  |------|------|
@@ -240,7 +240,7 @@ tf runtime guard check <change-dir> <from-state> <to-state> [--workflow full|hot
240
240
  | specifying→bridging | artifacts-exist、schema-valid |
241
241
  | bridging→approved-for-build | artifacts-exist、schema-valid、contract-fresh、dp-gate-passed、dp3-approved、**gates-probed**(v0.63.0)、**prd-clarity**、**history-risk**(P1-1) |
242
242
  | approved-for-build→executing | artifacts-exist、contract-fresh、dp-gate-passed、execution-plan-ready、test-matrix-ready、**prd-clarity**、**history-risk**(P1-1) |
243
- | **executing→closing** | **11 维**:**contract-fresh(v0.63.0)**、tasks-complete、tests-passing、specs-merged、execution-plan-ready、execution-reviews-passed、compound-captured、test-matrix-complete、arch-snapshot、delegation-status、arch-merged |
243
+ | **executing→closing** | **12 维**:**contract-fresh(v0.63.0)**、tasks-complete、tests-passing、specs-merged、execution-plan-ready、execution-reviews-passed、compound-captured、test-matrix-complete、arch-snapshot、delegation-status、arch-merged、**security-baseline(v1.3)** |
244
244
  | executing↔debugging | debugging 入口无门禁;回 executing 挂 contract-fresh、execution-plan-ready |
245
245
  | exploring→bridging / exploring→approved-for-build | 0 维,但**一一对应**:`exploring→bridging` 仅 hotfix 可走、`exploring→approved-for-build` 仅 tweak 可走;full 走或其他组合都直接 FAIL |
246
246
  | 7 条回退 + 6 条放弃 | 0 维(回退是合法操作,不需要门禁放行) |
@@ -261,7 +261,9 @@ tf runtime guard check <change-dir> <from-state> <to-state> [--workflow full|hot
261
261
  | compound-captured | executing→closing | 缺 `learnings.md`(change 根目录,非空)→ 写它,或 `tf state set <dir> compound_skipped true` |
262
262
  | arch-snapshot | executing→closing | 产品级架构快照缺失 → 补快照或物化 SKIPPED 标记 |
263
263
  | arch-merged | executing→closing | 架构增量未回写全局台账 → **先跑 `tf arch-merge <change-dir>` 再转换**(v0.53.0 B' 时序);确无增量可回写时 `tf state set <dir> arch_merge_skipped true` + `arch_merge_skip_reason` |
264
+ | security-baseline(v1.3) | executing→closing | 缺 `.security-verification.json` → 派发 code-reviewer(末 wave / planned 最终审查)产核验 JSON(dispatch 传 `[SECURITY_SCOPE_JSON]`);命中 infra 项缺 handoff → transition 前写 `security/handoff.md`;整体确不适用 → `tf state set <dir> security_baseline_skipped true` + `security_baseline_skip_reason` + `security_scope_hash`(取 `tf security scope` 输出) |
264
265
  | delegation-status | executing→closing | 非 glaf4-delegation 模式直接 PASS;该模式须 `delegation_status=success` |
266
+ | security-baseline / security-baseline-light(v1.3) | executing→closing(重档 full/hotfix/planned;轻档 quick/lightweight;tweak 豁免) | 现场推导 `.security-scope.json`:无适用触发类别=静默 PASS(留痕);重档须 `.security-verification.json` 逐条 verdict(must uncovered=FAIL、缺席=uncovered);命中 infra 项须 transition 前写 `security/handoff.md`;skip 出路 `security_baseline_skipped`+`security_baseline_skip_reason`+`security_scope_hash`(三键,hash 变即失效);存量(无 `schema_version`)WARN 软着陆 |
265
267
  | artifacts-exist / schema-valid | specifying→bridging 起 | 四件套缺失或 Validator 不通过(SHALL/MUST、Scenario、跨段冲突) |
266
268
  | prd-clarity | 接活前(bridging→approved / approved→executing,quick/lightweight/planned 前门) | 产品级 PRD 清晰度记录为 fail → 回 S2 重跑 `tf prd check-clarity` 修至 PASS 后重建 change;无记录 = 中性放行(存量/direct/hotfix) |
267
269
  | history-risk | 同上(experimental) | solutions INDEX 中**按 change 名词根匹配**的条目 N≥3 且最高 severity=critical → 阻断。**出路(改数据源头,无 state 确认通道)**:① 坑已根治 → 按 compound 退役/降档处理相关条目后重建 INDEX;② 误关联 → 调整 change 名避开词根。N<3 / INDEX 空 / 无匹配 = 中性 |
@@ -754,4 +756,4 @@ tf runtime guard check <change-dir> <from> <to> --json
754
756
 
755
757
  ---
756
758
 
757
- *本文档基于 v0.60.0 源码全量核对产出(2026-09-13 同步),v0.67.0 增量同步 agent-governance 改动(33 维矩阵 / prd-clarity·history-risk 出路 / 复利注入与见习门控,2026-09-25)。发现与实际行为不符,请 `/team-flow:workflow-feedback` 反馈——这正是本插件的演进方式。*
759
+ *本文档基于 v0.60.0 源码全量核对产出(2026-09-13 同步),v0.67.0 增量同步 agent-governance 改动(35 维矩阵——v1.3 增 security-baseline 双维度,2026-09-30;prd-clarity·history-risk 出路 / 复利注入与见习门控,2026-09-25)。发现与实际行为不符,请 `/team-flow:workflow-feedback` 反馈——这正是本插件的演进方式。*
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "team-flow",
3
3
  "description": "Unified workflow plugin: team-flow (spec-driven dev) + compound-engineering core subset + architecture-design (4A/DDD) + prototype (local HTML) + business-analysis (independent requirement/scenario artifact) + jarvis (team-flow decision agent, opt-in). 28 skills, one install.",
4
- "version": "0.67.0",
4
+ "version": "0.68.0",
5
5
  "contextFileName": "GEMINI.md"
6
6
  }
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env bash
2
- # v0.67.0: auto-sync CLI version with plugin version
2
+ # v0.68.0: auto-sync CLI version with plugin version
3
3
  set -e
4
4
 
5
5
  # ═══════════════════════════════════════════════════════════════
6
6
  # Plugin version (update this when releasing new versions)
7
7
  # ═══════════════════════════════════════════════════════════════
8
- PLUGIN_VERSION="0.67.0"
8
+ PLUGIN_VERSION="0.68.0"
9
9
 
10
10
  # ═══════════════════════════════════════════════════════════════
11
11
  # Step 1: Auto-sync CLI version with plugin version
package/llms.txt CHANGED
@@ -3,7 +3,7 @@
3
3
  ## Overview
4
4
  spec-superflow is a self-contained workflow integration plugin for Claude Code, Cursor, OpenAI Codex CLI/App, GitHub Copilot CLI, Gemini CLI, OpenCode, WorkBuddy, and Trae. It merges spec-driven planning artifacts (proposal, specs, design, tasks) with disciplined execution guardrails (TDD, review gates, controlled handoff) into one unified workflow.
5
5
 
6
- Current version: v0.67.0.
6
+ Current version: v0.68.0.
7
7
 
8
8
  ## Key Documents
9
9
  - README.md: Chinese homepage with full usage guide and FAQ
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xulthekl/team-flow",
3
- "version": "0.67.0",
3
+ "version": "0.68.0",
4
4
  "description": "Unified plugin (28 skills + 17 agents) integrating team-flow, compound-engineering, architecture-design, prototype, design-system, workflow-orchestrator, workflow-bootstrap, e2e, session-handoff, workflow-feedback, business-analysis for multi-agent coding tools.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/plugin.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "team-flow",
3
- "version": "0.67.0",
3
+ "version": "0.68.0",
4
4
  "description": "Unified workflow plugin: team-flow (spec-driven dev: TDD/SDD/code-review/debugging) + compound-engineering core subset (brainstorm/plan/compound/strategy/ideate/proof, global compounding) + architecture-design (4A+DDD incremental design & global compounding) + prototype (local HTML prototype, zero external deps) + e2e (Playwright E2E, AC-driven) + workflow-orchestrator (product-level workflow orchestration) + workflow-bootstrap (existing project onboarding) + session-handoff (context transfer) + workflow-feedback (issue tracking) + business-analysis (independent requirement/scenario artifact) + design-system (design tokens + component contract + AI primer + showcase) + test-strategy (test strategy design) + project-initialize (new service onboarding) + jarvis (team-flow decision agent, opt-in). 28 skills + 17 agents, one install.",
5
5
  "author": {
6
6
  "name": "LT"
@@ -0,0 +1,9 @@
1
+ // scripts/guard/checks/security-baseline-light.mjs — 安全基线闸门(轻档:quick/lightweight)
2
+ // 设计:docs/plan/security-baseline-integration-design.md v1.3 §L2
3
+ // 与重档共享全部判定(存量分档 / 推导落盘 / skip 短路 / infra 交接),
4
+ // **省略逐条 verdict 核验**(direct 档无审查 receipt,verification 无生产者——诚实降级 §八.5)。
5
+ import { evaluateSecurityBaseline } from './security-baseline.mjs';
6
+
7
+ export function checkSecurityBaselineLight(changeDir) {
8
+ return evaluateSecurityBaseline(changeDir, 'light');
9
+ }
@@ -0,0 +1,141 @@
1
+ // scripts/guard/checks/security-baseline.mjs — 安全基线闸门(重档:full/hotfix/planned)
2
+ // 设计:docs/plan/security-baseline-integration-design.md v1.3 §L2
3
+ // 输入只读结构化制品,不解析 markdown 审查报告:
4
+ // ① .security-scope.json(现场推导落盘,security-scope.mjs 唯一实现)
5
+ // ② .security-verification.json(L3 code-reviewer 产出)
6
+ // ③ state 键(security_baseline_skipped / _skip_reason / security_scope_hash + schema_version)
7
+ // 判定序(v1.3 重排):存量分档 → 现场推导 → 无类别 PASS → skip 短路 →
8
+ // 重/轻档分流(完备性对账 + verdict 映射)→ infra 交接检查。
9
+ import { existsSync, readFileSync } from 'node:fs';
10
+ import { join } from 'node:path';
11
+ import { readState } from '../../lib/state-loader.mjs';
12
+ import { deriveSecurityScope, loadSecurityBaseline, readScopeFile } from '../../lib/security-scope.mjs';
13
+
14
+ const VERIFICATION_FILE = '.security-verification.json';
15
+ const HANDOFF_REL = join('security', 'handoff.md');
16
+
17
+ function readVerification(changeDir) {
18
+ const p = join(changeDir, VERIFICATION_FILE);
19
+ if (!existsSync(p)) return null;
20
+ try { return JSON.parse(readFileSync(p, 'utf-8')); } catch { return 'malformed'; }
21
+ }
22
+
23
+ // verdict → 门禁映射(设计 §L3,写死):
24
+ // must+satisfied / should+satisfied → PASS
25
+ // not-applicable → 须过 reason 判据(≥10 字符或含控制点序号),否则视同 uncovered
26
+ // uncovered / 缺席 → must=FAIL,should=WARN(不阻断)
27
+ function evaluateVerdicts(baseline, scope, verification) {
28
+ const failures = [];
29
+ const warnings = [];
30
+ const byId = new Map((verification.items || []).map(i => [Number(i.id), i]));
31
+ const reasonOk = (v, id) => {
32
+ const r = (v.reason || '').trim();
33
+ return r.length >= 10 || r.includes(String(id));
34
+ };
35
+
36
+ for (const id of scope.code_item_ids) {
37
+ const item = baseline.items.find(b => b.id === id);
38
+ const v = byId.get(id);
39
+ const must = item?.severity === 'must';
40
+ if (!v) {
41
+ // 完备性对账:适用项缺席 = uncovered(防空/残缺 items 空过,设计 §L3)
42
+ (must ? failures : warnings).push(`#${id} ${item?.title ?? ''} 缺席于 verification(=uncovered)`);
43
+ continue;
44
+ }
45
+ if (v.verdict === 'satisfied') continue;
46
+ if (v.verdict === 'not-applicable') {
47
+ if (!reasonOk(v, id)) {
48
+ failures.push(`#${id} not-applicable 的 reason 不合格(需 ≥10 字符或含序号)`);
49
+ }
50
+ continue;
51
+ }
52
+ // uncovered 或未知 verdict(未知按 uncovered,fail-closed)
53
+ if (must) failures.push(`#${id} ${item?.title ?? ''} uncovered(must)`);
54
+ else warnings.push(`#${id} ${item?.title ?? ''} uncovered(should,WARN 不阻断)`);
55
+ }
56
+ return { failures, warnings };
57
+ }
58
+
59
+ /**
60
+ * 核心求值。mode = 'full'(查 verification)| 'light'(跳过逐条核验)
61
+ */
62
+ export function evaluateSecurityBaseline(changeDir, mode) {
63
+ const state = readState(changeDir);
64
+
65
+ // 步 1:存量分档(单一判据 = 无 schema_version → WARN 软着陆,设计 §二.3)
66
+ if (state.schema_version == null) {
67
+ return { pass: true, failures: [], reason: 'legacy soft-land: no schema_version (存量 change,安全基线不阻断)' };
68
+ }
69
+
70
+ // 步 2:现场推导(写盘留痕;推导失败 fail-closed)
71
+ let scope;
72
+ try {
73
+ scope = deriveSecurityScope(changeDir, { source: 'guard' });
74
+ } catch (e) {
75
+ return { pass: false, failures: [`security scope derive crashed: ${e.message}`] };
76
+ }
77
+ if (scope.error) {
78
+ return {
79
+ pass: false,
80
+ failures: [`scope derive degraded (error=${scope.error}) — 无法推导适用范围,fail-closed;检查 git 基线(tf state init 打戳 base_sha)后重试 tf security scope`],
81
+ };
82
+ }
83
+
84
+ // 步 3:无适用触发类别 → PASS(已落盘留痕,可区分"无触发"与"门禁未生效")
85
+ if (scope.triggered_categories.length === 0) {
86
+ return { pass: true, failures: [], reason: `no applicable trigger categories (${scope.files_scanned} surface files scanned); scope written for audit` };
87
+ }
88
+
89
+ // 步 4:skip 短路(最先于实质检查;hash 不匹配 = 范围已变 → skip 失效继续)
90
+ const skipped = state.security_baseline_skipped === true || state.security_baseline_skipped === 'true';
91
+ if (skipped) {
92
+ const reason = (state.security_baseline_skip_reason || '').trim();
93
+ if (!reason || reason === 'null') {
94
+ return { pass: false, failures: ['security_baseline_skipped=true but no skip reason — set security_baseline_skip_reason via tf state set'] };
95
+ }
96
+ if (state.security_scope_hash && state.security_scope_hash === scope.scope_hash) {
97
+ return { pass: true, failures: [], reason: `skipped: ${reason}` };
98
+ }
99
+ // hash 缺失/不匹配 → skip 失效(fail-closed 方向),继续实质检查
100
+ }
101
+
102
+ // 步 5:档位分流
103
+ if (mode === 'full') {
104
+ const ver = readVerification(changeDir);
105
+ if (!ver) {
106
+ return {
107
+ pass: false,
108
+ failures: [`.security-verification.json missing — 派发 code-reviewer(末 wave / planned 最终审查)产核验 JSON;无适用 code 项时亦须落盘(空 items + 全 N/A 说明)`],
109
+ };
110
+ }
111
+ if (ver === 'malformed') {
112
+ return { pass: false, failures: ['.security-verification.json malformed (JSON parse failed)'] };
113
+ }
114
+ const baseline = loadSecurityBaseline();
115
+ const { failures, warnings } = evaluateVerdicts(baseline, scope, ver);
116
+ if (failures.length) {
117
+ return { pass: false, failures, ...(warnings.length ? { warnings } : {}) };
118
+ }
119
+ if (warnings.length) {
120
+ return { pass: true, failures: [], reason: `pass with WARN: ${warnings.join('; ')}` };
121
+ }
122
+ }
123
+ // light 档(quick/lightweight):不查 verification(direct 档无审查 receipt,设计 §八.5)
124
+
125
+ // 步 6:infra/config/process 交接检查(检查对象 = handoff.md,台账不进 guard)
126
+ if (scope.infra_item_ids.length > 0) {
127
+ const handoffPath = join(changeDir, HANDOFF_REL);
128
+ if (!existsSync(handoffPath) || !readFileSync(handoffPath, 'utf-8').trim()) {
129
+ return {
130
+ pass: false,
131
+ failures: [`infra-scope items ${scope.infra_item_ids.join('/')} apply but security/handoff.md missing or empty — write the handoff BEFORE tf state transition closing (设计 §L5 时序)`],
132
+ };
133
+ }
134
+ }
135
+
136
+ return { pass: true, failures: [] };
137
+ }
138
+
139
+ export function checkSecurityBaseline(changeDir) {
140
+ return evaluateSecurityBaseline(changeDir, 'full');
141
+ }
@@ -36,6 +36,9 @@ import { checkCompoundWritebackLight } from './checks/compound-writeback-light.m
36
36
  import { checkTestMergedLight } from './checks/test-merged-light.mjs';
37
37
  import { checkCrossChangeConsistencyLight } from './checks/cross-change-consistency-light.mjs';
38
38
  import { checkExecutionReviewsPassedLight } from './checks/execution-reviews-passed-light.mjs';
39
+ // security-baseline-integration-design v1.3:安全基线双维度(executing→closing)
40
+ import { checkSecurityBaseline } from './checks/security-baseline.mjs';
41
+ import { checkSecurityBaselineLight } from './checks/security-baseline-light.mjs';
39
42
 
40
43
  // Transition matrix: <from>:<to> → required check dimensions
41
44
  const TRANSITION_CHECKS = {
@@ -82,7 +85,12 @@ const TRANSITION_CHECKS = {
82
85
  // artifacts_hash)→ **伪绿静默通过**。本维度直接比对 state.artifacts_hash 与制品实算值,
83
86
  // refresh-hash 无法清屏(它只改 plan JSON,不碰 state)——故为 refresh-hash 之外的独立锚。
84
87
  // hotfix/tweak 不挂:二者跳过 spec-writer、无 planning 四件,冻结机制本身 N/A(设计 §3.9)。
85
- 'executing:closing': ['contract-fresh', 'tasks-complete', 'tests-passing', 'specs-merged', 'execution-plan-ready', 'execution-reviews-passed', 'compound-captured', 'test-matrix-complete', 'arch-snapshot', 'delegation-status', 'arch-merged'],
88
+ // v1.3(security-baseline-integration-design):security-baseline 新增——
89
+ // 44 项企业安全基线的机械闸门(现场推导 scope + verification 完备性 + infra 交接)。
90
+ // full(legacy variant)走本基表;hotfix 走 WORKFLOW 表、planned 走 PLANNED 表、
91
+ // quick/lightweight 走 QUICK 表挂 -light 变体、tweak 天然不挂(豁免)。
92
+ // 存量 change(无 schema_version)WARN 软着陆,冷启动零行为变化。
93
+ 'executing:closing': ['contract-fresh', 'tasks-complete', 'tests-passing', 'specs-merged', 'execution-plan-ready', 'execution-reviews-passed', 'compound-captured', 'test-matrix-complete', 'arch-snapshot', 'delegation-status', 'arch-merged', 'security-baseline'],
86
94
 
87
95
  // Debugging side-path
88
96
  'executing:debugging': [],
@@ -116,7 +124,9 @@ const WORKFLOW_TRANSITION_CHECKS = {
116
124
  'bridging:approved-for-build': ['contract-current', 'dp3-approved'],
117
125
  'approved-for-build:executing': ['contract-current', 'dp3-approved', 'execution-plan-ready'],
118
126
  // hotfix exemption: no test-matrix-complete (v0.12 §45.3)
119
- 'executing:closing': ['tasks-complete', 'tests-passing', 'specs-merged', 'execution-plan-ready', 'execution-reviews-passed', 'compound-captured'],
127
+ // v1.3:security-baseline 重档——hotfix 走逐 wave 审查(execution-reviews-passed 已挂),
128
+ // code-reviewer 派发即 verification 生产者,重档不死锁(P1.5 R3-C1 裁定回滚)。
129
+ 'executing:closing': ['tasks-complete', 'tests-passing', 'specs-merged', 'execution-plan-ready', 'execution-reviews-passed', 'compound-captured', 'security-baseline'],
120
130
  },
121
131
  tweak: {
122
132
  'exploring:approved-for-build': [],
@@ -141,14 +151,15 @@ const QUICK_TRANSITION_CHECKS = {
141
151
  quick: {
142
152
  'exploring:approved-for-build': ['direct-short-path', 'prd-clarity', 'history-risk'],
143
153
  'approved-for-build:executing': ['direct-short-path', 'test-matrix-ready', 'prd-clarity', 'history-risk'],
144
- 'executing:closing': ['direct-short-path', 'direct-test-result', 'test-matrix-complete'],
154
+ // v1.3:security-baseline-light——direct 档无审查 receipt,省逐条 verdict(设计 §八.5)
155
+ 'executing:closing': ['direct-short-path', 'direct-test-result', 'test-matrix-complete', 'security-baseline-light'],
145
156
  'executing:debugging': [],
146
157
  'debugging:executing': ['direct-test-result'],
147
158
  },
148
159
  lightweight: {
149
160
  'exploring:approved-for-build': ['direct-short-path', 'prd-clarity', 'history-risk'],
150
161
  'approved-for-build:executing': ['direct-short-path', 'test-matrix-ready', 'prd-clarity', 'history-risk'],
151
- 'executing:closing': ['direct-short-path', 'direct-test-result', 'lightweight-completion-evidence', 'test-matrix-complete'],
162
+ 'executing:closing': ['direct-short-path', 'direct-test-result', 'lightweight-completion-evidence', 'test-matrix-complete', 'security-baseline-light'],
152
163
  'executing:debugging': [],
153
164
  'debugging:executing': ['direct-test-result'],
154
165
  },
@@ -166,6 +177,8 @@ const PLANNED_TRANSITION_CHECKS = {
166
177
  'execution-plan-ready', 'execution-reviews-passed-light', 'test-matrix-complete',
167
178
  'tests-passing', 'arch-merged-light', 'compound-writeback-light', 'test-merged-light',
168
179
  'cross-change-consistency-light', 'delegation-status', 'specs-merged', 'tasks-complete',
180
+ // v1.3:security-baseline 重档(planned 有最终审查,verification 有生产者)
181
+ 'security-baseline',
169
182
  ],
170
183
  'executing:debugging': [],
171
184
  'debugging:executing': ['execution-plan-ready', 'tests-passing'],
@@ -298,7 +311,7 @@ async function main() {
298
311
  'test-matrix-complete': (dir) => checkTestMatrixComplete(dir, CTX),
299
312
  'test-matrix-ready': (dir) => checkTestMatrixReady(dir, CTX),
300
313
  'gates-probed': (dir) => checkGatesProbed(dir),
301
- // agent-governance P1-1(33 维):接活前双维度。缺失态中性——冷启动零行为变化。
314
+ // agent-governance P1-1:接活前双维度。缺失态中性——冷启动零行为变化。
302
315
  'prd-clarity': (dir) => checkPrdClarityState(dir),
303
316
  'history-risk': (dir) => checkHistoryRisk(dir),
304
317
  'arch-readiness': (dir) => checkArchReadiness(dir),
@@ -317,6 +330,10 @@ async function main() {
317
330
  'test-merged-light': (dir) => checkTestMergedLight(dir),
318
331
  'cross-change-consistency-light': (dir) => checkCrossChangeConsistencyLight(dir),
319
332
  'execution-reviews-passed-light': (dir) => checkExecutionReviewsPassedLight(dir),
333
+ // security-baseline-integration-design v1.3(35 维):安全基线双维度。
334
+ // 重档(full/hotfix/planned)查 verification 完备性;轻档(quick/lightweight)省逐条核验。
335
+ 'security-baseline': (dir) => checkSecurityBaseline(dir),
336
+ 'security-baseline-light': (dir) => checkSecurityBaselineLight(dir),
320
337
  };
321
338
 
322
339
  const checks = [];
@@ -0,0 +1,61 @@
1
+ // scripts/lib/cmd-security.mjs — tf security 子命令
2
+ // v1.3(security-baseline-integration-design):`tf security scope <change-dir> [--json]`
3
+ // 运行共享推导模块(scripts/lib/security-scope.mjs 唯一实现),落盘 .security-scope.json
4
+ // 并打印 scope_hash。调用点:① L3 派发前(主会话取适用子集随 dispatch prompt 传参)
5
+ // ② 人工刷新(guard 对账 FAIL 后重跑)。LLM/人从不手写 scope JSON(设计 §二.6)。
6
+ import { parseArgs } from 'node:util';
7
+ import { deriveSecurityScope, loadSecurityBaseline, SCOPE_FILE } from './security-scope.mjs';
8
+
9
+ export async function run(args) {
10
+ const { positionals, values } = parseArgs({
11
+ args,
12
+ options: { json: { type: 'boolean', default: false } },
13
+ allowPositionals: true,
14
+ });
15
+
16
+ const sub = positionals[0];
17
+
18
+ if (sub === 'baseline') {
19
+ // tf security baseline [--json] — 查看基线双载体(人类可读路径 + 版本锚)
20
+ const data = loadSecurityBaseline();
21
+ if (values.json) {
22
+ console.log(JSON.stringify({
23
+ baseline_version: data.baseline_version,
24
+ items: data.items.length,
25
+ path: new URL('../../skills/ce-brainstorm/references/security-baseline.json', import.meta.url).pathname,
26
+ }, null, 2));
27
+ } else {
28
+ console.log(`security-baseline ${data.baseline_version} — ${data.items.length} items (md+json 双载体,见 skills/ce-brainstorm/references/security-baseline.md)`);
29
+ }
30
+ return 0;
31
+ }
32
+
33
+ if (sub !== 'scope') {
34
+ console.error('Usage: tf security <scope|baseline> <args>\n' +
35
+ ' scope <change-dir> [--json] 推导适用触发类别并落盘 .security-scope.json\n' +
36
+ ' baseline [--json] 查看 44 项基线版本锚');
37
+ return 2;
38
+ }
39
+
40
+ const changeDir = positionals[1];
41
+ if (!changeDir) {
42
+ console.error('Usage: tf security scope <change-dir> [--json]');
43
+ return 2;
44
+ }
45
+
46
+ const result = deriveSecurityScope(changeDir, { source: 'cli' });
47
+
48
+ if (values.json) {
49
+ console.log(JSON.stringify(result, null, 2));
50
+ } else {
51
+ if (result.error) {
52
+ console.error(`scope derive degraded (error=${result.error}) — 基线/diff 不可用,gate 侧将 fail-closed`);
53
+ }
54
+ console.log(`Scope written: ${SCOPE_FILE}`);
55
+ console.log(` triggered: ${result.triggered_categories.length ? result.triggered_categories.join(', ') : '(none — 静默 PASS 类别)'}`);
56
+ console.log(` applicable items: ${result.applicable_items.length} (code: ${result.code_item_ids.length}, infra-only: ${result.infra_item_ids.length})`);
57
+ console.log(` scope_hash: ${result.scope_hash}`);
58
+ }
59
+ // 推导失败(无基线/diff 失败)按 fail-closed 返回非零,供调用方判断
60
+ return result.error ? 1 : 0;
61
+ }
@@ -78,6 +78,11 @@ const SETTABLE_FIELDS = [
78
78
  'gates_probed_skipped', 'gates_probed_skip_reason', 'gates_probed_na',
79
79
  // v0.64.0(§4 arch-design-light):轻架构说明显式跳过键(须附理由)
80
80
  'arch_design_light_skipped', 'arch_design_light_skip_reason',
81
+ // security-baseline-integration-design v1.3(§L2 三环第 3 环):安全基线跳过三键。
82
+ // 三键必须与 state-loader BUILTIN_DEFAULTS + writeState 序列化分支同步注册,
83
+ // 缺任一环即「回显成功却零写入」。skip 写入规范:设置 skipped 必须同批带
84
+ // security_scope_hash(值取最近 tf security scope 输出),hash 缺失时 guard 判 skip 失效。
85
+ 'security_baseline_skipped', 'security_baseline_skip_reason', 'security_scope_hash',
81
86
  ];
82
87
 
83
88
  export async function run(args) {