@namewta/speculo 1.0.18 → 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.
Files changed (195) hide show
  1. package/README.md +8 -7
  2. package/THIRD-PARTY-NOTICES.md +33 -0
  3. package/dist/src/agent-files.js +2 -2
  4. package/dist/src/agent-files.js.map +1 -1
  5. package/dist/src/agent-skills.d.ts +81 -0
  6. package/dist/src/agent-skills.js +530 -0
  7. package/dist/src/agent-skills.js.map +1 -0
  8. package/dist/src/cli.js +11 -3
  9. package/dist/src/cli.js.map +1 -1
  10. package/dist/src/config.js +5 -3
  11. package/dist/src/config.js.map +1 -1
  12. package/dist/src/doctor.js +7 -2
  13. package/dist/src/doctor.js.map +1 -1
  14. package/dist/src/index.d.ts +8 -0
  15. package/dist/src/index.js +23 -3
  16. package/dist/src/index.js.map +1 -1
  17. package/dist/src/manifest.d.ts +9 -0
  18. package/dist/src/manifest.js +45 -7
  19. package/dist/src/manifest.js.map +1 -1
  20. package/dist/src/refresh.js +40 -0
  21. package/dist/src/refresh.js.map +1 -1
  22. package/dist/src/structured.js +15 -4
  23. package/dist/src/structured.js.map +1 -1
  24. package/dist/src/transaction.d.ts +24 -3
  25. package/dist/src/transaction.js +191 -12
  26. package/dist/src/transaction.js.map +1 -1
  27. package/package.json +10 -4
  28. package/scripts/validate-skills.mjs +56 -0
  29. package/template/AGENTS.md +1 -1
  30. package/template/CLAUDE.md +1 -1
  31. package/template/canonical/canonical-specdev-goal-plan.md +158 -30
  32. package/template/canonical/canonical-specdev-grill-with-docs.md +155 -33
  33. package/template/canonical/canonical-specdev-spec.md +162 -161
  34. package/template/canonical/canonical-specdev-tickets.md +155 -29
  35. package/template/canonical/canonical-specdev-wayfinder.md +144 -29
  36. package/template/commands/handoff.md +16 -0
  37. package/template/commands/retro.md +12 -10
  38. package/template/skills/archive-and-consolidate/SKILL.md +163 -7
  39. package/template/skills/archive-and-consolidate/references/cleanup-rules.md +1 -1
  40. package/template/skills/docs-sync/references/agents/claude-redirect.md +8 -8
  41. package/template/skills/docs-sync/references/agents/content-contract.md +1 -1
  42. package/template/skills/docs-sync/references/agents/manifest-discovery.md +7 -7
  43. package/template/skills/docs-sync/references/agents/role-classification.md +4 -4
  44. package/template/skills/docs-sync/references/agents-contract.md +1 -1
  45. package/template/skills/engineering-standards-builder/SKILL.md +149 -9
  46. package/template/skills/engineering-standards-builder/agents/openai.yaml +2 -0
  47. package/template/skills/engineering-standards-builder/manifest.txt +2 -1
  48. package/template/skills/engineering-standards-builder/references/rules/09-mechanical-guardrails.md +9 -0
  49. package/template/skills/engineering-standards-builder/scripts/validate-builder.mjs +4 -7
  50. package/template/skills/git-history-squash/SKILL.md +87 -11
  51. package/template/skills/git-history-squash/agents/openai.yaml +2 -0
  52. package/template/skills/optimize-codex-config/SKILL.md +71 -11
  53. package/template/skills/retrospective/SKILL.md +43 -0
  54. package/template/skills/{speculo-retro → retrospective}/references/friction-taxonomy.md +22 -13
  55. package/template/skills/{speculo-retro → retrospective}/references/issue-drafting-sop.md +13 -21
  56. package/template/skills/source-code-zip/SKILL.md +44 -8
  57. package/template/skills/source-code-zip/references/{entry-procedure.md → cli-reference.md} +0 -43
  58. package/template/skills/upstream-fork-sync/SKILL.md +71 -8
  59. package/template/skills/{writing-great-skills → writing-for-agents}/GLOSSARY.md +1 -1
  60. package/template/skills/writing-for-agents/SKILL.md +22 -0
  61. package/template/skills/writing-for-agents/agents/openai.yaml +2 -0
  62. package/template/skills/{writing-great-skills/references/entry-procedure.md → writing-for-agents/references/authoring-principles.md} +2 -9
  63. package/template/workflows/learning/A-archive/A-archive.md +2 -5
  64. package/template/workflows/learning/A-assess-and-plan/A-assess-and-plan.md +2 -5
  65. package/template/workflows/learning/C-consolidate/C-consolidate.md +2 -5
  66. package/template/workflows/learning/G-goal/G-goal.md +5 -23
  67. package/template/workflows/learning/H-homework/H-homework.md +2 -5
  68. package/template/workflows/learning/I-init-setup/I-init-setup.md +4 -9
  69. package/template/workflows/learning/L-lesson/L-lesson.md +2 -5
  70. package/template/workflows/learning/Q-question/Q-question.md +16 -8
  71. package/template/workflows/learning/Q-question/inquiry-template.md +2 -0
  72. package/template/workflows/learning/Q-question/tools/validate-inquiry.mjs +112 -0
  73. package/template/workflows/learning/R-review/R-review.md +3 -6
  74. package/template/workflows/learning/README.md +2 -2
  75. package/template/workflows/learning/common/rules/knowledge-organization.md +1 -1
  76. package/template/workflows/learning/common/rules/mastery-policy.md +1 -1
  77. package/template/workflows/learning/common/skills/socratic-questioning/SKILL.md +1 -1
  78. package/template/workflows/ops/D-project-deploy/D-project-deploy.md +6 -2
  79. package/template/workflows/ops/H-host-manage/H-host-manage.md +10 -18
  80. package/template/workflows/ops/H-host-manage/references/host-profiles.md +21 -0
  81. package/template/workflows/ops/I-initialize/I-initialize.md +4 -4
  82. package/template/workflows/ops/README.md +22 -84
  83. package/template/workflows/ops/S-server-connect/S-server-connect.md +3 -3
  84. package/template/workflows/ops/V-inventory-view/V-inventory-view.md +2 -2
  85. package/template/workflows/ops/common/rules/deployment-layout.md +51 -0
  86. package/template/workflows/ops/common/rules/recovery.md +6 -0
  87. package/template/workflows/ops/common/rules/server-onboarding.md +6 -0
  88. package/template/workflows/ops/common/tests/test_ops.mjs +5 -8
  89. package/template/workflows/ops/common/tests/test_ops_bootstrap.mjs +71 -14
  90. package/template/workflows/ops/common/tests/test_ops_workspace.mjs +17 -8
  91. package/template/workflows/ops/common/tools/opslib/bootstrap.mjs +4 -4
  92. package/template/workflows/ops/common/tools/opslib/transport.mjs +3 -3
  93. package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +13 -68
  94. package/template/workflows/person/S-steelman-deliberation/S-steelman-deliberation.md +11 -123
  95. package/template/workflows/person/S-steelman-deliberation/references/state-and-publication.md +86 -0
  96. package/template/workflows/specdev/A-archive-and-consolidate/A-archive-and-consolidate.md +2 -17
  97. package/template/workflows/specdev/A-archive-and-consolidate/consolidation-interview.md +13 -4
  98. package/template/workflows/specdev/C-code-review/C-code-review.md +4 -15
  99. package/template/workflows/specdev/C-code-review/code-review-template.md +4 -0
  100. package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +4 -20
  101. package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +2 -2
  102. package/template/workflows/specdev/G-grill-with-docs/references/interview-procedure.md +6 -6
  103. package/template/workflows/specdev/I-implement/I-implement.md +2 -2
  104. package/template/workflows/specdev/I-implement/evidence-template.md +8 -0
  105. package/template/workflows/specdev/I-implement/references/implementation-procedure.md +9 -43
  106. package/template/workflows/specdev/I-implement/tdd-rules.md +4 -0
  107. package/template/workflows/specdev/I-init-setup/I-init-setup.md +16 -117
  108. package/template/workflows/specdev/I-init-setup/config-template.json +5 -1
  109. package/template/workflows/specdev/I-init-setup/references/first-setup.md +46 -0
  110. package/template/workflows/specdev/INDEX.md +2 -2
  111. package/template/workflows/specdev/L-learn-change/L-learn-change.md +11 -89
  112. package/template/workflows/specdev/L-learn-change/references/lesson-format.md +47 -0
  113. package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +2 -2
  114. package/template/workflows/specdev/P-goal-plan/planning-modes.md +1 -1
  115. package/template/workflows/specdev/P-prototype/P-prototype.md +7 -17
  116. package/template/workflows/specdev/P-prototype/logic-protocol.md +11 -0
  117. package/template/workflows/specdev/P-prototype/logic-template.md +27 -0
  118. package/template/workflows/specdev/P-prototype/project-preview-protocol.md +9 -0
  119. package/template/workflows/specdev/R-retro/R-retro.md +26 -0
  120. package/template/workflows/specdev/R-retro/retro-template.md +27 -0
  121. package/template/workflows/specdev/R-review-architecture/R-review-architecture.md +19 -57
  122. package/template/workflows/specdev/R-review-architecture/architecture-review-template.md +2 -1
  123. package/template/workflows/specdev/R-review-architecture/references/selected-design.md +23 -0
  124. package/template/workflows/specdev/R-review-architecture/review-rubric.md +2 -2
  125. package/template/workflows/specdev/README.md +17 -6
  126. package/template/workflows/specdev/S-spec/S-spec.md +13 -136
  127. package/template/workflows/specdev/T-tickets/T-tickets.md +6 -2
  128. package/template/workflows/specdev/T-triage/T-triage.md +32 -141
  129. package/template/workflows/specdev/T-triage/capture-protocol.md +1 -1
  130. package/template/workflows/specdev/T-triage/ci-security-protocol.md +11 -0
  131. package/template/workflows/specdev/T-triage/intake-protocol.md +29 -4
  132. package/template/workflows/specdev/T-triage/pr-delivery-protocol.md +13 -0
  133. package/template/workflows/specdev/T-triage/pr-record-template.md +39 -0
  134. package/template/workflows/specdev/T-triage/publish-protocol.md +1 -1
  135. package/template/workflows/specdev/T-triage/queue-protocol.md +7 -0
  136. package/template/workflows/specdev/T-triage/reconcile-protocol.md +1 -1
  137. package/template/workflows/specdev/T-triage/references/issue-pr-policy.md +23 -0
  138. package/template/workflows/specdev/T-triage/references/release-authentication.md +9 -0
  139. package/template/workflows/specdev/T-triage/references/release-notes-injection.md +21 -0
  140. package/template/workflows/specdev/T-triage/references/workflow-yaml-reference.md +37 -0
  141. package/template/workflows/specdev/T-triage/release-preflight.md +13 -0
  142. package/template/workflows/specdev/T-triage/release-protocol.md +12 -0
  143. package/template/workflows/specdev/T-triage/release-recovery.md +18 -0
  144. package/template/workflows/specdev/T-triage/remote-operations.md +25 -0
  145. package/template/workflows/specdev/T-triage/scripts/github-transport.mjs +208 -0
  146. package/template/workflows/specdev/T-triage/source-template.md +7 -0
  147. package/template/workflows/specdev/T-triage/triage-run-template.md +34 -0
  148. package/template/workflows/specdev/T-triage/triage-template.md +4 -1
  149. package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +2 -2
  150. package/template/workflows/specdev/common/rules/artifact-contract.md +7 -0
  151. package/template/workflows/specdev/common/rules/change-completion.md +6 -0
  152. package/template/workflows/specdev/common/rules/deployment-handoff.md +23 -0
  153. package/template/workflows/specdev/common/rules/workflow-routing.md +6 -0
  154. package/template/workflows/specdev/common/rules/workflow-state-and-lifecycle.md +1 -1
  155. package/template/workflows/specdev/common/schemas/config.schema.json +137 -26
  156. package/template/workflows/specdev/common/schemas/logic-prototype.schema.json +62 -0
  157. package/template/workflows/specdev/common/schemas/pull-request.schema.json +90 -0
  158. package/template/workflows/specdev/common/schemas/retrospective.schema.json +58 -0
  159. package/template/workflows/specdev/common/schemas/triage-run.schema.json +149 -0
  160. package/template/workflows/specdev/common/schemas/triage.schema.json +117 -15
  161. package/template/workflows/specdev/common/skills/code-review/SKILL.md +5 -4
  162. package/template/workflows/specdev/common/skills/code-review/references/result-reuse.md +15 -0
  163. package/template/workflows/specdev/common/tools/delivery-artifacts.mjs +95 -0
  164. package/template/workflows/specdev/common/tools/validate-specdev.mjs +60 -19
  165. package/template/workflows/specdev/runtime-contract.json +4 -2
  166. package/template/skills/archive-and-consolidate/references/entry-procedure.md +0 -178
  167. package/template/skills/docs-sync/references/entry-procedure.md +0 -3
  168. package/template/skills/engineering-standards-builder/references/entry-procedure.md +0 -154
  169. package/template/skills/git-history-squash/references/entry-procedure.md +0 -94
  170. package/template/skills/github-npm-ops/SKILL.md +0 -19
  171. package/template/skills/github-npm-ops/references/ci-and-security-ops.md +0 -178
  172. package/template/skills/github-npm-ops/references/entry-procedure.md +0 -25
  173. package/template/skills/github-npm-ops/references/failure-recovery.md +0 -123
  174. package/template/skills/github-npm-ops/references/issue-pr-triage.md +0 -219
  175. package/template/skills/github-npm-ops/references/issue-transport.md +0 -26
  176. package/template/skills/github-npm-ops/references/package-json-checklist.md +0 -171
  177. package/template/skills/github-npm-ops/references/preflight-checklist.md +0 -39
  178. package/template/skills/github-npm-ops/references/publish-detection.md +0 -68
  179. package/template/skills/github-npm-ops/references/release-notes-injection.md +0 -238
  180. package/template/skills/github-npm-ops/references/release-pipeline.md +0 -108
  181. package/template/skills/github-npm-ops/references/setup-npm-token.md +0 -63
  182. package/template/skills/github-npm-ops/references/troubleshooting-playbook.md +0 -293
  183. package/template/skills/github-npm-ops/references/version-bump-flow.md +0 -217
  184. package/template/skills/github-npm-ops/references/workflow-yaml-reference.md +0 -268
  185. package/template/skills/github-npm-ops/scripts/issue-transport.mjs +0 -227
  186. package/template/skills/optimize-codex-config/references/entry-procedure.md +0 -78
  187. package/template/skills/speculo-retro/SKILL.md +0 -19
  188. package/template/skills/speculo-retro/references/entry-procedure.md +0 -23
  189. package/template/skills/upstream-fork-sync/references/entry-procedure.md +0 -78
  190. package/template/skills/writing-great-skills/SKILL.md +0 -23
  191. /package/template/skills/{writing-great-skills → writing-for-agents}/references/document-contract.md +0 -0
  192. /package/template/workflows/specdev/{G-grill-with-docs → common/rules}/adr-format.md +0 -0
  193. /package/template/workflows/specdev/{G-grill-with-docs → common/rules}/context-format.md +0 -0
  194. /package/template/workflows/specdev/{I-implement → common/rules}/design-it-twice.md +0 -0
  195. /package/template/workflows/specdev/{G-grill-with-docs/domain-modeling-rules.md → common/rules/domain-modeling.md} +0 -0
