harnessed 4.1.3 → 4.3.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/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  // package.json
2
2
  var package_default = {
3
- version: "4.1.3"};
3
+ version: "4.3.0"};
4
4
 
5
5
  // src/index.ts
6
6
  var VERSION = package_default.version;
@@ -1 +1 @@
1
- {"version":3,"sources":["../package.json","../src/index.ts"],"names":[],"mappings":";AAAA,IAAA,eAAA,GAAA;AAAA,EAEE,OAAA,EAAW,OAgGb,CAAA;;;AC7FO,IAAM,UAAU,eAAA,CAAI","file":"index.mjs","sourcesContent":["{\n \"name\": \"harnessed\",\n \"version\": \"4.1.3\",\n \"description\": \"AI coding harness package manager + composition orchestrator\",\n \"type\": \"module\",\n \"license\": \"Apache-2.0\",\n \"author\": \"easyinplay\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/easyinplay/harnessed.git\"\n },\n \"homepage\": \"https://github.com/easyinplay/harnessed#readme\",\n \"bugs\": \"https://github.com/easyinplay/harnessed/issues\",\n \"keywords\": [\n \"claude-code\",\n \"ai-harness\",\n \"package-manager\",\n \"composition\",\n \"skill-pack\",\n \"mcp\",\n \"orchestrator\"\n ],\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"packageManager\": \"pnpm@10.12.0\",\n \"bin\": {\n \"harnessed\": \"./dist/cli.mjs\"\n },\n \"main\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./schemas\": {\n \"types\": \"./dist/schemas/index.d.ts\",\n \"import\": \"./dist/schemas/index.mjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"files\": [\n \"dist\",\n \"manifests\",\n \"messages\",\n \"workflows\",\n \"routing\",\n \"config-templates\",\n \"schemas\",\n \"README.md\",\n \"LICENSE\",\n \"NOTICE\",\n \"THIRD-PARTY-NOTICES.md\"\n ],\n \"scripts\": {\n \"dev\": \"tsup --watch\",\n \"build\": \"tsc --noEmit && tsup\",\n \"build:schema\": \"node ./scripts/build-schema.mjs\",\n \"validate:schema\": \"node ./scripts/validate-schema.mjs\",\n \"typecheck\": \"tsc --noEmit\",\n \"test\": \"vitest run --passWithNoTests\",\n \"test:watch\": \"vitest\",\n \"test:coverage\": \"vitest run --coverage --passWithNoTests\",\n \"bench\": \"vitest bench --run\",\n \"lint\": \"biome check .\",\n \"lint:fix\": \"biome check --write .\",\n \"format\": \"biome format --write .\"\n },\n \"dependencies\": {\n \"@anthropic-ai/claude-agent-sdk\": \"0.3.142\",\n \"@clack/prompts\": \"^0.10.1\",\n \"@sinclair/typebox\": \"^0.34.49\",\n \"ajv\": \"^8.20.0\",\n \"ajv-errors\": \"^3.0.0\",\n \"ajv-formats\": \"^3.0.1\",\n \"commander\": \"^13.0.0\",\n \"diff\": \"^9.0.0\",\n \"expr-eval\": \"^2.0.2\",\n \"picocolors\": \"^1.1.1\",\n \"proper-lockfile\": \"^4.1.2\",\n \"yaml\": \"^2.9.0\"\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"^2.0.0\",\n \"@types/node\": \"^22.10.0\",\n \"@types/proper-lockfile\": \"^4.1.4\",\n \"@vitest/coverage-v8\": \"^4.0.0\",\n \"tsup\": \"^8.3.0\",\n \"typescript\": \"^5.6.0\",\n \"vitest\": \"^4.0.0\"\n },\n \"pnpm\": {\n \"onlyBuiltDependencies\": [\n \"esbuild\"\n ]\n }\n}\n","// Main library entry — re-exports public APIs.\n// phase 1.1 batch 1: skeleton only; schema validator wired in batch 2 (T3+).\n\nimport pkg from '../package.json' with { type: 'json' }\n\nexport const VERSION = pkg.version\n"]}
1
+ {"version":3,"sources":["../package.json","../src/index.ts"],"names":[],"mappings":";AAAA,IAAA,eAAA,GAAA;AAAA,EAEE,OAAA,EAAW,OAgGb,CAAA;;;AC7FO,IAAM,UAAU,eAAA,CAAI","file":"index.mjs","sourcesContent":["{\n \"name\": \"harnessed\",\n \"version\": \"4.3.0\",\n \"description\": \"AI coding harness package manager + composition orchestrator\",\n \"type\": \"module\",\n \"license\": \"Apache-2.0\",\n \"author\": \"easyinplay\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/easyinplay/harnessed.git\"\n },\n \"homepage\": \"https://github.com/easyinplay/harnessed#readme\",\n \"bugs\": \"https://github.com/easyinplay/harnessed/issues\",\n \"keywords\": [\n \"claude-code\",\n \"ai-harness\",\n \"package-manager\",\n \"composition\",\n \"skill-pack\",\n \"mcp\",\n \"orchestrator\"\n ],\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"packageManager\": \"pnpm@10.12.0\",\n \"bin\": {\n \"harnessed\": \"./dist/cli.mjs\"\n },\n \"main\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./schemas\": {\n \"types\": \"./dist/schemas/index.d.ts\",\n \"import\": \"./dist/schemas/index.mjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"files\": [\n \"dist\",\n \"manifests\",\n \"messages\",\n \"workflows\",\n \"routing\",\n \"config-templates\",\n \"schemas\",\n \"README.md\",\n \"LICENSE\",\n \"NOTICE\",\n \"THIRD-PARTY-NOTICES.md\"\n ],\n \"scripts\": {\n \"dev\": \"tsup --watch\",\n \"build\": \"tsc --noEmit && tsup\",\n \"build:schema\": \"node ./scripts/build-schema.mjs\",\n \"validate:schema\": \"node ./scripts/validate-schema.mjs\",\n \"typecheck\": \"tsc --noEmit\",\n \"test\": \"vitest run --passWithNoTests\",\n \"test:watch\": \"vitest\",\n \"test:coverage\": \"vitest run --coverage --passWithNoTests\",\n \"bench\": \"vitest bench --run\",\n \"lint\": \"biome check .\",\n \"lint:fix\": \"biome check --write .\",\n \"format\": \"biome format --write .\"\n },\n \"dependencies\": {\n \"@anthropic-ai/claude-agent-sdk\": \"0.3.142\",\n \"@clack/prompts\": \"^0.10.1\",\n \"@sinclair/typebox\": \"^0.34.49\",\n \"ajv\": \"^8.20.0\",\n \"ajv-errors\": \"^3.0.0\",\n \"ajv-formats\": \"^3.0.1\",\n \"commander\": \"^13.0.0\",\n \"diff\": \"^9.0.0\",\n \"expr-eval\": \"^2.0.2\",\n \"picocolors\": \"^1.1.1\",\n \"proper-lockfile\": \"^4.1.2\",\n \"yaml\": \"^2.9.0\"\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"^2.0.0\",\n \"@types/node\": \"^22.10.0\",\n \"@types/proper-lockfile\": \"^4.1.4\",\n \"@vitest/coverage-v8\": \"^4.0.0\",\n \"tsup\": \"^8.3.0\",\n \"typescript\": \"^5.6.0\",\n \"vitest\": \"^4.0.0\"\n },\n \"pnpm\": {\n \"onlyBuiltDependencies\": [\n \"esbuild\"\n ]\n }\n}\n","// Main library entry — re-exports public APIs.\n// phase 1.1 batch 1: skeleton only; schema validator wired in batch 2 (T3+).\n\nimport pkg from '../package.json' with { type: 'json' }\n\nexport const VERSION = pkg.version\n"]}
@@ -3,14 +3,14 @@ apiVersion: harnessed/v1
3
3
  kind: Manifest
