@namewta/speculo 0.6.0 → 0.7.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/README.md +11 -11
- package/dist/src/cli.js +36 -128
- package/dist/src/cli.js.map +1 -1
- package/dist/src/index.d.ts +2 -4
- package/dist/src/index.js +173 -151
- package/dist/src/index.js.map +1 -1
- package/package.json +6 -4
- package/template/.speculo/README.md +4 -0
- package/template/canonical/canonical-specdev-engineering-cognitive-mentor.md +133 -141
- package/template/canonical/canonical-specdev-goal-plan.md +394 -377
- package/template/canonical/canonical-specdev-grill-with-docs.md +241 -178
- package/template/canonical/canonical-specdev-spec.md +132 -122
- package/template/canonical/canonical-specdev-tickets.md +176 -156
- package/template/canonical/canonical-specdev-wayfinder.md +106 -108
- package/template/commands/archive-and-consolidate.md +10 -8
- package/template/commands/handoff.md +2 -0
- package/template/commands/retro.md +3 -3
- package/template/commands/status.md +5 -4
- package/template/skills/archive-and-consolidate/SKILL.md +5 -9
- package/template/skills/archive-and-consolidate/assets/archive-plan-template.md +1 -1
- package/template/skills/archive-and-consolidate/references/archive-rules.md +4 -4
- package/template/skills/archive-and-consolidate/references/consolidation-rules.md +7 -8
- package/template/skills/archive-and-consolidate/references/knowledge-graduation.md +5 -2
- package/template/skills/github-npm-ops/SKILL.md +4 -2
- package/template/skills/github-npm-ops/references/issue-transport.md +26 -0
- package/template/skills/github-npm-ops/references/preflight-checklist.md +1 -1
- package/template/skills/github-npm-ops/scripts/issue-transport.mjs +227 -0
- package/template/workflows/specdev/A-archive-and-consolidate/A-archive-and-consolidate.md +31 -145
- package/template/workflows/specdev/A-archive-and-consolidate/consolidation-interview.md +4 -6
- package/template/workflows/specdev/C-code-review/C-code-review.md +42 -0
- package/template/workflows/specdev/C-code-review/code-review-template.md +42 -0
- package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +45 -48
- package/template/workflows/specdev/D-diagnose-bugs/diagnosis-template.md +44 -40
- package/template/workflows/specdev/D-diagnose-bugs/feedback-loop.md +41 -0
- package/template/workflows/specdev/D-diagnose-bugs/hypothesis-and-instrumentation.md +32 -0
- package/template/workflows/specdev/D-diagnose-bugs/scripts/hitl-loop.template.sh +26 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/E-engineering-cognitive-mentor.md +3 -3
- package/template/workflows/specdev/E-engineering-cognitive-mentor/persistence-and-resume.md +5 -20
- package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +17 -10
- package/template/workflows/specdev/G-grill-with-docs/adr-format.md +31 -17
- package/template/workflows/specdev/G-grill-with-docs/context-format.md +9 -29
- package/template/workflows/specdev/G-grill-with-docs/domain-modeling-rules.md +10 -5
- package/template/workflows/specdev/G-grill-with-docs/stakeholder-questionnaire.md +45 -0
- package/template/workflows/specdev/I-implement/I-implement.md +29 -14
- package/template/workflows/specdev/I-implement/delegated-evidence-template.md +11 -0
- package/template/workflows/specdev/I-implement/evidence-template.md +24 -10
- package/template/workflows/specdev/I-implement/execution-preflight.md +4 -4
- package/template/workflows/specdev/I-implement/merge-conflict-protocol.md +20 -0
- package/template/workflows/specdev/I-implement/tdd-mocking.md +19 -0
- package/template/workflows/specdev/I-implement/tdd-rules.md +14 -12
- package/template/workflows/specdev/I-implement/tdd-test-design.md +25 -0
- package/template/workflows/specdev/I-init-setup/I-init-setup.md +12 -9
- package/template/workflows/specdev/I-init-setup/config-template.json +1 -1
- package/template/workflows/specdev/I-init-setup/domain-layout-template.md +2 -2
- package/template/workflows/specdev/I-init-setup/status-template.json +2 -3
- package/template/workflows/specdev/I-init-setup/tracking-template.md +3 -0
- package/template/workflows/specdev/INDEX.md +64 -26
- package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +48 -38
- package/template/workflows/specdev/P-goal-plan/completion-control.md +19 -53
- package/template/workflows/specdev/P-goal-plan/delegated-execution-template.md +33 -0
- package/template/workflows/specdev/P-goal-plan/delegated-execution.md +53 -0
- package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +9 -40
- package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +16 -68
- package/template/workflows/specdev/P-goal-plan/planning-modes.md +20 -48
- package/template/workflows/specdev/P-prototype/P-prototype.md +46 -0
- package/template/workflows/specdev/P-prototype/logic-prototype.md +24 -0
- package/template/workflows/specdev/P-prototype/prototype-record-template.md +46 -0
- package/template/workflows/specdev/P-prototype/ui-prototype.md +21 -0
- package/template/workflows/specdev/R-review-architecture/R-review-architecture.md +1 -1
- package/template/workflows/specdev/S-spec/S-spec.md +2 -1
- package/template/workflows/specdev/T-tickets/T-tickets.md +3 -2
- package/template/workflows/specdev/T-tickets/ticket-readiness.md +1 -1
- package/template/workflows/specdev/T-tickets/ticket-template.md +1 -1
- package/template/workflows/specdev/T-tickets/tickets-map-template.md +1 -1
- package/template/workflows/specdev/T-triage/T-triage.md +65 -26
- package/template/workflows/specdev/T-triage/intake-protocol.md +32 -0
- package/template/workflows/specdev/T-triage/reconcile-protocol.md +34 -0
- package/template/workflows/specdev/T-triage/source-template.md +30 -0
- package/template/workflows/specdev/T-triage/triage-template.md +38 -24
- package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +3 -1
- package/template/workflows/specdev/_state/status.json +2 -3
- package/template/workflows/specdev/common/README.md +9 -2
- package/template/workflows/specdev/common/rules/artifact-contract.md +20 -9
- package/template/workflows/specdev/common/rules/change-completion.md +33 -0
- package/template/workflows/specdev/common/rules/deviation-control.md +2 -2
- package/template/workflows/specdev/common/rules/evidence-and-verification.md +1 -1
- package/template/workflows/specdev/common/rules/path-ownership.md +3 -3
- package/template/workflows/specdev/common/schemas/change-status.schema.json +43 -0
- package/template/workflows/specdev/common/schemas/code-review.schema.json +22 -0
- package/template/workflows/specdev/common/schemas/diagnosis.schema.json +19 -0
- package/template/workflows/specdev/common/schemas/prototype-record.schema.json +24 -0
- package/template/workflows/specdev/common/schemas/source.schema.json +20 -0
- package/template/workflows/specdev/common/schemas/status.schema.json +20 -78
- package/template/workflows/specdev/common/schemas/triage.schema.json +21 -0
- package/template/workflows/specdev/common/skills/code-review/SKILL.md +49 -0
- package/template/workflows/specdev/common/skills/code-review/references/fowler-smells.md +18 -0
- package/template/workflows/specdev/common/skills/code-review/references/reviewer-contracts.md +13 -0
- package/template/workflows/specdev/common/skills/code-review/references/source-discovery.md +22 -0
- package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +12 -9
- package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +18 -13
- package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +8 -6
- package/template/workflows/specdev/common/skills/research/SKILL.md +38 -26
- package/template/workflows/specdev/common/skills/subagent-delivery/SKILL.md +3 -5
- package/template/workflows/specdev/common/tools/README.md +3 -0
- package/template/workflows/specdev/common/tools/validate-specdev.mjs +496 -30
- package/dist/src/migrate.d.ts +0 -38
- package/dist/src/migrate.js +0 -642
- package/dist/src/migrate.js.map +0 -1
- package/dist/src/skills-mirror.d.ts +0 -38
- package/dist/src/skills-mirror.js +0 -160
- package/dist/src/skills-mirror.js.map +0 -1
- package/template/workflows/specdev/A-archive-and-consolidate/archive-checklist.md +0 -15
- package/template/workflows/specdev/A-archive-and-consolidate/knowledge-promotion-rules.md +0 -32
- package/template/workflows/specdev/I-implement/code-review-process.md +0 -17
- package/template/workflows/specdev/I-implement/tdd-examples.md +0 -14
- package/template/workflows/specdev/I-init-setup/status-labels-template.md +0 -55
|
@@ -21,7 +21,7 @@ Spec 决定“为什么、为谁、系统应表现为何”。它可以锁定影
|
|
|
21
21
|
|
|
22
22
|
按存在情况读取:
|
|
23
23
|
|
|
24
|
-
- `specdev/changes/{change}/source
|
|
24
|
+
- `specdev/changes/{change}/source.md`
|
|
25
25
|
- `specdev/changes/{change}/triage.md`
|
|
26
26
|
- `specdev/changes/{change}/diagnosis.md`
|
|
27
27
|
- `specdev/changes/{change}/LOG.md`
|
|
@@ -123,8 +123,11 @@ Spec 决定“为什么、为谁、系统应表现为何”。它可以锁定影
|
|
|
123
123
|
1. 对照 下方 `<spec-schema>` 标签;
|
|
124
124
|
2. 运行:
|
|
125
125
|
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
```bash
|
|
127
|
+
node Speculo Node 校验器 \
|
|
128
|
+
--stage spec \
|
|
129
|
+
specdev/changes/{change}
|
|
130
|
+
```
|
|
128
131
|
|
|
129
132
|
3. 更新 `specdev/status.json` 与 `specdev/changes/{change}/.status.json`;
|
|
130
133
|
4. 汇报主要用户故事、验收合同、范围、验证接缝、风险和 Ready 状态;
|
|
@@ -351,33 +354,44 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
351
354
|
|
|
352
355
|
| 工件 | 具体位置 | 必须决定 | 不应决定 |
|
|
353
356
|
|---|---|---|---|
|
|
354
|
-
|
|
|
357
|
+
| 来源快照 | `specdev/changes/{change}/source.md` | 原始请求、捕获时间、locator、hash 和关闭能力 | 当前产品合同或实现状态 |
|
|
358
|
+
| 分诊 | `specdev/changes/{change}/triage.md` | 请求类别、影响、风险、缺失输入、下一 work 和远程 reconcile 状态 | 详细实现方案或开发进度 |
|
|
355
359
|
| 诊断 | `specdev/changes/{change}/diagnosis.md` | 复现、证据、根因、修复不变量和回归契约 | 未经验证的修复实现 |
|
|
356
360
|
| 设计日志 | `specdev/changes/{change}/LOG.md` | 讨论轨迹、确认、延后、替代与废弃结论 | 当前架构权威摘要 |
|
|
357
361
|
| 设计树 | `specdev/changes/{change}/design-tree.json` | 决策节点、依赖、当前 frontier、轮次与共识状态 | 领域真相或架构决定正文 |
|
|
358
|
-
| 领域上下文 | `specdev/changes/{change}/CONTEXT.md` |
|
|
359
|
-
| 架构决策 | `specdev/changes/{change}/ADR.md` |
|
|
362
|
+
| Change 领域上下文 | `specdev/changes/{change}/CONTEXT.md` | 本 change 已确认、供下游使用的领域术语和语义 | 永久领域知识或临时会议记录 |
|
|
363
|
+
| Change 架构决策 | `specdev/changes/{change}/ADR.md` | 已成为本 change 下游合同的架构决策、原因、后果和替代关系 | 永久项目 ADR 或尚未决定的方案集合 |
|
|
360
364
|
| Spec | `specdev/changes/{change}/spec.md` | 用户问题、外部行为、范围、验收合同、非功能要求和已锁定实现约束 | 文件级施工步骤 |
|
|
361
365
|
| Ticket | `specdev/changes/{change}/ticket/NN-<ticket-name>.md` | 单一垂直切片的行为、决策、范围、路径所有权、执行路线和验证证据 | 跨 Ticket 里程碑治理 |
|
|
362
366
|
| Tickets Map | `specdev/changes/{change}/tickets-map.md` | 依赖 DAG、合同覆盖、Ready 投影、并行候选和路径冲突 | 单 Ticket 的完整实现契约 |
|
|
363
367
|
| Goal Plan | `specdev/changes/{change}/goal-plan.md` | 跨 Ticket 调度、Gate、共享所有权、迁移顺序、集成和偏差治理 | 复制 Ticket 全文 |
|
|
364
368
|
| Evidence | `specdev/changes/{change}/evidence/T-NN.md` | 实际修改、命令、结果、验收映射、偏差、风险和提交引用 | 新的产品或架构决策 |
|
|
369
|
+
| 代码审查 | `specdev/changes/{change}/reviews/CR-###.md` | 固定点、标准轴和规范轴 finding | 实施修复或合并两轴排名 |
|
|
370
|
+
| 原型记录 | `specdev/changes/{change}/prototypes/{prototype-id}/record.md` | 一个问题、分支、资产、答案、promotion 和清理 | 生产实现或多个问题的计划 |
|
|
371
|
+
| Stakeholder 问卷 | `specdev/changes/{change}/questionnaires/{slug}.md` | 第三方原始回答和恢复条件 | 未经转录确认的产品/架构决定 |
|
|
365
372
|
| Wayfinder 地图 | `specdev/changes/{change}/wayfinder-map.md` | 目的地、说明、已关闭决策索引、战争迷雾和范围之外 | 开放 Ticket 正文或答案详情 |
|
|
366
373
|
| Wayfinder Ticket | `specdev/changes/{change}/investigation/{investigation-id}.md` | 一个可精确陈述的问题、类型、阻塞和关闭状态 | 解决方案评论或交付目标 |
|
|
367
374
|
| Wayfinder solution comment | `specdev/changes/{change}/investigation/comments/{investigation-id}/NN-solution.md` | Ticket 的答案、结果事实和资产指针 | 地图索引或产品实现 |
|
|
368
375
|
| 架构审查 | `specdev/changes/{change}/architecture-review.md` 与 `specdev/changes/{change}/architecture-review.html` | 深化候选、证据、可视化、选择和访谈状态 | 未经用户选择的执行契约 |
|
|
369
376
|
|
|
377
|
+
Change CONTEXT/ADR 是 active change 内的执行权威,不是 workflow 级永久知识。G 和其他设计/执行 Works 只读 `specdev/context/` 与 `specdev/adr/`;只有 A 在 change 完成、实现证据验证、毕业评估和用户确认后才能写入永久 namespace。未毕业内容随归档 change 保留,不能从 change 工件消失。
|
|
378
|
+
|
|
370
379
|
## 2. 权威顺序
|
|
371
380
|
|
|
372
381
|
同一事项冲突时按下列顺序裁决:
|
|
373
382
|
|
|
374
383
|
1. 用户最新明确决定;
|
|
375
|
-
2.
|
|
376
|
-
3.
|
|
377
|
-
4.
|
|
378
|
-
5.
|
|
379
|
-
6.
|
|
380
|
-
7.
|
|
384
|
+
2. 当前 change 已接受的架构决策:`specdev/changes/{change}/ADR.md`;
|
|
385
|
+
3. 永久 ADR 与领域上下文:`specdev/adr/`、`specdev/context/`;
|
|
386
|
+
4. 当前外部行为权威:`specdev/changes/{change}/spec.md`;
|
|
387
|
+
5. 当前 Ticket 契约:`specdev/changes/{change}/ticket/NN-<ticket-name>.md`;
|
|
388
|
+
6. 当前跨 Ticket 编排:`specdev/changes/{change}/goal-plan.md`;
|
|
389
|
+
7. 当前代码与运行事实;
|
|
390
|
+
8. 旧计划、旧日志和未经确认的推断。
|
|
391
|
+
|
|
392
|
+
当前 change 决定与永久知识冲突时,必须在 LOG/ADR 中显式说明替代关系;它只约束当前 change,直到 A 决定是否提升并更新永久版本。
|
|
393
|
+
|
|
394
|
+
`specdev/changes/{change}/source.md` 只对“原始输入是什么”具有权威;后续用户决定、ADR 和 Spec 可以显式演进该意图。远程来源在摄入后发生变化不会自动改写本地合同,必须重新 Triage。
|
|
381
395
|
|
|
382
396
|
代码事实可以证明计划已过时,但不能静默改写用户目标或已接受契约。出现这种情况时,按 下方 `<deviation-control>` 标签 退回相应工件修订。
|
|
383
397
|
|
|
@@ -492,7 +506,7 @@ Ticket 只有同时满足以下适用条件才可设置 `ready: true`:
|
|
|
492
506
|
4. 可重复手动步骤、截图或查询结果;
|
|
493
507
|
5. 代码阅读推断。
|
|
494
508
|
|
|
495
|
-
E2E
|
|
509
|
+
E2E 仅在变更影响用户界面交互时加入验证矩阵。普通执行由当前实现或集成 owner 运行;委派执行中 Worker 只记录场景、预期结果和待执行状态,由 Lead 在集成阶段运行。API、CLI、后端、库或数据变更默认使用其稳定接缝,不追加 E2E。
|
|
496
510
|
|
|
497
511
|
低层证据不能替代明确要求的用户行为证据。高风险迁移还需要 dry-run、调用点扫描、数据核对、监控信号或回滚演练。
|
|
498
512
|
|
|
@@ -535,7 +549,7 @@ E2E 仅在变更影响用户界面交互时加入验证矩阵,并且只由 Lea
|
|
|
535
549
|
## 1. 偏差等级
|
|
536
550
|
|
|
537
551
|
- **local**:只改变局部实现,不改变 Ticket 的行为、范围、公共契约、路径所有权或验证;记录到 Evidence 后可继续。
|
|
538
|
-
- **ticket**:改变 Ticket 的执行路线、可写范围、局部契约或验收映射,但不改变 Spec;必须停止相关修改、更新 Ticket
|
|
552
|
+
- **ticket**:改变 Ticket 的执行路线、可写范围、局部契约或验收映射,但不改变 Spec;必须停止相关修改、更新 Ticket 并获得该 Ticket 或计划明确的批准 owner 同意。
|
|
539
553
|
- **spec**:改变外部行为、范围、用户故事、验收合同或非功能要求;必须返回 “编写 Spec 阶段”。
|
|
540
554
|
- **architecture**:改变已接受架构决策或公共架构约束;必须返回 “设计访谈能力” 并更新 `specdev/changes/{change}/ADR.md`。
|
|
541
555
|
- **release**:改变迁移、兼容窗口、发布门禁、回滚或不可逆批准点;必须停止并获得明确人工批准。
|
|
@@ -570,7 +584,7 @@ E2E 仅在变更影响用户界面交互时加入验证矩阵,并且只由 Lea
|
|
|
570
584
|
|
|
571
585
|
- 未批准的 ticket、spec、architecture 或 release 偏差不得继续实现。
|
|
572
586
|
- 不得通过扩大 `writable_paths`、删除测试、降低断言或把风险改写成“已知限制”来绕过停止。
|
|
573
|
-
-
|
|
587
|
+
- 偏差影响普通并行执行时,当前集成 owner 必须暂停受影响 Wave,重新计算路径所有权、依赖和 Gate;委派执行由 Lead 承担同一责任。
|
|
574
588
|
|
|
575
589
|
</deviation-control>
|
|
576
590
|
|
|
@@ -578,42 +592,54 @@ E2E 仅在变更影响用户界面交互时加入验证矩阵,并且只由 Lea
|
|
|
578
592
|
|
|
579
593
|
# SpecDev Research
|
|
580
594
|
|
|
581
|
-
##
|
|
595
|
+
## 输入
|
|
596
|
+
|
|
597
|
+
- `decision`:研究要支持的一个具体决定;
|
|
598
|
+
- `questions`:需要回答的穷尽问题集;
|
|
599
|
+
- `stop_condition`:何时证据已足够;
|
|
600
|
+
- `caller`:D、G、S、W、R、T 或 I;
|
|
601
|
+
- `target_artifact`:调用方拥有且将接收结果的完整 Path。
|
|
582
602
|
|
|
583
|
-
|
|
603
|
+
缺少 owner 或 target 时返回阻塞,不创建 `{change}/research/` 等共享 namespace。
|
|
584
604
|
|
|
585
605
|
## 流程
|
|
586
606
|
|
|
587
|
-
1.
|
|
588
|
-
2.
|
|
589
|
-
3.
|
|
590
|
-
4.
|
|
591
|
-
5.
|
|
592
|
-
6.
|
|
593
|
-
7. 长期有效且经实现验证后才可由 Archive 提升到永久 research。
|
|
607
|
+
1. 固定问题、版本、环境和停止条件。
|
|
608
|
+
2. 优先官方文档、规范、源代码、论文或维护者材料;技术问题使用一手来源。
|
|
609
|
+
3. 核对发布日期、版本、适用环境、限制和已知冲突。
|
|
610
|
+
4. 对每个会改变决定的实质声明就近给出来源;关键结论交叉验证,来源冲突时并列呈现。
|
|
611
|
+
5. 区分来源事实、代码库事实、推断、建议和未知项。
|
|
612
|
+
6. 返回一个 Markdown block,由 caller 原子写入 `target_artifact`;本 Skill 不自行写 state。
|
|
594
613
|
|
|
595
|
-
##
|
|
614
|
+
## 输出
|
|
596
615
|
|
|
597
616
|
```markdown
|
|
598
|
-
|
|
599
|
-
-
|
|
600
|
-
-
|
|
601
|
-
-
|
|
617
|
+
## Research: <问题>
|
|
618
|
+
- Decision / target:
|
|
619
|
+
- Scope / version:
|
|
620
|
+
- Stop condition:
|
|
602
621
|
|
|
603
|
-
## Findings
|
|
604
622
|
### R-001
|
|
605
|
-
-
|
|
606
|
-
-
|
|
607
|
-
-
|
|
608
|
-
-
|
|
609
|
-
-
|
|
610
|
-
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
623
|
+
- Claim:
|
|
624
|
+
- Type: official fact / code fact / inference / recommendation
|
|
625
|
+
- Source:
|
|
626
|
+
- Confidence:
|
|
627
|
+
- Limits:
|
|
628
|
+
- Artifact impact:
|
|
629
|
+
|
|
630
|
+
### Conflicts and Unknowns
|
|
631
|
+
### Recommendation
|
|
614
632
|
```
|
|
615
633
|
|
|
616
|
-
|
|
634
|
+
不得长篇复制受版权保护内容。长期有效且经实现验证的结论只能由 Archive 从调用方工件提升到永久 research。
|
|
635
|
+
|
|
636
|
+
## 完成标准
|
|
637
|
+
|
|
638
|
+
- 每个输入问题有答案或明确未知;
|
|
639
|
+
- 每个实质声明就近引用一手来源;
|
|
640
|
+
- 版本、限制、冲突和置信度已记录;
|
|
641
|
+
- 结果有唯一 owning artifact;
|
|
642
|
+
- 本 Skill 没有创建自己的 state 路径。
|
|
617
643
|
|
|
618
644
|
</research>
|
|
619
645
|
|
|
@@ -632,7 +658,7 @@ E2E 仅在变更影响用户界面交互时加入验证矩阵,并且只由 Lea
|
|
|
632
658
|
"execution": {
|
|
633
659
|
"max_parallel": 3,
|
|
634
660
|
"deep_ticket_human_approval": true,
|
|
635
|
-
"shared_path_owner": "
|
|
661
|
+
"shared_path_owner": "explicit"
|
|
636
662
|
},
|
|
637
663
|
"verification": {
|
|
638
664
|
"test": null,
|
|
@@ -715,11 +741,10 @@ E2E 仅在变更影响用户界面交互时加入验证矩阵,并且只由 Lea
|
|
|
715
741
|
|
|
716
742
|
```json
|
|
717
743
|
{
|
|
718
|
-
"schema_version":
|
|
744
|
+
"schema_version": 4,
|
|
719
745
|
"workflow": "specdev",
|
|
720
746
|
"active": [],
|
|
721
|
-
"
|
|
722
|
-
"completed": []
|
|
747
|
+
"archived": []
|
|
723
748
|
}
|
|
724
749
|
```
|
|
725
750
|
|
|
@@ -730,19 +755,18 @@ E2E 仅在变更影响用户界面交互时加入验证矩阵,并且只由 Lea
|
|
|
730
755
|
```json
|
|
731
756
|
{
|
|
732
757
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
733
|
-
"$id": "urn:speculo:specdev:status:
|
|
758
|
+
"$id": "urn:speculo:specdev:status:v4",
|
|
734
759
|
"title": "SpecDev Global Status",
|
|
735
760
|
"type": "object",
|
|
736
761
|
"required": [
|
|
737
762
|
"schema_version",
|
|
738
763
|
"workflow",
|
|
739
764
|
"active",
|
|
740
|
-
"
|
|
741
|
-
"completed"
|
|
765
|
+
"archived"
|
|
742
766
|
],
|
|
743
767
|
"properties": {
|
|
744
768
|
"schema_version": {
|
|
745
|
-
"const":
|
|
769
|
+
"const": 4
|
|
746
770
|
},
|
|
747
771
|
"workflow": {
|
|
748
772
|
"const": "specdev"
|
|
@@ -754,30 +778,27 @@ E2E 仅在变更影响用户界面交互时加入验证矩阵,并且只由 Lea
|
|
|
754
778
|
"required": [
|
|
755
779
|
"change",
|
|
756
780
|
"current_work",
|
|
757
|
-
"works_run"
|
|
758
|
-
"result"
|
|
781
|
+
"works_run"
|
|
759
782
|
],
|
|
760
783
|
"properties": {
|
|
761
784
|
"change": {
|
|
762
|
-
"type": "string"
|
|
785
|
+
"type": "string",
|
|
786
|
+
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
763
787
|
},
|
|
764
788
|
"current_work": {
|
|
765
789
|
"type": [
|
|
766
790
|
"string",
|
|
767
791
|
"null"
|
|
768
|
-
]
|
|
792
|
+
],
|
|
793
|
+
"pattern": "^specdev/"
|
|
769
794
|
},
|
|
770
795
|
"works_run": {
|
|
771
796
|
"type": "array",
|
|
772
797
|
"items": {
|
|
773
|
-
"type": "string"
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
"type": [
|
|
778
|
-
"string",
|
|
779
|
-
"null"
|
|
780
|
-
]
|
|
798
|
+
"type": "string",
|
|
799
|
+
"pattern": "^specdev/"
|
|
800
|
+
},
|
|
801
|
+
"uniqueItems": true
|
|
781
802
|
},
|
|
782
803
|
"claimed_investigations": {
|
|
783
804
|
"type": "array",
|
|
@@ -805,77 +826,23 @@ E2E 仅在变更影响用户界面交互时加入验证矩阵,并且只由 Lea
|
|
|
805
826
|
"type": "string"
|
|
806
827
|
}
|
|
807
828
|
},
|
|
808
|
-
"additionalProperties":
|
|
829
|
+
"additionalProperties": false
|
|
809
830
|
}
|
|
810
831
|
}
|
|
811
832
|
},
|
|
812
|
-
"additionalProperties":
|
|
813
|
-
}
|
|
814
|
-
},
|
|
815
|
-
"work_history": {
|
|
816
|
-
"type": "array",
|
|
817
|
-
"items": {
|
|
818
|
-
"type": "object",
|
|
819
|
-
"required": [
|
|
820
|
-
"change",
|
|
821
|
-
"work_id",
|
|
822
|
-
"started_at",
|
|
823
|
-
"completed_at",
|
|
824
|
-
"result"
|
|
825
|
-
],
|
|
826
|
-
"properties": {
|
|
827
|
-
"change": {
|
|
828
|
-
"type": "string"
|
|
829
|
-
},
|
|
830
|
-
"work_id": {
|
|
831
|
-
"type": "string",
|
|
832
|
-
"pattern": "^specdev/"
|
|
833
|
-
},
|
|
834
|
-
"started_at": {
|
|
835
|
-
"type": "string"
|
|
836
|
-
},
|
|
837
|
-
"completed_at": {
|
|
838
|
-
"type": [
|
|
839
|
-
"string",
|
|
840
|
-
"null"
|
|
841
|
-
]
|
|
842
|
-
},
|
|
843
|
-
"result": {
|
|
844
|
-
"type": [
|
|
845
|
-
"string",
|
|
846
|
-
"null"
|
|
847
|
-
]
|
|
848
|
-
}
|
|
849
|
-
},
|
|
850
|
-
"additionalProperties": true
|
|
833
|
+
"additionalProperties": false
|
|
851
834
|
}
|
|
852
835
|
},
|
|
853
|
-
"
|
|
836
|
+
"archived": {
|
|
854
837
|
"type": "array",
|
|
855
838
|
"items": {
|
|
856
|
-
"type": "
|
|
857
|
-
"
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
"archive_path"
|
|
861
|
-
],
|
|
862
|
-
"properties": {
|
|
863
|
-
"change": {
|
|
864
|
-
"type": "string"
|
|
865
|
-
},
|
|
866
|
-
"archived_at": {
|
|
867
|
-
"type": "string"
|
|
868
|
-
},
|
|
869
|
-
"archive_path": {
|
|
870
|
-
"type": "string",
|
|
871
|
-
"pattern": "^specdev/archive/[0-9]{4}-[0-9]{2}/.+/$"
|
|
872
|
-
}
|
|
873
|
-
},
|
|
874
|
-
"additionalProperties": true
|
|
875
|
-
}
|
|
839
|
+
"type": "string",
|
|
840
|
+
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
|
|
841
|
+
},
|
|
842
|
+
"uniqueItems": true
|
|
876
843
|
}
|
|
877
844
|
},
|
|
878
|
-
"additionalProperties":
|
|
845
|
+
"additionalProperties": false
|
|
879
846
|
}
|
|
880
847
|
```
|
|
881
848
|
|
|
@@ -1053,6 +1020,49 @@ E2E 仅在变更影响用户界面交互时加入验证矩阵,并且只由 Lea
|
|
|
1053
1020
|
}
|
|
1054
1021
|
},
|
|
1055
1022
|
"allOf": [
|
|
1023
|
+
{
|
|
1024
|
+
"if": {
|
|
1025
|
+
"properties": {
|
|
1026
|
+
"worktrees": {
|
|
1027
|
+
"contains": {
|
|
1028
|
+
"properties": {
|
|
1029
|
+
"provider": {
|
|
1030
|
+
"const": "git"
|
|
1031
|
+
}
|
|
1032
|
+
},
|
|
1033
|
+
"required": [
|
|
1034
|
+
"provider"
|
|
1035
|
+
]
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
1038
|
+
}
|
|
1039
|
+
},
|
|
1040
|
+
"then": {
|
|
1041
|
+
"properties": {
|
|
1042
|
+
"worktrees": {
|
|
1043
|
+
"items": {
|
|
1044
|
+
"if": {
|
|
1045
|
+
"properties": {
|
|
1046
|
+
"provider": {
|
|
1047
|
+
"const": "git"
|
|
1048
|
+
}
|
|
1049
|
+
},
|
|
1050
|
+
"required": [
|
|
1051
|
+
"provider"
|
|
1052
|
+
]
|
|
1053
|
+
},
|
|
1054
|
+
"then": {
|
|
1055
|
+
"properties": {
|
|
1056
|
+
"workspace_ref": {
|
|
1057
|
+
"pattern": "^specdev-worktree/T-[0-9]{2,}$"
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1060
|
+
}
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
},
|
|
1056
1066
|
{
|
|
1057
1067
|
"if": {
|
|
1058
1068
|
"properties": {
|