@@ -1,58 +1,169 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "urn:speculo:specdev:config:v5",
3
+ "$id": "urn:speculo:specdev:config:v6",
4
4
  "title": "SpecDev Configuration",
5
5
  "type": "object",
6
- "required": ["schema_version", "interaction_language", "artifact_language", "git", "execution", "verification", "planning"],
6
+ "required": [
7
+ "schema_version",
8
+ "interaction_language",
9
+ "artifact_language",
10
+ "git",
11
+ "execution",
12
+ "verification",
13
+ "planning",
14
+ "github"
15
+ ],
7
16
  "properties": {
8
- "schema_version": {"const": 5},
9
- "interaction_language": {"type": "string", "minLength": 1},
10
- "artifact_language": {"type": "string", "minLength": 1},
17
+ "schema_version": {
18
+ "const": 6
19
+ },
20
+ "interaction_language": {
21
+ "type": "string",
22
+ "minLength": 1
23
+ },
24
+ "artifact_language": {
25
+ "type": "string",
26
+ "minLength": 1
27
+ },
11
28
  "git": {
12
29
  "type": "object",
13
- "required": ["default_branch"],
30
+ "required": [
31
+ "default_branch"
32
+ ],
14
33
  "properties": {
15
- "default_branch": {"type": ["string", "null"]}
34
+ "default_branch": {
35
+ "type": [
36
+ "string",
37
+ "null"
38
+ ]
39
+ }
16
40
  },
17
41
  "additionalProperties": false
18
42
  },
19
43
  "execution": {
20
44
  "type": "object",
21
- "required": ["max_implementation_agents", "max_integration_attempts", "deep_ticket_human_approval", "shared_path_owner"],
45
+ "required": [
46
+ "max_implementation_agents",
47
+ "max_integration_attempts",
48
+ "deep_ticket_human_approval",
49
+ "shared_path_owner"
50
+ ],
22
51
  "properties": {
23
- "max_implementation_agents": {"type": "integer", "minimum": 1},
24
- "max_integration_attempts": {"type": "integer", "minimum": 1},
25
- "deep_ticket_human_approval": {"type": "boolean"},
26
- "shared_path_owner": {"type": "string", "minLength": 1}
52
+ "max_implementation_agents": {
53
+ "type": "integer",
54
+ "minimum": 1
55
+ },
56
+ "max_integration_attempts": {
57
+ "type": "integer",
58
+ "minimum": 1
59
+ },
60
+ "deep_ticket_human_approval": {
61
+ "type": "boolean"
62
+ },
63
+ "shared_path_owner": {
64
+ "type": "string",
65
+ "minLength": 1
66
+ }
27
67
  },
28
68
  "additionalProperties": false
29
69
  },
30
70
  "verification": {
31
71
  "type": "object",
32
- "required": ["test", "typecheck", "lint", "build"],
72
+ "required": [
73
+ "test",
74
+ "typecheck",
75
+ "lint",
76
+ "build"
77
+ ],
33
78
  "properties": {
34
- "test": {"type": ["string", "null"]},
35
- "typecheck": {"type": ["string", "null"]},
36
- "lint": {"type": ["string", "null"]},
37
- "build": {"type": ["string", "null"]}
79
+ "test": {
80
+ "type": [
81
+ "string",
82
+ "null"
83
+ ]
84
+ },
85
+ "typecheck": {
86
+ "type": [
87
+ "string",
88
+ "null"
89
+ ]
90
+ },
91
+ "lint": {
92
+ "type": [
93
+ "string",
94
+ "null"
95
+ ]
96
+ },
97
+ "build": {
98
+ "type": [
99
+ "string",
100
+ "null"
101
+ ]
102
+ }
38
103
  },
39
104
  "additionalProperties": true
40
105
  },
41
106
  "planning": {
42
107
  "type": "object",
43
- "required": ["default_depth", "require_ready_gate", "require_evidence", "ui_design_default_candidates", "ui_design_max_candidates"],
108
+ "required": [
109
+ "default_depth",
110
+ "require_ready_gate",
111
+ "require_evidence",
112
+ "ui_design_default_candidates",
113
+ "ui_design_max_candidates"
114
+ ],
44
115
  "properties": {
45
- "default_depth": {"enum": ["lite", "standard", "deep"]},
46
- "require_ready_gate": {"type": "boolean"},
47
- "require_evidence": {"type": "boolean"},
48
- "ui_design_default_candidates": {"type": "integer", "minimum": 2, "maximum": 4},
49
- "ui_design_max_candidates": {"type": "integer", "minimum": 2, "maximum": 4}
116
+ "default_depth": {
117
+ "enum": [
118
+ "lite",
119
+ "standard",
120
+ "deep"
121
+ ]
122
+ },
123
+ "require_ready_gate": {
124
+ "type": "boolean"
125
+ },
126
+ "require_evidence": {
127
+ "type": "boolean"
128
+ },
129
+ "ui_design_default_candidates": {
130
+ "type": "integer",
131
+ "minimum": 2,
132
+ "maximum": 4
133
+ },
134
+ "ui_design_max_candidates": {
135
+ "type": "integer",
136
+ "minimum": 2,
137
+ "maximum": 4
138
+ }
50
139
  },
51
140
  "additionalProperties": true
141
+ },
142
+ "github": {
143
+ "type": "object",
144
+ "required": [
145
+ "include_external_prs",
146
+ "labels"
147
+ ],
148
+ "properties": {
149
+ "include_external_prs": {
150
+ "type": "boolean"
151
+ },
152
+ "labels": {
153
+ "type": "object",
154
+ "additionalProperties": {
155
+ "type": "string",
156
+ "minLength": 1
157
+ }
158
+ }
159
+ },
160
+ "additionalProperties": false
52
161
  }
53
162
  },