4
4
  metadata:
5
5
  name: gsd
6
- display_name: GSD (Get Shit Done)
6
+ display_name: GSD Core (Git. Ship. Done.)
7
7
  description: Project-manager orchestrator providing /gsd-* discuss-plan-execute-verify workflow.
8
8
  upstream:
9
- source: get-shit-done-cc
10
- homepage: https://github.com/gsd-build/get-shit-done
11
- repository: https://github.com/gsd-build/get-shit-done.git
9
+ source: "@opengsd/gsd-core"
10
+ homepage: https://github.com/open-gsd/gsd-core
11
+ repository: https://github.com/open-gsd/gsd-core.git
12
12
  license: MIT
13
- notice: GSD by gsd-build (TACHES), used as orchestration layer in harnessed plan-feature workflow.
13
+ notice: GSD Core (Git. Ship. Done.) by open-gsd, used as orchestration layer in harnessed plan-feature workflow.
14
14
  spec:
15
15
  type: cli-npm
16
16
  component_type: command
@@ -18,20 +18,20 @@ spec:
18
18
  install_type: npm
19
19
  install:
20
20
  method: npm-cli
21
- cmd: "npx --yes get-shit-done-cc@^1.41.0 install"
22
- npm_version: ^1.41.0
23
- idempotent_check: "test -d ~/.claude/skills/gsd"
21
+ cmd: "npx --yes @opengsd/gsd-core@latest --claude --global"
22
+ npm_version: ^1.4.1
23
+ idempotent_check: "test -d ~/.claude/skills/gsd-plan-phase"
24
24
  verify:
