@skillcap/gdh 0.9.0 → 0.11.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.
Files changed (56) hide show
  1. package/INSTALL-BUNDLE.json +1 -1
  2. package/README.md +12 -5
  3. package/RELEASE-SPAN-UPDATE-CONTRACTS.json +660 -0
  4. package/node_modules/@gdh/adapters/dist/index.d.ts.map +1 -1
  5. package/node_modules/@gdh/adapters/dist/index.js +92 -22
  6. package/node_modules/@gdh/adapters/dist/index.js.map +1 -1
  7. package/node_modules/@gdh/adapters/package.json +8 -8
  8. package/node_modules/@gdh/authoring/package.json +2 -2
  9. package/node_modules/@gdh/cli/dist/index.js +1 -1
  10. package/node_modules/@gdh/cli/dist/index.js.map +1 -1
  11. package/node_modules/@gdh/cli/dist/migrate.d.ts +10 -1
  12. package/node_modules/@gdh/cli/dist/migrate.d.ts.map +1 -1
  13. package/node_modules/@gdh/cli/dist/migrate.js +141 -23
  14. package/node_modules/@gdh/cli/dist/migrate.js.map +1 -1
  15. package/node_modules/@gdh/cli/dist/self-update.d.ts.map +1 -1
  16. package/node_modules/@gdh/cli/dist/self-update.js +212 -22
  17. package/node_modules/@gdh/cli/dist/self-update.js.map +1 -1
  18. package/node_modules/@gdh/cli/dist/setup.d.ts.map +1 -1
  19. package/node_modules/@gdh/cli/dist/setup.js +2 -22
  20. package/node_modules/@gdh/cli/dist/setup.js.map +1 -1
  21. package/node_modules/@gdh/cli/package.json +10 -10
  22. package/node_modules/@gdh/core/dist/index.d.ts +19 -1
  23. package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
  24. package/node_modules/@gdh/core/dist/index.js +3 -0
  25. package/node_modules/@gdh/core/dist/index.js.map +1 -1
  26. package/node_modules/@gdh/core/dist/managed-gitignore.d.ts +11 -0
  27. package/node_modules/@gdh/core/dist/managed-gitignore.d.ts.map +1 -0
  28. package/node_modules/@gdh/core/dist/managed-gitignore.js +84 -0
  29. package/node_modules/@gdh/core/dist/managed-gitignore.js.map +1 -0
  30. package/node_modules/@gdh/core/dist/release-span-preview.d.ts +45 -0
  31. package/node_modules/@gdh/core/dist/release-span-preview.d.ts.map +1 -0
  32. package/node_modules/@gdh/core/dist/release-span-preview.js +147 -0
  33. package/node_modules/@gdh/core/dist/release-span-preview.js.map +1 -0
  34. package/node_modules/@gdh/core/dist/release-span-update-contract.d.ts +33 -0
  35. package/node_modules/@gdh/core/dist/release-span-update-contract.d.ts.map +1 -0
  36. package/node_modules/@gdh/core/dist/release-span-update-contract.js +138 -0
  37. package/node_modules/@gdh/core/dist/release-span-update-contract.js.map +1 -0
  38. package/node_modules/@gdh/core/package.json +1 -1
  39. package/node_modules/@gdh/docs/dist/guidance.d.ts.map +1 -1
  40. package/node_modules/@gdh/docs/dist/guidance.js +10 -4
  41. package/node_modules/@gdh/docs/dist/guidance.js.map +1 -1
  42. package/node_modules/@gdh/docs/package.json +2 -2
  43. package/node_modules/@gdh/mcp/package.json +8 -8
  44. package/node_modules/@gdh/observability/package.json +2 -2
  45. package/node_modules/@gdh/runtime/package.json +2 -2
  46. package/node_modules/@gdh/scan/dist/index.d.ts +5 -5
  47. package/node_modules/@gdh/scan/dist/index.d.ts.map +1 -1
  48. package/node_modules/@gdh/scan/dist/index.js +5 -4
  49. package/node_modules/@gdh/scan/dist/index.js.map +1 -1
  50. package/node_modules/@gdh/scan/dist/onboard.d.ts +2 -0
  51. package/node_modules/@gdh/scan/dist/onboard.d.ts.map +1 -1
  52. package/node_modules/@gdh/scan/dist/onboard.js +33 -6
  53. package/node_modules/@gdh/scan/dist/onboard.js.map +1 -1
  54. package/node_modules/@gdh/scan/package.json +3 -3
  55. package/node_modules/@gdh/verify/package.json +7 -7
  56. package/package.json +12 -11
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -714,7 +714,11 @@ export function renderClaudeMigrateCommand(pinnedVersion) {
714
714
  "2. Inspect `compatibility.blockingReasons` vs `compatibility.coupledReasons` — if `blockingReasons` is non-empty, STOP: `migrate --apply` cannot fix them (recommend `/gdh-update` or manual intervention per each reason's recovery hint). If only `coupledReasons` is non-empty, proceed.",
715
715
  "3. Explain what each migration step will change and why (use \"would\" verb forms — \"would delete\", \"would create\", \"would refresh\").",
716
716
  `4. Offer to run \`npx -y @skillcap/gdh@${pinnedVersion} migrate --apply\` if the user approves — after apply, the JSON \`mode\` field becomes \`"applied"\` and verbs switch to past tense ("deleted", "created", "refreshed").`,
717
- `5. After apply, run \`npx -y @skillcap/gdh@${pinnedVersion} status\` to verify the migration succeeded.`,
717
+ "5. After apply, read `terminal.state` in the stdout JSON.",
718
+ "6. If `terminal.state` is `healthy`, confirm no further migration action is required and stop.",
719
+ "7. If `terminal.state` is `follow_up_required`, run the surfaced `terminal.commands`, then run the surfaced `terminal.validationCommands`, and confirm the follow-up results before stopping.",
720
+ "8. If `terminal.state` is `manual_review_required`, explain the surfaced `terminal.manualSteps`, name the surfaced `terminal.validationCommands`, and stop for review instead of improvising a repair.",
721
+ "9. If `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop.",
718
722
  "</process>",
719
723
  "",
720
724
  "<rules>",
@@ -755,7 +759,11 @@ export function renderCodexMigrateSkill(pinnedVersion) {
755
759
  "- inspect `compatibility.blockingReasons` vs `compatibility.coupledReasons` — if `blockingReasons` is non-empty, STOP: `migrate --apply` cannot fix them (recommend `/gdh-update` or manual intervention per each reason's recovery hint); if only `coupledReasons` is non-empty, proceed",
756
760
  "- explain what each migration step will change and why (use \"would\" verb forms — \"would delete\", \"would create\", \"would refresh\")",
757
761
  `- offer to run \`npx -y @skillcap/gdh@${pinnedVersion} migrate --apply\` if the user approves — after apply, the JSON \`mode\` field becomes \`"applied"\` and verbs switch to past tense ("deleted", "created", "refreshed")`,
758
- `- after apply, run \`npx -y @skillcap/gdh@${pinnedVersion} status\` to verify the migration succeeded`,
762
+ "- after apply, read `terminal.state` in the stdout JSON",
763
+ "- if `terminal.state` is `healthy`, confirm no further migration action is required and stop",
764
+ "- if `terminal.state` is `follow_up_required`, run the surfaced `terminal.commands`, then run the surfaced `terminal.validationCommands`, and confirm the follow-up results before stopping",
765
+ "- if `terminal.state` is `manual_review_required`, explain the surfaced `terminal.manualSteps`, name the surfaced `terminal.validationCommands`, and stop for review instead of improvising a repair",
766
+ "- if `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop",
759
767
  "</process>",
760
768
  "",
761
769
  "<rules>",
@@ -794,7 +802,11 @@ export function renderCursorMigrateSkill(pinnedVersion) {
794
802
  "- inspect `compatibility.blockingReasons` vs `compatibility.coupledReasons` — if `blockingReasons` is non-empty, STOP: `migrate --apply` cannot fix them (recommend `/gdh-update` or manual intervention per each reason's recovery hint); if only `coupledReasons` is non-empty, proceed",
795
803
  "- explain what each migration step will change and why (use \"would\" verb forms — \"would delete\", \"would create\", \"would refresh\")",
796
804
  `- offer to run \`npx -y @skillcap/gdh@${pinnedVersion} migrate --apply\` if the user approves — after apply, the JSON \`mode\` field becomes \`"applied"\` and verbs switch to past tense ("deleted", "created", "refreshed")`,
797
- `- after apply, run \`npx -y @skillcap/gdh@${pinnedVersion} status\` to verify the migration succeeded`,
805
+ "- after apply, read `terminal.state` in the stdout JSON",
806
+ "- if `terminal.state` is `healthy`, confirm no further migration action is required and stop",
807
+ "- if `terminal.state` is `follow_up_required`, run the surfaced `terminal.commands`, then run the surfaced `terminal.validationCommands`, and confirm the follow-up results before stopping",
808
+ "- if `terminal.state` is `manual_review_required`, explain the surfaced `terminal.manualSteps`, name the surfaced `terminal.validationCommands`, and stop for review instead of improvising a repair",
809
+ "- if `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop",
798
810
  "</process>",
799
811
  "",
800
812
  "<rules>",
@@ -816,10 +828,12 @@ export function renderCursorMigrateSkill(pinnedVersion) {
816
828
  // failure mode Phase 13 exists to close. Check 44 in scripts/validate-docs.mjs
817
829
  // enforces both the @latest presence AND the @${pinnedVersion} absence.
818
830
  //
819
- // D-11: preview-then-apply flow WITHOUT a confirmation gate the human's
820
- // original intent ("update GDH") IS the approval. No AskUserQuestion for
821
- // Claude; no `## User questions` H2 for Codex/Cursor. Differs from /gdh-migrate
822
- // which DOES gate on explicit approval.
831
+ // Phase 41 update-flow policy: preview first, then explicit approval before
832
+ // apply, then terminal-driven follow-through. The renderers still avoid
833
+ // adapter-specific branching logic here they all consume the same
834
+ // structured `preview` JSON from `gdh self-update --dry-run`, then after
835
+ // apply they use `terminal.state` as the final truth for whether the update
836
+ // is healthy, needs follow-up commands, needs manual review, or is blocked.
823
837
  //
824
838
  // D-12: accept an optional positional version forwarded verbatim to the CLI.
825
839
  // `/gdh-update` = latest; `/gdh-update 0.6.0` = pin that version.
@@ -846,14 +860,22 @@ export function renderClaudeUpdateCommand(_pinnedVersion) {
846
860
  "Follow this order:",
847
861
  "",
848
862
  "1. Preview: run `npx -y @skillcap/gdh@latest self-update [version] --dry-run` (omit `[version]` to preview against npm latest).",
849
- "2. Surface the planned version delta and re-bake action count to the human conversationally.",
850
- "3. Apply: run `npx -y @skillcap/gdh@latest self-update [version]` (omit `[version]` to apply against npm latest; forward whatever positional the user passed to `/gdh-update`).",
851
- "4. Verify: run `npx -y @skillcap/gdh@latest verify drift` to confirm every baked surface matches the new pin.",
852
- "5. Read the `pendingMigration` field in the self-update stdout JSON. When non-null, narrate the chain to the human and run `npx -y @skillcap/gdh@latest migrate --apply` as the next action; when null, confirm no migration is pending and stop.",
863
+ "2. Read the `preview` field in the stdout JSON. If `preview.state` is `blocked`, surface the issues and stop. If `preview.state` is `noop`, explain the project is already at the target version and stop.",
864
+ "3. When `preview.state` is `ready`, summarize the current version, target version, intervening releases, bounded release highlights, ordered steps, and which work is `mechanical`, `agent_reasoning`, or `manual_review`.",
865
+ "4. Ask for explicit approval before apply.",
866
+ "5. Apply: run `npx -y @skillcap/gdh@latest self-update [version]` (omit `[version]` to apply against npm latest; forward whatever positional the user passed to `/gdh-update`).",
867
+ "6. Verify: run `npx -y @skillcap/gdh@latest verify drift` to confirm every baked surface matches the new pin.",
868
+ "7. Read `terminal.state` in the apply stdout JSON.",
869
+ "8. If `terminal.state` is `healthy`, confirm the update completed and stop.",
870
+ "9. If `terminal.state` is `follow_up_required`, run the surfaced `terminal.commands`, then run the surfaced `terminal.validationCommands`, and confirm the follow-up results before stopping.",
871
+ "10. If `terminal.state` is `manual_review_required`, explain the surfaced `terminal.manualSteps`, name the surfaced `terminal.validationCommands`, and stop for review instead of inventing a repair.",
872
+ "11. If `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop.",
853
873
  "</process>",
854
874
  "",
855
875
  "<rules>",
856
- "- Do NOT ask the user to confirm apply their original intent (\"update GDH\") IS the approval.",
876
+ "- Do ask for explicit approval after the structured preview and before apply.",
877
+ "- Do not invent migration steps from prose docs; use the machine-readable `preview` payload.",
878
+ "- Do treat `terminal.state` as the primary apply truth; the additive compatibility fields are not the main follow-through contract.",
857
879
  "- Bake literal `@latest` in the shellout so the new CLI performs the update, not the old one.",
858
880
  "- If `self-update` returns `rolled_back` or `blocked`, surface the failure reason and stop (do not retry).",
859
881
  "- If `self-update` returns `skipped_dev_mode`, explain that dev-from-source mode bypasses pinning; no action needed.",
@@ -884,14 +906,22 @@ export function renderCodexUpdateSkill(_pinnedVersion) {
884
906
  "Follow this order:",
885
907
  "",
886
908
  "1. Preview: run `npx -y @skillcap/gdh@latest self-update [version] --dry-run` (omit `[version]` to preview against npm latest).",
887
- "2. Surface the planned version delta and re-bake action count to the human conversationally.",
888
- "3. Apply: run `npx -y @skillcap/gdh@latest self-update [version]` (omit `[version]` to apply against npm latest; forward whatever positional the user passed to `/gdh-update`).",
889
- "4. Verify: run `npx -y @skillcap/gdh@latest verify drift` to confirm every baked surface matches the new pin.",
890
- "5. Read the `pendingMigration` field in the self-update stdout JSON. When non-null, narrate the chain to the human and run `npx -y @skillcap/gdh@latest migrate --apply` as the next action; when null, confirm no migration is pending and stop.",
909
+ "2. Read the `preview` field in the stdout JSON. If `preview.state` is `blocked`, surface the issues and stop. If `preview.state` is `noop`, explain the project is already at the target version and stop.",
910
+ "3. When `preview.state` is `ready`, summarize the current version, target version, intervening releases, bounded release highlights, ordered steps, and which work is `mechanical`, `agent_reasoning`, or `manual_review`.",
911
+ "4. Ask for explicit approval before apply.",
912
+ "5. Apply: run `npx -y @skillcap/gdh@latest self-update [version]` (omit `[version]` to apply against npm latest; forward whatever positional the user passed to `/gdh-update`).",
913
+ "6. Verify: run `npx -y @skillcap/gdh@latest verify drift` to confirm every baked surface matches the new pin.",
914
+ "7. Read `terminal.state` in the apply stdout JSON.",
915
+ "8. If `terminal.state` is `healthy`, confirm the update completed and stop.",
916
+ "9. If `terminal.state` is `follow_up_required`, run the surfaced `terminal.commands`, then run the surfaced `terminal.validationCommands`, and confirm the follow-up results before stopping.",
917
+ "10. If `terminal.state` is `manual_review_required`, explain the surfaced `terminal.manualSteps`, name the surfaced `terminal.validationCommands`, and stop for review instead of inventing a repair.",
918
+ "11. If `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop.",
891
919
  "</process>",
892
920
  "",
893
921
  "<rules>",
894
- "- Do NOT ask the user to confirm apply their original intent (\"update GDH\") IS the approval.",
922
+ "- Do ask for explicit approval after the structured preview and before apply.",
923
+ "- Do not invent migration steps from prose docs; use the machine-readable `preview` payload.",
924
+ "- Do treat `terminal.state` as the primary apply truth; the additive compatibility fields are not the main follow-through contract.",
895
925
  "- Bake literal `@latest` in the shellout so the new CLI performs the update, not the old one.",
896
926
  "- If `self-update` returns `rolled_back` or `blocked`, surface the failure reason and stop (do not retry).",
897
927
  "- If `self-update` returns `skipped_dev_mode`, explain that dev-from-source mode bypasses pinning; no action needed.",
@@ -920,14 +950,22 @@ export function renderCursorUpdateSkill(_pinnedVersion) {
920
950
  "Follow this order:",
921
951
  "",
922
952
  "1. Preview: run `npx -y @skillcap/gdh@latest self-update [version] --dry-run` (omit `[version]` to preview against npm latest).",
923
- "2. Surface the planned version delta and re-bake action count to the human conversationally.",
924
- "3. Apply: run `npx -y @skillcap/gdh@latest self-update [version]` (omit `[version]` to apply against npm latest; forward whatever positional the user passed to `/gdh-update`).",
925
- "4. Verify: run `npx -y @skillcap/gdh@latest verify drift` to confirm every baked surface matches the new pin.",
926
- "5. Read the `pendingMigration` field in the self-update stdout JSON. When non-null, narrate the chain to the human and run `npx -y @skillcap/gdh@latest migrate --apply` as the next action; when null, confirm no migration is pending and stop.",
953
+ "2. Read the `preview` field in the stdout JSON. If `preview.state` is `blocked`, surface the issues and stop. If `preview.state` is `noop`, explain the project is already at the target version and stop.",
954
+ "3. When `preview.state` is `ready`, summarize the current version, target version, intervening releases, bounded release highlights, ordered steps, and which work is `mechanical`, `agent_reasoning`, or `manual_review`.",
955
+ "4. Ask for explicit approval before apply.",
956
+ "5. Apply: run `npx -y @skillcap/gdh@latest self-update [version]` (omit `[version]` to apply against npm latest; forward whatever positional the user passed to `/gdh-update`).",
957
+ "6. Verify: run `npx -y @skillcap/gdh@latest verify drift` to confirm every baked surface matches the new pin.",
958
+ "7. Read `terminal.state` in the apply stdout JSON.",
959
+ "8. If `terminal.state` is `healthy`, confirm the update completed and stop.",
960
+ "9. If `terminal.state` is `follow_up_required`, run the surfaced `terminal.commands`, then run the surfaced `terminal.validationCommands`, and confirm the follow-up results before stopping.",
961
+ "10. If `terminal.state` is `manual_review_required`, explain the surfaced `terminal.manualSteps`, name the surfaced `terminal.validationCommands`, and stop for review instead of inventing a repair.",
962
+ "11. If `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop.",
927
963
  "</process>",
928
964
  "",
929
965
  "<rules>",
930
- "- Do NOT ask the user to confirm apply their original intent (\"update GDH\") IS the approval.",
966
+ "- Do ask for explicit approval after the structured preview and before apply.",
967
+ "- Do not invent migration steps from prose docs; use the machine-readable `preview` payload.",
968
+ "- Do treat `terminal.state` as the primary apply truth; the additive compatibility fields are not the main follow-through contract.",
931
969
  "- Bake literal `@latest` in the shellout so the new CLI performs the update, not the old one.",
932
970
  "- If `self-update` returns `rolled_back` or `blocked`, surface the failure reason and stop (do not retry).",
933
971
  "- If `self-update` returns `skipped_dev_mode`, explain that dev-from-source mode bypasses pinning; no action needed.",
@@ -3077,6 +3115,10 @@ function inspectRuntimeBridgeLifecycleSurface(targetPath, bridgeStatus) {
3077
3115
  kind: "run_repair",
3078
3116
  summary: "Run GDH migrate or bridge repair to normalize the runtime bridge surface.",
3079
3117
  command: ["gdh", "bridge", "repair", targetPath],
3118
+ validationCommands: [
3119
+ ["gdh", "bridge", "status", targetPath],
3120
+ ["gdh", "status", targetPath],
3121
+ ],
3080
3122
  autoApplicable: true,
3081
3123
  },
3082
3124
  });
@@ -3104,6 +3146,13 @@ function inspectRuntimeBridgeLifecycleSurface(targetPath, bridgeStatus) {
3104
3146
  kind: "run_repair",
3105
3147
  summary: "Run GDH migrate or bridge repair to install the missing runtime bridge files, then enable the GDH Runtime Bridge plugin in the Godot editor.",
3106
3148
  command: ["gdh", "bridge", "repair", targetPath],
3149
+ validationCommands: [
3150
+ ["gdh", "bridge", "status", targetPath],
3151
+ ["gdh", "status", targetPath],
3152
+ ],
3153
+ manualSteps: [
3154
+ "If GDHBridge is still not registered after repair, open the project in Godot and enable the GDH Runtime Bridge plugin.",
3155
+ ],
3107
3156
  autoApplicable: true,
3108
3157
  },
3109
3158
  });
@@ -3121,6 +3170,13 @@ function inspectRuntimeBridgeLifecycleSurface(targetPath, bridgeStatus) {
3121
3170
  kind: "manual_review",
3122
3171
  summary: "Enable the GDH Runtime Bridge plugin in the Godot editor so it can register GDHBridge, then rerun GDH status or bridge status.",
3123
3172
  command: ["gdh", "bridge", "status", targetPath],
3173
+ validationCommands: [
3174
+ ["gdh", "bridge", "status", targetPath],
3175
+ ["gdh", "status", targetPath],
3176
+ ],
3177
+ manualSteps: [
3178
+ "Open the project in Godot and enable the GDH Runtime Bridge plugin so it can register GDHBridge.",
3179
+ ],
3124
3180
  autoApplicable: false,
3125
3181
  },
3126
3182
  });
@@ -3136,6 +3192,13 @@ function inspectRuntimeBridgeLifecycleSurface(targetPath, bridgeStatus) {
3136
3192
  kind: "run_repair",
3137
3193
  summary: "Run GDH bridge repair after reviewing the drifted runtime bridge files.",
3138
3194
  command: ["gdh", "bridge", "repair", targetPath],
3195
+ validationCommands: [
3196
+ ["gdh", "bridge", "status", targetPath],
3197
+ ["gdh", "status", targetPath],
3198
+ ],
3199
+ manualSteps: [
3200
+ "Review the drifted runtime bridge files before running automated repair.",
3201
+ ],
3139
3202
  autoApplicable: true,
3140
3203
  },
3141
3204
  });
@@ -3151,6 +3214,13 @@ function inspectRuntimeBridgeLifecycleSurface(targetPath, bridgeStatus) {
3151
3214
  kind: "manual_review",
3152
3215
  summary: "Inspect the runtime bridge configuration before applying automated repair.",
3153
3216
  command: ["gdh", "bridge", "status", targetPath],
3217
+ validationCommands: [
3218
+ ["gdh", "bridge", "status", targetPath],
3219
+ ["gdh", "status", targetPath],
3220
+ ],
3221
+ manualSteps: [
3222
+ "Inspect the runtime bridge configuration and managed files before deciding whether automated repair is safe.",
3223
+ ],
3154
3224
  autoApplicable: false,
3155
3225
  },
3156
3226
  });