harnessed 4.2.0 → 4.4.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.2.0"};
3
+ version: "4.4.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.2.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"]}
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.4.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.2.0",
3
+ "version": "4.4.0",
4
4
  "description": "AI coding harness package manager + composition orchestrator",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -574,6 +574,14 @@ capabilities:
574
574
  description: cc-handoff Ideation→Onboarding + Plan→Execute + file-ownership-strict 跨 CC instance 协议
575
575
  discipline_ref: workflows/disciplines/protocols.yaml
576
576
 
577
+ doc-discipline:
578
+ impl: harnessed-bundled
579
+ cmd: '<not-applicable-behavioral>'
580
+ since: v6.0
581
+ category: behavioral
582
+ description: STATE digest <100L halt + one-fact-per-file + overview-pointer-no-inline-narrative + transient-archive + status-from-artifacts + responsibility-one-home (6 rules)
583
+ discipline_ref: workflows/disciplines/doc-discipline.yaml
584
+
577
585
  # ============================================================================
578
586
  # Bucket 7 — gstack 33 optional registry-only (D-12 NEW v3)
579
587
  # ============================================================================
@@ -977,6 +985,72 @@ capabilities:
977
985
  fires_when:
978
986
  - subtask.bug_root_cause_unknown == true
979
987
 
988
+ spec:
989
+ impl: gstack
990
+ install_type: user-skill
991
+ skill_dir: gstack
992
+ cmd: /spec
993
+ since: v5.1
994
+ category: tool-slash-cmd
995
+ description: 5-stage spec → GitHub issue → 可选 agent 生成
996
+ fires_when:
997
+ - phase.stage == 'plan' AND phase.needs_spec_to_issues == true
998
+
999
+ skillify:
1000
+ impl: gstack
1001
+ install_type: user-skill
1002
+ skill_dir: gstack
1003
+ cmd: /skillify
1004
+ since: v5.1
1005
+ category: tool-slash-cmd
1006
+ description: 把现有流程蒸馏成新 gstack skill
1007
+ fires_when:
1008
+ - user.explicit_signal includes 'skillify'
1009
+
1010
+ pair-agent:
1011
+ impl: gstack
1012
+ install_type: user-skill
1013
+ skill_dir: gstack
1014
+ cmd: /pair-agent
1015
+ since: v5.1
1016
+ category: tool-slash-cmd
1017
+ description: 远程 agent 配对 + ngrok tunnel
1018
+ fires_when:
1019
+ - user.explicit_signal includes 'pair agent'
1020
+
1021
+ scrape:
1022
+ impl: gstack
1023
+ install_type: user-skill
1024
+ skill_dir: gstack
1025
+ cmd: /scrape
1026
+ since: v5.1
1027
+ category: tool-slash-cmd
1028
+ description: 批量页面抓取
1029
+ fires_when:
1030
+ - user.explicit_signal includes 'scrape'
1031
+
1032
+ benchmark-models:
1033
+ impl: gstack
1034
+ install_type: user-skill
1035
+ skill_dir: gstack
1036
+ cmd: /benchmark-models
1037
+ since: v5.1
1038
+ category: tool-slash-cmd
1039
+ description: 跨模型基准对比 (Claude/GPT/Gemini)
1040
+ fires_when:
1041
+ - user.explicit_signal includes 'benchmark models'
1042
+
1043
+ landing-report:
1044
+ impl: gstack
1045
+ install_type: user-skill
1046
+ skill_dir: gstack
1047
+ cmd: /landing-report
1048
+ since: v5.1
1049
+ category: tool-slash-cmd
1050
+ description: post-landing 落地报告
1051
+ fires_when:
1052
+ - phase.stage == 'verify' AND phase.needs_landing_report == true
1053
+
980
1054
  # ============================================================================
981
1055
  # Bucket 8 — Supplementary v3 NEW (2 entry)
982
1056
  # ============================================================================
@@ -1003,17 +1077,171 @@ capabilities:
1003
1077
  - subtask.needs_google_workspace == true
1004
1078
 
1005
1079
  # ============================================================================
1006
- # Bucket 9 — gsd-research-phase v3 NEW (W2 SHIPPED per CONTEXT D-08 + D-12)
1080
+ # Bucket 9 — GSD research/explore (v3 gsd-research-phase v4.2 gsd-explore remap)
1007
1081
  # ============================================================================
1082
+ #
1083
+ # GSD Core 1.4.1 (open-gsd/gsd-core rename) dropped the standalone
1084
+ # `gsd-research-phase` skill; closest surviving analog is `gsd-explore`
1085
+ # (codebase + multi-source exploration). Entry is orphan (no workflow.yaml
1086
+ # template interpolates it), so remap is a pure skill_dir/cmd swap.
1008
1087
 
1009
- gsd-research-phase:
1088
+ gsd-explore:
1010
1089
  impl: gsd
1011
1090
  install_type: user-skill
1012
- skill_dir: gsd-research-phase
1013
- cmd: /gsd-research-phase
1091
+ skill_dir: gsd-explore
1092
+ cmd: /gsd-explore
1014
1093
  since: v3.0