25
- cmd: "npx --yes get-shit-done-cc@^1.41.0 --version"
25
+ cmd: "test -f ~/.claude/skills/gsd-plan-phase/SKILL.md"
26
26
  timeout_ms: 10000
27
27
  uninstall:
28
- cmd: "rm -rf ~/.claude/skills/gsd"
28
+ cmd: "npx --yes @opengsd/gsd-core@latest --uninstall --claude"
29
29
  cleanup_paths:
30
- - ~/.claude/skills/gsd
30
+ - ~/.claude/skills/gsd-plan-phase
31
31
  upstream_health:
32
- stability: beta
33
- last_check: "2026-05-11"
34
- last_known_good_version: 1.41.2
32
+ stability: stable
33
+ last_check: "2026-06-09"
34
+ last_known_good_version: 1.4.1
35
35
  fallback_action: warn
36
36
  signed_by: easyinplay
37
37
  platforms:
@@ -19,7 +19,7 @@ spec:
19
19
  install:
20
20
  method: git-clone-with-setup
21
21
  cmd: "git clone https://github.com/garrytan/gstack.git ~/.claude/skills/gstack && cd ~/.claude/skills/gstack && bash ./setup.sh"
22
- git_ref: 74895062fb8a3acbf9f66cd088a83359aaaa56cd
22
+ git_ref: 1626d4857bfe30da2690dd6a3217961934aa3192
23
23
  idempotent_check: "test -d ~/.claude/skills/gstack/.git"
24
24
  verify:
25
25
  cmd: "test -f ~/.claude/skills/gstack/skills/office-hours.md"
@@ -30,8 +30,8 @@ spec:
30
30
  - ~/.claude/skills/gstack
31
31
  upstream_health:
32
32
  stability: stable
33
- last_check: "2026-05-11"
34
- last_known_good_version: main-269-commits
33
+ last_check: "2026-06-09"
34
+ last_known_good_version: 1.52.1.0
35
35
  fallback_action: warn
36
36
  signed_by: easyinplay
37
37
  platforms:
@@ -33,7 +33,7 @@ spec:
33
33
  - ~/.claude/skills/mattpocock-skills
34
34
  upstream_health:
35
35
  stability: stable
36
- last_check: "2026-05-11"
36
+ last_check: "2026-06-09"
37
37
  last_known_good_version: main-76-commits
38
38
  fallback_action: warn
39
39
  signed_by: easyinplay
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harnessed",
3
- "version": "4.1.3",
3
+ "version": "4.3.0",
4
4
  "description": "AI coding harness package manager + composition orchestrator",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -977,6 +977,72 @@ capabilities:
977
977
  fires_when:
