@pioneer_zmc/dsh-workbench 0.2.1
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/LICENSE +21 -0
- package/README.md +98 -0
- package/README.zh.md +100 -0
- package/client.js +122 -0
- package/cordis.patch.yml +8 -0
- package/dist/check-building.js +1669 -0
- package/dist/check-room.js +980 -0
- package/dist/index.js +2873 -0
- package/package.json +60 -0
- package/skills/specdev-building/SKILL.md +85 -0
- package/skills/specdev-building/assets/layouts/court.json +53 -0
- package/skills/specdev-building/assets/layouts/row.json +48 -0
- package/skills/specdev-building/assets/layouts/single.json +27 -0
- package/skills/specdev-building/assets/layouts/tower-9.json +71 -0
- package/skills/specdev-building/assets/layouts/tower.json +59 -0
- package/skills/specdev-building/references/blueprint-contract.md +126 -0
- package/skills/specdev-building/references/diagnostics.md +101 -0
- package/skills/specdev-building/references/layouts.md +112 -0
- package/skills/specdev-business/SKILL.md +91 -0
- package/skills/specdev-business/assets/plan-template.md +66 -0
- package/skills/specdev-business/assets/spec-template.md +111 -0
- package/skills/specdev-business/assets/tasks-template.md +36 -0
- package/skills/specdev-business/references/change.md +117 -0
- package/skills/specdev-business/references/evidence-review.md +125 -0
- package/skills/specdev-business/references/implementation.md +67 -0
- package/skills/specdev-business/references/project-contract.md +211 -0
- package/skills/specdev-business/references/source-map.md +110 -0
- package/skills/specdev-business/references/specification.md +93 -0
- package/skills/specdev-business/references/workflow.md +126 -0
- package/skills/specdev-room/SKILL.md +77 -0
- package/skills/specdev-room/assets/intro-room.json +14 -0
- package/skills/specdev-room/references/diagnostics.md +21 -0
- package/skills/specdev-room/references/room-contract.md +59 -0
- package/vendor/archify-renderer/VERSION.md +52 -0
- package/vendor/archify-renderer/archify/LICENSE +22 -0
- package/vendor/archify-renderer/archify/THIRD_PARTY_NOTICES.md +56 -0
- package/vendor/archify-renderer/archify/assets/template.html +14787 -0
- package/vendor/archify-renderer/archify/bin/archify.mjs +1990 -0
- package/vendor/archify-renderer/archify/renderers/shared/brand-marks.mjs +563 -0
- package/vendor/archify-renderer/archify/renderers/shared/cli.mjs +218 -0
- package/vendor/archify-renderer/archify/renderers/shared/desktop-readability.mjs +26 -0
- package/vendor/archify-renderer/archify/renderers/shared/diagnostics.mjs +127 -0
- package/vendor/archify-renderer/archify/renderers/shared/engineering-profiles.mjs +157 -0
- package/vendor/archify-renderer/archify/renderers/shared/generated-brand-marks.mjs +2003 -0
- package/vendor/archify-renderer/archify/renderers/shared/generated-validators.mjs +13 -0
- package/vendor/archify-renderer/archify/renderers/shared/geometry.mjs +1423 -0
- package/vendor/archify-renderer/archify/renderers/shared/i18n.mjs +594 -0
- package/vendor/archify-renderer/archify/renderers/shared/legend.mjs +217 -0
- package/vendor/archify-renderer/archify/renderers/shared/output-path.mjs +321 -0
- package/vendor/archify-renderer/archify/renderers/shared/repository-evidence.mjs +235 -0
- package/vendor/archify-renderer/archify/renderers/shared/text-fit.mjs +49 -0
- package/vendor/archify-renderer/archify/renderers/shared/utils.mjs +232 -0
- package/vendor/archify-renderer/archify/renderers/shared/validator.mjs +86 -0
- package/vendor/archify-renderer/archify/renderers/workflow/render-workflow.mjs +35 -0
- package/vendor/archify-renderer/archify/renderers/workflow/workflow-compiler.mjs +4400 -0
- package/vendor/archify-renderer/archify/renderers/workflow/workflow-migration-geometry.mjs +144 -0
- package/vendor/archify-renderer/archify/schemas/common.schema.json +115 -0
- package/vendor/archify-renderer/archify/schemas/workflow.schema.json +428 -0
- package/vendor/archify-renderer/archify/scripts/check-render-output.mjs +835 -0
- package/vendor/archify-renderer/shims/process.mjs +18 -0
- package/vendor/archify-renderer/stubs/child_process.mjs +2 -0
- package/vendor/archify-renderer/stubs/crypto.mjs +3 -0
- package/vendor/archify-renderer/stubs/dns-promises.mjs +2 -0
- package/vendor/archify-renderer/stubs/fs.mjs +3 -0
- package/vendor/archify-renderer/stubs/http.mjs +3 -0
- package/vendor/archify-renderer/stubs/https.mjs +3 -0
- package/vendor/archify-renderer/stubs/net.mjs +3 -0
- package/vendor/archify-renderer/stubs/path.mjs +3 -0
- package/vendor/archify-renderer/stubs/url.mjs +3 -0
- package/web/assets/building-kit.js +1157 -0
- package/web/assets/building-look.js +185 -0
- package/web/assets/building-plan.js +495 -0
- package/web/assets/building-scene.js +529 -0
- package/web/assets/building-walk.js +248 -0
- package/web/assets/building.js +859 -0
- package/web/assets/business.js +124 -0
- package/web/assets/chart-link.js +165 -0
- package/web/assets/common.js +302 -0
- package/web/assets/details.js +197 -0
- package/web/assets/evidence.js +30 -0
- package/web/assets/furniture/SOURCES.md +24 -0
- package/web/assets/furniture/assets/ceramic-display-stand-01/asset.json +25 -0
- package/web/assets/furniture/assets/ceramic-display-stand-01/model.js +116 -0
- package/web/assets/furniture/assets/ceramic-display-stand-01/preview.webp +0 -0
- package/web/assets/furniture/assets/ceramic-floor-lamp-01/asset.json +61 -0
- package/web/assets/furniture/assets/ceramic-floor-lamp-01/model.js +56 -0
- package/web/assets/furniture/assets/ceramic-floor-lamp-01/preview.webp +0 -0
- package/web/assets/furniture/assets/ceramic-low-cabinet-01/asset.json +81 -0
- package/web/assets/furniture/assets/ceramic-low-cabinet-01/model.js +67 -0
- package/web/assets/furniture/assets/ceramic-low-cabinet-01/preview.webp +0 -0
- package/web/assets/furniture/assets/ceramic-vase-01/asset.json +21 -0
- package/web/assets/furniture/assets/ceramic-vase-01/model.js +119 -0
- package/web/assets/furniture/assets/ceramic-vase-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-bed-01/asset.json +61 -0
- package/web/assets/furniture/assets/fairy-bed-01/model.js +63 -0
- package/web/assets/furniture/assets/fairy-bed-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-book-stack-01/asset.json +21 -0
- package/web/assets/furniture/assets/fairy-book-stack-01/model.js +71 -0
- package/web/assets/furniture/assets/fairy-book-stack-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-bookshelf-01/asset.json +32 -0
- package/web/assets/furniture/assets/fairy-bookshelf-01/model.js +168 -0
- package/web/assets/furniture/assets/fairy-bookshelf-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-desk-01/asset.json +25 -0
- package/web/assets/furniture/assets/fairy-desk-01/model.js +132 -0
- package/web/assets/furniture/assets/fairy-desk-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-notice-board-01/asset.json +23 -0
- package/web/assets/furniture/assets/fairy-notice-board-01/model.js +125 -0
- package/web/assets/furniture/assets/fairy-notice-board-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-potted-plant-01/asset.json +21 -0
- package/web/assets/furniture/assets/fairy-potted-plant-01/model.js +128 -0
- package/web/assets/furniture/assets/fairy-potted-plant-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-reading-chair-01/asset.json +61 -0
- package/web/assets/furniture/assets/fairy-reading-chair-01/model.js +66 -0
- package/web/assets/furniture/assets/fairy-reading-chair-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-table-lamp-01/asset.json +21 -0
- package/web/assets/furniture/assets/fairy-table-lamp-01/model.js +182 -0
- package/web/assets/furniture/assets/fairy-table-lamp-01/preview.webp +0 -0
- package/web/assets/furniture/catalog.js +137 -0
- package/web/assets/furniture/index.json +110 -0
- package/web/assets/furniture/registry.js +72 -0
- package/web/assets/furniture-page.css +68 -0
- package/web/assets/furniture-page.js +302 -0
- package/web/assets/home.js +65 -0
- package/web/assets/node-detail.js +148 -0
- package/web/assets/panel-link.js +47 -0
- package/web/assets/read.js +746 -0
- package/web/assets/room-scene.js +386 -0
- package/web/assets/room.css +287 -0
- package/web/assets/room.js +437 -0
- package/web/assets/rooms/bindings.js +449 -0
- package/web/assets/rooms/ceramic-reflection.js +193 -0
- package/web/assets/rooms/ceramic-room.js +302 -0
- package/web/assets/rooms/door.js +35 -0
- package/web/assets/rooms/fairy-room.js +492 -0
- package/web/assets/rooms/furniture-assembly.js +113 -0
- package/web/assets/rooms/navigation.js +262 -0
- package/web/assets/rooms/placeholder-catalog.json +71 -0
- package/web/assets/rooms/placeholder-furniture.js +76 -0
- package/web/assets/rooms/placement.js +588 -0
- package/web/assets/rooms/reader.js +441 -0
- package/web/assets/rooms/reading-gate.js +157 -0
- package/web/assets/rooms/room-lighting.js +50 -0
- package/web/assets/rooms/templates.json +50 -0
- package/web/assets/rooms/walk-frame.js +64 -0
- package/web/assets/rooms/walk-session.js +138 -0
- package/web/assets/save-result.js +89 -0
- package/web/assets/screenshots/business.png +0 -0
- package/web/assets/screenshots/node-detail.png +0 -0
- package/web/assets/screenshots/project-home.png +0 -0
- package/web/assets/screenshots/workflow.png +0 -0
- package/web/assets/showcase.js +232 -0
- package/web/assets/style.css +836 -0
- package/web/assets/template.js +7 -0
- package/web/assets/theme.js +29 -0
- package/web/assets/three/OrbitControls.js +1972 -0
- package/web/assets/three/VERSION.md +12 -0
- package/web/assets/three/three.core.js +60586 -0
- package/web/assets/three/three.module.js +19719 -0
- package/web/assets/workspaces.css +21 -0
- package/web/assets/workspaces.js +81 -0
- package/web/building.html +131 -0
- package/web/business.html +43 -0
- package/web/furniture.html +47 -0
- package/web/index.html +57 -0
- package/web/read.html +107 -0
- package/web/room.html +146 -0
- package/web/showcase.html +50 -0
- package/web/workspaces.html +32 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# 已有业务修改指引
|
|
2
|
+
|
|
3
|
+
本指引管"已有业务或其产物的再次修改"——业务完整交付过当然算,还在半路的也算:图没画、
|
|
4
|
+
证据没补、快照没存过,都不挡进入;本次改什么,就按需读取相关材料。缺的产物(图、详情、
|
|
5
|
+
证据、快照等)只在影响本次修改的正确性或产品操作时才补齐,不要求先凑齐整套资产。首次实现
|
|
6
|
+
见 [implementation.md](implementation.md),首次证据补录与差异核对见
|
|
7
|
+
[evidence-review.md](evidence-review.md);本指引不重复它们的规则,只管"再次修改"多出来的事。
|
|
8
|
+
|
|
9
|
+
一句话定义(公共版):
|
|
10
|
+
|
|
11
|
+
> 修改已有业务时,识别本次影响范围,更新受影响的实现和说明,验证新行为与相关旧行为,
|
|
12
|
+
> 并保留可追溯的历史。
|
|
13
|
+
|
|
14
|
+
**规则分层**(本指引只写第一类,其余引用或让位,不搬运):
|
|
15
|
+
|
|
16
|
+
| 类型 | 例子 | 放在哪里 |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| 通用可靠性要求 | 不覆盖已有工作、不遗漏相关改动、验证修改结果、如实报告差异 | 本指引主流程 |
|
|
19
|
+
| Archify 产品约束 | 节点 ID 与详情对应、证据按固定提交读取、快照保存范围 | 引用现有产品约定(project-contract.md 等) |
|
|
20
|
+
| 项目的工作习惯 | 每个小功能单独批准、修复轮数上限、页面由谁验收 | 目标项目自身规则;冲突时按目标项目执行 |
|
|
21
|
+
|
|
22
|
+
## 1. 确认当前状态与本次目标
|
|
23
|
+
|
|
24
|
+
- 阅读与本次修改**相关**的规格、代码、图、详情和证据;有疑问再追查历史,不默认通读
|
|
25
|
+
整个业务。
|
|
26
|
+
- 分清四样东西:**文档现在怎么规定、代码实际上怎么做、本次要求改成什么、哪些还不清楚**。
|
|
27
|
+
旧文档可能过时,不能直接当成实现事实——代码与文档的一致性用
|
|
28
|
+
[evidence-review.md](evidence-review.md) §4 的核对思路确认,不凭文档自述。
|
|
29
|
+
- 动手前检查已有未提交改动,避免覆盖或混入别人的工作;发现来源不明的改动怎么处置,
|
|
30
|
+
按目标项目规则。
|
|
31
|
+
- 用户已明确授权的修改直接推进;只有信息不足、要求冲突或范围扩大时才补充确认。
|
|
32
|
+
|
|
33
|
+
## 2. 判断影响范围与验收方式
|
|
34
|
+
|
|
35
|
+
- 说明哪些规则(FR/AC)、代码、节点、详情和证据可能受影响,以及用什么证明修改完成
|
|
36
|
+
——这就是本次修改的影响面与验收口径,动手前先摆出来。
|
|
37
|
+
- 简单修改几句话说清即可,不强制新增计划、任务单或审批表(与
|
|
38
|
+
[implementation.md](implementation.md) §1 同一口径);改动跨模块或影响面广时按目标
|
|
39
|
+
项目规则落文件。
|
|
40
|
+
- 目标是一个**完整、可验证的变更**:一次业务修改同步几个相关文件很正常,不按文件
|
|
41
|
+
数量机械拆分,也不把无关文件捎带进来。
|
|
42
|
+
|
|
43
|
+
## 3. 确认修改前的状态可以追溯
|
|
44
|
+
|
|
45
|
+
- 复用已有 Git 提交或管理页快照即可;确有尚未保存、需要保留的状态时,再提示处理。
|
|
46
|
+
- 不要求每次修改前新建快照或空提交。两样东西用途不同:**Git 留存代码状态,管理页
|
|
47
|
+
快照登记图的版本**(三个图文件+阶段,见 [project-contract.md](project-contract.md) §4)。
|
|
48
|
+
|
|
49
|
+
## 4. 按影响范围修改和同步
|
|
50
|
+
|
|
51
|
+
不要求每次改齐"规格、代码、测试、图、详情、证据"六样,按修改情况取用:
|
|
52
|
+
|
|
53
|
+
| 修改情况 | 通常需要处理 |
|
|
54
|
+
|---|---|
|
|
55
|
+
| 文字纠错,业务含义未变 | 修正文案;检查引用是否受影响 |
|
|
56
|
+
| 代码重构,外部行为未变 | 验证原有行为不变;检查相关证据是否仍准确 |
|
|
57
|
+
| 业务规则或流程变化 | 更新规格、实现和必要测试;同步受影响图与详情 |
|
|
58
|
+
| 补齐已有实现的出处 | 查证并更新证据(evidence-review.md §2),不顺带重画业务图 |
|
|
59
|
+
|
|
60
|
+
- **ID 稳定的边界**:语义未变的业务、图、节点、规则 ID 保持稳定
|
|
61
|
+
([workflow.md](workflow.md) §3.2、[specification.md](specification.md) §5——规则编号
|
|
62
|
+
作废不回收,新增续编新号);真正删除、替换或拆分的节点,同步处理关联引用(详情
|
|
63
|
+
分节、证据指向、连线),**不为保留编号而让旧 ID 偷换含义**。
|
|
64
|
+
- **证据沿用 4b 规则**:按引用提交查证内容和行号,无法核实的明确标记。旧证据按固定
|
|
65
|
+
提交读取,**不因后续代码变化自动失效**——要检查的是这条证据还能不能支撑当前描述:
|
|
66
|
+
相关实现变了才按 evidence-review.md §3 顺序更新引用(先提交实现、再提交证据),
|
|
67
|
+
无关改动不必把证据刷成最新提交。
|
|
68
|
+
|
|
69
|
+
## 5. 验证本次修改与相关旧行为
|
|
70
|
+
|
|
71
|
+
- 不只验证新要求满足,也验证**受影响的原有行为**仍然成立;验证范围由依赖关系决定,
|
|
72
|
+
不简单等同于"改了哪几行"。
|
|
73
|
+
- 图源未变且已有校验回执仍适用时复用,不重跑;图源变化时按
|
|
74
|
+
[workflow.md](workflow.md) §4 重新校验(五判据全过才算)。
|
|
75
|
+
- 规格、图、详情、源码之间仍有差异就如实报告(差异报告用
|
|
76
|
+
[evidence-review.md](evidence-review.md) §5 的六列格式),不能靠删条件或改描述让
|
|
77
|
+
结果看起来一致。
|
|
78
|
+
|
|
79
|
+
## 6. 交付变化与未完成项
|
|
80
|
+
|
|
81
|
+
报告四件事:
|
|
82
|
+
|
|
83
|
+
1. **改了什么及原因**——原因写在交付报告或提交说明里,不强制另建变更日志;
|
|
84
|
+
2. **影响哪里**——受影响的规则、代码、图、详情、证据清单;
|
|
85
|
+
3. **如何验证及结果**——未验证项如实标注;
|
|
86
|
+
4. **还有什么未决或未验证**。
|
|
87
|
+
|
|
88
|
+
提交与发布遵循目标项目的授权规则;需要在管理页登记新版本时,保存仍由用户亲手完成
|
|
89
|
+
([project-contract.md](project-contract.md) §4)。
|
|
90
|
+
|
|
91
|
+
## 7. Archify 特有事实(引用,不重复发明流程)
|
|
92
|
+
|
|
93
|
+
- 保存操作由用户在管理页完成,本指引只提醒不代存(project-contract.md §4)。
|
|
94
|
+
- 历史快照保留当时的图、详情和证据;业务文档及部分名称信息不随快照回退——看历史
|
|
95
|
+
快照要核对当时的业务文档时,按快照指向的提交另行用 Git 核对。
|
|
96
|
+
- 保存可能返回已有快照(三个图文件与阶段和已有快照相同时),不能承诺"每次修改都会
|
|
97
|
+
产生新快照";以实际返回的快照为准。
|
|
98
|
+
- 未经核实的内容不因进入修改流程就被标成已实现——四类标注口径不变
|
|
99
|
+
(project-contract.md §2.5、evidence-review.md §4)。
|
|
100
|
+
|
|
101
|
+
## 8. 边界
|
|
102
|
+
|
|
103
|
+
- 本指引管已有业务或其产物的再次修改;从零开始的新业务从 SKILL.md 设计段主流程进入,不走本文。
|
|
104
|
+
- 拿不准归属的差异(该改代码还是该改规格)不自行选择,带候选交用户裁决
|
|
105
|
+
(与 evidence-review.md §6 同一条纪律)。
|
|
106
|
+
- 本指引自身添加新规则前先问三件事:**它解决了什么实际问题、现有规则为何没解决、
|
|
107
|
+
最轻的补救是什么**——单个项目的偏好留在项目规则里,重复出现、能解释清楚的共性问题
|
|
108
|
+
才进本指引。
|
|
109
|
+
|
|
110
|
+
## 9. 来源与状态
|
|
111
|
+
|
|
112
|
+
- 依据:2026-09-18 改版方案(**AI 建议、作者采纳定稿**——规则三分法、一句话定义、
|
|
113
|
+
六步框架、四情形表与"旧证据不因代码变化自动失效"的存续口径均出自该方案,含同日
|
|
114
|
+
评审三处修正)。
|
|
115
|
+
- 状态:三情形纸面推演已过,评审修正后自 SKILL 修改段入口重推;实际修改已于
|
|
116
|
+
2026-09-18 在真实业务(login-app 登录业务加组织维度)实跑验证,含评审三处修正
|
|
117
|
+
后的复验(12 档测试全绿、showcase 五判据重过)。
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# 证据补录与差异核对指引
|
|
2
|
+
|
|
3
|
+
本指引管"实现完成之后"这一段:源码证据怎么查证落笔、证据与实现的提交顺序怎么走、
|
|
4
|
+
规格/图/详情/源码怎么核对、差异报告怎么交付。evidence.json 的字段合法性总表见
|
|
5
|
+
[project-contract.md](project-contract.md) §2.6(单一来源,本文不重复);实现段的方案
|
|
6
|
+
与任务见 [implementation.md](implementation.md)。
|
|
7
|
+
|
|
8
|
+
## 1. 何时进入
|
|
9
|
+
|
|
10
|
+
- 实现已完成、必要测试已跑、改动已按授权提交——之后才补证据,不为补证据打断实现。
|
|
11
|
+
- 描述已有实现(源码早已在某个历史提交里)时,直接按 §2 查证引用,不新做实现。
|
|
12
|
+
|
|
13
|
+
## 2. 证据条目怎么写(先查证,再落笔)
|
|
14
|
+
|
|
15
|
+
七个字段一条不缺:`id`、`label`、`repo`、`commit`、`path`、`fromLine`、`toLine`。
|
|
16
|
+
插件对缺 `id`/`label`、省略 `repo` 只降级显示不报错;本 Skill 约定写全——`repo`
|
|
17
|
+
固定写 `"."`,明示同仓引用。每条落笔前逐项查证,不估:
|
|
18
|
+
|
|
19
|
+
- **commit**:`git rev-parse <提交>` 取全 40 位小写十六进制;不写短哈希、`HEAD`、
|
|
20
|
+
"最新"这类会漂移的写法;提交必须能在图所在仓库解析。
|
|
21
|
+
- **path**:仓库根相对路径、正斜杠(如 `backend/app/routers/…`);不写盘符、
|
|
22
|
+
反斜杠、开头的 `/` 与 `..` 段。
|
|
23
|
+
- **行号**:按**该提交上**的文件核对——`git show <commit>:<path>` 数行;工作区文件
|
|
24
|
+
可能已变,拿工作区行号估是错的。文件按 `\n` 切行、末尾空行不算一行;行号越界
|
|
25
|
+
整条报错,插件不自动收紧范围。
|
|
26
|
+
- **id/label**:id 用短横线英文(如 `eligibility-core`),同一图内不重复;label 写
|
|
27
|
+
人话+行范围(如"资格判定核心(12–16 行)"),让作者不点开源码就知道这条指什么。
|
|
28
|
+
|
|
29
|
+
单条示例(虚构业务,仅示意形状;真实使用时提交号须替换为查证过的真值):
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"id": "eligibility-core",
|
|
34
|
+
"label": "资格判定核心(12–16 行)",
|
|
35
|
+
"repo": ".",
|
|
36
|
+
"commit": "<git rev-parse 查证过的 40 位十六进制提交号>",
|
|
37
|
+
"path": "src/activity-eligibility.js",
|
|
38
|
+
"fromLine": 12,
|
|
39
|
+
"toLine": 16
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
引用范围取"能独立说明一件事"的最小连续段,不为凑数引用整个文件;条目数量以覆盖
|
|
44
|
+
本图相关规则与节点为准,不设指标。
|
|
45
|
+
|
|
46
|
+
## 3. 提交顺序(A→B)
|
|
47
|
+
|
|
48
|
+
1. **先提交实现,得提交 A**:获批实现按授权提交;证据要指向的就是 A。
|
|
49
|
+
2. **再提交证据,得提交 B**:把指向 A(或既有历史提交)的条目写进 evidence.json,
|
|
50
|
+
同步 details.md 受影响节点的四类标注(如【设计】改【实现】)并在正文注明出处
|
|
51
|
+
(写法如"(证据 eligibility-core)",见 project-contract.md §2.5 约束 7),一并提交。
|
|
52
|
+
3. **验收后提醒保存**:保存检查要求三个图文件与最新提交一致(project-contract.md
|
|
53
|
+
§4)——证据不先提交,作者存不了。差异报告(§5)交作者、验收与差异裁决完成后,
|
|
54
|
+
才提醒作者在管理页亲手保存**实现版**。**快照锚定的提交不预设是 B**:三个图文件
|
|
55
|
+
与阶段和已有快照相同时,保存返回的是那份旧快照;否则锚定保存时确认的 HEAD——
|
|
56
|
+
B 之后又有别的提交时也不是 B。保存结果以实际返回的快照为准;要核对"当时的
|
|
57
|
+
业务文档",按返回快照指向的提交去核对(project-contract.md §4)。
|
|
58
|
+
|
|
59
|
+
- **源码已在历史提交**:直接引用那个提交,不为凑证据造无意义提交。
|
|
60
|
+
- **禁止自指**:不试图把"包含 evidence.json 自身的那个提交"填进 `commit`——提交前
|
|
61
|
+
拿不到号,提交后文件已变,逻辑上不可能;条目只能指向写入它之前已存在的提交。
|
|
62
|
+
- 证据条目是对代码事实的记录,差异裁决不改变条目本身;裁决后代码再变,才按 §6
|
|
63
|
+
更新条目再提交。
|
|
64
|
+
- 实现未改变图所描述的行为时,不重画图、不重跑制图校验(SKILL.md 实现段入口);
|
|
65
|
+
实现改变了图所描述的行为时,图与规格的同步属修改流程([change.md](change.md)),先如实报差异。
|
|
66
|
+
|
|
67
|
+
## 4. 四方核对(只读)
|
|
68
|
+
|
|
69
|
+
对象:业务规格(FR/AC 编号)× 图(节点与分支)× details.md(四类标注)× 源码
|
|
70
|
+
(证据切片)。**核对阶段不改任何文件**——差异先报告,经作者裁决后再改。三类检查
|
|
71
|
+
(思路借自 Spec Kit analyze 的覆盖与冲突检查,见 source-map.md):
|
|
72
|
+
|
|
73
|
+
- **覆盖**:与本图相关的每条规则、每个关键节点,必居四态之一——有证据支持
|
|
74
|
+
(已有实现)、【设计】(拟定设计)、未实现(**查证后确认**代码里没有)、
|
|
75
|
+
【未核实】(代码可能存在,但本轮没查证到足够证据,写清缺什么)。没查证到的
|
|
76
|
+
只能标【未核实】,不断言"未实现"。反向,每条证据都要能指回某条规则或节点——
|
|
77
|
+
指不回的(证据孤儿)列为问题。
|
|
78
|
+
- **冲突**:证据与规格条文矛盾(规格写"不得"、代码却允许)、两条证据互相矛盾、
|
|
79
|
+
图上的走向与代码实际走向不一致——逐条列出,不裁决、不改文案抹平。
|
|
80
|
+
- **缺口**:规格没写、代码却做了的夹带行为;图上有、代码没做的节点。实现期发现
|
|
81
|
+
业务缺口本应停下报告(implementation.md §4),这里是事后兜底再扫一遍。
|
|
82
|
+
|
|
83
|
+
不对差异做严重度分级——差异一律交作者裁决,不用 CRITICAL/HIGH 那套机器分级
|
|
84
|
+
排优先级。
|
|
85
|
+
|
|
86
|
+
## 5. 差异报告(六列,随实现段交付报告给出)
|
|
87
|
+
|
|
88
|
+
| # | 规则/节点 | 设计要求 | 实现事实与出处 | 测试结果 | 未核实项 | 待作者裁决 |
|
|
89
|
+
|---|---|---|---|---|---|---|
|
|
90
|
+
|
|
91
|
+
- 每行对应一条规则(FR-xxx/AC-xxx)或一个图节点。核对过且一致的行也列出——让
|
|
92
|
+
作者看到覆盖范围;量大时先与作者确认核对范围,但"没进表"不得被读成"没有差异"。
|
|
93
|
+
- **三分开**:实现事实列只写代码是什么(出处=证据 id,或 `path@提交前 8 位:行号`);
|
|
94
|
+
测试结果列只写跑了什么、结果如何,没跑写"未测";业务判断(算不算符合)只出现在
|
|
95
|
+
待裁决列与表尾总判断,不混进事实列。
|
|
96
|
+
- **未核实项**:没能核实的如实写(无证据、行号未查、环境未跑),不装成已核对。
|
|
97
|
+
- 表尾给总判断:核实一致 X 条、不一致 Y 条、未核实 W 条、待裁决 Z 条——未核实
|
|
98
|
+
单列,不并进"核实一致";没有差异如实写"无差异",不硬凑行;有差异不靠改文案
|
|
99
|
+
抹平(SKILL.md 守恒关系第 2、3 条)。
|
|
100
|
+
|
|
101
|
+
示例(虚构业务,仅演示格式;提交号为插件虚构样本仓里的值):
|
|
102
|
+
|
|
103
|
+
| # | 规则/节点 | 设计要求 | 实现事实与出处 | 测试结果 | 未核实项 | 待作者裁决 |
|
|
104
|
+
|---|---|---|---|---|---|---|
|
|
105
|
+
| 1 | FR-006 | 未验证账户提交报名必须被拒 | 账户状态先于重复报名判定,未验证直接拒(证据 eligibility-core,src/activity-eligibility.js@3fda7dc3:12–16) | 单测 2 例通过(未验证拒、已验证放行) | 无 | 无 |
|
|
106
|
+
| 2 | send_confirmation | 确认消息分座位与候补两种文案 | 【设计】节点未实现(设计如此),无代码 | 未测 | 无 | 无 |
|
|
107
|
+
|
|
108
|
+
默认不落独立报告文件;图多或作者要求留档时,落位与命名先与作者确认。
|
|
109
|
+
|
|
110
|
+
## 6. 裁决后怎么办
|
|
111
|
+
|
|
112
|
+
- 作者对差异逐条裁决后,按批准范围改:改代码、补证据,或修订规格/图(规格走
|
|
113
|
+
specification.md,图按 [workflow.md](workflow.md) §3–§4 修改并重跑校验,完整修改
|
|
114
|
+
流程见 [change.md](change.md));改完重新核对受影响的行,仍按 §3 顺序提交,
|
|
115
|
+
保存实现版仍由作者亲手点。
|
|
116
|
+
- 拿不准归属的差异(该改代码还是该改规格)不自行选择,作为待裁决问题带着候选给出。
|
|
117
|
+
|
|
118
|
+
## 7. 边界
|
|
119
|
+
|
|
120
|
+
- 不新增节点级证据 UI:第一版用图下方现有证据面板读固定提交代码;页面交互扩展
|
|
121
|
+
另行裁决。
|
|
122
|
+
- 不编造真实业务证据:本文示例均为插件自带虚构样本或占位符;真实证据必须逐条按
|
|
123
|
+
§2 查证。
|
|
124
|
+
- 本指引经插件源码静态核对(`src/core/evidence.ts` 等),并已在真实登录业务实跑
|
|
125
|
+
验证(2026-09-18);规格修订联动与图同步见 [change.md](change.md)。
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# 实现段指引
|
|
2
|
+
|
|
3
|
+
本指引管"业务规格获批之后、动手实现"这一段:什么时候需要方案与任务文件、怎么写、怎么执行、怎么交付。
|
|
4
|
+
模板管"长什么样"(`assets/plan-template.md`、`assets/tasks-template.md`),本指引管"怎么写、怎么执行"。
|
|
5
|
+
|
|
6
|
+
## 1. 何时进入、何时落文件
|
|
7
|
+
|
|
8
|
+
- **进入条件**:业务规格已获作者批准,且作者明确批准了本次实现范围。标着【待裁决】的事项
|
|
9
|
+
不得当作已批准规则进入实现。
|
|
10
|
+
- **三问是硬要求,文件不是**:任何实现开工前必须先答清——**怎么实现?影响哪里?每步验收什么?**
|
|
11
|
+
——并经作者同意。答不清说明规格或方案还不成熟,先补齐再动手。
|
|
12
|
+
- **按复杂度落文件**:简单功能(一两处小改、无新规则)不强制写 plan.md/tasks.md,
|
|
13
|
+
在既有计划或交付报告里把三问答清即可,不为仪式增加文件。改动跨模块、影响面广、
|
|
14
|
+
或作者要求留档时才落文件;落位与命名开工时与作者确认,不自行新建目录约定。
|
|
15
|
+
- **不默认凑齐配套文件**:调研记录、数据模型、接口契约、快速上手指南都不作为默认必交文件。
|
|
16
|
+
普通设计解释写进方案相应章节;确有需要独立成文的(如接口契约变更),先说明原因、
|
|
17
|
+
纳入获批范围再写。关键业务决定不落这些文件——回业务规格。
|
|
18
|
+
|
|
19
|
+
## 2. 方案(plan)怎么写
|
|
20
|
+
|
|
21
|
+
- **职责边界**:业务规格定规则(FR-xxx 是什么);方案只解释"怎么实现、为什么这么选、影响哪里"。
|
|
22
|
+
方案引用规则编号,不重新定义同名业务规则——发现规格没写清的,回规格补或标【待裁决】,
|
|
23
|
+
不在方案里另立规矩。
|
|
24
|
+
- 方案必须答清开工三问(与 §1 同一组),对应模板:**§2.1 怎么实现**(做法与数据流,
|
|
25
|
+
不贴大段代码)、**§2.3 影响哪里**(会动的文件、模块、接口,以及既有图/详情/证据
|
|
26
|
+
是否需要同步——先如实列出,同步流程见 [change.md](change.md))、**§5 每步验收什么**(验证计划总览,
|
|
27
|
+
含作者亲验项)。「为什么这么选」(§2.2 候选方案与放弃理由,关键决定按
|
|
28
|
+
「决定/理由/放弃的替代」留痕)继续保留为方案解释,不属于三问、不得省略。
|
|
29
|
+
- 技术上下文只填与本次相关的项;未定的技术前提标【待澄清】,集中问作者,不猜。
|
|
30
|
+
- 验证计划在方案里给总览(含作者亲验项);逐任务的验收放任务清单。
|
|
31
|
+
|
|
32
|
+
## 3. 任务清单(tasks)怎么写
|
|
33
|
+
|
|
34
|
+
- 从**已批准**的方案拆解;每个任务必须"能做、能验":写清做什么(含文件路径)、
|
|
35
|
+
完成后拿什么证明(「验」)、依据哪条规则(「据」)。
|
|
36
|
+
- **约束逐字进任务**:涉及数量上限、格式、权限、时间窗等关键约束时,把规格里的约束原文
|
|
37
|
+
逐字抄进任务描述,不留实现期自由裁量;除引用编号外,关键数字也照抄,不只写"按规格"。
|
|
38
|
+
- 编号从 T001 连续分配、一经使用不改号;默认串行执行,有依赖在条目注明——不引入并行标记
|
|
39
|
+
与分工策略。
|
|
40
|
+
- **测试规则**:业务逻辑与缺陷修复必须带必要的相关测试;纯样式、文案、配置类改动可用
|
|
41
|
+
格式检查、预览或相关单档验证。不因"先写代码后写测试"推倒重来,也不为通过而放宽检查。
|
|
42
|
+
|
|
43
|
+
## 4. 执行纪律
|
|
44
|
+
|
|
45
|
+
- 一次只做一个获批功能;只动范围内和相关文件,不顺带扩大。
|
|
46
|
+
- 实现中发现业务缺口(规格没说、两种做法都合理)先停下来报告,不替作者拍板。
|
|
47
|
+
- 同一问题累计两轮修复仍未解决即停,报告事实、已试方法与未解决点,与作者商量。
|
|
48
|
+
- 实现与规格、图、详情不一致时如实摆出差异交作者裁决,不改文案抹平。
|
|
49
|
+
- 提交只在获批分支、只含本功能相关内容;页面效果交作者本人查看验收。
|
|
50
|
+
|
|
51
|
+
## 5. 交付前自查
|
|
52
|
+
|
|
53
|
+
- [ ] 三问已答清并获作者同意(独立文件或等价表达)。
|
|
54
|
+
- [ ] 每个任务有「验」且逐条执行、结果如实(含失败与未验项)。
|
|
55
|
+
- [ ] 业务逻辑与缺陷修复带了必要测试;测试结果如实报告。
|
|
56
|
+
- [ ] 未重新定义规格规则;新发现的规则去了规格或已标【待裁决】。
|
|
57
|
+
- [ ] 影响面中需要同步的图/详情/证据已处理或已列为待办。
|
|
58
|
+
- [ ] 差异与未决项如实列出,无则写"无"。
|
|
59
|
+
|
|
60
|
+
自查通过后按此报告:任务完成情况(含失败与未验项)、测试命令与结果、差异与未决项(差异明细用 [evidence-review.md](evidence-review.md) §5 的六列表展开)、提交状态;页面类改动附入口与检查点。
|
|
61
|
+
|
|
62
|
+
## 6. 边界
|
|
63
|
+
|
|
64
|
+
- 本指引只管方案与任务的编写执行;实现完成后的证据补录与规格/图/详情/源码核对见
|
|
65
|
+
[evidence-review.md](evidence-review.md),保存实现版快照由作者在管理页亲手完成
|
|
66
|
+
([project-contract.md](project-contract.md) §4),已有业务的修改同步见 [change.md](change.md)。
|
|
67
|
+
- 不照搬 Spec Kit implement 命令的自动执行流程、扩展 hooks 与并行执行机制。
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# 管理页六类文件与节点详情约定
|
|
2
|
+
|
|
3
|
+
本约定管三件事:一张图交付时落在业务仓库的哪些文件里、每个文件长什么样才合法、节点详情(details.md)怎么写。图的画法与校验见 [workflow.md](workflow.md)(workflow.json 本身不在本文重复);业务规格怎么写见 [specification.md](specification.md)。依据插件源码与 README D2 节静态整理(2026-09-17),首次真实使用在计划步骤 2。
|
|
4
|
+
|
|
5
|
+
## 1. 目录总览与路径基准
|
|
6
|
+
|
|
7
|
+
插件只认一种组织方式(约定根 `docs/specdev/`,业务仓库根相对):
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
<业务仓库>/
|
|
11
|
+
docs/specdev/
|
|
12
|
+
project.json # 项目(整仓一份)
|
|
13
|
+
<业务id>/business.json # 业务(每业务一份)
|
|
14
|
+
<业务id>/<图id>/chart.json # 图说明(每图一份)
|
|
15
|
+
<业务id>/<图id>/workflow.json # 图源(Archify workflow JSON)
|
|
16
|
+
<业务id>/<图id>/details.md # 节点详情
|
|
17
|
+
<业务id>/<图id>/evidence.json # 源码证据引用
|
|
18
|
+
docs/…、src/… # 业务文档与源码留在原位,只引用不搬动
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
- **路径基准**:business.json 里 `docs` 数组、evidence.json 里 `path`,一律写**业务仓库根相对路径**(正斜杠分隔),不是相对 `docs/specdev/`,也不写盘符绝对路径。
|
|
22
|
+
- **id 即目录名**:业务 id、图 id 就是各自的目录名;插件按目录遍历,说明文件里的 `id` 与目录名不一致会直接标记说明文件问题。
|
|
23
|
+
- **业务 id 与图 id 的硬限制**:必须匹配 `^[A-Za-z0-9][A-Za-z0-9._-]*$`(字母或数字开头,其余只能是字母、数字、点、下划线、连字符)——这是管理页路由与 API 的统一校验(`src/dsh/index.ts` 的 `ID_PATTERN`)。说明文件字段检查只看 id=目录名,**id 不合规的业务/图照样进不去页面、调不了 API**:目录名用中文,即使说明文件全对也访问不了。
|
|
24
|
+
- **命名建议(硬限制之内从严)**:沿用 workflow 节点 id 的风格——字母开头,可含数字、下划线、连字符,不用点,不写中文、空格、斜杠。快照标签名形如 `specdev/<图编号>/<版本标识>`,图 id 会进标签名,保持朴素少踩坑。
|
|
25
|
+
- **图编号全项目唯一**:跨业务也不允许重复。重复时两边都标记编号冲突、该图阅读停用——历史快照按图编号归组,重了分不清归属。
|
|
26
|
+
|
|
27
|
+
## 2. 六类文件逐个约定
|
|
28
|
+
|
|
29
|
+
下例合成一个最小项目(一段业务、一张图),字段值是编的,形状对齐插件自带合法样本(`sample/generate.mjs`)与源码校验规则。"最小合法"指缺了会报错、再少写一个字段就不成立;**已有文件只改要改的字段,其余内容原样保留,不整份重建**(插件只校验下表字段,不拒绝额外字段,静态核对结论)。
|
|
30
|
+
|
|
31
|
+
### 2.1 project.json(项目)
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"schema": "specdev/project/1",
|
|
36
|
+
"name": "示例项目名"
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
| 字段 | 必填 | 含义 |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| `schema` | 是 | 固定 `"specdev/project/1"`,一字不差 |
|
|
43
|
+
| `name` | 是 | 项目显示名(首页标题),非空 |
|
|
44
|
+
| `description` | 否 | 项目一句话说明 |
|
|
45
|
+
|
|
46
|
+
规则:整仓只有这一份;`schema` 不对或 `name` 缺失时首页直接报错。项目里已有其他字段(如 `description`、后续业务信息)保留不动。
|
|
47
|
+
|
|
48
|
+
### 2.2 business.json(业务)
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"schema": "specdev/business/1",
|
|
53
|
+
"id": "activity-registration",
|
|
54
|
+
"name": "活动报名",
|
|
55
|
+
"intro": "一句话业务介绍。",
|
|
56
|
+
"docs": ["docs/活动报名说明.md"]
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
| 字段 | 必填 | 含义 |
|
|
61
|
+
|---|---|---|
|
|
62
|
+
| `schema` | 是 | 固定 `"specdev/business/1"` |
|
|
63
|
+
| `id` | 是 | 业务 id,**必须与目录名一致** |
|
|
64
|
+
| `name` | 是 | 业务显示名,非空 |
|
|
65
|
+
| `intro` | 否 | 业务介绍(业务页展示) |
|
|
66
|
+
| `docs` | 否 | 业务文档路径数组:仓库根相对路径,引用原位文档,不复制 |
|
|
67
|
+
|
|
68
|
+
规则:
|
|
69
|
+
|
|
70
|
+
- **文档留在原位**:`docs` 只登记路径;业务文档放仓库哪里都行,管理页按路径去读。
|
|
71
|
+
- **页面只读声明过的路径**:不在 `docs` 里的路径,管理页拒绝读取;声明了但工作区文件不存在,会明确报"文档不存在"。所以每条路径写完自查文件在不在。
|
|
72
|
+
- 已有业务再添图时,这份文件通常不用动。
|
|
73
|
+
|
|
74
|
+
### 2.3 chart.json(图说明)
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"schema": "specdev/chart/1",
|
|
79
|
+
"id": "submit-review",
|
|
80
|
+
"name": "提交复核流程",
|
|
81
|
+
"summary": "一句话图摘要。"
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
| 字段 | 必填 | 含义 |
|
|
86
|
+
|---|---|---|
|
|
87
|
+
| `schema` | 是 | 固定 `"specdev/chart/1"` |
|
|
88
|
+
| `id` | 是 | 图编号,**必须与目录名一致,且全项目唯一** |
|
|
89
|
+
| `name` | 是 | 图显示名(业务页图列表、阅读页标题) |
|
|
90
|
+
| `summary` | 否 | 图摘要(图列表展示) |
|
|
91
|
+
|
|
92
|
+
规则:新建图前先确认这个编号没被别的业务用掉(含历史遗留目录)。
|
|
93
|
+
|
|
94
|
+
### 2.4 workflow.json(图源,同图目录)
|
|
95
|
+
|
|
96
|
+
- **原生 Archify workflow JSON**:字段、制作流程、showcase 校验五判据全部见 [workflow.md](workflow.md),本文不重复。
|
|
97
|
+
- **不自创插件没约定的业务字段**:插件把这份文件原样交给 Archify 渲染,业务语义走 details.md 与 evidence.json;Archify schema 也不允许额外字段,塞了只会校验失败。
|
|
98
|
+
- 缺失时阅读页明确报"缺图文件",不给空白页;文件超过 2MB 读取上限会报"读不开"——图源保持精炼,不往里塞大段填充。
|
|
99
|
+
|
|
100
|
+
### 2.5 details.md(节点详情,同图目录)
|
|
101
|
+
|
|
102
|
+
分节约定(插件的解析规则):
|
|
103
|
+
|
|
104
|
+
- 每节解释对应节点的**职责、条件、先后顺序、失败后果**,并给**业务文档出处**(章节或编号);文档没定的走向见写作约束第 8 条。
|
|
105
|
+
- 一级标题 `#`(首个分节之前)= 图的总说明;**首个分节之前只有这一行标题会显示**,其余前言(引用块、说明段)一律被忽略——阶段声明这类要紧话写进标题行(样例即"……(设计版)")或各节前缀,不放前言。
|
|
106
|
+
- 每节以 `## <节点id>` 开头;节内**不是完整 Markdown**,页面只按简单规则显示:空行分段、`-`/`*`/`数字.` 简单列表、`**加粗**` 与 `` `行内代码` ``。链接、表格、引用块、三级及更深标题不会按 Markdown 渲染——复杂语法要么按普通文字原样显示、要么被忽略,重要信息别依赖这些格式。
|
|
107
|
+
- **分节标题只写纯节点 id**:插件把 `## ` 后第一个空白前的词当节点 id,其余当附注。写成中文(如 `## 提交报名`)不报错,但该节与图上节点(英文 id)对不上——点节点会显示"没有这个节点的说明",等于白写。
|
|
108
|
+
- 同一节点 id 写多节:不算错,但详情弹层只会显示第一份并提示;不要写多节。
|
|
109
|
+
- 图上没有、详情里写了的 id:容忍照常显示(删节点后旧详情不必同步删);图上有、详情没写的:插件列为"没写说明",不算错误——**这只是读取降级,不是交付标准**:本 Skill 交付要求分节覆盖图上全部节点(见检查清单第 4 项)。
|
|
110
|
+
- 正文代码围栏(``` 或 ~~~)不会截断分节(围栏里的 `#`/`##` 不当标题),但围栏符号本身也只按普通文字显示,展示能力以上面"简单规则显示"一条为准。
|
|
111
|
+
|
|
112
|
+
最小合法示例(对应一张两节点图;注意首个 `##` 之前只有标题行会显示):
|
|
113
|
+
|
|
114
|
+
```markdown
|
|
115
|
+
# 提交复核流程 · 节点详情(设计版,尚无源码证据)
|
|
116
|
+
|
|
117
|
+
## submit_registration
|
|
118
|
+
【设计】学生在门户填写报名表并提交;表单只收集必要字段。
|
|
119
|
+
|
|
120
|
+
## check_eligibility
|
|
121
|
+
【设计】校验账户状态与重复报名,判定是否受理;不通过转拒绝,不落记录。
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**写作约束**(摘自 archify-reader《详情内容规范》2026-09-05 作者裁决,适配到本文件;读者设定不变):
|
|
125
|
+
|
|
126
|
+
1. **读者是看过图、没看过代码的业务裁决者**。不许擅自换成技术读者。
|
|
127
|
+
2. **正文零代码标识符**:变量、函数、表名、配置名、状态码、HTTP 方法不进白话正文;源码核对走 evidence.json(源码引用单列),不放正文里。
|
|
128
|
+
3. **按真实执行顺序讲**:先做什么、后做什么,一步一句事实——顺序本身就是检验点,逻辑不对读者要能看出来。谁、对什么数据、做了什么动作、得到什么结果;必要术语第一次出现给一句白话注释;客观白描,不修饰、不科普、不"专业腔"总结。
|
|
129
|
+
4. **失败分支也是事实**:这一步出错会怎样、影响谁;禁止只写成功路径。没跑过的失败情景不得写成已验证事实。
|
|
130
|
+
5. **首尾承接**:开头说从哪个节点接过什么、前面完成了什么;结尾说本次在哪结束、留下什么结果、谁在什么条件下进入哪个节点。入口/终点如实说明,不为填格式虚构上下游。
|
|
131
|
+
6. **依赖就地解释**:不只说"现有规则""前面处理过"——先写当前判断必需的一句话规则或数据来源,再引用对应节点;多个分支时明确列出条件。
|
|
132
|
+
7. **四类分开说**:拟定设计、已有实现、未实现、未核实,分开标注不混写(示例用【设计】前缀;标记写法可自定,分开说不可省)。
|
|
133
|
+
8. **文档未定义的分支列为问题,不以图补定规则**:业务文档没定的走向,在详情或交付报告里列为待裁决问题,不在图和详情里替业务做决定(与 workflow.md §3 出处规则同一条纪律)。
|
|
134
|
+
|
|
135
|
+
### 2.6 evidence.json(源码证据引用,同图目录)
|
|
136
|
+
|
|
137
|
+
设计阶段的合法形态就是**空清单,不伪造**:
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"schema": "specdev/evidence/1",
|
|
142
|
+
"refs": []
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
描述已有实现时才补引用条目(字段与规则经 `src/core/evidence.ts` 静态核对):
|
|
147
|
+
|
|
148
|
+
```json
|
|
149
|
+
{
|
|
150
|
+
"schema": "specdev/evidence/1",
|
|
151
|
+
"refs": [
|
|
152
|
+
{
|
|
153
|
+
"id": "eligibility-core",
|
|
154
|
+
"label": "资格判定核心(12–16 行)",
|
|
155
|
+
"repo": ".",
|
|
156
|
+
"commit": "<查证过的 40 位十六进制完整提交号>",
|
|
157
|
+
"path": "src/activity-eligibility.js",
|
|
158
|
+
"fromLine": 12,
|
|
159
|
+
"toLine": 16
|
|
160
|
+
}
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
| 字段 | 必填 | 规则 |
|
|
166
|
+
|---|---|---|
|
|
167
|
+
| `id`/`label` | 建议 | 引用标识与显示名;缺省显示"refs[N]/引用 N+1" |
|
|
168
|
+
| `repo` | 可选 | 第一批只支持同仓:省略或写 `"."`;写别的整条报错 |
|
|
169
|
+
| `commit` | 是 | 40 位十六进制完整提交号(短哈希不行) |
|
|
170
|
+
| `path` | 是 | 仓库根相对路径、正斜杠;不允许反斜杠、盘符、绝对路径、`..` 段 |
|
|
171
|
+
| `fromLine`/`toLine` | 是 | 整数、从 1 起;`fromLine ≤ toLine`,且不得超过**该提交上**文件总行数 |
|
|
172
|
+
|
|
173
|
+
规则:
|
|
174
|
+
|
|
175
|
+
- **证据永远按固定提交读**:文件后来变了不算引用错误;但引用写错(提交不存在、文件不在该提交上、行号越界)整条明确报错,页面不放近似内容。
|
|
176
|
+
- 每条引用独立成败,一条坏不拖累别的;写引用前逐条查证行号,不估。
|
|
177
|
+
- 设计阶段 refs 留空;没证据不硬凑。
|
|
178
|
+
- 何时补证据、怎么查证与提交、补完怎么核对,见 [evidence-review.md](evidence-review.md)。
|
|
179
|
+
|
|
180
|
+
## 3. 交付前检查清单(第一版手动)
|
|
181
|
+
|
|
182
|
+
按本 Skill 流程交付前逐项过一遍。第一版只用清单,不新建自动化脚本(计划 1b-2 停止边界);插件自身的报错(说明文件问题、编号冲突、路径不存在)会体现在管理页,清单是把问题在交付前拦住。
|
|
183
|
+
|
|
184
|
+
| # | 检查项 | 怎么查 |
|
|
185
|
+
|---|---|---|
|
|
186
|
+
| 1 | 六类文件格式 | JSON 都能解析;三个说明文件 `schema` 一字不差、必填字段非空、`id` 与目录名一致;workflow.json 过 workflow.md §4 校验(showcase 五判据全过) |
|
|
187
|
+
| 2 | 图编号全项目唯一 | 扫全部 `docs/specdev/<业务id>/` 下的图目录名,新图编号不与任何现有图重复 |
|
|
188
|
+
| 3 | 文档路径有效 | business.json `docs` 每条:仓库根相对、正斜杠、文件在工作区确实存在 |
|
|
189
|
+
| 4 | 详情节与节点 ID 对应 | details.md 每个 `## ` 节的 id 都在 workflow.json `nodes[].id` 里;无中文标题、无多节同 id;**分节覆盖图上全部节点**——插件容忍漏写(显示"没写说明")只是读取降级,交付不得留漏:能补齐的当场补齐,业务文档没写依据的列为待裁决问题,不默认放过 |
|
|
190
|
+
| 5 | 规则及分支出处 | 每个节点的职责、条件、先后、失败后果都能指回业务文档;文档没定义的分支已列为待裁决问题,没在图里替业务定规则 |
|
|
191
|
+
|
|
192
|
+
## 4. 保存边界(如实说)
|
|
193
|
+
|
|
194
|
+
- **Skill 只提醒,不代存**:保存版本是作者在管理页亲手点的动作(唯一写操作=给提交挂附注标签)。Skill 流程做到"提醒作者查看并手动保存"为止,AI 不代点、不直接打快照标签。
|
|
195
|
+
- **随版本读取的只有三个数据文件**:workflow.json、details.md、evidence.json。保存前的检查也只核对这三个文件与最新提交一致(换行差异不算改动)。
|
|
196
|
+
- **保存结果分两种,锚定的提交不一定是当前 HEAD**:插件保存时先按三个文件的内容+阶段查重——与已有快照完全相同就**直接返回那份旧快照**(`alreadySaved`,不给当前提交挂新标签)。例如只改业务文档并提交后再保存同阶段的图,三个图文件没变,返回的可能仍是旧提交上的那份。内容或阶段有变化,才在当前 HEAD 上新建快照。**核对"这份快照对应的业务文档"时,按实际返回的快照锚定的提交去核对**,不默认它是最新提交。
|
|
197
|
+
- **不随版本回退的**:图名称与摘要取自**当前** chart.json(管理页在历史版本下有说明行提示);业务名称、介绍、文档列表取自当前 business.json;业务文档内容按工作区当前文件读。
|
|
198
|
+
- 因此看历史快照时,若要核对**当时的**业务文档,须按该快照指向的提交另行用 git 核对,不能拿当前文档当历史文档。
|
|
199
|
+
|
|
200
|
+
## 5. 来源与状态
|
|
201
|
+
|
|
202
|
+
| 来源 | 取用点 |
|
|
203
|
+
|---|---|
|
|
204
|
+
| `specdev-workbench/README.md`(D2 节、页面与 API、快照五项校验) | 目录结构、图名不随版本回退、docs 只读声明路径 |
|
|
205
|
+
| `specdev-workbench/sample/generate.mjs` + `sample/data/` | 六类文件合法样本形状、details 分节写法、证据引用条目 |
|
|
206
|
+
| `skills/archify-reader/SKILL.md`《详情内容规范》 | §2.5 写作约束八条(摘取适配,见下) |
|
|
207
|
+
| `src/core/types.ts`、`chart-files.ts`、`evidence.ts`、`inventory.ts`、`src/dsh/index.ts`(doc 路由)、`web/assets/details.js` | 字段校验、三文件清单、证据硬规则、编号冲突、分节解析(均只读核对,未改插件) |
|
|
208
|
+
|
|
209
|
+
有意不采用(reader 规范里属于旧 HTML 阅读器产物的概念,不移植):普通/源码对照双模式、悬停注释、`evidenceExemption`、reader.json 与构建脚本;本文件只取其写作纪律。generate.mjs 的坏样本(坏标签、坏证据、超限)用于理解插件报错行为,不作为书写目标。
|
|
210
|
+
|
|
211
|
+
状态:最小合法示例与规则均经源码静态核对(2026-09-17);本文件未经真实业务仓实跑(计划步骤 2 首跑),"最小合法"的判定依据是插件字段校验逻辑,非管理页实走验证。
|