@llman-sdd/core 0.3.1 → 0.5.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.
- package/package.json +2 -1
- package/src/archive/freeze.ts +86 -18
- package/src/archive/frozenCard.ts +105 -0
- package/src/archive/sevenzip.ts +15 -13
- package/src/change/closeOutHarness.ts +29 -0
- package/src/change/collect.ts +140 -0
- package/src/change/frontmatter.ts +48 -6
- package/src/change/id.ts +2 -6
- package/src/change/lifecycle.ts +285 -86
- package/src/change/nextId.ts +63 -2
- package/src/change/resolve.ts +2 -2
- package/src/change/tasks.ts +59 -0
- package/src/config/changeId.ts +14 -12
- package/src/config/load.ts +14 -0
- package/src/config/schema.ts +4 -41
- package/src/config/surface.ts +6 -36
- package/src/context/indexStore.ts +7 -3
- package/src/context/retrieve.ts +8 -10
- package/src/context/tree.ts +28 -24
- package/src/git/spawnGit.ts +90 -2
- package/src/index.ts +67 -59
- package/src/init/defaultConfig.ts +1 -5
- package/src/init/init.ts +19 -4
- package/src/ports.ts +1 -7
- package/src/project/migrateNotes.ts +104 -0
- package/src/render/machine.ts +30 -0
- package/src/report/collect.ts +11 -127
- package/src/report/graph/analysis.ts +152 -0
- package/src/report/graph/deps.ts +30 -0
- package/src/report/graph/graphData.ts +53 -0
- package/src/report/graph/nodes.ts +130 -0
- package/src/report/graph/render.ts +83 -0
- package/src/report/graph/types.ts +47 -0
- package/src/report/graph.ts +9 -381
- package/src/report/show.ts +20 -22
- package/src/report/specHelpers.ts +42 -21
- package/src/report/specs.ts +23 -25
- package/src/review/review.ts +45 -30
- package/src/spec/authoring.ts +91 -63
- package/src/spec/ir.ts +43 -15
- package/src/spec/migrateNative.ts +167 -0
- package/src/spec/parser.ts +73 -77
- package/src/spec/reqRegistry.ts +8 -9
- package/src/templates/embedded.ts +10 -16
- package/src/templates/engine.ts +10 -5
- package/src/templates/locale.ts +1 -1
- package/src/templates/skills.ts +4 -5
- package/src/validation/changeCheck.ts +128 -105
- package/src/validation/harness.ts +161 -0
- package/src/validation/staleness.ts +9 -5
- package/src/validation/validate.ts +60 -88
- package/templates/en/skills/llman-sdd-apply-cycle.md +20 -28
- package/templates/en/skills/llman-sdd-apply.md +58 -76
- package/templates/en/skills/llman-sdd-arch-review.md +12 -19
- package/templates/en/skills/llman-sdd-archive.md +27 -42
- package/templates/en/skills/llman-sdd-continue.md +17 -24
- package/templates/en/skills/llman-sdd-draft.md +17 -28
- package/templates/en/skills/llman-sdd-explore.md +29 -43
- package/templates/en/skills/llman-sdd-ff.md +12 -17
- package/templates/en/skills/llman-sdd-graph.md +14 -32
- package/templates/en/skills/llman-sdd-propose.md +48 -63
- package/templates/en/skills/llman-sdd-quick.md +12 -27
- package/templates/en/skills/llman-sdd-research.md +13 -24
- package/templates/en/skills/llman-sdd-specs-compact.md +14 -39
- package/templates/en/skills/llman-sdd-validate.md +11 -15
- package/templates/en/skills/llman-sdd-verify.md +23 -44
- package/templates/en/skills/llman-sdd-wayfinder.md +18 -22
- package/templates/en/units/skills/cli-footer.md +2 -0
- package/templates/en/units/skills/git-native-flow-brief.md +7 -6
- package/templates/en/units/skills/git-native-flow.md +21 -11
- package/templates/en/units/skills/human-readable-summary.md +2 -3
- package/templates/en/units/skills/stage-guard.md +7 -7
- package/templates/en/units/skills/structured-protocol.md +5 -8
- package/templates/en/units/skills/validation-hints.md +10 -14
- package/templates/en/units/spec/feature-contract.md +27 -16
- package/templates/en/units/workflow/archive-freeze-guidance.md +6 -3
- package/templates/zh-Hans/skills/llman-sdd-apply-cycle.md +23 -31
- package/templates/zh-Hans/skills/llman-sdd-apply.md +63 -81
- package/templates/zh-Hans/skills/llman-sdd-arch-review.md +21 -28
- package/templates/zh-Hans/skills/llman-sdd-archive.md +29 -44
- package/templates/zh-Hans/skills/llman-sdd-continue.md +17 -24
- package/templates/zh-Hans/skills/llman-sdd-draft.md +18 -29
- package/templates/zh-Hans/skills/llman-sdd-explore.md +34 -48
- package/templates/zh-Hans/skills/llman-sdd-ff.md +13 -18
- package/templates/zh-Hans/skills/llman-sdd-graph.md +16 -34
- package/templates/zh-Hans/skills/llman-sdd-propose.md +51 -65
- package/templates/zh-Hans/skills/llman-sdd-quick.md +15 -30
- package/templates/zh-Hans/skills/llman-sdd-research.md +17 -28
- package/templates/zh-Hans/skills/llman-sdd-specs-compact.md +15 -40
- package/templates/zh-Hans/skills/llman-sdd-validate.md +11 -15
- package/templates/zh-Hans/skills/llman-sdd-verify.md +26 -47
- package/templates/zh-Hans/skills/llman-sdd-wayfinder.md +25 -29
- package/templates/zh-Hans/units/skills/cli-footer.md +2 -0
- package/templates/zh-Hans/units/skills/git-native-flow-brief.md +7 -6
- package/templates/zh-Hans/units/skills/git-native-flow.md +22 -12
- package/templates/zh-Hans/units/skills/human-readable-summary.md +4 -5
- package/templates/zh-Hans/units/skills/stage-guard.md +9 -9
- package/templates/zh-Hans/units/skills/structured-protocol.md +5 -8
- package/templates/zh-Hans/units/skills/validation-hints.md +10 -14
- package/templates/zh-Hans/units/spec/feature-contract.md +25 -16
- package/templates/zh-Hans/units/workflow/archive-freeze-guidance.md +6 -2
- package/templates/en/skills/llman-sdd-onboard.md +0 -34
- package/templates/en/skills/llman-sdd-show.md +0 -24
- package/templates/en/units/migrate-prompt.md +0 -28
- package/templates/zh-Hans/skills/llman-sdd-onboard.md +0 -34
- package/templates/zh-Hans/skills/llman-sdd-show.md +0 -24
- package/templates/zh-Hans/units/migrate-prompt.md +0 -28
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
## 单轨 Feature 合约规范
|
|
1
|
+
## 单轨 Feature 合约规范(原生 Gherkin 分层)
|
|
2
2
|
|
|
3
|
-
每个 capability 只有一个 Gherkin 文件:扁平 `llmanspec/specs/<capability>.feature
|
|
4
|
-
|
|
3
|
+
每个 capability 只有一个 Gherkin 文件:扁平 `llmanspec/specs/<capability>.feature`(默认)或目录 `llmanspec/specs/<capability>/` 内同名主文件——二选一,同 id 两布局并存算冲突。它是唯一的 spec 工件(不存在 `spec.toon`)。
|
|
4
|
+
|
|
5
|
+
格式使用**原生 Gherkin 分层**:`功能:` → `规则:`(需求:标题 + 自由文本描述 + `@req:<id>` 句柄)→ 嵌套 `场景:`(可执行 GWT 示例)。这是唯一的规范样式;历史标签(`@executable`/`@rule`/`@human`/`@manual`)不再使用,旧文件以 `spec migrate-native` 迁移。
|
|
5
6
|
|
|
6
7
|
```gherkin
|
|
7
8
|
# language: zh-CN
|
|
@@ -11,19 +12,27 @@
|
|
|
11
12
|
|
|
12
13
|
功能: sample
|
|
13
14
|
|
|
14
|
-
@req:r1
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
@req:r1
|
|
16
|
+
规则: 描述一个需求要点
|
|
17
|
+
需求文本自由书写(不强制 MUST/SHALL 词),较长时拆多行便于人/agent 阅读。
|
|
18
|
+
第二行继续,描述行不得以 假如/当/那么/而且 开头(会被解析为步骤)。
|
|
19
|
+
|
|
20
|
+
场景: 一个可执行示例
|
|
21
|
+
假如 a precondition
|
|
22
|
+
当 a trigger happens
|
|
23
|
+
那么 the outcome is observed
|
|
17
24
|
|
|
18
|
-
@req:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
那么 the outcome is observed
|
|
25
|
+
@req:r2
|
|
26
|
+
规则: 暂不转写的需求(裸规则,会被聚合计数提示转写)
|
|
27
|
+
描述即现状需求的唯一载体;没有嵌套场景的规则计入裸规则聚合计数,交由
|
|
28
|
+
specs-compact 持续压降。
|
|
23
29
|
```
|
|
24
30
|
|
|
25
|
-
- 头注释(`# capability:` / `# purpose:` / `# scope:`)必填;`scope`
|
|
26
|
-
-
|
|
27
|
-
- `@
|
|
28
|
-
-
|
|
29
|
-
-
|
|
31
|
+
- 头注释(`# capability:` / `# purpose:` / `# scope:`)必填;`scope` 驱动过期检查。
|
|
32
|
+
- **可执行场景优先**:行为一律以嵌套 `场景:`(假如/当/那么)表达并绑定 BDD 步骤代码、由 runner 执行——默认首选。仅当需求无法程序化表达(抽象目标、架构决策、治理/人工约束)或暂不转写时,才以 `规则:` 块承载,并在 proposal/design 记录理由。
|
|
33
|
+
- `@req:<id>` 挂在 `规则:` 头标签,是全局唯一的需求句柄(resolve-req/next-req-id/条款引用共用);重复或缺失由 validate 判 ERROR。
|
|
34
|
+
- 规则描述为自由文本:不强制 MUST/SHALL 词;较长时拆多行便于审查,不使用 `- ` 列表前缀(会原样进入描述)。
|
|
35
|
+
- 不在任何 `规则:` 内的顶层 `场景:` 是功能级示例(Gherkin 原生允许,无规则句柄、不告警、不参与规则统计);无嵌套场景的 `规则:` 是裸规则(聚合计数 INFO,`--include-info` 可见,review `pending` 信号计量)。
|
|
36
|
+
- 改/删既有 `规则:` 只出 WARNING(报告制,不阻断门禁),用 git 分支对比审视;旧锁定确认元数据 `rules_touched` / `agent_acked` / `@agent` 已删除,无别名无兼容层。
|
|
37
|
+
- 覆盖分级:enforced(含嵌套场景)/ pending(裸规则)——`list --specs` 逐项输出。
|
|
38
|
+
- `规则:` 块是标准容器:嵌套 `场景:` 会被 runner 执行;两空格缩进层级(块 `规则:` 2 格、嵌套 `场景:` 4 格、步骤 6 格)。
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
## Archive 冷备引导
|
|
2
|
-
-
|
|
2
|
+
- archive 目录过大时用冷备维护(冻结 = 正文入 7z 冷备 + 以 `<YYYY-MM-DD>-<id>.yaml` 平铺索引卡替代目录,卡仅含 title 与 depends_on):
|
|
3
3
|
- 预览冻结候选:`llman-sdd archive freeze --dry-run`
|
|
4
4
|
- 冻结旧归档:`llman-sdd archive freeze --before <YYYY-MM-DD> --keep-recent <N>`
|
|
5
|
-
-
|
|
5
|
+
- 列出已冻结条目:`llman-sdd archive freeze --list`
|
|
6
|
+
- 需要恢复时:`llman-sdd archive thaw --change <YYYY-MM-DD-id>`(正文解回目录并移除平铺卡)
|
|
6
7
|
- freeze/thaw 仅用于日期归档目录(`YYYY-MM-DD-*`);建议保留少量最近目录不冻结。
|
|
8
|
+
- 平铺索引卡常驻磁盘:title(来自 proposal H1)与 depends_on(graph 依赖边种子)可 grep、可追溯;
|
|
9
|
+
id 与日期由文件名隐含——冻结 change 的用途与依赖关系无需解冻即可查阅,正文在 7z 冷备按需取用。
|
|
10
|
+
- 在非主检出(不持有默认分支的 worktree)运行时打印警告(仅提示、不阻断)——有意为之才在该处继续。
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "llman-sdd-onboard"
|
|
3
|
-
description: "Onboard to the llman SDD workflow in a repository."
|
|
4
|
-
metadata:
|
|
5
|
-
version: "{{ llman_version }}"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# LLMAN SDD Onboard
|
|
9
|
-
|
|
10
|
-
Use this skill to onboard to llman SDD in a repository.
|
|
11
|
-
|
|
12
|
-
## Steps
|
|
13
|
-
1. Read `llmanspec/config.yaml` for project context, conventions, and rules.
|
|
14
|
-
2. Use `llman-sdd list --specs --json` to see all specs at a glance.
|
|
15
|
-
- Or use `llman-sdd context --task "<task description>" --paths "<files>"` to find task-relevant specs.
|
|
16
|
-
- If context returns `quality: "unavailable"`, run `llman-sdd index rebuild` first (default backend is `pageindex`; it needs `LLMAN_SDD_INDEX_CHAT_MODEL` for retrieval but not for rebuilding).
|
|
17
|
-
3. Read only the `direct` spec files from context output.
|
|
18
|
-
4. Assess change scale (see triage rules): behavioural contract change → full SDD; implementation change → quick path.
|
|
19
|
-
5. Advance by path:
|
|
20
|
-
- **Full path**: planning shell (draft → designed [+design.md] → planned [+tasks.md]) → Branch binding → Specs landing (or `needs_specs_change: false`) → `readyToImplement=true` → apply → verify → finalize/archive (skill navigation: propose → apply → verify → archive).
|
|
21
|
-
- **Quick path**: no MUST/SHALL change; edit code and commit (live specs only on a bound branch — see `llman-sdd-quick`).
|
|
22
|
-
6. Use `llman-sdd graph` to visualize change dependencies.
|
|
23
|
-
|
|
24
|
-
> For command details run `llman-sdd <cmd> --help`; the CLI is the command reference — skills embed no command tables.
|
|
25
|
-
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman-sdd list --specs` or `llman-sdd show <capability>`.
|
|
26
|
-
|
|
27
|
-
## Notes
|
|
28
|
-
- `llmanspec/config.yaml` holds project context, rules, locale, and skills paths.
|
|
29
|
-
- Locale affects templates/skills only; CLI stays English.
|
|
30
|
-
- Refresh skills with `llman-sdd init --update`.
|
|
31
|
-
|
|
32
|
-
{{ unit("skills/validation-hints") }}
|
|
33
|
-
|
|
34
|
-
{{ unit("skills/ethics-governance") }}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "llman-sdd-show"
|
|
3
|
-
description: "Inspect llmanspec changes and specs quickly."
|
|
4
|
-
metadata:
|
|
5
|
-
version: "{{ llman_version }}"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# LLMAN SDD Show
|
|
9
|
-
|
|
10
|
-
Use this skill to inspect changes, specs, and JSON output.
|
|
11
|
-
|
|
12
|
-
## Steps
|
|
13
|
-
1. List items: `llman-sdd list` or `llman-sdd list --specs`.
|
|
14
|
-
2. If the id is unknown or ambiguous, show the list and ask the user to pick.
|
|
15
|
-
3. Show details: `llman-sdd show <id>`.
|
|
16
|
-
4. Disambiguate with `--type change|spec` when needed.
|
|
17
|
-
5. For changes, use `--json`: status SSOT fields are `stage` / `specsLanded` / `needsSpecsChange` / `readyToImplement` (never decide apply-readiness from vague "complete artifacts" wording).
|
|
18
|
-
|
|
19
|
-
> For command details run `llman-sdd <cmd> --help`; the CLI is the command reference — skills embed no command tables.
|
|
20
|
-
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman-sdd list --specs` or `llman-sdd show <capability>`.
|
|
21
|
-
|
|
22
|
-
{{ unit("skills/validation-hints") }}
|
|
23
|
-
|
|
24
|
-
{{ unit("skills/ethics-governance") }}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# llman-sdd project migrate — collaboration notes
|
|
2
|
-
|
|
3
|
-
## Command intent
|
|
4
|
-
|
|
5
|
-
- `llman-sdd project migrate --kind toon2features`: legacy `spec.toon` → single-track `.feature` (one-shot, idempotent).
|
|
6
|
-
- `llman-sdd project migrate --kind specs-flatten`: pure single-file directories `specs/<cap>/<cap>.feature` → flat `specs/<cap>.feature` (git mv preserves history).
|
|
7
|
-
|
|
8
|
-
## What the agent does
|
|
9
|
-
|
|
10
|
-
- First confirm migration is actually needed (no legacy / single-file dirs → no-op).
|
|
11
|
-
- Run `--dry-run` first and read the precheck report; resolve `conflict` / `misnamed` entries manually — never force.
|
|
12
|
-
- After migrating, run `llman-sdd validate --specs --strict --no-interactive` and the project BDD suite.
|
|
13
|
-
|
|
14
|
-
## What the human does
|
|
15
|
-
|
|
16
|
-
- Review the `scope_rewritten` report and the git diff (moves keep history).
|
|
17
|
-
- Optionally point `# scope:` at the real source directory the spec governs.
|
|
18
|
-
|
|
19
|
-
## Pitfalls
|
|
20
|
-
|
|
21
|
-
- Dirs with multiple `.feature` files, foreign-named files, or auxiliary entries are NOT flattened (reported only).
|
|
22
|
-
- Name conflicts must be resolved manually (both files are kept).
|
|
23
|
-
- Self-referential `# scope:` entries are auto-rewritten to `specs/<cap>.feature`.
|
|
24
|
-
|
|
25
|
-
## Next steps
|
|
26
|
-
|
|
27
|
-
- `llman-sdd validate --specs --strict --no-interactive`
|
|
28
|
-
- project BDD run (e.g. `cargo test --features bdd`)
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "llman-sdd-onboard"
|
|
3
|
-
description: "了解 llman SDD 工作流并完成项目入门。"
|
|
4
|
-
metadata:
|
|
5
|
-
version: "{{ llman_version }}"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# LLMAN SDD 入门
|
|
9
|
-
|
|
10
|
-
使用此 skill 让你快速了解 llman SDD 工作流。
|
|
11
|
-
|
|
12
|
-
## 步骤
|
|
13
|
-
1. 阅读 `llmanspec/config.yaml` 了解项目上下文、约定与规则。
|
|
14
|
-
2. 使用 `llman-sdd list --specs --json` 了解项目中的 specs 概览。
|
|
15
|
-
- 或者使用 `llman-sdd context --task "<任务描述>" --paths "<路径>"` 获取与当前任务相关的 specs。
|
|
16
|
-
- 如果 context 返回 `quality: "unavailable"`,先运行 `llman-sdd index rebuild` 重建索引(默认 backend 为 `pageindex`;检索需 `LLMAN_SDD_INDEX_CHAT_MODEL`,但重建不需要)。
|
|
17
|
-
3. 根据 context 的 `direct`/`related` 分类,只读 target spec 全文。
|
|
18
|
-
4. 判断变更规模(见 triage 规则),决定走完整 SDD 流程或快速路径。
|
|
19
|
-
5. 按路径推进:
|
|
20
|
-
- **完整路径**:规划壳(draft → designed [+design.md] → planned [+tasks.md])→ Branch binding → Specs landing(或 `needs_specs_change: false`)→ `readyToImplement=true` → apply → verify → finalize/archive(Skill 导航:propose → apply → verify → archive)。
|
|
21
|
-
- **快速路径**:不改 MUST/SHALL,直接改代码 commit(触及 live specs 须已绑定分支,见 `llman-sdd-quick`)。
|
|
22
|
-
6. 使用 `llman-sdd graph` 可视化变更依赖关系(depends_on/blocks)。
|
|
23
|
-
|
|
24
|
-
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
25
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
26
|
-
|
|
27
|
-
## 备注
|
|
28
|
-
- `llmanspec/config.yaml` 包含项目上下文、规则、locale 与 skills 路径。
|
|
29
|
-
- locale 仅影响模板与 skills,CLI 仍为英文。
|
|
30
|
-
- 使用 `llman-sdd init --update` 刷新技能。
|
|
31
|
-
|
|
32
|
-
{{ unit("skills/validation-hints") }}
|
|
33
|
-
|
|
34
|
-
{{ unit("skills/ethics-governance") }}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "llman-sdd-show"
|
|
3
|
-
description: "快速查看 llmanspec 变更与 specs。"
|
|
4
|
-
metadata:
|
|
5
|
-
version: "{{ llman_version }}"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# LLMAN SDD 查看
|
|
9
|
-
|
|
10
|
-
使用此 skill 快速查看变更与 specs。
|
|
11
|
-
|
|
12
|
-
## 步骤
|
|
13
|
-
1. 列出条目:`llman-sdd list` 或 `llman-sdd list --specs`。
|
|
14
|
-
2. 如果 id 不明确,展示列表并让用户选择。
|
|
15
|
-
3. 查看详情:`llman-sdd show <id>`。
|
|
16
|
-
4. 需要时使用 `--type change|spec` 消除歧义。
|
|
17
|
-
5. 对 change 使用 `--json`:状态 SSOT 字段为 `stage` / `specsLanded` / `needsSpecsChange` / `readyToImplement`(勿凭「完整工件」口头判断可否 apply)。
|
|
18
|
-
|
|
19
|
-
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
20
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
21
|
-
|
|
22
|
-
{{ unit("skills/validation-hints") }}
|
|
23
|
-
|
|
24
|
-
{{ unit("skills/ethics-governance") }}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# llman-sdd project migrate — 协作说明
|
|
2
|
-
|
|
3
|
-
## 命令意图
|
|
4
|
-
|
|
5
|
-
- `llman-sdd project migrate --kind toon2features`:遗留 `spec.toon` → 单轨 `.feature`(一次性迁移,幂等)。
|
|
6
|
-
- `llman-sdd project migrate --kind specs-flatten`:纯同名单文件目录 `specs/<cap>/<cap>.feature` → 扁平 `specs/<cap>.feature`(git mv 保留历史)。
|
|
7
|
-
|
|
8
|
-
## Agent 该做什么
|
|
9
|
-
|
|
10
|
-
- 先确认是否真需要迁移(无 legacy / 单文件目录 → no-op)。
|
|
11
|
-
- 先跑 `--dry-run` 看预检查报告;`conflict` / `misnamed` 项人工处理,勿强行迁移。
|
|
12
|
-
- 迁移后运行 `llman-sdd validate --specs --strict --no-interactive` 与项目 BDD 套件。
|
|
13
|
-
|
|
14
|
-
## 人类该做什么
|
|
15
|
-
|
|
16
|
-
- 检查 `scope_rewritten` 报告与 git diff(mv 保留历史)。
|
|
17
|
-
- 顺手把 `# scope:` 指向该规范管辖的真实源码目录。
|
|
18
|
-
|
|
19
|
-
## 陷阱
|
|
20
|
-
|
|
21
|
-
- 含多个 `.feature`、异名文件或附属文件的目录不会自动扁平(只报告)。
|
|
22
|
-
- 重名冲突必须人工解决(两文件都保留)。
|
|
23
|
-
- 自引用 `# scope:` 会被自动改写为 `specs/<cap>.feature`。
|
|
24
|
-
|
|
25
|
-
## 下一步
|
|
26
|
-
|
|
27
|
-
- `llman-sdd validate --specs --strict --no-interactive`
|
|
28
|
-
- 项目 BDD 运行(如 `cargo test --features bdd`)
|