978
978
  - subtask.bug_root_cause_unknown == true
979
979
 
980
+ spec:
981
+ impl: gstack
982
+ install_type: user-skill
983
+ skill_dir: gstack
984
+ cmd: /spec
985
+ since: v5.1
986
+ category: tool-slash-cmd
987
+ description: 5-stage spec → GitHub issue → 可选 agent 生成
988
+ fires_when:
989
+ - phase.stage == 'plan' AND phase.needs_spec_to_issues == true
990
+
991
+ skillify:
992
+ impl: gstack
993
+ install_type: user-skill
994
+ skill_dir: gstack
995
+ cmd: /skillify
996
+ since: v5.1
997
+ category: tool-slash-cmd
998
+ description: 把现有流程蒸馏成新 gstack skill
999
+ fires_when:
1000
+ - user.explicit_signal includes 'skillify'
1001
+
1002
+ pair-agent:
1003
+ impl: gstack
1004
+ install_type: user-skill
1005
+ skill_dir: gstack
1006
+ cmd: /pair-agent
1007
+ since: v5.1
1008
+ category: tool-slash-cmd
1009
+ description: 远程 agent 配对 + ngrok tunnel
1010
+ fires_when:
1011
+ - user.explicit_signal includes 'pair agent'
1012
+
1013
+ scrape:
1014
+ impl: gstack
1015
+ install_type: user-skill
1016
+ skill_dir: gstack
1017
+ cmd: /scrape
1018
+ since: v5.1
1019
+ category: tool-slash-cmd
1020
+ description: 批量页面抓取
1021
+ fires_when:
1022
+ - user.explicit_signal includes 'scrape'
1023
+
1024
+ benchmark-models:
1025
+ impl: gstack
1026
+ install_type: user-skill
1027
+ skill_dir: gstack
1028
+ cmd: /benchmark-models
1029
+ since: v5.1
1030
+ category: tool-slash-cmd
1031
+ description: 跨模型基准对比 (Claude/GPT/Gemini)
1032
+ fires_when:
1033
+ - user.explicit_signal includes 'benchmark models'
1034
+
1035
+ landing-report:
1036
+ impl: gstack
1037
+ install_type: user-skill
1038
+ skill_dir: gstack
1039
+ cmd: /landing-report
1040
+ since: v5.1
1041
+ category: tool-slash-cmd
1042
+ description: post-landing 落地报告
1043
+ fires_when:
1044
+ - phase.stage == 'verify' AND phase.needs_landing_report == true
1045
+
980
1046
  # ============================================================================
981
1047
  # Bucket 8 — Supplementary v3 NEW (2 entry)
982
1048
  # ============================================================================
@@ -1003,17 +1069,171 @@ capabilities:
1003
1069
  - subtask.needs_google_workspace == true
1004
1070
 
1005
1071
  # ============================================================================
1006
- # Bucket 9 — gsd-research-phase v3 NEW (W2 SHIPPED per CONTEXT D-08 + D-12)
1072
+ # Bucket 9 — GSD research/explore (v3 gsd-research-phase v4.2 gsd-explore remap)
1007
1073
  # ============================================================================
1074
+ #
1075
+ # GSD Core 1.4.1 (open-gsd/gsd-core rename) dropped the standalone
1076
+ # `gsd-research-phase` skill; closest surviving analog is `gsd-explore`
1077
+ # (codebase + multi-source exploration). Entry is orphan (no workflow.yaml
1078
+ # template interpolates it), so remap is a pure skill_dir/cmd swap.
1008
1079
 
1009
- gsd-research-phase:
1080
+ gsd-explore:
1010
1081
  impl: gsd
1011
1082
  install_type: user-skill
1012
- skill_dir: gsd-research-phase
1013
- cmd: /gsd-research-phase
1083
+ skill_dir: gsd-explore
1084
+ cmd: /gsd-explore
1014
1085
  since: v3.0
1015
1086
  category: tool-slash-cmd
