@namewta/speculo 1.0.19 → 1.0.20
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 +8 -7
- package/THIRD-PARTY-NOTICES.md +33 -0
- package/dist/src/agent-files.js +2 -2
- package/dist/src/agent-files.js.map +1 -1
- package/dist/src/agent-skills.d.ts +81 -0
- package/dist/src/agent-skills.js +530 -0
- package/dist/src/agent-skills.js.map +1 -0
- package/dist/src/cli.js +11 -3
- package/dist/src/cli.js.map +1 -1
- package/dist/src/config.js +5 -3
- package/dist/src/config.js.map +1 -1
- package/dist/src/doctor.js +7 -2
- package/dist/src/doctor.js.map +1 -1
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.js +23 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/manifest.d.ts +9 -0
- package/dist/src/manifest.js +45 -7
- package/dist/src/manifest.js.map +1 -1
- package/dist/src/refresh.js +40 -0
- package/dist/src/refresh.js.map +1 -1
- package/dist/src/structured.js +15 -4
- package/dist/src/structured.js.map +1 -1
- package/dist/src/transaction.d.ts +24 -3
- package/dist/src/transaction.js +191 -12
- package/dist/src/transaction.js.map +1 -1
- package/package.json +7 -4
- package/scripts/validate-skills.mjs +56 -0
- package/template/AGENTS.md +1 -1
- package/template/CLAUDE.md +1 -1
- package/template/canonical/canonical-specdev-goal-plan.md +156 -28
- package/template/canonical/canonical-specdev-grill-with-docs.md +153 -31
- package/template/canonical/canonical-specdev-spec.md +153 -27
- package/template/canonical/canonical-specdev-tickets.md +153 -27
- package/template/canonical/canonical-specdev-wayfinder.md +142 -27
- package/template/commands/retro.md +11 -9
- package/template/skills/archive-and-consolidate/SKILL.md +163 -7
- package/template/skills/archive-and-consolidate/references/cleanup-rules.md +1 -1
- package/template/skills/docs-sync/references/agents/claude-redirect.md +8 -8
- package/template/skills/docs-sync/references/agents/content-contract.md +1 -1
- package/template/skills/docs-sync/references/agents/manifest-discovery.md +7 -7
- package/template/skills/docs-sync/references/agents/role-classification.md +4 -4
- package/template/skills/docs-sync/references/agents-contract.md +1 -1
- package/template/skills/engineering-standards-builder/SKILL.md +149 -9
- package/template/skills/engineering-standards-builder/agents/openai.yaml +2 -0
- package/template/skills/engineering-standards-builder/manifest.txt +2 -1
- package/template/skills/engineering-standards-builder/references/rules/09-mechanical-guardrails.md +9 -0
- package/template/skills/engineering-standards-builder/scripts/validate-builder.mjs +4 -7
- package/template/skills/git-history-squash/SKILL.md +87 -11
- package/template/skills/git-history-squash/agents/openai.yaml +2 -0
- package/template/skills/optimize-codex-config/SKILL.md +71 -11
- package/template/skills/{speculo-retro/references/entry-procedure.md → retrospective/SKILL.md} +12 -8
- package/template/skills/{speculo-retro → retrospective}/references/friction-taxonomy.md +22 -13
- package/template/skills/{speculo-retro → retrospective}/references/issue-drafting-sop.md +10 -20
- package/template/skills/source-code-zip/SKILL.md +44 -8
- package/template/skills/source-code-zip/references/{entry-procedure.md → cli-reference.md} +0 -43
- package/template/skills/upstream-fork-sync/SKILL.md +71 -8
- package/template/skills/{writing-great-skills → writing-for-agents}/GLOSSARY.md +1 -1
- package/template/skills/writing-for-agents/SKILL.md +22 -0
- package/template/skills/writing-for-agents/agents/openai.yaml +2 -0
- package/template/skills/{writing-great-skills/references/entry-procedure.md → writing-for-agents/references/authoring-principles.md} +2 -9
- package/template/workflows/ops/common/tests/test_ops.mjs +5 -8
- package/template/workflows/ops/common/tests/test_ops_bootstrap.mjs +71 -14
- package/template/workflows/ops/common/tests/test_ops_workspace.mjs +17 -8
- package/template/workflows/ops/common/tools/opslib/bootstrap.mjs +4 -4
- package/template/workflows/ops/common/tools/opslib/transport.mjs +3 -3
- package/template/workflows/specdev/A-archive-and-consolidate/consolidation-interview.md +3 -3
- package/template/workflows/specdev/C-code-review/C-code-review.md +1 -1
- package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +6 -0
- package/template/workflows/specdev/G-grill-with-docs/references/interview-procedure.md +6 -6
- package/template/workflows/specdev/I-implement/references/implementation-procedure.md +1 -1
- package/template/workflows/specdev/I-implement/tdd-rules.md +4 -0
- package/template/workflows/specdev/I-init-setup/config-template.json +5 -1
- package/template/workflows/specdev/INDEX.md +2 -2
- package/template/workflows/specdev/P-goal-plan/planning-modes.md +1 -1
- package/template/workflows/specdev/P-prototype/P-prototype.md +7 -3
- package/template/workflows/specdev/P-prototype/logic-protocol.md +11 -0
- package/template/workflows/specdev/P-prototype/logic-template.md +27 -0
- package/template/workflows/specdev/P-prototype/project-preview-protocol.md +9 -0
- package/template/workflows/specdev/R-retro/R-retro.md +26 -0
- package/template/workflows/specdev/R-retro/retro-template.md +27 -0
- package/template/workflows/specdev/R-review-architecture/references/selected-design.md +1 -1
- package/template/workflows/specdev/README.md +13 -2
- package/template/workflows/specdev/S-spec/S-spec.md +4 -0
- package/template/workflows/specdev/T-tickets/T-tickets.md +4 -0
- package/template/workflows/specdev/T-triage/T-triage.md +31 -25
- package/template/workflows/specdev/T-triage/capture-protocol.md +1 -1
- package/template/workflows/specdev/T-triage/ci-security-protocol.md +11 -0
- package/template/workflows/specdev/T-triage/intake-protocol.md +10 -4
- package/template/workflows/specdev/T-triage/pr-delivery-protocol.md +13 -0
- package/template/workflows/specdev/T-triage/pr-record-template.md +39 -0
- package/template/workflows/specdev/T-triage/publish-protocol.md +1 -1
- package/template/workflows/specdev/T-triage/queue-protocol.md +7 -0
- package/template/workflows/specdev/T-triage/reconcile-protocol.md +1 -1
- package/template/workflows/specdev/T-triage/references/issue-pr-policy.md +23 -0
- package/template/workflows/specdev/T-triage/references/release-authentication.md +9 -0
- package/template/workflows/specdev/T-triage/references/release-notes-injection.md +21 -0
- package/template/workflows/specdev/T-triage/references/workflow-yaml-reference.md +37 -0
- package/template/workflows/specdev/T-triage/release-preflight.md +13 -0
- package/template/workflows/specdev/T-triage/release-protocol.md +12 -0
- package/template/workflows/specdev/T-triage/release-recovery.md +18 -0
- package/template/workflows/specdev/T-triage/remote-operations.md +25 -0
- package/template/workflows/specdev/T-triage/scripts/github-transport.mjs +208 -0
- package/template/workflows/specdev/T-triage/source-template.md +7 -0
- package/template/workflows/specdev/T-triage/triage-run-template.md +34 -0
- package/template/workflows/specdev/T-triage/triage-template.md +4 -1
- package/template/workflows/specdev/common/rules/artifact-contract.md +7 -0
- package/template/workflows/specdev/common/rules/change-completion.md +6 -0
- package/template/workflows/specdev/common/rules/workflow-routing.md +6 -0
- package/template/workflows/specdev/common/rules/workflow-state-and-lifecycle.md +1 -1
- package/template/workflows/specdev/common/schemas/config.schema.json +137 -26
- package/template/workflows/specdev/common/schemas/logic-prototype.schema.json +62 -0
- package/template/workflows/specdev/common/schemas/pull-request.schema.json +90 -0
- package/template/workflows/specdev/common/schemas/retrospective.schema.json +58 -0
- package/template/workflows/specdev/common/schemas/triage-run.schema.json +149 -0
- package/template/workflows/specdev/common/schemas/triage.schema.json +117 -15
- package/template/workflows/specdev/common/tools/delivery-artifacts.mjs +95 -0
- package/template/workflows/specdev/common/tools/validate-specdev.mjs +60 -19
- package/template/workflows/specdev/runtime-contract.json +4 -2
- package/template/skills/archive-and-consolidate/references/entry-procedure.md +0 -178
- package/template/skills/docs-sync/references/entry-procedure.md +0 -3
- package/template/skills/engineering-standards-builder/references/entry-procedure.md +0 -154
- package/template/skills/git-history-squash/references/entry-procedure.md +0 -94
- package/template/skills/github-npm-ops/SKILL.md +0 -19
- package/template/skills/github-npm-ops/references/ci-and-security-ops.md +0 -178
- package/template/skills/github-npm-ops/references/entry-procedure.md +0 -25
- package/template/skills/github-npm-ops/references/failure-recovery.md +0 -123
- package/template/skills/github-npm-ops/references/issue-pr-triage.md +0 -227
- package/template/skills/github-npm-ops/references/issue-transport.md +0 -26
- package/template/skills/github-npm-ops/references/package-json-checklist.md +0 -171
- package/template/skills/github-npm-ops/references/preflight-checklist.md +0 -39
- package/template/skills/github-npm-ops/references/publish-detection.md +0 -68
- package/template/skills/github-npm-ops/references/release-notes-injection.md +0 -238
- package/template/skills/github-npm-ops/references/release-pipeline.md +0 -108
- package/template/skills/github-npm-ops/references/setup-npm-token.md +0 -63
- package/template/skills/github-npm-ops/references/troubleshooting-playbook.md +0 -293
- package/template/skills/github-npm-ops/references/version-bump-flow.md +0 -217
- package/template/skills/github-npm-ops/references/workflow-yaml-reference.md +0 -268
- package/template/skills/github-npm-ops/scripts/issue-transport.mjs +0 -227
- package/template/skills/optimize-codex-config/references/entry-procedure.md +0 -78
- package/template/skills/speculo-retro/SKILL.md +0 -19
- package/template/skills/upstream-fork-sync/references/entry-procedure.md +0 -78
- package/template/skills/writing-great-skills/SKILL.md +0 -23
- /package/template/skills/{writing-great-skills → writing-for-agents}/references/document-contract.md +0 -0
- /package/template/workflows/specdev/{G-grill-with-docs → common/rules}/adr-format.md +0 -0
- /package/template/workflows/specdev/{G-grill-with-docs → common/rules}/context-format.md +0 -0
- /package/template/workflows/specdev/{I-implement → common/rules}/design-it-twice.md +0 -0
- /package/template/workflows/specdev/{G-grill-with-docs/domain-modeling-rules.md → common/rules/domain-modeling.md} +0 -0
|
@@ -34,6 +34,10 @@ node Speculo Node 校验器 --stage spec --repo <project-root> specdev/changes/{
|
|
|
34
34
|
|
|
35
35
|
只有用户请求或工作流已显式串联时才进入 “拆分 Tickets 阶段”;产出 Ready Spec 本身不授权实施。
|
|
36
36
|
|
|
37
|
+
## 原型证据
|
|
38
|
+
|
|
39
|
+
可以引用已验证 LOGIC/UI 原型中的行为、边界与已确认决定,记录具体 locator 和验证证据;源码片段可承载设计选择,但不自动成为生产实现。未闭合高影响产品决定返回 G,S 综合已确认设计而不重新开启无关访谈。
|
|
40
|
+
|
|
37
41
|
---
|
|
38
42
|
|
|
39
43
|
## 参考内容
|
|
@@ -320,6 +324,13 @@ W 的 `specdev/changes/{change}/initiative.json` 只拥有候选 change 的边
|
|
|
320
324
|
|
|
321
325
|
父 `specdev/changes/{change}/tickets-map.md` 是 goal-tickets-map 无状态入口,只引用现有 Implementation Map/Plan;它不能拥有第二份 status、owner 或任务清单。统一 P 拥有生命周期,旧 O 仅保留入口与恢复键。
|
|
322
326
|
|
|
327
|
+
## 新增工件 owner
|
|
328
|
+
|
|
329
|
+
- T:specdev/changes/{change}/pull-requests/PR-###.md 拥有 PR 交付回执;specdev/triage-runs/TRI-###.md 拥有独立远程操作,绝不复用 external_action/publish_action/capture。
|
|
330
|
+
- R-retro:specdev/changes/{change}/retro/RETRO-###.md 拥有活动复盘建议和来源;不成为永久知识。
|
|
331
|
+
- P:specdev/changes/{change}/prototypes/LOGIC-NNN/logic.md 记录逻辑模型与浏览器证据;index.html 是可运行原型,ready 时 hash 与记录一致。
|
|
332
|
+
- 来源更新:specdev/changes/{change}/source.md 冻结后保持不变。T 将后续读取写入 specdev/changes/{change}/sources/SRC-###.md,记录 replaces、固定 SHA/hash、完整性和原 locator,triage 正文选择有效快照;不得把新远程事实自动升级为已接受 Spec。
|
|
333
|
+
|
|
323
334
|
</artifact-contract>
|
|
324
335
|
|
|
325
336
|
<readiness-and-depth>
|
|
@@ -547,7 +558,7 @@ Evidence 原文不出仓库。对 GitHub 的公共投影由 T-triage publish 按
|
|
|
547
558
|
|
|
548
559
|
```json
|
|
549
560
|
{
|
|
550
|
-
"schema_version":
|
|
561
|
+
"schema_version": 6,
|
|
551
562
|
"interaction_language": "zh-CN",
|
|
552
563
|
"artifact_language": "zh-CN",
|
|
553
564
|
"git": {
|
|
@@ -571,6 +582,10 @@ Evidence 原文不出仓库。对 GitHub 的公共投影由 T-triage publish 按
|
|
|
571
582
|
"require_evidence": true,
|
|
572
583
|
"ui_design_default_candidates": 3,
|
|
573
584
|
"ui_design_max_candidates": 4
|
|
585
|
+
},
|
|
586
|
+
"github": {
|
|
587
|
+
"include_external_prs": false,
|
|
588
|
+
"labels": {}
|
|
574
589
|
}
|
|
575
590
|
}
|
|
576
591
|
```
|
|
@@ -582,60 +597,171 @@ Evidence 原文不出仓库。对 GitHub 的公共投影由 T-triage publish 按
|
|
|
582
597
|
```json
|
|
583
598
|
{
|
|
584
599
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
585
|
-
"$id": "urn:speculo:specdev:config:
|
|
600
|
+
"$id": "urn:speculo:specdev:config:v6",
|
|
586
601
|
"title": "SpecDev Configuration",
|
|
587
602
|
"type": "object",
|
|
588
|
-
"required": [
|
|
603
|
+
"required": [
|
|
604
|
+
"schema_version",
|
|
605
|
+
"interaction_language",
|
|
606
|
+
"artifact_language",
|
|
607
|
+
"git",
|
|
608
|
+
"execution",
|
|
609
|
+
"verification",
|
|
610
|
+
"planning",
|
|
611
|
+
"github"
|
|
612
|
+
],
|
|
589
613
|
"properties": {
|
|
590
|
-
"schema_version": {
|
|
591
|
-
|
|
592
|
-
|
|
614
|
+
"schema_version": {
|
|
615
|
+
"const": 6
|
|
616
|
+
},
|
|
617
|
+
"interaction_language": {
|
|
618
|
+
"type": "string",
|
|
619
|
+
"minLength": 1
|
|
620
|
+
},
|
|
621
|
+
"artifact_language": {
|
|
622
|
+
"type": "string",
|
|
623
|
+
"minLength": 1
|
|
624
|
+
},
|
|
593
625
|
"git": {
|
|
594
626
|
"type": "object",
|
|
595
|
-
"required": [
|
|
627
|
+
"required": [
|
|
628
|
+
"default_branch"
|
|
629
|
+
],
|
|
596
630
|
"properties": {
|
|
597
|
-
"default_branch": {
|
|
631
|
+
"default_branch": {
|
|
632
|
+
"type": [
|
|
633
|
+
"string",
|
|
634
|
+
"null"
|
|
635
|
+
]
|
|
636
|
+
}
|
|
598
637
|
},
|
|
599
638
|
"additionalProperties": false
|
|
600
639
|
},
|
|
601
640
|
"execution": {
|
|
602
641
|
"type": "object",
|
|
603
|
-
"required": [
|
|
642
|
+
"required": [
|
|
643
|
+
"max_implementation_agents",
|
|
644
|
+
"max_integration_attempts",
|
|
645
|
+
"deep_ticket_human_approval",
|
|
646
|
+
"shared_path_owner"
|
|
647
|
+
],
|
|
604
648
|
"properties": {
|
|
605
|
-
"max_implementation_agents": {
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
649
|
+
"max_implementation_agents": {
|
|
650
|
+
"type": "integer",
|
|
651
|
+
"minimum": 1
|
|
652
|
+
},
|
|
653
|
+
"max_integration_attempts": {
|
|
654
|
+
"type": "integer",
|
|
655
|
+
"minimum": 1
|
|
656
|
+
},
|
|
657
|
+
"deep_ticket_human_approval": {
|
|
658
|
+
"type": "boolean"
|
|
659
|
+
},
|
|
660
|
+
"shared_path_owner": {
|
|
661
|
+
"type": "string",
|
|
662
|
+
"minLength": 1
|
|
663
|
+
}
|
|
609
664
|
},
|
|
610
665
|
"additionalProperties": false
|
|
611
666
|
},
|
|
612
667
|
"verification": {
|
|
613
668
|
"type": "object",
|
|
614
|
-
"required": [
|
|
669
|
+
"required": [
|
|
670
|
+
"test",
|
|
671
|
+
"typecheck",
|
|
672
|
+
"lint",
|
|
673
|
+
"build"
|
|
674
|
+
],
|
|
615
675
|
"properties": {
|
|
616
|
-
"test": {
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
676
|
+
"test": {
|
|
677
|
+
"type": [
|
|
678
|
+
"string",
|
|
679
|
+
"null"
|
|
680
|
+
]
|
|
681
|
+
},
|
|
682
|
+
"typecheck": {
|
|
683
|
+
"type": [
|
|
684
|
+
"string",
|
|
685
|
+
"null"
|
|
686
|
+
]
|
|
687
|
+
},
|
|
688
|
+
"lint": {
|
|
689
|
+
"type": [
|
|
690
|
+
"string",
|
|
691
|
+
"null"
|
|
692
|
+
]
|
|
693
|
+
},
|
|
694
|
+
"build": {
|
|
695
|
+
"type": [
|
|
696
|
+
"string",
|
|
697
|
+
"null"
|
|
698
|
+
]
|
|
699
|
+
}
|
|
620
700
|
},
|
|
621
701
|
"additionalProperties": true
|
|
622
702
|
},
|
|
623
703
|
"planning": {
|
|
624
704
|
"type": "object",
|
|
625
|
-
"required": [
|
|
705
|
+
"required": [
|
|
706
|
+
"default_depth",
|
|
707
|
+
"require_ready_gate",
|
|
708
|
+
"require_evidence",
|
|
709
|
+
"ui_design_default_candidates",
|
|
710
|
+
"ui_design_max_candidates"
|
|
711
|
+
],
|
|
626
712
|
"properties": {
|
|
627
|
-
"default_depth": {
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
713
|
+
"default_depth": {
|
|
714
|
+
"enum": [
|
|
715
|
+
"lite",
|
|
716
|
+
"standard",
|
|
717
|
+
"deep"
|
|
718
|
+
]
|
|
719
|
+
},
|
|
720
|
+
"require_ready_gate": {
|
|
721
|
+
"type": "boolean"
|
|
722
|
+
},
|
|
723
|
+
"require_evidence": {
|
|
724
|
+
"type": "boolean"
|
|
725
|
+
},
|
|
726
|
+
"ui_design_default_candidates": {
|
|
727
|
+
"type": "integer",
|
|
728
|
+
"minimum": 2,
|
|
729
|
+
"maximum": 4
|
|
730
|
+
},
|
|
731
|
+
"ui_design_max_candidates": {
|
|
732
|
+
"type": "integer",
|
|
733
|
+
"minimum": 2,
|
|
734
|
+
"maximum": 4
|
|
735
|
+
}
|
|
632
736
|
},
|
|
633
737
|
"additionalProperties": true
|
|
738
|
+
},
|
|
739
|
+
"github": {
|
|
740
|
+
"type": "object",
|
|
741
|
+
"required": [
|
|
742
|
+
"include_external_prs",
|
|
743
|
+
"labels"
|
|
744
|
+
],
|
|
745
|
+
"properties": {
|
|
746
|
+
"include_external_prs": {
|
|
747
|
+
"type": "boolean"
|
|
748
|
+
},
|
|
749
|
+
"labels": {
|
|
750
|
+
"type": "object",
|
|
751
|
+
"additionalProperties": {
|
|
752
|
+
"type": "string",
|
|
753
|
+
"minLength": 1
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
},
|
|
757
|
+
"additionalProperties": false
|
|
634
758
|
}
|
|
635
759
|
},
|
|
636
|
-
"allOf": [
|
|
637
|
-
|
|
638
|
-
|
|
760
|
+
"allOf": [
|
|
761
|
+
{
|
|
762
|
+
"$comment": "ui_design_default_candidates <= ui_design_max_candidates is enforced by validate-specdev.mjs because JSON Schema cannot compare sibling numeric values."
|
|
763
|
+
}
|
|
764
|
+
],
|
|
639
765
|
"additionalProperties": false
|
|
640
766
|
}
|
|
641
767
|
```
|
|
@@ -40,6 +40,10 @@ node 本地只读 Goal 控制器(不含于网页快照) --map specdev/change
|
|
|
40
40
|
|
|
41
41
|
需要正式 Goal、多 change、迁移或跨票 Gate 时交给 “目标规划阶段”;少量线性票可从 map 按已授权范围调用 “实现阶段”。不得以“精简”为理由静默更换默认工具或少交付。
|
|
42
42
|
|
|
43
|
+
## 原型证据
|
|
44
|
+
|
|
45
|
+
可以引用已验证 LOGIC/UI 原型中的行为、边界与已确认决定,记录具体 locator 和验证证据;源码片段可承载设计选择,但不自动成为生产实现。未闭合高影响产品决定返回 G,S 综合已确认设计而不重新开启无关访谈。
|
|
46
|
+
|
|
43
47
|
---
|
|
44
48
|
|
|
45
49
|
## 参考内容
|
|
@@ -588,6 +592,13 @@ W 的 `specdev/changes/{change}/initiative.json` 只拥有候选 change 的边
|
|
|
588
592
|
|
|
589
593
|
父 `specdev/changes/{change}/tickets-map.md` 是 goal-tickets-map 无状态入口,只引用现有 Implementation Map/Plan;它不能拥有第二份 status、owner 或任务清单。统一 P 拥有生命周期,旧 O 仅保留入口与恢复键。
|
|
590
594
|
|
|
595
|
+
## 新增工件 owner
|
|
596
|
+
|
|
597
|
+
- T:specdev/changes/{change}/pull-requests/PR-###.md 拥有 PR 交付回执;specdev/triage-runs/TRI-###.md 拥有独立远程操作,绝不复用 external_action/publish_action/capture。
|
|
598
|
+
- R-retro:specdev/changes/{change}/retro/RETRO-###.md 拥有活动复盘建议和来源;不成为永久知识。
|
|
599
|
+
- P:specdev/changes/{change}/prototypes/LOGIC-NNN/logic.md 记录逻辑模型与浏览器证据;index.html 是可运行原型,ready 时 hash 与记录一致。
|
|
600
|
+
- 来源更新:specdev/changes/{change}/source.md 冻结后保持不变。T 将后续读取写入 specdev/changes/{change}/sources/SRC-###.md,记录 replaces、固定 SHA/hash、完整性和原 locator,triage 正文选择有效快照;不得把新远程事实自动升级为已接受 Spec。
|
|
601
|
+
|
|
591
602
|
</artifact-contract>
|
|
592
603
|
|
|
593
604
|
<readiness-and-depth>
|
|
@@ -1098,7 +1109,7 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
1098
1109
|
|
|
1099
1110
|
```json
|
|
1100
1111
|
{
|
|
1101
|
-
"schema_version":
|
|
1112
|
+
"schema_version": 6,
|
|
1102
1113
|
"interaction_language": "zh-CN",
|
|
1103
1114
|
"artifact_language": "zh-CN",
|
|
1104
1115
|
"git": {
|
|
@@ -1122,6 +1133,10 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
1122
1133
|
"require_evidence": true,
|
|
1123
1134
|
"ui_design_default_candidates": 3,
|
|
1124
1135
|
"ui_design_max_candidates": 4
|
|
1136
|
+
},
|
|
1137
|
+
"github": {
|
|
1138
|
+
"include_external_prs": false,
|
|
1139
|
+
"labels": {}
|
|
1125
1140
|
}
|
|
1126
1141
|
}
|
|
1127
1142
|
```
|
|
@@ -1133,60 +1148,171 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
1133
1148
|
```json
|
|
1134
1149
|
{
|
|
1135
1150
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1136
|
-
"$id": "urn:speculo:specdev:config:
|
|
1151
|
+
"$id": "urn:speculo:specdev:config:v6",
|
|
1137
1152
|
"title": "SpecDev Configuration",
|
|
1138
1153
|
"type": "object",
|
|
1139
|
-
"required": [
|
|
1154
|
+
"required": [
|
|
1155
|
+
"schema_version",
|
|
1156
|
+
"interaction_language",
|
|
1157
|
+
"artifact_language",
|
|
1158
|
+
"git",
|
|
1159
|
+
"execution",
|
|
1160
|
+
"verification",
|
|
1161
|
+
"planning",
|
|
1162
|
+
"github"
|
|
1163
|
+
],
|
|
1140
1164
|
"properties": {
|
|
1141
|
-
"schema_version": {
|
|
1142
|
-
|
|
1143
|
-
|
|
1165
|
+
"schema_version": {
|
|
1166
|
+
"const": 6
|
|
1167
|
+
},
|
|
1168
|
+
"interaction_language": {
|
|
1169
|
+
"type": "string",
|
|
1170
|
+
"minLength": 1
|
|
1171
|
+
},
|
|
1172
|
+
"artifact_language": {
|
|
1173
|
+
"type": "string",
|
|
1174
|
+
"minLength": 1
|
|
1175
|
+
},
|
|
1144
1176
|
"git": {
|
|
1145
1177
|
"type": "object",
|
|
1146
|
-
"required": [
|
|
1178
|
+
"required": [
|
|
1179
|
+
"default_branch"
|
|
1180
|
+
],
|
|
1147
1181
|
"properties": {
|
|
1148
|
-
"default_branch": {
|
|
1182
|
+
"default_branch": {
|
|
1183
|
+
"type": [
|
|
1184
|
+
"string",
|
|
1185
|
+
"null"
|
|
1186
|
+
]
|
|
1187
|
+
}
|
|
1149
1188
|
},
|
|
1150
1189
|
"additionalProperties": false
|
|
1151
1190
|
},
|
|
1152
1191
|
"execution": {
|
|
1153
1192
|
"type": "object",
|
|
1154
|
-
"required": [
|
|
1193
|
+
"required": [
|
|
1194
|
+
"max_implementation_agents",
|
|
1195
|
+
"max_integration_attempts",
|
|
1196
|
+
"deep_ticket_human_approval",
|
|
1197
|
+
"shared_path_owner"
|
|
1198
|
+
],
|
|
1155
1199
|
"properties": {
|
|
1156
|
-
"max_implementation_agents": {
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1200
|
+
"max_implementation_agents": {
|
|
1201
|
+
"type": "integer",
|
|
1202
|
+
"minimum": 1
|
|
1203
|
+
},
|
|
1204
|
+
"max_integration_attempts": {
|
|
1205
|
+
"type": "integer",
|
|
1206
|
+
"minimum": 1
|
|
1207
|
+
},
|
|
1208
|
+
"deep_ticket_human_approval": {
|
|
1209
|
+
"type": "boolean"
|
|
1210
|
+
},
|
|
1211
|
+
"shared_path_owner": {
|
|
1212
|
+
"type": "string",
|
|
1213
|
+
"minLength": 1
|
|
1214
|
+
}
|
|
1160
1215
|
},
|
|
1161
1216
|
"additionalProperties": false
|
|
1162
1217
|
},
|
|
1163
1218
|
"verification": {
|
|
1164
1219
|
"type": "object",
|
|
1165
|
-
"required": [
|
|
1220
|
+
"required": [
|
|
1221
|
+
"test",
|
|
1222
|
+
"typecheck",
|
|
1223
|
+
"lint",
|
|
1224
|
+
"build"
|
|
1225
|
+
],
|
|
1166
1226
|
"properties": {
|
|
1167
|
-
"test": {
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1227
|
+
"test": {
|
|
1228
|
+
"type": [
|
|
1229
|
+
"string",
|
|
1230
|
+
"null"
|
|
1231
|
+
]
|
|
1232
|
+
},
|
|
1233
|
+
"typecheck": {
|
|
1234
|
+
"type": [
|
|
1235
|
+
"string",
|
|
1236
|
+
"null"
|
|
1237
|
+
]
|
|
1238
|
+
},
|
|
1239
|
+
"lint": {
|
|
1240
|
+
"type": [
|
|
1241
|
+
"string",
|
|
1242
|
+
"null"
|
|
1243
|
+
]
|
|
1244
|
+
},
|
|
1245
|
+
"build": {
|
|
1246
|
+
"type": [
|
|
1247
|
+
"string",
|
|
1248
|
+
"null"
|
|
1249
|
+
]
|
|
1250
|
+
}
|
|
1171
1251
|
},
|
|
1172
1252
|
"additionalProperties": true
|
|
1173
1253
|
},
|
|
1174
1254
|
"planning": {
|
|
1175
1255
|
"type": "object",
|
|
1176
|
-
"required": [
|
|
1256
|
+
"required": [
|
|
1257
|
+
"default_depth",
|
|
1258
|
+
"require_ready_gate",
|
|
1259
|
+
"require_evidence",
|
|
1260
|
+
"ui_design_default_candidates",
|
|
1261
|
+
"ui_design_max_candidates"
|
|
1262
|
+
],
|
|
1177
1263
|
"properties": {
|
|
1178
|
-
"default_depth": {
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1264
|
+
"default_depth": {
|
|
1265
|
+
"enum": [
|
|
1266
|
+
"lite",
|
|
1267
|
+
"standard",
|
|
1268
|
+
"deep"
|
|
1269
|
+
]
|
|
1270
|
+
},
|
|
1271
|
+
"require_ready_gate": {
|
|
1272
|
+
"type": "boolean"
|
|
1273
|
+
},
|
|
1274
|
+
"require_evidence": {
|
|
1275
|
+
"type": "boolean"
|
|
1276
|
+
},
|
|
1277
|
+
"ui_design_default_candidates": {
|
|
1278
|
+
"type": "integer",
|
|
1279
|
+
"minimum": 2,
|
|
1280
|
+
"maximum": 4
|
|
1281
|
+
},
|
|
1282
|
+
"ui_design_max_candidates": {
|
|
1283
|
+
"type": "integer",
|
|
1284
|
+
"minimum": 2,
|
|
1285
|
+
"maximum": 4
|
|
1286
|
+
}
|
|
1183
1287
|
},
|
|
1184
1288
|
"additionalProperties": true
|
|
1289
|
+
},
|
|
1290
|
+
"github": {
|
|
1291
|
+
"type": "object",
|
|
1292
|
+
"required": [
|
|
1293
|
+
"include_external_prs",
|
|
1294
|
+
"labels"
|
|
1295
|
+
],
|
|
1296
|
+
"properties": {
|
|
1297
|
+
"include_external_prs": {
|
|
1298
|
+
"type": "boolean"
|
|
1299
|
+
},
|
|
1300
|
+
"labels": {
|
|
1301
|
+
"type": "object",
|
|
1302
|
+
"additionalProperties": {
|
|
1303
|
+
"type": "string",
|
|
1304
|
+
"minLength": 1
|
|
1305
|
+
}
|
|
1306
|
+
}
|
|
1307
|
+
},
|
|
1308
|
+
"additionalProperties": false
|
|
1185
1309
|
}
|
|
1186
1310
|
},
|
|
1187
|
-
"allOf": [
|
|
1188
|
-
|
|
1189
|
-
|
|
1311
|
+
"allOf": [
|
|
1312
|
+
{
|
|
1313
|
+
"$comment": "ui_design_default_candidates <= ui_design_max_candidates is enforced by validate-specdev.mjs because JSON Schema cannot compare sibling numeric values."
|
|
1314
|
+
}
|
|
1315
|
+
],
|
|
1190
1316
|
"additionalProperties": false
|
|
1191
1317
|
}
|
|
1192
1318
|
```
|