CSF

版本: v0.3 | 最后修订: 2026-07-06 | 项目: csf-core 🛡️ 规则语义变更须经Owner确认并全程记入日志。 关键词: [FLDD, 开发执行, 主题包, 业务切片, BT, IT, DT, STB, DP, 验收, 信息隔离, 三栏自检, 修改自证, 验收三档, 沉淀级别] 适用场景: SP5 产品开发阶段全程

FLDD 开发执行

FLDD = Frontline Design & Development(一线设计与开发)。 本文件是 SP5 产品开发阶段的方法论规程。FLDD 全程挂载为基础共识。


§ 0 核心设计思想

FLDD 阶段的核心问题:如何让开发者拿到刚好够用的、准确的材料,既不过载也不缺失。

解决方案 = 信息隔离 + 逐步投喂

概念使用要点(在 FLDD 各环节中正确使用这些概念的关键):

信息流规则

doc/domain/ + doc/arch/ → [参谋长加工] → doc/themes/ + doc/slices/ → [参谋长准备] → STB → 开发者
                                                                                   ↑
                                   开发者只读这里,不读上游 ←───────────────────────────┘

为什么这样设计


§ 1 输入与信息边界

FLDD 的唯一输入源

  1. 主题包(如 doc/themes/)— 每个含 package.md(设计契约)+ sources.md + verify.md。三件套的格式规范见 FLDD-主题包-创建指南.md
  2. 业务切片(如 doc/slices/)— 业务维度的横向串联

禁止直接消费的上游

参谋长为开发者准备的所有材料,只能来源于主题包和业务切片。 如果 STB 中需要某个业务规则,参谋长从主题包中摘取相关段落放入 STB,而不是让开发者去读 domain/。

不一致发现与修复

如果任何角色在 FLDD 过程中发现主题包与业务切片之间的不一致或错误


§ 2 层级对应(任务窗口视角)

GP 全景图 — 所有 TP 队列(≈ 产品 roadmap)
│
├─ TP = Topic Plan(主题计划:一个主题包的开发,如 TP-01 = TA-01)
│       或 Temporary Plan(临时计划:打岔处理某事后回归主线,如 TP-332)
│   │
│   │  TP README 中写明:
│   │  · 目的(业务上做什么)
│   │  · IT 分解(分几步做完)
│   │  · 每个 IT 对应什么业务能力
│   │
│   ├─ IT-1 = 第一轮切片(如"getAuthToken 端到端")
│   │   └─ STB = 开发者单次会话的输入(修改哪些文件、达到什么效果)
│   │
│   ├─ IT-2 = 第二轮切片(如"initSystem + 用户档案")
│   │   └─ STB
│   │
│   └─ IT-N → TP 闭合
│
├─ 下一个 TP ...

两套体系说明:CSF 中存在两套独立的概念体系,它们在 IT 和 STB 上有交集,但语境不同:

两条线交汇于 IT 和 STB,但语义不同:项目管理中的 IT 回答”TP 分几步做”,业务开发中的 IT 回答”BT 按什么能力递进切分”。理解这个区别是正确使用 FLDD 的前提。

Owner 视角的对应


§ 3 参谋长工作流

TP 立项

  1. 真读主题包 package.md(设计契约权威)
  2. 真读相关业务切片(业务上下文 + 与主题包交叉校验)
  3. 一致性 checklist(☐ 全通过才继续):
    • ☐ 主题包与业务切片之间无矛盾/遗漏(含横切机制切片,不只是直接对应切片)
    • ☐ 主题包契约层术语与 doc/domain/ 一致
    • ☐ 上游 TP 的接口输出 = 本 TP 假设的输入
    • ☐ 本主题包是否有前置约束切片(设计前必须精读)
  4. 真读 dev/ 中上游 TP 已完成的代码(确认起点)
  5. 写 TP README:目的 / IT 分解 / 资源 / 防御
  6. Owner 校验业务方向(用自然语言 brief,Owner 判断方向对不对)

一致性检查发现问题 → 先修后立项。不带着疑问往下走。

IT 设计(出 STB)

一致性 checklist(每次 IT/STB 必过):

DP 四问(可以一段话答完,不必单独建文件):

STB 核心四件:

任务下发