1016
- description: GSD research-phase (Wave A 多 source 调研, sister D-08 cite Phase v3 W2 SHIPPED)
1087
+ description: GSD explore (codebase + 多 source 调研, GSD Core 1.4.1 successor to dropped gsd-research-phase)
1017
1088
  fires_when:
1018
1089
  - phase.stage == 'research'
1019
1090
  - phase.requires_multi_source_research == true
1091
+
1092
+ # ============================================================================
1093
+ # Bucket 10 — GSD Core 1.4.1 additive rewire (v5.1 Upstream Re-sync)
1094
+ # ============================================================================
1095
+ #
1096
+ # @opengsd/gsd-core 1.4.1 (get-shit-done-cc → @opengsd/gsd-core rename) reorganized
1097
+ # its skill surface. These 12 additive entries describe the new upstream entry points
1098
+ # so workflow.yaml templates + judgments gates can reference them. All mirror the
1099
+ # gsd-discuss-phase shape verbatim (impl: gsd / install_type: user-skill /
1100
+ # category: tool-slash-cmd / skill_dir == cmd basename). skill_dir verified on disk
1101
+ # at ~/.claude/skills/<skill_dir>/ (2026-06-09).
1102
+ #
1103
+ # KEYSTONE: gsd-execute-phase is deliberately NOT wired — the execute mechanism stays
1104
+ # harnessed self-owned (CC-native spawn + ralph-loop + v4.2 checkpoint ledger).
1105
+ #
1106
+ # 4 design-contract phase skills (spec/ui/secure/ai-integration) pair with sister
1107
+ # judgments triggers in workflows/judgments/stage-phase-gate.yaml.
1108
+
1109
+ gsd-spec-phase:
1110
+ impl: gsd
1111
+ install_type: user-skill
1112
+ skill_dir: gsd-spec-phase
1113
+ cmd: /gsd-spec-phase
1114
+ since: v5.1
1115
+ category: tool-slash-cmd
1116
+ description: GSD spec-phase SDD spec lock (sister judgments/stage-phase-gate.yaml)
1117
+ fires_when:
1118
+ - phase.stage == 'plan' and phase.requires_spec == true
1119
+
1120
+ gsd-ui-phase:
1121
+ impl: gsd
1122
+ install_type: user-skill
1123
+ skill_dir: gsd-ui-phase
1124
+ cmd: /gsd-ui-phase
1125
+ since: v5.1
1126
+ category: tool-slash-cmd
1127
+ description: GSD ui-phase UI design contract (sister judgments/stage-phase-gate.yaml)
1128
+ fires_when:
1129
+ - phase.has_ui_changes == true
1130
+
1131
+ gsd-secure-phase:
1132
+ impl: gsd
1133
+ install_type: user-skill
1134
+ skill_dir: gsd-secure-phase
1135
+ cmd: /gsd-secure-phase
1136
+ since: v5.1
1137
+ category: tool-slash-cmd
1138
+ description: GSD secure-phase security threat-model gate (sister judgments/stage-phase-gate.yaml)
1139
+ fires_when:
1140
+ - phase.has_auth_or_secrets == true
1141
+
1142
+ gsd-ai-integration-phase:
1143
+ impl: gsd
1144
+ install_type: user-skill
1145
+ skill_dir: gsd-ai-integration-phase
1146
+ cmd: /gsd-ai-integration-phase
1147
+ since: v5.1
1148
+ category: tool-slash-cmd
1149
+ description: GSD ai-integration-phase AI-SPEC design contract (sister judgments/stage-phase-gate.yaml)
1150
+ fires_when:
1151
+ - phase.builds_ai_system == true
1152
+
1153
+ gsd-ingest-docs:
1154
+ impl: gsd
1155
+ install_type: user-skill
1156
+ skill_dir: gsd-ingest-docs
1157
+ cmd: /gsd-ingest-docs
1158
+ since: v5.1
1159
+ category: tool-slash-cmd
1160
+ description: GSD ingest-docs bootstrap .planning from existing docs (cc-handoff Ideation→Onboarding)
1161
+ fires_when:
1162
+ - phase.type == 'onboarding'
1163
+
1164
+ gsd-new-project:
1165
+ impl: gsd
1166
+ install_type: user-skill
1167
+ skill_dir: gsd-new-project
1168
+ cmd: /gsd-new-project
1169
+ since: v5.1
1170
+ category: tool-slash-cmd
1171
+ description: GSD new-project greenfield project init
1172
+ fires_when:
1173
+ - phase.type == 'new_project'
1174
+
1175
+ gsd-new-milestone:
1176
+ impl: gsd
1177
+ install_type: user-skill
1178
+ skill_dir: gsd-new-milestone
1179
+ cmd: /gsd-new-milestone
1180
+ since: v5.1
1181
+ category: tool-slash-cmd
1182
+ description: GSD new-milestone brownfield milestone start
1183
+ fires_when:
1184
+ - phase.type == 'new_milestone'
1185
+
1186
+ gsd-extract-learnings:
1187
+ impl: gsd
1188
+ install_type: user-skill
1189
+ skill_dir: gsd-extract-learnings
1190
+ cmd: /gsd-extract-learnings
1191
+ since: v5.1
1192
+ category: tool-slash-cmd
1193
+ description: GSD extract-learnings 提取 decisions/lessons from completed phase
1194
+ fires_when:
1195
+ - phase.is_milestone_close == true
1196
+
1197
+ gsd-audit-milestone:
1198
+ impl: gsd
1199
+ install_type: user-skill
1200
+ skill_dir: gsd-audit-milestone
1201
+ cmd: /gsd-audit-milestone
1202
+ since: v5.1
1203
+ category: tool-slash-cmd
1204
+ description: GSD audit-milestone milestone completion audit
1205
+ fires_when:
1206
+ - phase.is_milestone_close == true
1207
+
1208
+ gsd-complete-milestone:
1209
+ impl: gsd
1210
+ install_type: user-skill
1211
+ skill_dir: gsd-complete-milestone
1212
+ cmd: /gsd-complete-milestone
1213
+ since: v5.1
1214
+ category: tool-slash-cmd
1215
+ description: GSD complete-milestone archive completed milestone
1216
+ fires_when:
1217
+ - phase.is_milestone_close == true
1218
+
1219
+ gsd-milestone-summary:
1220
+ impl: gsd
1221
+ install_type: user-skill
1222
+ skill_dir: gsd-milestone-summary
1223
+ cmd: /gsd-milestone-summary
1224
+ since: v5.1
1225
+ category: tool-slash-cmd
1226
+ description: GSD milestone-summary milestone summary
1227
+ fires_when:
1228
+ - phase.is_milestone_close == true
1229
+
1230
+ gsd-docs-update:
1231
+ impl: gsd
1232
+ install_type: user-skill
1233
+ skill_dir: gsd-docs-update
1234
+ cmd: /gsd-docs-update
1235
+ since: v5.1
1236
+ category: tool-slash-cmd
1237
+ description: GSD docs-update post-ship doc update
1238
+ fires_when:
1239
+ - phase.needs_doc_update == true
@@ -0,0 +1,42 @@
1
+ # workflows/judgments/stage-phase-gate.yaml
2
+ # Stage/condition-gated design-contract 判据 — GSD Core 1.4.1 (v5.1 Upstream Re-sync)
3
+ # Pairs with: GSD design-contract phase skills (spec / ui / secure / ai-integration)
4
+ #
5
+ # Parallel to phase-gate.yaml (gsd-discuss-phase). The 4 design-contract phase skills
6
+ # fire on stage/condition predicates and invoke their sister capabilities.yaml entries
7
+ # (fires_when string matches the capabilities.yaml expression verbatim).
8
+
9
+ schema_version: harnessed.judgment.v1
10
+
11
+ triggers:
12
+ gsd-spec-phase:
13
+ description: |
14
+ GSD /gsd-spec-phase — SDD spec lock. Fires at plan stage when the phase
15
+ requires a spec design contract before execution.
16
+ fires_when: "phase.stage == 'plan' and phase.requires_spec == true"
17
+ invokes:
18
+ - capability: gsd-spec-phase
19
+
20
+ gsd-ui-phase:
21
+ description: |
22
+ GSD /gsd-ui-phase — UI design contract. Fires when the phase introduces
23
+ UI changes needing a design system / layout contract.
24
+ fires_when: "phase.has_ui_changes == true"
25
+ invokes:
26
+ - capability: gsd-ui-phase
27
+
28
+ gsd-secure-phase:
29
+ description: |
30
+ GSD /gsd-secure-phase — security threat-model gate. Fires when the phase
31
+ touches auth or secrets and needs a threat-model design contract.
32
+ fires_when: "phase.has_auth_or_secrets == true"
33
+ invokes:
34
+ - capability: gsd-secure-phase
35
+
36
+ gsd-ai-integration-phase:
37
+ description: |
38
+ GSD /gsd-ai-integration-phase — AI-SPEC design contract. Fires when the
39
+ phase builds an AI system needing an AI-SPEC.md design contract.
40
+ fires_when: "phase.builds_ai_system == true"
41
+ invokes:
42
+ - capability: gsd-ai-integration-phase
@@ -28,3 +28,6 @@ phases:
28
28
  model: sonnet
