@skillcap/gdh 0.17.0 → 0.17.1

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.
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "product": "GDH",
3
- "version": "0.17.0",
3
+ "version": "0.17.1",
4
4
  "installMode": "packaged_install"
5
5
  }
@@ -1356,6 +1356,64 @@
1356
1356
  }
1357
1357
  ]
1358
1358
  }
1359
+ },
1360
+ {
1361
+ "version": "0.17.1",
1362
+ "releaseTag": "v0.17.1",
1363
+ "migrationStatus": "no_op",
1364
+ "summary": "v0.17.1 fixes update and migration follow-through classification plus managed Godot LSP startup timing without changing managed project surface versions. Existing targets do not need release-scoped migration for this patch line; agents should follow the ordinary self-update terminal contract, and managed LSP state remains compatible.",
1365
+ "releaseHighlights": {
1366
+ "summary": "v0.17.1 fixes two dogfooding regressions from the v0.17.0 authoring release. Update and migration follow-up now separates safe GDH-managed repair from project-owned manual review, and managed Godot LSP startup now waits long enough for slower real projects to become protocol-ready.",
1367
+ "operatorChanges": [
1368
+ "**Self-update no longer hides safe repair behind manual review.** `gdh self-update` and `gdh migrate --apply` can repair auto-applicable managed bridge drift even when project-owned rules still need review.",
1369
+ "**Terminal commands are safer to trust.** `terminal.commands` now contains only GDH-classified auto-applicable follow-up commands; project-owned review remains in `terminal.manualSteps`.",
1370
+ "**Generated update guidance is clearer.** `/gdh-update` and `/gdh-migrate` tell agents to run surfaced safe commands before stopping for manual review.",
1371
+ "**Migration action hints point at apply when work is auto-applicable.** Lifecycle surfaces that GDH can safely migrate now surface `gdh migrate --apply` instead of preview-only `gdh migrate`.",
1372
+ "**Managed LSP startup is less brittle.** GDH now gives the Godot editor a longer startup window, retries startup `initialize` timeouts, and records command, pid, port, timeout budget, attempts, elapsed time, and protocol failure details when authoring LSP still cannot become ready.",
1373
+ "**Real-project LSP proof is restored.** The Beacon dogfood target now reaches `authoring.lsp` `ready` with initialized protocol health using the local v0.17.1 build."
1374
+ ]
1375
+ },
1376
+ "updateContract": {
1377
+ "summary": "No release-scoped managed migration is required for v0.17.1. After self-update, agents should trust the terminal contract: run any surfaced auto-applicable `terminal.commands`, validate with `terminal.validationCommands`, and stop for the remaining `terminal.manualSteps`. Managed LSP startup behavior improves automatically with the new GDH package and does not require target migration.",
1378
+ "steps": [
1379
+ {
1380
+ "id": "verify_post_update_terminal",
1381
+ "kind": "mechanical",
1382
+ "summary": "Read the post-update terminal result.",
1383
+ "detail": "After `gdh self-update`, inspect `terminal.state`, `terminal.commands`, `terminal.validationCommands`, and `terminal.manualSteps`. Treat `terminal.commands` as GDH-classified auto-applicable follow-up only.",
1384
+ "commands": [
1385
+ "gdh status"
1386
+ ],
1387
+ "validationCommands": [
1388
+ "gdh status"
1389
+ ]
1390
+ },
1391
+ {
1392
+ "id": "run_safe_terminal_commands",
1393
+ "kind": "mechanical",
1394
+ "summary": "Run surfaced safe commands before manual review.",
1395
+ "detail": "If `terminal.commands` is non-empty, run those commands because GDH classified them as auto-applicable. This may include managed bridge repair or migration apply work that is independent from project-owned review.",
1396
+ "commands": [
1397
+ "gdh migrate --apply",
1398
+ "gdh bridge repair"
1399
+ ],
1400
+ "validationCommands": [
1401
+ "gdh status",
1402
+ "gdh bridge status"
1403
+ ]
1404
+ },
1405
+ {
1406
+ "id": "review_remaining_manual_steps",
1407
+ "kind": "manual_review",
1408
+ "summary": "Stop for remaining project-owned or editor-side manual review.",
1409
+ "detail": "If `terminal.manualSteps` remains after safe commands and validation, explain those steps and stop. Do not overwrite project-owned rules or pretend editor-side plugin enable happened automatically.",
1410
+ "commands": [],
1411
+ "validationCommands": [
1412
+ "gdh status"
1413
+ ]
1414
+ }
1415
+ ]
1416
+ }
1359
1417
  }