54
- "allOf": [{
55
- "$comment": "ui_design_default_candidates <= ui_design_max_candidates is enforced by validate-specdev.mjs because JSON Schema cannot compare sibling numeric values."
56
- }],
163
+ "allOf": [
164
+ {
165
+ "$comment": "ui_design_default_candidates <= ui_design_max_candidates is enforced by validate-specdev.mjs because JSON Schema cannot compare sibling numeric values."
166
+ }
167
+ ],
57
168
  "additionalProperties": false
58
169
  }
@@ -0,0 +1,62 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:speculo:specdev:logic-prototype:v1",
4
+ "type": "object",
5
+ "required": [
6
+ "schema_version",
7
+ "artifact",
8
+ "change",
9
+ "id",
10
+ "status",
11
+ "verification",
12
+ "html_sha256",
13
+ "updated_at"
14
+ ],
15
+ "properties": {
16
+ "schema_version": {
17
+ "const": 1
18
+ },
19
+ "artifact": {
20
+ "const": "logic-prototype"
21
+ },
22
+ "change": {
23
+ "type": "string",
24
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
25
+ },
26
+ "id": {
27
+ "type": "string",
28
+ "pattern": "^LOGIC-[0-9]{3,}$"
29
+ },
30
+ "status": {
31
+ "enum": [
32
+ "draft",
33
+ "blocked",
34
+ "ready"
35
+ ]
36
+ },
37
+ "verification": {
38
+ "enum": [
39
+ "pending",
40
+ "passed",
41
+ "failed",
42
+ "unknown"
43
+ ]
44
+ },
45
+ "html_sha256": {
46
+ "anyOf": [
47
+ {
48
+ "type": "null"
49
+ },
50
+ {
51
+ "type": "string",
52
+ "pattern": "^[a-f0-9]{64}$"
53
+ }
54
+ ]
55
+ },
56
+ "updated_at": {
57
+ "type": "string",
58
+ "format": "date-time"
59
+ }
60
+ },
61
+ "additionalProperties": false
62
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:speculo:specdev:pull-request:v1",
4
+ "type": "object",
5
+ "required": [
6
+ "schema_version",
7
+ "artifact",
8
+ "change",
9
+ "id",
10
+ "requested",
11
+ "status",
12
+ "repo",
13
+ "base_sha",
14
+ "head_sha",
15
+ "body_sha256",
16
+ "verification",
17
+ "url",
18
+ "updated_at",
19
+ "delivery_target"
20
+ ],
21
+ "properties": {
22
+ "schema_version": {
23
+ "const": 1
24
+ },
25
+ "artifact": {
26
+ "const": "pull-request"
27
+ },
28
+ "change": {
29
+ "type": "string",
30
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
31
+ },
32
+ "id": {
33
+ "type": "string",
34
+ "pattern": "^PR-[0-9]{3,}$"
35
+ },
36
+ "requested": {
37
+ "type": "boolean"
38
+ },
39
+ "status": {
40
+ "enum": [
41
+ "planned",
42
+ "draft",
43
+ "ready",
44
+ "failed",
45
+ "waived"
46
+ ]
47
+ },
48
+ "repo": {
49
+ "type": "string",
50
+ "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$"
51
+ },
52
+ "base_sha": {
53
+ "type": "string",
54
+ "pattern": "^[a-f0-9]{40,64}$"
55
+ },
56
+ "head_sha": {
57
+ "type": "string",
58
+ "pattern": "^[a-f0-9]{40,64}$"
59
+ },
60
+ "body_sha256": {
61
+ "type": "string",
62
+ "pattern": "^[a-f0-9]{64}$"
63
+ },
64
+ "verification": {
65
+ "enum": [
66
+ "pending",
67
+ "passed",
68
+ "failed",
69
+ "unknown"
70
+ ]
71
+ },
72
+ "url": {
73
+ "type": [
74
+ "string",
75
+ "null"
76
+ ]
77
+ },
78
+ "updated_at": {
79
+ "type": "string",
80
+ "format": "date-time"
81
+ },
82
+ "delivery_target": {
83
+ "enum": [
84
+ "draft",
85
+ "ready"
86
+ ]
87
+ }
88
+ },
89
+ "additionalProperties": false
90
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:speculo:specdev:retrospective:v1",
4
+ "type": "object",
5
+ "required": [
6
+ "schema_version",
7
+ "artifact",
8
+ "change",
9
+ "id",
10
+ "status",
11
+ "outcome",
12
+ "sources",
13
+ "updated_at"
14
+ ],
15
+ "properties": {
16
+ "schema_version": {
17
+ "const": 1
18
+ },
19
+ "artifact": {
20
+ "const": "retrospective"
21
+ },
22
+ "change": {
23
+ "type": "string",
24
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
25
+ },
26
+ "id": {
27
+ "type": "string",
28
+ "pattern": "^RETRO-[0-9]{3,}$"
29
+ },
30
+ "status": {
31
+ "enum": [
32
+ "draft",
33
+ "blocked",
34
+ "completed"
35
+ ]
36
+ },
37
+ "outcome": {
38
+ "enum": [
39
+ "findings",
40
+ "no-findings",
41
+ "insufficient-evidence"
42
+ ]
43
+ },
44
+ "sources": {
45
+ "type": "array",
46
+ "minItems": 1,
47
+ "items": {
48
+ "type": "string",
49
+ "minLength": 1
50
+ }
51
+ },
52
+ "updated_at": {
53
+ "type": "string",
54
+ "format": "date-time"
55
+ }
56
+ },
57
+ "additionalProperties": false
58
+ }
@@ -0,0 +1,149 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:speculo:specdev:triage-run:v1",
4
+ "type": "object",
5
+ "required": [
6
+ "schema_version",
7
+ "artifact",
8
+ "id",
9
+ "mode",
10
+ "status",
11
+ "repo",
12
+ "change",
13
+ "commit_sha",
14
+ "npm_target",
15
+ "updated_at",
16
+ "targets"
17
+ ],
18
+ "properties": {
19
+ "schema_version": {
20
+ "const": 1
21
+ },
22
+ "artifact": {
23
+ "const": "triage-run"
24
+ },
25
+ "id": {
26
+ "type": "string",
27
+ "pattern": "^TRI-[0-9]{3,}$"
28
+ },
29
+ "mode": {
30
+ "enum": [
31
+ "ci-security",
32
+ "release-preflight",
33
+ "release"
34
+ ]
35
+ },
36
+ "status": {
37
+ "enum": [
38
+ "planned",
39
+ "blocked",
40
+ "failed",
41
+ "completed"
42
+ ]
43
+ },
44
+ "repo": {
45
+ "type": "string",
46
+ "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$"
47
+ },
48
+ "change": {
49
+ "anyOf": [
50
+ {
51
+ "type": "null"
52
+ },
53
+ {
54
+ "type": "string",
55
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
56
+ }
57
+ ]
58
+ },
59
+ "commit_sha": {
60
+ "anyOf": [
61
+ {
62
+ "type": "null"
63
+ },
64
+ {
65
+ "type": "string",
66
+ "pattern": "^[a-f0-9]{40,64}$"
67
+ }
68
+ ]
69
+ },
70
+ "npm_target": {
71
+ "enum": [
72
+ "required",
73
+ "not-required",
74
+ "unknown"
75
+ ]
76
+ },
77
+ "updated_at": {
78
+ "type": "string",
79
+ "format": "date-time"
80
+ },
81
+ "targets": {
82
+ "type": "array",
83
+ "items": {
84
+ "type": "object",
85
+ "required": [
86
+ "kind",
87
+ "identity",
88
+ "required",
89
+ "version",
90
+ "registry",
91
+ "dist_tag",
92
+ "observed",
93
+ "receipt"
94
+ ],
95
+ "properties": {
96
+ "kind": {
97
+ "enum": [
98
+ "npm",
99
+ "github-release",
100
+ "ci",
101
+ "security"
102
+ ]
103
+ },
104
+ "identity": {
105
+ "type": "string",
106
+ "minLength": 1
107
+ },
108
+ "required": {
109
+ "type": "boolean"
110
+ },
111
+ "version": {
112
+ "type": [
113
+ "string",
114
+ "null"
115
+ ]
116
+ },
117
+ "registry": {
118
+ "type": [
119
+ "string",
120
+ "null"
121
+ ]
122
+ },
123
+ "dist_tag": {
124
+ "type": [
125
+ "string",
126
+ "null"
127
+ ]
128
+ },
129
+ "observed": {
130
+ "enum": [
131
+ "pending",
132
+ "verified",
133
+ "failed",
134
+ "unknown"
135
+ ]
136
+ },
137
+ "receipt": {
138
+ "type": [
139
+ "string",
140
+ "null"
141
+ ]
142
+ }
143
+ },
144
+ "additionalProperties": false
145
+ }
146
+ }
147
+ },
148
+ "additionalProperties": false
149
+ }
@@ -1,23 +1,125 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "urn:speculo:specdev:triage:v1",
3
+ "$id": "urn:speculo:specdev:triage:v2",
4
4
  "title": "SpecDev Triage Frontmatter",