29
29
  parallelism: judgments.parallelism-gate.subagent-default.fires
30
30
  max_iterations: '{{ defaults.ralph_max_iterations.verify-code-review.01-code-review }}'
31
+ # D2-followup (ADR-0033): declare report artifact so the evidence guard is real
32
+ # (verified, not none_declared) — proves the multi-agent code-review actually ran.
33
+ artifacts_expected: [code-review-report.md]
@@ -30,3 +30,6 @@ phases:
30
30
  model: sonnet
31
31
  gate: judgments.stage-routing.verify-design-changes.fires
32
32
  max_iterations: 3
33
+ # D2-followup (ADR-0033): declare report artifact so the evidence guard is real
34
+ # (verified, not none_declared) — proves the design-review consistency pass actually ran.
35
+ artifacts_expected: [design-review-report.md]
@@ -48,6 +48,10 @@ phases:
48
48
  max_iterations: 1
49
49
  # v3.8.0 P1 — Pattern C team create is THE archetypical Agent Teams phase; full 3-RULES inject.
50
50
  injects_rules: [escalation, transparent-skip, agent-teams-prevention]
51
+ # D2-followup (ADR-0033): declare report artifact so the evidence guard is real
52
+ # (verified, not none_declared) — the 4-specialist team's cross-questioned findings
53
+ # land in one aggregated multi-dimensional review report (proves the team review ran).
54
+ artifacts_expected: [multispec-review-report.md]
51
55
 