1360
1418
  ]
1361
1419
  }
@@ -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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"}
@@ -728,7 +728,7 @@ export function renderClaudeMigrateCommand(pinnedVersion) {
728
728
  "5. After apply, read `terminal.state` in the stdout JSON.",
729
729
  "6. If `terminal.state` is `healthy`, confirm no further migration action is required and stop.",
730
730
  "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.",
731
- "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.",
731
+ "8. If `terminal.state` is `manual_review_required`, run any surfaced `terminal.commands` first because they are auto-applicable, then run the surfaced `terminal.validationCommands`, explain the remaining `terminal.manualSteps`, and stop for review instead of improvising a repair.",
732
732
  "9. If `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop.",
733
733
  "</process>",
734
734
  "",
@@ -773,7 +773,7 @@ export function renderCodexMigrateSkill(pinnedVersion) {
773
773
  "- after apply, read `terminal.state` in the stdout JSON",
774
774
  "- if `terminal.state` is `healthy`, confirm no further migration action is required and stop",
775
775
  "- 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",
776
- "- 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",
776
+ "- if `terminal.state` is `manual_review_required`, run any surfaced `terminal.commands` first because they are auto-applicable, then run the surfaced `terminal.validationCommands`, explain the remaining `terminal.manualSteps`, and stop for review instead of improvising a repair",
777
777
  "- if `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop",
778
778
  "</process>",
779
779
  "",
@@ -816,7 +816,7 @@ export function renderCursorMigrateSkill(pinnedVersion) {
816
816
  "- after apply, read `terminal.state` in the stdout JSON",
817
817
  "- if `terminal.state` is `healthy`, confirm no further migration action is required and stop",
818
818
  "- 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",
819
- "- 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",
819
+ "- if `terminal.state` is `manual_review_required`, run any surfaced `terminal.commands` first because they are auto-applicable, then run the surfaced `terminal.validationCommands`, explain the remaining `terminal.manualSteps`, and stop for review instead of improvising a repair",
820
820
  "- if `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop",
821
821
  "</process>",
822
822
  "",
@@ -880,7 +880,7 @@ export function renderClaudeUpdateCommand(_pinnedVersion) {
880
880
  "8. Read `terminal.state` in the apply stdout JSON and treat it as the lifecycle/runtime truth.",
881
881
  "9. If `terminal.state` is `healthy`, confirm the update completed and stop.",
882
882
  "10. 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.",
883
- "11. 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.",
883
+ "11. If `terminal.state` is `manual_review_required`, run any surfaced `terminal.commands` first because they are auto-applicable, then run the surfaced `terminal.validationCommands`, explain the remaining `terminal.manualSteps`, and stop for review instead of inventing a repair.",
884
884
  "12. If `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop.",
885
885
  "</process>",
886
886
  "",
@@ -888,6 +888,7 @@ export function renderClaudeUpdateCommand(_pinnedVersion) {
888
888
  "- Do ask for explicit approval after the structured preview and before apply.",
889
889
  "- Do not invent migration steps from prose docs; use the machine-readable `preview` payload.",
890
890
  "- Do treat `terminal.state` as the primary apply truth; the additive compatibility fields are not the main follow-through contract.",
891
+ "- `terminal.commands` contains only GDH-classified auto-applicable follow-up; project-owned review stays in `terminal.manualSteps`.",
891
892
  "- Bake literal `@latest` in the shellout so the new CLI performs the update, not the old one.",
892
893
  "- If `self-update` returns `rolled_back` or `blocked`, surface the failure reason and stop (do not retry).",
893
894
  "- If `self-update` returns `skipped_dev_mode`, explain that dev-from-source mode bypasses pinning; no action needed.",
@@ -927,7 +928,7 @@ export function renderCodexUpdateSkill(_pinnedVersion) {
927
928
  "8. Read `terminal.state` in the apply stdout JSON and treat it as the lifecycle/runtime truth.",
928
929
  "9. If `terminal.state` is `healthy`, confirm the update completed and stop.",
929
930
  "10. 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.",
930
- "11. 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.",
931
+ "11. If `terminal.state` is `manual_review_required`, run any surfaced `terminal.commands` first because they are auto-applicable, then run the surfaced `terminal.validationCommands`, explain the remaining `terminal.manualSteps`, and stop for review instead of inventing a repair.",
931
932
  "12. If `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop.",
932
933
  "</process>",
933
934
  "",
@@ -935,6 +936,7 @@ export function renderCodexUpdateSkill(_pinnedVersion) {
935
936
  "- Do ask for explicit approval after the structured preview and before apply.",
936
937
  "- Do not invent migration steps from prose docs; use the machine-readable `preview` payload.",
937
938
  "- Do treat `terminal.state` as the primary apply truth; the additive compatibility fields are not the main follow-through contract.",
939
+ "- `terminal.commands` contains only GDH-classified auto-applicable follow-up; project-owned review stays in `terminal.manualSteps`.",
938
940
  "- Bake literal `@latest` in the shellout so the new CLI performs the update, not the old one.",
939
941
  "- If `self-update` returns `rolled_back` or `blocked`, surface the failure reason and stop (do not retry).",
940
942
  "- If `self-update` returns `skipped_dev_mode`, explain that dev-from-source mode bypasses pinning; no action needed.",
@@ -972,7 +974,7 @@ export function renderCursorUpdateSkill(_pinnedVersion) {
972
974
  "8. Read `terminal.state` in the apply stdout JSON and treat it as the lifecycle/runtime truth.",
973
975
  "9. If `terminal.state` is `healthy`, confirm the update completed and stop.",
974
976
  "10. 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.",
975
- "11. 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.",
977
+ "11. If `terminal.state` is `manual_review_required`, run any surfaced `terminal.commands` first because they are auto-applicable, then run the surfaced `terminal.validationCommands`, explain the remaining `terminal.manualSteps`, and stop for review instead of inventing a repair.",
976
978
  "12. If `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop.",
977
979
  "</process>",
978
980
  "",
@@ -980,6 +982,7 @@ export function renderCursorUpdateSkill(_pinnedVersion) {
980
982
  "- Do ask for explicit approval after the structured preview and before apply.",
981
983
  "- Do not invent migration steps from prose docs; use the machine-readable `preview` payload.",
982
984
  "- Do treat `terminal.state` as the primary apply truth; the additive compatibility fields are not the main follow-through contract.",
985
+ "- `terminal.commands` contains only GDH-classified auto-applicable follow-up; project-owned review stays in `terminal.manualSteps`.",
983
986
  "- Bake literal `@latest` in the shellout so the new CLI performs the update, not the old one.",
984
987
  "- If `self-update` returns `rolled_back` or `blocked`, surface the failure reason and stop (do not retry).",
985
988
  "- If `self-update` returns `skipped_dev_mode`, explain that dev-from-source mode bypasses pinning; no action needed.",
@@ -2753,7 +2756,7 @@ async function inspectProjectConfigLifecycleSurface(targetPath) {
2753
2756
  action: {
2754
2757
  kind: "apply_migration",
2755
2758
  summary: "Run GDH migrate to rewrite the project config to the current schema.",
2756
- command: ["gdh", "migrate", targetPath],
2759
+ command: migrateApplyCommand(targetPath),
2757
2760
  autoApplicable: true,
2758
2761
  },
2759
2762
  });
@@ -2829,7 +2832,7 @@ async function inspectRulesLifecycleSurface(targetPath) {
2829
2832
  action: {
2830
2833
  kind: "apply_migration",
2831
2834
  summary: "Run GDH migrate to create the default rules file for this target.",
2832
- command: ["gdh", "migrate", targetPath],
2835
+ command: migrateApplyCommand(targetPath),
2833
2836
  autoApplicable: true,
2834
2837
  },
2835
2838
  });
@@ -2899,7 +2902,7 @@ function inspectAgentContractLifecycleSurface(targetPath, guidanceStatus) {
2899
2902
  action: {
2900
2903
  kind: "apply_migration",
2901
2904
  summary: "Run GDH migrate to merge or refresh the managed agent contract block.",
2902
- command: ["gdh", "migrate", targetPath],
2905
+ command: migrateApplyCommand(targetPath),
2903
2906
  autoApplicable: true,
2904
2907
  },
2905
2908
  });
@@ -2928,7 +2931,7 @@ async function inspectGuidanceIndexLifecycleSurface(targetPath) {
2928
2931
  action: {
2929
2932
  kind: "apply_migration",
2930
2933
  summary: "Run GDH migrate to create the default guidance index for this target.",
2931
- command: ["gdh", "migrate", targetPath],
2934
+ command: migrateApplyCommand(targetPath),
2932
2935
  autoApplicable: true,
2933
2936
  },
2934
2937
  });
@@ -2954,7 +2957,7 @@ async function inspectGuidanceIndexLifecycleSurface(targetPath) {
2954
2957
  action: {
2955
2958
  kind: "apply_migration",
2956
2959
  summary: "Run GDH migrate to regenerate the guidance index with updated content.",
2957
- command: ["gdh", "migrate", targetPath],
2960
+ command: migrateApplyCommand(targetPath),
2958
2961
  autoApplicable: true,
2959
2962
  },
2960
2963
  });
@@ -3011,7 +3014,7 @@ async function inspectGuidanceUnitLifecycleSurface(targetPath, projectConfig) {
3011
3014
  action: {
3012
3015
  kind: "apply_migration",
3013
3016
  summary: "Run GDH migrate to create the missing default guidance unit files.",
3014
- command: ["gdh", "migrate", targetPath],
3017
+ command: migrateApplyCommand(targetPath),
3015
3018
  autoApplicable: true,
3016
3019
  },
3017
3020
  });
@@ -3026,7 +3029,7 @@ async function inspectGuidanceUnitLifecycleSurface(targetPath, projectConfig) {
3026
3029
  action: {
3027
3030
  kind: "apply_migration",
3028
3031
  summary: "Run GDH migrate to regenerate guidance units with updated content.",
3029
- command: ["gdh", "migrate", targetPath],
3032
+ command: migrateApplyCommand(targetPath),
3030
3033
  autoApplicable: true,
3031
3034
  },
3032
3035
  });
@@ -3393,7 +3396,7 @@ async function inspectYamlSurfaceDirectory(input) {
3393
3396
  action: {
3394
3397
  kind: "apply_migration",
3395
3398
  summary: "Run GDH migrate to normalize legacy runtime surface directories.",
3396
- command: ["gdh", "migrate", input.targetPath],
3399
+ command: migrateApplyCommand(input.targetPath),
3397
3400
  autoApplicable: true,
3398
3401
  },
3399
3402
  });
@@ -3433,7 +3436,7 @@ async function inspectYamlSurfaceDirectory(input) {
3433
3436
  action: {
3434
3437
  kind: "apply_migration",
3435
3438
  summary: "Run GDH migrate to normalize the affected runtime surfaces.",
3436
- command: ["gdh", "migrate", input.targetPath],
3439
+ command: migrateApplyCommand(input.targetPath),
3437
3440
  autoApplicable: true,
3438
3441
  },
3439
3442
  });
@@ -3519,6 +3522,9 @@ function summarizeProjectLifecycleState(state, surfaces) {
3519
3522
  function createLifecycleSurfaceStatus(input) {
3520
3523
  return input;
3521
3524
  }
3525
+ function migrateApplyCommand(targetPath) {
3526
+ return ["gdh", "migrate", "--apply", targetPath];
3527
+ }
3522
3528
  function createVersionProbe(input) {
3523
3529
  return {
3524
3530
  relativePath: input.relativePath,