---
id: S-<nn>
title: <场景文件标题>
status: <项目状态枚举>
---

## S-<nn>：<场景名>

**场景代码**: <稳定交叉引用 slug，kebab-case>
**关联决策**: <决策 ID 列表>
**关联功能**: <功能 ID 列表；尚无功能制品时省略本行，或按项目模板标注"尚无功能制品">

### Given

- <可构造的具体前置状态：文件、记录、配置、环境条件>

### When

1. <用户或外部动作，编号步骤>

### Then

- <可观察、可验证的结果：输出文本、退出码、状态、记录>

---

### S-<nna>：<变体名>

**场景代码**: <变体稳定 slug>
**关联决策**: <决策 ID 列表>
**关联功能**: <功能 ID 列表>

### Given

- <与主场景不同的前置状态>

### When

1. <与主场景不同的动作步骤>

### Then

- <该分支下可观察、可验证的结果>

## 使用说明（放入项目前删除本节）

- 节点标题是制品图的解析锚点：主场景 H2、变体 H3，编号匹配 `^S-\d+[a-z]?$`（允许
  前导零），冒号半/全角以项目 `artifact-graph.config.yaml` 与既有制品为准（CLI 按
  `^#{2,3}\s+(S-\d+[a-z]?)\s*[:：]` 识别节点）。
- 字段块中 `关联功能`/`关联决策` 是机器锚点、必需：CLI 从含"关联功能/关联决策"字样
  的行内提取 ID 成边，只引用制品图中已存在的 ID。`场景代码` 是稳定交叉引用 slug、
  推荐。字段集允许项目模板扩展（如 `**入口编号**`）。
- 场景先于功能制品时（发现级场景）：`关联功能` 行按项目模板约定省略，或标注
  "尚无功能制品"；如实写明，不编造功能 ID。此时 CLI 的 `ORPHAN_SCENARIO` warning
  （不阻断、exit 0）属预期，不强制消灭；功能制品建立后再补挂接与回列。
- 追溯一致：关联功能存在时，功能制品 frontmatter 的 `scenarios` 字段必须回列本场景
  （双向一致，CLI 校验强制）；暂缺不判 fail。
- 场景→决策边只对 `D-XXX-数字` 形式的决策 ID 成边（CLI 硬编码）；`ADR-\d{4}` 类
  编号只做文档级追溯，不产生图边。
- 关键分支、边界、异常写成变体节点（H3、字母后缀），复用主场景语境、只写差异。
- 正文不得出现机器私有路径：路径用项目相对形式或占位符
  （如 `<project-root>`）。
- 语言风格规则见 `compose.md` 第 4 节与 `writing-style.md`（结构化验收场景语体、
  去 AI 味行文规则、密度原则）。