52
56
  - id: 02-team-cleanup
53
57
  name: Agent Team cleanup (shutdown_request + TeamDelete 防呆清单)
@@ -27,3 +27,6 @@ phases:
27
27
  model: opus
28
28
  gate: judgments.stage-routing.verify-paranoid-critical.fires
29
29
  max_iterations: '{{ defaults.ralph_max_iterations.verify-paranoid.01-review }}'
30
+ # D2-followup (ADR-0033): declare report artifact so the evidence guard is real
31
+ # (verified, not none_declared) — proves the Paranoid Staff Engineer review actually ran.
32
+ artifacts_expected: [paranoid-review-report.md]
@@ -28,3 +28,6 @@ phases:
28
28
  model: sonnet
29
29
  gate: judgments.stage-routing.verify-qa-ui.fires
30
30
  max_iterations: 3
31
+ # D2-followup (ADR-0033): declare report artifact so the evidence guard is real
32
+ # (verified, not none_declared) — proves the end-to-end QA pass actually ran.
33
+ artifacts_expected: [qa-report.md]
@@ -28,3 +28,6 @@ phases:
28
28
  model: opus
29
29
  gate: judgments.stage-routing.verify-security-secrets.fires
30
30
  max_iterations: 3
31
+ # D2-followup (ADR-0033): declare report artifact so the evidence guard is real
32
+ # (verified, not none_declared) — proves the CSO OWASP/secrets audit actually ran.
33
+ artifacts_expected: [security-audit-report.md]