5
5
  "type": "object",
6
- "required": ["schema_version", "artifact", "change", "mode", "source", "classification", "risk", "route", "ready_for_implementation", "external_action", "updated_at"],
6
+ "required": [
7
+ "schema_version",
8
+ "artifact",
9
+ "change",
10
+ "mode",
11
+ "source",
12
+ "classification",
13
+ "risk",
14
+ "route",
15
+ "ready_for_implementation",
16
+ "external_action",
17
+ "updated_at",
18
+ "disposition",
19
+ "verification",
20
+ "remote_actions"
21
+ ],
7
22
  "properties": {
8
- "schema_version": {"const": 1},
9
- "artifact": {"const": "triage"},
10
- "change": {"type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"},
11
- "mode": {"enum": ["intake", "reconcile", "publish"]},
12
- "source": {"type": "string", "minLength": 1},
13
- "classification": {"enum": ["bug", "feature", "refactor", "investigation", "operations", "documentation", "review", "mixed"]},
14
- "risk": {"enum": ["low", "medium", "high", "critical"]},
15
- "route": {"type": "string", "pattern": "^specdev/[a-z0-9]+(?:-[a-z0-9]+)*$"},
16
- "ready_for_implementation": {"type": "boolean"},
17
- "external_action": {"enum": ["not-applicable", "pending-close", "closed", "close-failed", "waived"]},
18
- "publish_action": {"enum": ["not-requested", "pending", "published", "publish-failed", "waived"]},
19
- "publish": {"type": ["string", "null"]},
20
- "updated_at": {"type": "string", "minLength": 1}
23
+ "schema_version": {
24
+ "const": 2
25
+ },
26
+ "artifact": {
27
+ "const": "triage"
28
+ },
29
+ "change": {
30
+ "type": "string",
31
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
32
+ },
33
+ "mode": {
34
+ "enum": [
35
+ "intake",
36
+ "reconcile",
37
+ "publish"
38
+ ]
39
+ },
40
+ "source": {
41
+ "type": "string",
42
+ "minLength": 1
43
+ },
44
+ "classification": {
45
+ "enum": [
46
+ "bug",
47
+ "feature",
48
+ "refactor",
49
+ "investigation",
50
+ "operations",
51
+ "documentation",
52
+ "review",
53
+ "mixed"
54
+ ]
55
+ },
56
+ "risk": {
57
+ "enum": [
58
+ "low",
59
+ "medium",
60
+ "high",
61
+ "critical"
62
+ ]
63
+ },
64
+ "route": {
65
+ "type": "string",
66
+ "pattern": "^specdev/[a-z0-9]+(?:-[a-z0-9]+)*$"
67
+ },
68
+ "ready_for_implementation": {
69
+ "type": "boolean"
70
+ },
71
+ "external_action": {
72
+ "enum": [
73
+ "not-applicable",
74
+ "pending-close",
75
+ "closed",
76
+ "close-failed",
77
+ "waived"
78
+ ]
79
+ },
80
+ "publish_action": {
81
+ "enum": [
82
+ "not-requested",
83
+ "pending",
84
+ "published",
85
+ "publish-failed",
86
+ "waived"
87
+ ]
88
+ },
89
+ "publish": {
90
+ "type": [
91
+ "string",
92
+ "null"
93
+ ]
94
+ },
95
+ "updated_at": {
96
+ "type": "string",
97
+ "minLength": 1
98
+ },
99
+ "disposition": {
100
+ "enum": [
101
+ "needs-triage",
102
+ "needs-info",
103
+ "ready-for-agent",
104
+ "ready-for-human",
105
+ "wontfix"
106
+ ]
107
+ },
108
+ "verification": {
109
+ "enum": [
110
+ "pending",
111
+ "passed",
112
+ "failed",
113
+ "unknown"
114
+ ]
115
+ },
116
+ "remote_actions": {
117
+ "type": "array",
118
+ "items": {
119
+ "type": "string"
120
+ },
121
+ "uniqueItems": true
122
+ }
21
123
  },
22
124
  "additionalProperties": true
23
125
  }