1015
1094
  category: tool-slash-cmd
1016
- description: GSD research-phase (Wave A 多 source 调研, sister D-08 cite Phase v3 W2 SHIPPED)
1095
+ description: GSD explore (codebase + 多 source 调研, GSD Core 1.4.1 successor to dropped gsd-research-phase)
1017
1096
  fires_when:
1018
1097
  - phase.stage == 'research'
1019
1098
  - phase.requires_multi_source_research == true
1099
+
1100
+ # ============================================================================
1101
+ # Bucket 10 — GSD Core 1.4.1 additive rewire (v5.1 Upstream Re-sync)
1102
+ # ============================================================================
1103
+ #
1104
+ # @opengsd/gsd-core 1.4.1 (get-shit-done-cc → @opengsd/gsd-core rename) reorganized
1105
+ # its skill surface. These 12 additive entries describe the new upstream entry points
1106
+ # so workflow.yaml templates + judgments gates can reference them. All mirror the
1107
+ # gsd-discuss-phase shape verbatim (impl: gsd / install_type: user-skill /
1108
+ # category: tool-slash-cmd / skill_dir == cmd basename). skill_dir verified on disk
1109
+ # at ~/.claude/skills/<skill_dir>/ (2026-06-09).
1110
+ #
1111
+ # KEYSTONE: gsd-execute-phase is deliberately NOT wired — the execute mechanism stays
1112
+ # harnessed self-owned (CC-native spawn + ralph-loop + v4.2 checkpoint ledger).
1113
+ #
1114
+ # 4 design-contract phase skills (spec/ui/secure/ai-integration) pair with sister
1115
+ # judgments triggers in workflows/judgments/stage-phase-gate.yaml.
1116
+
1117
+ gsd-spec-phase:
1118
+ impl: gsd
1119
+ install_type: user-skill
1120
+ skill_dir: gsd-spec-phase
1121
+ cmd: /gsd-spec-phase
1122
+ since: v5.1
1123
+ category: tool-slash-cmd
1124
+ description: GSD spec-phase SDD spec lock (sister judgments/stage-phase-gate.yaml)
1125
+ fires_when:
1126
+ - phase.stage == 'plan' and phase.requires_spec == true
1127
+
1128
+ gsd-ui-phase:
1129
+ impl: gsd
1130
+ install_type: user-skill
1131
+ skill_dir: gsd-ui-phase
1132
+ cmd: /gsd-ui-phase
1133
+ since: v5.1
1134
+ category: tool-slash-cmd
1135
+ description: GSD ui-phase UI design contract (sister judgments/stage-phase-gate.yaml)
1136
+ fires_when:
1137
+ - phase.has_ui_changes == true
1138
+
1139
+ gsd-secure-phase:
1140
+ impl: gsd
1141
+ install_type: user-skill
1142
+ skill_dir: gsd-secure-phase
1143
+ cmd: /gsd-secure-phase
1144
+ since: v5.1
1145
+ category: tool-slash-cmd
1146
+ description: GSD secure-phase security threat-model gate (sister judgments/stage-phase-gate.yaml)
1147
+ fires_when:
1148
+ - phase.has_auth_or_secrets == true
1149
+
1150
+ gsd-ai-integration-phase:
1151
+ impl: gsd
1152
+ install_type: user-skill
1153
+ skill_dir: gsd-ai-integration-phase
1154
+ cmd: /gsd-ai-integration-phase
1155
+ since: v5.1
1156
+ category: tool-slash-cmd
1157
+ description: GSD ai-integration-phase AI-SPEC design contract (sister judgments/stage-phase-gate.yaml)
1158
+ fires_when:
1159
+ - phase.builds_ai_system == true
1160
+
1161
+ gsd-ingest-docs:
1162
+ impl: gsd
1163
+ install_type: user-skill
1164
+ skill_dir: gsd-ingest-docs
1165
+ cmd: /gsd-ingest-docs
1166
+ since: v5.1
1167
+ category: tool-slash-cmd
1168
+ description: GSD ingest-docs bootstrap .planning from existing docs (cc-handoff Ideation→Onboarding)
1169
+ fires_when:
1170
+ - phase.type == 'onboarding'
1171
+
1172
+ gsd-new-project:
1173
+ impl: gsd
1174
+ install_type: user-skill
1175
+ skill_dir: gsd-new-project
1176
+ cmd: /gsd-new-project
1177
+ since: v5.1
1178
+ category: tool-slash-cmd
1179
+ description: GSD new-project greenfield project init
1180
+ fires_when:
1181
+ - phase.type == 'new_project'
1182
+
1183
+ gsd-new-milestone:
1184
+ impl: gsd
1185
+ install_type: user-skill
1186
+ skill_dir: gsd-new-milestone
1187
+ cmd: /gsd-new-milestone
1188
+ since: v5.1
1189
+ category: tool-slash-cmd
1190
+ description: GSD new-milestone brownfield milestone start
1191
+ fires_when:
1192
+ - phase.type == 'new_milestone'
1193
+
1194
+ gsd-extract-learnings:
1195
+ impl: gsd
1196
+ install_type: user-skill
1197
+ skill_dir: gsd-extract-learnings
1198
+ cmd: /gsd-extract-learnings
1199
+ since: v5.1
1200
+ category: tool-slash-cmd
1201
+ description: GSD extract-learnings 提取 decisions/lessons from completed phase
1202
+ fires_when:
1203
+ - phase.is_milestone_close == true
1204
+
1205
+ gsd-audit-milestone:
1206
+ impl: gsd
1207
+ install_type: user-skill
1208
+ skill_dir: gsd-audit-milestone
1209
+ cmd: /gsd-audit-milestone
1210
+ since: v5.1
1211
+ category: tool-slash-cmd
1212
+ description: GSD audit-milestone milestone completion audit
1213
+ fires_when:
1214
+ - phase.is_milestone_close == true
1215
+
1216
+ gsd-complete-milestone:
1217
+ impl: gsd
1218
+ install_type: user-skill
1219
+ skill_dir: gsd-complete-milestone
1220
+ cmd: /gsd-complete-milestone
1221
+ since: v5.1
1222
+ category: tool-slash-cmd
1223
+ description: GSD complete-milestone archive completed milestone
1224
+ fires_when:
1225
+ - phase.is_milestone_close == true
1226
+
1227
+ gsd-milestone-summary:
1228
+ impl: gsd
1229
+ install_type: user-skill
1230
+ skill_dir: gsd-milestone-summary
1231
+ cmd: /gsd-milestone-summary
1232
+ since: v5.1
1233
+ category: tool-slash-cmd
1234
+ description: GSD milestone-summary milestone summary
1235
+ fires_when:
1236
+ - phase.is_milestone_close == true
1237
+
1238
+ gsd-docs-update:
1239
+ impl: gsd
1240
+ install_type: user-skill
1241
+ skill_dir: gsd-docs-update
1242
+ cmd: /gsd-docs-update
1243
+ since: v5.1
1244
+ category: tool-slash-cmd
1245
+ description: GSD docs-update post-ship doc update
1246
+ fires_when:
1247
+ - phase.needs_doc_update == true
@@ -0,0 +1,49 @@
1
+ # workflows/disciplines/doc-discipline.yaml
2
+ # 文档纪律 — bundled discipline (STATE digest line-limit + one-fact-per-file +
3
+ # overview-pointer-no-inline-narrative + transient-consume-then-archive +
4
+ # status-derived-from-artifacts + responsibility-matrix-one-home)
5
+ # Phase v6.0 T11.1 — 7th L0 Discipline Substrate per D-09
6
+ # Codifies CLAUDE.md 文档纪律 section (三层渐进式结构 + 反腐防膨胀铁律)
7
+
8
+ schema_version: harnessed.discipline.v1
9
+ discipline: doc
10
+ enforcement_layer: commit
11
+ auto_enforce: true
12
+
13
+ rules:
14
+ - id: state-digest-line-limit
15
+ description: STATE.md >100 lines triggers halt; override via `HARNESSED_ALLOW_LONG_STATE=1`
16
+ enforcement: halt
17
+ trigger: "phase.type == 'commit' AND changed_files contains '.planning/STATE.md'"
18
+ check_method: external-cmd
19
+ # No auto_fix_cmd — halt rules do not auto-fix; override is env-based in TS
20
+
21
+ - id: one-fact-per-file
22
+ description: Decision docs must be single-topic; duplicate fact spread across files violates one-fact-per-file
23
+ enforcement: warn
24
+ trigger: "phase.type == 'commit' AND changed_files matches '\\.planning/'"
25
+ check_method: heuristic
26
+
27
+ - id: overview-pointer-no-inline-narrative
28
+ description: ROADMAP/overview docs must not inline closing narrative (叙事进 SUMMARY, not ROADMAP)
29
+ enforcement: warn
30
+ trigger: "phase.type == 'commit' AND changed_files matches 'ROADMAP\\.md|STATE\\.md'"
31
+ check_method: heuristic
32
+
33
+ - id: transient-consume-then-archive
34
+ description: HANDOFF and other transient artifacts must be archived after consumption, not accumulated at .planning/ root
35
+ enforcement: warn
36
+ trigger: "phase.type == 'commit' AND changed_files matches 'HANDOFF'"
37
+ check_method: heuristic
38
+
39
+ - id: status-derived-from-artifacts
40
+ description: Phase status must derive from VERIFICATION artifacts + test results, not hand-maintained booleans in STATE/ROADMAP
41
+ enforcement: warn
42
+ trigger: "phase.type == 'commit' AND changed_files contains '.planning/STATE.md'"
43
+ check_method: heuristic
44
+
45
+ - id: responsibility-matrix-one-home
46
+ description: Each fact has exactly one home per responsibility matrix (decision→ADR, requirement→REQUIREMENTS, etc.); cross-file duplication is a violation
47
+ enforcement: info
48
+ trigger: "phase.type == 'commit' AND changed_files matches '\\.planning/'"
49
+ check_method: heuristic
@@ -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