参谋长将 STB 写入开发者进度表(追加一行,内容列嵌入 STB 文件链接,设计列标 ✅)+ assign 到 §收件箱通知(通知有新任务入队,非发令枪)。

开发者不需等 assign 才可动手——每次会话开局扫进度表即可取活(取活规则详见 context-开发者.md §B)。assign 的价值 = 通知“有新 STB 入队”,不是“允许开始”。

一个 IT 拆多个 STB 时,参谋长尽可能一次性设计多个 STB 并全部写入进度表(每个 STB 一行)。如果 STB-2 确实依赖 STB-1 产出才能设计 → 设计列标「⬜ 待STB」,开发者扫表时自然跳过。

STB 设计完成后直接写入进度表 + brief Owner。不制造审批关卡。Owner 在回合中自然回应(确认/纠偏)。

已知平台约束(示例)🟣FLDD

以下为示例,展示平台约束声明的格式。实际项目替换为当前平台的约束。

以下约束在设计 STB 时必须主动识别,不可在实现后才发现兜不住:

约束 说明 影响范围
open-type="share" 无法做 L1 弹窗拦截 微信小程序中该按钮点击后直接唤起系统分享面板,bindtap 在分享动作前不执行,无法插入 JS 弹窗逻辑。业务上需要「状态判断→弹窗提示→阻断分享」的场景,不能用 open-type="share";必须改用普通按钮 + bindtap 自行处理分享调用(wx.showShareMenu / wx.shareFileMessage 等)。CF 层虽可拒绝 recordForward,但卡片已发出,用户体验差。 任何转发/分享类按钮,尤其涉及 closed/expired 等状态门控时

§ 4 开发者工作流

信息边界

开发者的全部信息来源 = STB + STB 中引用的主题包段落 + 已有代码。不读 domain/、不读 arch/、不读其他主题包。发现 STB 材料不够用 → PENDING 回参谋长要,不自行去找。

承接:三栏自检(收到 STB 后先不动键盘)

内容
✅ 已读懂 STB 里我能直接动手的部分
🟡 不确定 我读出歧义 / 多解 / 缺料的点
🔵 准备假设 我打算按 X 假设处理,请校验

任一 🟡/🔵 非空 → 不动键盘,发 PENDING 回参谋长。三栏仅 ✅ 非空才进入编码。

开发者侧有更详细的承接执行表单(含沉淀标签核查、大图理解、文件范围确认),见 dev-context §A 三问承接。三栏自检是原则,三问承接是执行表单。

编码纪律

① 范围契约:每一行修改必须能直接追溯到 STB 的某个 DT。范围外动代码(包括调格式、改 import、修 typo、删”看起来无用”的代码)= 立 PENDING,不直接改。

② 等价检验:若新代码体量 > 旧等价代码 2 倍 → 停下在 devlog 中写明:为什么不能复用/改既有/为什么必须新写?参谋长校验后才继续。

③ 发现不一致:编码中发现主题包描述与实际情况矛盾 → 停下 PENDING 报参谋长,不自行解释或假设。

收尾:修改自证清单(每会话收尾必出)

本会话 diff 统计:A 文件 +N/-M、B 文件 +N/-M

逐改追溯:
  A:line XX-YY  ← STB DT #N「任务点描述」
  B:line XX     ← DT #M 副作用:补 import

✅ 范围外动:0 处
🟡 范围内但非计划:N 处
   - 文件:行号 描述(不属 STB DT,已说明原因)
   - 建议:保留 / 撤回 / 单独立 STB

铁律:自证清单未出 = 不予验收 = 任务不算完成。

验收三档产出(开发者按 STB 标注的档位提供)

形式 自证形式
🟢 强档 单元测试 / 接口断言脚本 测试输出片段粘贴
🔵 中档 数据库查询 / CF 调用响应 / console 输出 响应 JSON / 查询结果粘贴
🟡 弱档 操作步骤 + 预期屏幕表现 截图 + 操作步骤 + 实际表现对照

三档可混用(同一 STB 不同 DT 各档独立)。零新增工具 / 零基础设施成本。

沉淀级别(开发者须识别)

STB 中每条约定/惯例已由参谋长标注沉淀级别:

标签 含义 开发者行为
🔵 TASK 本任务特例,下任务作废 仅本次遵守
🟢 PACK 本主题包惯例,该包下所有 STB 继承 后续同包任务继续遵守
🟣 FLDD FLDD 通用纪律,全阶段继承 所有任务必须遵守

开发者三栏自检时核标签是否齐全,缺标 = PENDING 回退。


§ 5 验收

参谋长验收(技术层)

步骤 操作 要点
① 读自证清单 看「✅ 范围外动:0 处」是否成立 自证清单未出 = 退回
② 抽查映射 随机抽 1-2 行 diff,反查清单是否对得上 STB DT 不匹配 = 退回
③ 看 🟡 段落 「范围内但非计划」每项判断留/撤/立新 STB
④ 验收三档核验 每个 DT 的产出是否达到标注档位
⑤ 通过/退回 通过 → 关任务;退回 → 开发者补充

Owner 验收(业务层)

IT 闭合时参谋长用自然语言向 Owner 描述”这轮做了什么业务能力”,Owner 判断是否符合预期。有 UI 产出的,Owner 可直接操作验证。

Owner 不需要看代码、不需要看 STB——只看业务结果。

验收后流转

验收 ACCEPTED 后:

  1. 参谋长判断沉淀级别(见 §7)
  2. 参谋长启动下一个 IT 设计(或判断 TP 闭合)
  3. 参谋长将新 STB 写入开发者进度表(追加一行 + 更新当前任务指针)
  4. TP 闭合时更新 GP 全景图(context §B 定位段)标记 ✅ + 滑动红点

§ 6 开发者的全局视角

开发者需要知道自己”在干什么产品的什么部分”。

实现方式:context-开发者 §B 注入时,附带一段(≤5行):

不需要读 arch 七件套。不需要理解全局架构。只需要知道自己的工作落在产品的什么位置。


§ 7 沉淀

IT 验收 ACCEPTED 后,参谋长判断本轮经验的沉淀级别:

TP 闭合时,更新 GP 全景图(context §B 定位段)标记 ✅。


§ 8 context-开发者 §B 注入模板

参谋长在窗口初始化或追加新 STB 时维护 context-开发者 §B 的标准格式:

### 定位

- **产品**:{产品名} — [一句话描述]
- **当前阶段**:SP5 FLDD 开发执行
- **上游已完成**:[简列已完成 TP]

### 进度表

| # | STB | TP | 状态 | 依赖 |
|---|---|---|---|---|
| 1 | [路径] | TP-NN 主题 | 🔴 当前 | — |
| 2 | [路径] | TP-NN 主题 | ⬜ 排队 | #1 |

> 🔴 = 当前执行中 / ✅ = 已完成验收 / ⬜ = 排队待执行

### 当前任务**[STB 文件名](路径)**

三元组(目的/方法/资源/DT清单/验收断言)全部在 STB 文件中。开局时精读该文件 = 任务加载完成。

### SP 通用资源(每个任务共享)

- `doc/arch/design-tokens.md` — token 字典(示例)
- `doc/arch/插件简明索引.md` — 插件清单(示例)
- [其他 SP 级共享资源]

### 活跃防御(FLDD 级 / 全任务继承)

1. 范围外动代码 = PENDING(FLDD §4 范围契约)🟣FLDD
2. 发现不一致 = 停下报告(不自行假设)🟣FLDD
3. 全量 token 引用:wxss 禁硬编码颜色/px 字号 🟣FLDD
4. [其他 FLDD 级防御]

> 任务特有的防御条目写在 STB 文件内。

### 备忘

(初始为空)

与旧模板的关键区别


§ 9 业务自检嵌入点

业务自检不是独立流程,而是嵌入在 FLDD 各环节中的强制动作:

环节 自检动作 责任人
TP 立项 §3 一致性 checklist 3 项 参谋长
IT 设计 §3 一致性 checklist 3 项 + L1 术语自检 参谋长
开发中 发现不一致 → PENDING 开发者
参谋长验收 技术层 5 步(§5) 参谋长
IT 闭合 Owner 业务层验收 Owner
收尾后 参谋长问 Owner「是否需要业务映照自述」(L2) 参谋长发起,Owner 决定

L2 业务映照自述(收尾时触发):

L3 他检(Owner 主动启动,频率极低):