@skillcap/gdh 2.0.1 → 3.0.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 (85) hide show
  1. package/INSTALL-BUNDLE.json +1 -1
  2. package/RELEASE-SPAN-UPDATE-CONTRACTS.json +56 -0
  3. package/node_modules/@gdh/adapters/dist/authoring-hook-render.d.ts +3 -18
  4. package/node_modules/@gdh/adapters/dist/authoring-hook-render.d.ts.map +1 -1
  5. package/node_modules/@gdh/adapters/dist/authoring-hook-render.js +11 -6
  6. package/node_modules/@gdh/adapters/dist/authoring-hook-render.js.map +1 -1
  7. package/node_modules/@gdh/adapters/dist/claude-settings-patch.d.ts +15 -3
  8. package/node_modules/@gdh/adapters/dist/claude-settings-patch.d.ts.map +1 -1
  9. package/node_modules/@gdh/adapters/dist/claude-settings-patch.js +14 -2
  10. package/node_modules/@gdh/adapters/dist/claude-settings-patch.js.map +1 -1
  11. package/node_modules/@gdh/adapters/dist/claude-statusline-render.d.ts +18 -9
  12. package/node_modules/@gdh/adapters/dist/claude-statusline-render.d.ts.map +1 -1
  13. package/node_modules/@gdh/adapters/dist/claude-statusline-render.js +18 -9
  14. package/node_modules/@gdh/adapters/dist/claude-statusline-render.js.map +1 -1
  15. package/node_modules/@gdh/adapters/dist/claude-update-hook-render.d.ts +8 -2
  16. package/node_modules/@gdh/adapters/dist/claude-update-hook-render.d.ts.map +1 -1
  17. package/node_modules/@gdh/adapters/dist/claude-update-hook-render.js +8 -2
  18. package/node_modules/@gdh/adapters/dist/claude-update-hook-render.js.map +1 -1
  19. package/node_modules/@gdh/adapters/dist/claude-update-worker-render.d.ts +2 -2
  20. package/node_modules/@gdh/adapters/dist/claude-update-worker-render.js +2 -2
  21. package/node_modules/@gdh/adapters/dist/index.d.ts +2 -5
  22. package/node_modules/@gdh/adapters/dist/index.d.ts.map +1 -1
  23. package/node_modules/@gdh/adapters/dist/index.js +10 -72
  24. package/node_modules/@gdh/adapters/dist/index.js.map +1 -1
  25. package/node_modules/@gdh/adapters/dist/templates/authoring-hook.js.tpl +49 -43
  26. package/node_modules/@gdh/adapters/package.json +8 -8
  27. package/node_modules/@gdh/authoring/dist/project.d.ts.map +1 -1
  28. package/node_modules/@gdh/authoring/dist/project.js +39 -12
  29. package/node_modules/@gdh/authoring/dist/project.js.map +1 -1
  30. package/node_modules/@gdh/authoring/package.json +2 -2
  31. package/node_modules/@gdh/cli/dist/index.d.ts.map +1 -1
  32. package/node_modules/@gdh/cli/dist/index.js +121 -80
  33. package/node_modules/@gdh/cli/dist/index.js.map +1 -1
  34. package/node_modules/@gdh/cli/dist/self-update.d.ts.map +1 -1
  35. package/node_modules/@gdh/cli/dist/self-update.js +62 -1
  36. package/node_modules/@gdh/cli/dist/self-update.js.map +1 -1
  37. package/node_modules/@gdh/cli/dist/setup.d.ts +7 -0
  38. package/node_modules/@gdh/cli/dist/setup.d.ts.map +1 -1
  39. package/node_modules/@gdh/cli/dist/setup.js +43 -11
  40. package/node_modules/@gdh/cli/dist/setup.js.map +1 -1
  41. package/node_modules/@gdh/cli/package.json +10 -10
  42. package/node_modules/@gdh/core/dist/git-root.d.ts +8 -0
  43. package/node_modules/@gdh/core/dist/git-root.d.ts.map +1 -0
  44. package/node_modules/@gdh/core/dist/git-root.js +39 -0
  45. package/node_modules/@gdh/core/dist/git-root.js.map +1 -0
  46. package/node_modules/@gdh/core/dist/index.d.ts +15 -18
  47. package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
  48. package/node_modules/@gdh/core/dist/index.js +13 -2
  49. package/node_modules/@gdh/core/dist/index.js.map +1 -1
  50. package/node_modules/@gdh/core/dist/migrations/entries/s3c21_to_s3c22_canonical_hook_paths.d.ts +3 -0
  51. package/node_modules/@gdh/core/dist/migrations/entries/s3c21_to_s3c22_canonical_hook_paths.d.ts.map +1 -0
  52. package/node_modules/@gdh/core/dist/migrations/entries/s3c21_to_s3c22_canonical_hook_paths.js +336 -0
  53. package/node_modules/@gdh/core/dist/migrations/entries/s3c21_to_s3c22_canonical_hook_paths.js.map +1 -0
  54. package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.d.ts +13 -11
  55. package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.d.ts.map +1 -1
  56. package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.js +13 -11
  57. package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.js.map +1 -1
  58. package/node_modules/@gdh/core/dist/migrations/registry.d.ts +1 -1
  59. package/node_modules/@gdh/core/dist/migrations/registry.d.ts.map +1 -1
  60. package/node_modules/@gdh/core/dist/migrations/registry.js +2 -0
  61. package/node_modules/@gdh/core/dist/migrations/registry.js.map +1 -1
  62. package/node_modules/@gdh/core/dist/state/codex-retrust-reminder.d.ts +40 -0
  63. package/node_modules/@gdh/core/dist/state/codex-retrust-reminder.d.ts.map +1 -0
  64. package/node_modules/@gdh/core/dist/state/codex-retrust-reminder.js +66 -0
  65. package/node_modules/@gdh/core/dist/state/codex-retrust-reminder.js.map +1 -0
  66. package/node_modules/@gdh/core/dist/state/migration-trace.d.ts +61 -0
  67. package/node_modules/@gdh/core/dist/state/migration-trace.d.ts.map +1 -0
  68. package/node_modules/@gdh/core/dist/state/migration-trace.js +103 -0
  69. package/node_modules/@gdh/core/dist/state/migration-trace.js.map +1 -0
  70. package/node_modules/@gdh/core/dist/update-probe.d.ts +1 -2
  71. package/node_modules/@gdh/core/dist/update-probe.d.ts.map +1 -1
  72. package/node_modules/@gdh/core/dist/update-probe.js +1 -2
  73. package/node_modules/@gdh/core/dist/update-probe.js.map +1 -1
  74. package/node_modules/@gdh/core/package.json +1 -1
  75. package/node_modules/@gdh/docs/package.json +2 -2
  76. package/node_modules/@gdh/mcp/package.json +8 -8
  77. package/node_modules/@gdh/observability/package.json +2 -2
  78. package/node_modules/@gdh/runtime/package.json +2 -2
  79. package/node_modules/@gdh/scan/package.json +3 -3
  80. package/node_modules/@gdh/verify/package.json +7 -7
  81. package/package.json +11 -11
  82. package/node_modules/@gdh/adapters/dist/authoring-hook-state-path.d.ts +0 -17
  83. package/node_modules/@gdh/adapters/dist/authoring-hook-state-path.d.ts.map +0 -1
  84. package/node_modules/@gdh/adapters/dist/authoring-hook-state-path.js +0 -23
  85. package/node_modules/@gdh/adapters/dist/authoring-hook-state-path.js.map +0 -1
@@ -0,0 +1,336 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { randomUUID } from "node:crypto";
4
+ import { resolveGitRoot } from "../../git-root.js";
5
+ import { setCodexRetrustReminder } from "../../state/codex-retrust-reminder.js";
6
+ import { appendMigrationTraceEvent } from "../../state/migration-trace.js";
7
+ /**
8
+ * s3c21 → s3c22 — canonical hook paths + defensive command literals (RFC 0010).
9
+ *
10
+ * Single class-1 migration step shipped in v3.0.0 per RFC 0010 R3.1. Cleans
11
+ * up the pre-RFC layout so the orchestrator's downstream re-bake can write
12
+ * the canonical `<gitroot>/.gdh/hooks/` surface without colliding with the
13
+ * legacy `.claude/hooks/gdh-*.js` and `.codex/hooks/gdh-authoring-guard.js`
14
+ * scripts, and without leaving the legacy command literals in
15
+ * `.claude/settings.json` or `.codex/config.toml`.
16
+ *
17
+ * Why a registry entry: the surfaces themselves are deterministic (re-bake
18
+ * writes the new files, re-bake patches the new command literals into
19
+ * `.claude/settings.json` and `.codex/config.toml` idempotently). But re-bake
20
+ * does NOT delete legacy files at the OLD paths and does NOT strip the OLD
21
+ * command literals — those are the irreducible cleanup ops this entry owns.
22
+ * This is the one exception the registry README's "no class-1 identity
23
+ * entries" rule makes room for: a class-1 file MOVE has cleanup work that
24
+ * deterministic re-bake cannot perform.
25
+ *
26
+ * Transform contract:
27
+ * 1. Resolve git root via the canonical `resolveGitRoot()` helper. The
28
+ * legacy + new layouts are both git-root-anchored under D2; if the
29
+ * target is not in a git repo, fail fast with the typed
30
+ * `GitRequiredError` (D1).
31
+ * 2. Delete the five legacy hook script files at their pre-RFC paths
32
+ * (`.claude/hooks/gdh-{authoring-guard,check-update,check-update-worker,statusline}.js`,
33
+ * `.codex/hooks/gdh-authoring-guard.js`). Missing files are a no-op.
34
+ * 3. After per-file deletion, attempt to remove `.claude/hooks/` and
35
+ * `.codex/hooks/` directories ONLY when empty. Foreign hooks under
36
+ * these dirs (other tools' hooks) are preserved — `rmdir` rejects
37
+ * non-empty directories.
38
+ * 4. Rewrite `.claude/settings.json`: parse the JSON, scrub every hook
39
+ * group whose `command` literal matches the legacy SessionStart
40
+ * command (`LEGACY_GDH_SESSION_START_HOOK_COMMAND`) or the legacy
41
+ * Claude authoring `node -e "<walk-up>" .claude/hooks/gdh-authoring-guard.js`
42
+ * megastring. Drop `statusLine.command` if equal to the legacy
43
+ * `GDH_STATUSLINE_COMMAND` literal. Write idempotently via 2-space
44
+ * indent + trailing newline.
45
+ * 5. Rewrite `.codex/config.toml`: strip the entire managed
46
+ * `# BEGIN GDH managed authoring hooks ... # END GDH managed
47
+ * authoring hooks` envelope. Re-bake writes the new envelope
48
+ * idempotently downstream.
49
+ *
50
+ * Verify probe (D-05 — anti-tautology):
51
+ * - Pre-state has all five legacy hook files + the legacy command
52
+ * literals → verify rejects with the matching reason.
53
+ * - Post-state has none of them → verify passes.
54
+ *
55
+ * Idempotency: re-running on an already-migrated target is a no-op
56
+ * (every step is in-place delete-when-present / scrub-when-present).
57
+ *
58
+ * Companion fixture pair: `tests/fixtures/migration-goldens/s3c21_to_s3c22_canonical_hook_paths/{before,after}/`.
59
+ */
60
+ const ENTRY_ID = "s3c21_to_s3c22_canonical_hook_paths";
61
+ const LEGACY_HOOK_RELATIVE_PATHS = [
62
+ ".claude/hooks/gdh-authoring-guard.js",
63
+ ".claude/hooks/gdh-check-update.js",
64
+ ".claude/hooks/gdh-check-update-worker.js",
65
+ ".claude/hooks/gdh-statusline.js",
66
+ ".codex/hooks/gdh-authoring-guard.js",
67
+ ];
68
+ const LEGACY_HOOK_PARENT_DIRS = [".claude/hooks", ".codex/hooks"];
69
+ const CLAUDE_SETTINGS_RELATIVE_PATH = ".claude/settings.json";
70
+ const CODEX_CONFIG_RELATIVE_PATH = ".codex/config.toml";
71
+ /**
72
+ * Legacy SessionStart command literal (pre-RFC 0010). Mirrors
73
+ * `LEGACY_GDH_SESSION_START_HOOK_COMMAND` exported from
74
+ * `packages/adapters/src/claude-settings-patch.ts`. Inlined here to avoid
75
+ * an `@gdh/adapters` → `@gdh/core` reverse import edge.
76
+ */
77
+ const LEGACY_SESSION_START_COMMAND = "node .claude/hooks/gdh-check-update.js";
78
+ /**
79
+ * Legacy statusline command literal (pre-RFC 0010). Mirrors
80
+ * `GDH_STATUSLINE_COMMAND` exported from `claude-statusline-render.ts`.
81
+ */
82
+ const LEGACY_STATUSLINE_COMMAND = "node .claude/hooks/gdh-statusline.js";
83
+ /**
84
+ * Substring matcher for the pre-RFC Claude authoring `node -e "<walk-up>"`
85
+ * megastring. The walk-up shape contains the literal
86
+ * `.claude/hooks/gdh-authoring-guard.js` somewhere in its body; matching on
87
+ * that substring inside a `node -e ` prefix is sufficient — the new
88
+ * defensive literal at `${CLAUDE_PROJECT_DIR:-...}/.gdh/hooks/authoring-guard.js`
89
+ * does NOT contain `.claude/hooks/gdh-authoring-guard.js`.
90
+ */
91
+ function isLegacyClaudeAuthoringWalkUpCommand(command) {
92
+ return (command.startsWith("node -e ") &&
93
+ command.includes(".claude/hooks/gdh-authoring-guard.js"));
94
+ }
95
+ function isLegacyHookCommand(hook) {
96
+ if (hook?.type !== "command")
97
+ return false;
98
+ const command = typeof hook?.command === "string" ? hook.command : "";
99
+ return (command === LEGACY_SESSION_START_COMMAND ||
100
+ isLegacyClaudeAuthoringWalkUpCommand(command));
101
+ }
102
+ function isLegacyManagedStatusline(value) {
103
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
104
+ return false;
105
+ }
106
+ const record = value;
107
+ return record["type"] === "command" && record["command"] === LEGACY_STATUSLINE_COMMAND;
108
+ }
109
+ /**
110
+ * Strip the managed Codex authoring-hook envelope. Mirrors
111
+ * `removeManagedCodexAuthoringHookBlock` in
112
+ * `packages/adapters/src/codex-authoring-hook-block.ts` — inlined to keep
113
+ * @gdh/core layer-pure.
114
+ */
115
+ function stripManagedCodexAuthoringHookEnvelope(content) {
116
+ return content
117
+ .replace(/(?:^|\n)# BEGIN GDH managed authoring hooks\n[\s\S]*?# END GDH managed authoring hooks\n?/, "\n")
118
+ .replace(/\n{3,}/g, "\n\n")
119
+ .trimEnd();
120
+ }
121
+ async function fileExists(absolutePath) {
122
+ return fs
123
+ .access(absolutePath)
124
+ .then(() => true)
125
+ .catch(() => false);
126
+ }
127
+ async function writeFileAtomic(filePath, content) {
128
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
129
+ const tempPath = path.join(path.dirname(filePath), `.${path.basename(filePath)}.${randomUUID()}.tmp`);
130
+ await fs.writeFile(tempPath, content, "utf8");
131
+ await fs.rename(tempPath, filePath);
132
+ }
133
+ function scrubLegacyHookGroups(groups) {
134
+ const scrubbed = [];
135
+ for (const group of groups) {
136
+ if (!group || typeof group !== "object" || !Array.isArray(group.hooks)) {
137
+ scrubbed.push(group);
138
+ continue;
139
+ }
140
+ const filteredHooks = group.hooks.filter((hook) => !isLegacyHookCommand(hook));
141
+ if (filteredHooks.length === 0) {
142
+ // Whole group consisted of legacy entries — drop the group.
143
+ continue;
144
+ }
145
+ scrubbed.push({ ...group, hooks: filteredHooks });
146
+ }
147
+ return scrubbed;
148
+ }
149
+ function scrubLegacyClaudeSettings(content) {
150
+ let parsed;
151
+ try {
152
+ const trimmed = content.trim();
153
+ if (trimmed.length === 0)
154
+ return content;
155
+ parsed = JSON.parse(trimmed);
156
+ }
157
+ catch {
158
+ return content;
159
+ }
160
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
161
+ return content;
162
+ }
163
+ const settings = parsed;
164
+ let mutated = false;
165
+ if (settings.hooks !== null && typeof settings.hooks === "object") {
166
+ const hooks = settings.hooks;
167
+ for (const key of Object.keys(hooks)) {
168
+ const groups = hooks[key];
169
+ if (!Array.isArray(groups))
170
+ continue;
171
+ const scrubbed = scrubLegacyHookGroups(groups);
172
+ if (scrubbed.length === 0) {
173
+ delete hooks[key];
174
+ }
175
+ else {
176
+ hooks[key] = scrubbed;
177
+ }
178
+ mutated = true;
179
+ }
180
+ }
181
+ if (isLegacyManagedStatusline(settings.statusLine)) {
182
+ delete settings.statusLine;
183
+ mutated = true;
184
+ }
185
+ if (!mutated)
186
+ return content;
187
+ return `${JSON.stringify(settings, null, 2)}\n`;
188
+ }
189
+ export const entry_s3c21_to_s3c22 = {
190
+ id: ENTRY_ID,
191
+ from: { schema: 3, agentContract: 21 },
192
+ to: { schema: 3, agentContract: 22 },
193
+ classesTouched: ["deterministic"],
194
+ async transform(targetPath) {
195
+ // RFC 0010 D1 + D2 — anchor on git root. The legacy + new layouts both
196
+ // sit at git toplevel, so the migration target is the git root for the
197
+ // working tree containing `targetPath`. The chain orchestrator hands us
198
+ // the integration root (already git-root-anchored under D2 once 91-C is
199
+ // live), but be defensive: re-resolve the git root so monorepo nested
200
+ // calls land at the right place even if the orchestrator passes a
201
+ // sub-path.
202
+ const gitRoot = await resolveGitRoot(targetPath);
203
+ // Step 2 — delete legacy hook script files. Missing files are a no-op.
204
+ // Each successful deletion is recorded as a `file_deleted` trace event
205
+ // so `gdh self-update` can surface it to the operator post-apply
206
+ // (CPATH-15).
207
+ for (const relativePath of LEGACY_HOOK_RELATIVE_PATHS) {
208
+ const absolutePath = path.join(gitRoot, relativePath);
209
+ const existed = await fs
210
+ .access(absolutePath)
211
+ .then(() => true)
212
+ .catch(() => false);
213
+ if (!existed)
214
+ continue;
215
+ await fs.rm(absolutePath, { force: true });
216
+ await appendMigrationTraceEvent(gitRoot, ENTRY_ID, {
217
+ kind: "file_deleted",
218
+ relativePath,
219
+ summary: `Deleted legacy hook script ${relativePath} (relocated under .gdh/hooks/ in v3.0.0).`,
220
+ });
221
+ }
222
+ // Step 3 — best-effort empty-directory cleanup. `rmdir` on a non-empty
223
+ // dir rejects with ENOTEMPTY, which is exactly the foreign-hooks-preserved
224
+ // semantics we want. Swallow any error so a non-empty dir does not abort
225
+ // the transform.
226
+ for (const relativeDir of LEGACY_HOOK_PARENT_DIRS) {
227
+ const absoluteDir = path.join(gitRoot, relativeDir);
228
+ const removed = await fs
229
+ .rmdir(absoluteDir)
230
+ .then(() => true)
231
+ .catch(() => false);
232
+ if (removed) {
233
+ await appendMigrationTraceEvent(gitRoot, ENTRY_ID, {
234
+ kind: "directory_removed",
235
+ relativePath: relativeDir,
236
+ summary: `Removed empty legacy hook directory ${relativeDir} (foreign hooks would have prevented this).`,
237
+ });
238
+ }
239
+ }
240
+ // Step 4 — scrub legacy literals from `.claude/settings.json`.
241
+ const claudeSettingsPath = path.join(gitRoot, CLAUDE_SETTINGS_RELATIVE_PATH);
242
+ const claudeSettings = await fs
243
+ .readFile(claudeSettingsPath, "utf8")
244
+ .catch(() => null);
245
+ if (claudeSettings !== null) {
246
+ const next = scrubLegacyClaudeSettings(claudeSettings);
247
+ if (next !== claudeSettings) {
248
+ await writeFileAtomic(claudeSettingsPath, next);
249
+ await appendMigrationTraceEvent(gitRoot, ENTRY_ID, {
250
+ kind: "claude_settings_rewritten",
251
+ relativePath: CLAUDE_SETTINGS_RELATIVE_PATH,
252
+ summary: "Stripped legacy SessionStart / authoring walk-up / statusline command literals from .claude/settings.json.",
253
+ });
254
+ }
255
+ }
256
+ // Step 5 — strip the legacy Codex authoring-hook envelope from
257
+ // `.codex/config.toml`. Re-bake re-emits the new envelope downstream.
258
+ // PR-1 / CPATH-16: any rewrite here means the operator's Codex CLI will
259
+ // see the managed authoring-hook entry as `Modified` until manually
260
+ // re-trusted via `/hooks` → `t`. Set the reminder marker so
261
+ // `gdh self-update` and `gdh status` can surface the action item.
262
+ const codexConfigPath = path.join(gitRoot, CODEX_CONFIG_RELATIVE_PATH);
263
+ const codexConfig = await fs
264
+ .readFile(codexConfigPath, "utf8")
265
+ .catch(() => null);
266
+ if (codexConfig !== null) {
267
+ const stripped = stripManagedCodexAuthoringHookEnvelope(codexConfig);
268
+ // `stripManagedCodexAuthoringHookEnvelope` trims the trailing newline;
269
+ // restore it so the file ends with a single newline (Phase 91-B
270
+ // contract). When the envelope is absent and content already trimmed
271
+ // matches, no write is needed.
272
+ const normalized = stripped === "" ? "" : `${stripped}\n`;
273
+ if (normalized !== codexConfig) {
274
+ await writeFileAtomic(codexConfigPath, normalized);
275
+ await appendMigrationTraceEvent(gitRoot, ENTRY_ID, {
276
+ kind: "codex_config_rewritten",
277
+ relativePath: CODEX_CONFIG_RELATIVE_PATH,
278
+ summary: "Stripped legacy `# BEGIN GDH managed authoring hooks` envelope from .codex/config.toml; re-bake re-emits the canonical envelope.",
279
+ });
280
+ await setCodexRetrustReminder(gitRoot, ENTRY_ID);
281
+ }
282
+ }
283
+ },
284
+ async verify(targetPath) {
285
+ const gitRoot = await resolveGitRoot(targetPath);
286
+ // 1. Legacy hook script files must be absent.
287
+ for (const relativePath of LEGACY_HOOK_RELATIVE_PATHS) {
288
+ const absolutePath = path.join(gitRoot, relativePath);
289
+ if (await fileExists(absolutePath)) {
290
+ return {
291
+ ok: false,
292
+ reason: `Expected legacy hook file ${relativePath} to be removed by the s3c21→s3c22 transform; file still present (legacy_hook_files_remain).`,
293
+ };
294
+ }
295
+ }
296
+ // 2. `.claude/settings.json` must not contain any legacy command literal.
297
+ const claudeSettingsPath = path.join(gitRoot, CLAUDE_SETTINGS_RELATIVE_PATH);
298
+ const claudeSettings = await fs
299
+ .readFile(claudeSettingsPath, "utf8")
300
+ .catch(() => null);
301
+ if (claudeSettings !== null) {
302
+ if (claudeSettings.includes(LEGACY_SESSION_START_COMMAND)) {
303
+ return {
304
+ ok: false,
305
+ reason: `Expected legacy SessionStart command literal to be stripped from ${CLAUDE_SETTINGS_RELATIVE_PATH}; literal still present (legacy_session_start_remains).`,
306
+ };
307
+ }
308
+ if (claudeSettings.includes("node -e ") &&
309
+ claudeSettings.includes(".claude/hooks/gdh-authoring-guard.js")) {
310
+ return {
311
+ ok: false,
312
+ reason: `Expected legacy Claude authoring walk-up command to be stripped from ${CLAUDE_SETTINGS_RELATIVE_PATH}; legacy literal still present (legacy_claude_authoring_walk_up_remains).`,
313
+ };
314
+ }
315
+ if (claudeSettings.includes(LEGACY_STATUSLINE_COMMAND)) {
316
+ return {
317
+ ok: false,
318
+ reason: `Expected legacy statusline command literal to be stripped from ${CLAUDE_SETTINGS_RELATIVE_PATH}; literal still present (legacy_statusline_remains).`,
319
+ };
320
+ }
321
+ }
322
+ // 3. `.codex/config.toml` must not contain the legacy authoring walk-up.
323
+ const codexConfigPath = path.join(gitRoot, CODEX_CONFIG_RELATIVE_PATH);
324
+ const codexConfig = await fs.readFile(codexConfigPath, "utf8").catch(() => null);
325
+ if (codexConfig !== null) {
326
+ if (codexConfig.includes(".codex/hooks/gdh-authoring-guard.js")) {
327
+ return {
328
+ ok: false,
329
+ reason: `Expected legacy Codex authoring walk-up command to be stripped from ${CODEX_CONFIG_RELATIVE_PATH}; legacy literal still present (legacy_codex_authoring_walk_up_remains).`,
330
+ };
331
+ }
332
+ }
333
+ return { ok: true };
334
+ },
335
+ };
336
+ //# sourceMappingURL=s3c21_to_s3c22_canonical_hook_paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3c21_to_s3c22_canonical_hook_paths.js","sourceRoot":"","sources":["../../../src/migrations/entries/s3c21_to_s3c22_canonical_hook_paths.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,11 @@
3
3
  *
4
4
  * Single source of truth for assigning every GDH-managed render call site to
5
5
  * one of three drift classes: `"deterministic"`, `"user-data"`, or
6
- * `"project-native"`. Required by GOV-03 (.planning/REQUIREMENTS.md) and
7
- * locked by Phase 70 decisions D-05, D-06, D-08, D-13..D-24 in
8
- * .planning/phases/70-governance-and-managed-surface-drift-classification/70-CONTEXT.md.
6
+ * `"project-native"`. Required by GOV-03 (`.notes/REQUIREMENTS.md`) and
7
+ * locked by Phase 70 decisions D-05, D-06, D-08, D-13..D-24 (see the v1.16
8
+ * milestone entry in `.notes/MILESTONES.md`; the original phase artifacts
9
+ * lived under `.planning/phases/70-...` and were retired with the planning
10
+ * directory).
9
11
  *
10
12
  * Consumers:
11
13
  * - Migration registry (Phase 72)
@@ -209,24 +211,24 @@ export declare const GDH_MANAGED_SURFACE_CLASSES: readonly [{
209
211
  readonly notes: "Managed `# BEGIN GDH managed authoring hooks` block in .codex/config.toml rendered by renderManagedCodexAuthoringHookBlock() (packages/adapters/src/index.ts line 3193). Marker-bounded; deterministic per D-22.";
210
212
  }, {
211
213
  readonly surfaceId: "authoring_hook";
212
- readonly relativePath: null;
214
+ readonly relativePath: ".gdh/hooks/authoring-guard.js";
213
215
  readonly class: "deterministic";
214
- readonly notes: "Authoring validation hook rendered by renderGdhAuthoringHook() in packages/adapters/src/authoring-hook-render.ts (line 10). Per-agent paths: .claude/hooks/gdh-authoring-guard.js (CLAUDE_AUTHORING_HOOK_RELATIVE_PATH) and .codex/hooks/gdh-authoring-guard.js (CODEX_AUTHORING_HOOK_RELATIVE_PATH).";
216
+ readonly notes: "Single shared authoring validation hook rendered by renderGdhAuthoringHook() in packages/adapters/src/authoring-hook-render.ts. Path constant GDH_AUTHORING_HOOK_RELATIVE_PATH (RFC 0010 D3 / v3.0.0). Both Claude and Codex invoke the same script; agent identity is read from process.argv[2] at fire time, not baked at render time.";
215
217
  }, {
216
218
  readonly surfaceId: "claude_update_hook";
217
- readonly relativePath: ".claude/hooks/gdh-check-update.js";
219
+ readonly relativePath: ".gdh/hooks/check-update.js";
218
220
  readonly class: "deterministic";
219
- readonly notes: "Claude SessionStart parent hook rendered by renderClaudeCheckUpdateHook() in packages/adapters/src/claude-update-hook-render.ts. Path constant CLAUDE_CHECK_UPDATE_HOOK_RELATIVE_PATH.";
221
+ readonly notes: "Claude SessionStart parent hook rendered by renderClaudeCheckUpdateHook() in packages/adapters/src/claude-update-hook-render.ts. Path constant CLAUDE_CHECK_UPDATE_HOOK_RELATIVE_PATH. RFC 0010 D4 — relocated from .claude/hooks/gdh-check-update.js to the canonical <gitroot>/.gdh/hooks/ surface in v3.0.0.";
220
222
  }, {
221
223
  readonly surfaceId: "claude_update_worker";
222
- readonly relativePath: ".claude/hooks/gdh-check-update-worker.js";
224
+ readonly relativePath: ".gdh/hooks/check-update-worker.js";
223
225
  readonly class: "deterministic";
224
- readonly notes: "Claude background update-check worker rendered by the renderer in packages/adapters/src/claude-update-worker-render.ts. Path constant CLAUDE_CHECK_UPDATE_WORKER_RELATIVE_PATH.";
226
+ readonly notes: "Claude background update-check worker rendered by the renderer in packages/adapters/src/claude-update-worker-render.ts. Path constant CLAUDE_CHECK_UPDATE_WORKER_RELATIVE_PATH. RFC 0010 D4 — relocated from .claude/hooks/gdh-check-update-worker.js to the canonical <gitroot>/.gdh/hooks/ surface in v3.0.0.";
225
227
  }, {
226
228
  readonly surfaceId: "claude_statusline";
227
- readonly relativePath: ".claude/hooks/gdh-statusline.js";
229
+ readonly relativePath: ".gdh/hooks/statusline.js";
228
230
  readonly class: "deterministic";
229
- readonly notes: "Optional Claude statusline script rendered by the renderer in packages/adapters/src/claude-statusline-render.ts. Path constant CLAUDE_STATUSLINE_RELATIVE_PATH. GDH bakes the file but does not auto-register it in .claude/settings.json (single-slot conflict); registration is opt-in.";
231
+ readonly notes: "Optional Claude statusline script rendered by the renderer in packages/adapters/src/claude-statusline-render.ts. Path constant CLAUDE_STATUSLINE_RELATIVE_PATH. GDH bakes the file but does not auto-register it in .claude/settings.json (single-slot conflict); registration is opt-in. RFC 0010 D4 — relocated from .claude/hooks/gdh-statusline.js to the canonical <gitroot>/.gdh/hooks/ surface in v3.0.0.";
230
232
  }, {
231
233
  readonly surfaceId: "agents_md_managed_block";
232
234
  readonly relativePath: "AGENTS.md";
@@ -1 +1 @@
1
- {"version":3,"file":"managed-surface-classes.d.ts","sourceRoot":"","sources":["../../src/migrations/managed-surface-classes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,MAAM,MAAM,sBAAsB,GAC9B,eAAe,GACf,WAAW,GACX,gBAAgB,CAAC;AAErB,MAAM,WAAW,gCAAgC;IAC/C,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,2BAA2B;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,gCAAgC,EAAE,CAAC;CAC/E;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+UmB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAC7B,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,mBAAmB,EAC9B,aAAa,EAAE,sBAAsB,GACpC,IAAI,CAcN"}
1
+ {"version":3,"file":"managed-surface-classes.d.ts","sourceRoot":"","sources":["../../src/migrations/managed-surface-classes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,MAAM,sBAAsB,GAC9B,eAAe,GACf,WAAW,GACX,gBAAgB,CAAC;AAErB,MAAM,WAAW,gCAAgC;IAC/C,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,2BAA2B;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,gCAAgC,EAAE,CAAC;CAC/E;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+UmB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAC7B,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,mBAAmB,EAC9B,aAAa,EAAE,sBAAsB,GACpC,IAAI,CAcN"}
@@ -3,9 +3,11 @@
3
3
  *
4
4
  * Single source of truth for assigning every GDH-managed render call site to
5
5
  * one of three drift classes: `"deterministic"`, `"user-data"`, or
6
- * `"project-native"`. Required by GOV-03 (.planning/REQUIREMENTS.md) and
7
- * locked by Phase 70 decisions D-05, D-06, D-08, D-13..D-24 in
8
- * .planning/phases/70-governance-and-managed-surface-drift-classification/70-CONTEXT.md.
6
+ * `"project-native"`. Required by GOV-03 (`.notes/REQUIREMENTS.md`) and
7
+ * locked by Phase 70 decisions D-05, D-06, D-08, D-13..D-24 (see the v1.16
8
+ * milestone entry in `.notes/MILESTONES.md`; the original phase artifacts
9
+ * lived under `.planning/phases/70-...` and were retired with the planning
10
+ * directory).
9
11
  *
10
12
  * Consumers:
11
13
  * - Migration registry (Phase 72)
@@ -225,27 +227,27 @@ export const GDH_MANAGED_SURFACE_CLASSES = [
225
227
  // ---------------------------------------------------------------
226
228
  {
227
229
  surfaceId: "authoring_hook",
228
- relativePath: null,
230
+ relativePath: ".gdh/hooks/authoring-guard.js",
229
231
  class: "deterministic",
230
- notes: "Authoring validation hook rendered by renderGdhAuthoringHook() in packages/adapters/src/authoring-hook-render.ts (line 10). Per-agent paths: .claude/hooks/gdh-authoring-guard.js (CLAUDE_AUTHORING_HOOK_RELATIVE_PATH) and .codex/hooks/gdh-authoring-guard.js (CODEX_AUTHORING_HOOK_RELATIVE_PATH).",
232
+ notes: "Single shared authoring validation hook rendered by renderGdhAuthoringHook() in packages/adapters/src/authoring-hook-render.ts. Path constant GDH_AUTHORING_HOOK_RELATIVE_PATH (RFC 0010 D3 / v3.0.0). Both Claude and Codex invoke the same script; agent identity is read from process.argv[2] at fire time, not baked at render time.",
231
233
  },
232
234
  {
233
235
  surfaceId: "claude_update_hook",
234
- relativePath: ".claude/hooks/gdh-check-update.js",
236
+ relativePath: ".gdh/hooks/check-update.js",
235
237
  class: "deterministic",
236
- notes: "Claude SessionStart parent hook rendered by renderClaudeCheckUpdateHook() in packages/adapters/src/claude-update-hook-render.ts. Path constant CLAUDE_CHECK_UPDATE_HOOK_RELATIVE_PATH.",
238
+ notes: "Claude SessionStart parent hook rendered by renderClaudeCheckUpdateHook() in packages/adapters/src/claude-update-hook-render.ts. Path constant CLAUDE_CHECK_UPDATE_HOOK_RELATIVE_PATH. RFC 0010 D4 — relocated from .claude/hooks/gdh-check-update.js to the canonical <gitroot>/.gdh/hooks/ surface in v3.0.0.",
237
239
  },
238
240
  {
239
241
  surfaceId: "claude_update_worker",
240
- relativePath: ".claude/hooks/gdh-check-update-worker.js",
242
+ relativePath: ".gdh/hooks/check-update-worker.js",
241
243
  class: "deterministic",
242
- notes: "Claude background update-check worker rendered by the renderer in packages/adapters/src/claude-update-worker-render.ts. Path constant CLAUDE_CHECK_UPDATE_WORKER_RELATIVE_PATH.",
244
+ notes: "Claude background update-check worker rendered by the renderer in packages/adapters/src/claude-update-worker-render.ts. Path constant CLAUDE_CHECK_UPDATE_WORKER_RELATIVE_PATH. RFC 0010 D4 — relocated from .claude/hooks/gdh-check-update-worker.js to the canonical <gitroot>/.gdh/hooks/ surface in v3.0.0.",
243
245
  },
244
246
  {
245
247
  surfaceId: "claude_statusline",
246
- relativePath: ".claude/hooks/gdh-statusline.js",
248
+ relativePath: ".gdh/hooks/statusline.js",
247
249
  class: "deterministic",
248
- notes: "Optional Claude statusline script rendered by the renderer in packages/adapters/src/claude-statusline-render.ts. Path constant CLAUDE_STATUSLINE_RELATIVE_PATH. GDH bakes the file but does not auto-register it in .claude/settings.json (single-slot conflict); registration is opt-in.",
250
+ notes: "Optional Claude statusline script rendered by the renderer in packages/adapters/src/claude-statusline-render.ts. Path constant CLAUDE_STATUSLINE_RELATIVE_PATH. GDH bakes the file but does not auto-register it in .claude/settings.json (single-slot conflict); registration is opt-in. RFC 0010 D4 — relocated from .claude/hooks/gdh-statusline.js to the canonical <gitroot>/.gdh/hooks/ surface in v3.0.0.",
249
251
  },
250
252
  // ---------------------------------------------------------------
251
253
  // Renderers in packages/docs/src/ (3 entries).
@@ -1 +1 @@
1
- {"version":3,"file":"managed-surface-classes.js","sourceRoot":"","sources":["../../src/migrations/managed-surface-classes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"managed-surface-classes.js","sourceRoot":"","sources":["../../src/migrations/managed-surface-classes.ts"],"names":[],"mappings":"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"}
@@ -93,7 +93,7 @@ export declare function isWorkspaceRelativePath(candidate: string): boolean;
93
93
  * (s2c3→s2c6, s2c6→s2c7, s3c7→s3c8) are class-1-only per the audit and
94
94
  * are intentionally absent.
95
95
  */
96
- export declare const MIGRATION_REGISTRY_ENTRIES: readonly [GdhMigrationEntry, GdhMigrationEntry];
96
+ export declare const MIGRATION_REGISTRY_ENTRIES: readonly [GdhMigrationEntry, GdhMigrationEntry, GdhMigrationEntry];
97
97
  /**
98
98
  * Result of applyMigrationChain (D-06).
99
99
  *
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/migrations/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/migrations/registry.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { entry_s2c2_to_s2c3 } from "./entries/s2c2_to_s2c3_rules_schema_v2_to_v3.js";
2
2
  import { entry_s3c8_to_s3c9 } from "./entries/s3c8_to_s3c9_register_runtime_bridge_autoload.js";
3
+ import { entry_s3c21_to_s3c22 } from "./entries/s3c21_to_s3c22_canonical_hook_paths.js";
3
4
  import { resolveEnvelopeBySlug } from "./envelopes/index.js";
4
5
  import { readMigrationState } from "../state/migration-state.js";
5
6
  /**
@@ -53,6 +54,7 @@ export function isWorkspaceRelativePath(candidate) {
53
54
  export const MIGRATION_REGISTRY_ENTRIES = [
54
55
  entry_s2c2_to_s2c3,
55
56
  entry_s3c8_to_s3c9,
57
+ entry_s3c21_to_s3c22,
56
58
  ];
57
59
  /**
58
60
  * Pair comparator: returns negative if a < b, zero if equal, positive if a > b.
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/migrations/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/migrations/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Codex re-trust reminder marker (RFC 0010 / CPATH-16 / PR-1).
3
+ *
4
+ * Codex CLI 0.124.0+ silently disables hooks whose `command` literal differs
5
+ * from the trusted hash. The v3.0.0 canonical-path migration rewrites the
6
+ * managed authoring-hook command literal in `.codex/config.toml` (legacy
7
+ * `node -e ... walk-up ...` → `sh -c 'node "$(git rev-parse ...)/...".js codex'`),
8
+ * so every existing Codex-managed target ends up with a `Modified` hook
9
+ * entry until the operator manually re-trusts via `/hooks` → `t` in the
10
+ * Codex TUI. GDH cannot detect re-trust state from outside Codex (the hash
11
+ * is internal), so the best we can do is print the reminder unconditionally
12
+ * the first time post-migration the operator runs `gdh status` against a
13
+ * Codex-managed target — and clear the marker after surfacing it once.
14
+ *
15
+ * Storage: `<targetPath>/.gdh-state/codex-retrust-reminder.json`
16
+ *
17
+ * Lifecycle:
18
+ * 1. Migration entry sets the marker after rewriting the
19
+ * `.codex/config.toml` envelope.
20
+ * 2. `gdh self-update` post-success surfaces the reminder on stderr
21
+ * immediately (CPATH-16 first part).
22
+ * 3. `gdh status` reads + emits the reminder on its first invocation
23
+ * against a Codex-managed target post-migration (CPATH-16 second part)
24
+ * and clears the marker.
25
+ *
26
+ * The marker is a single line; the structured JSON shape is for future
27
+ * extensibility (set_at timestamp + entry_id provenance).
28
+ */
29
+ export declare const CODEX_RETRUST_REMINDER_RELATIVE_PATH = ".gdh-state/codex-retrust-reminder.json";
30
+ export interface GdhCodexRetrustReminder {
31
+ /** Migration entry id that triggered the reminder. */
32
+ readonly setBy: string;
33
+ /** Wall-clock timestamp the marker was written (ISO 8601). */
34
+ readonly setAt: string;
35
+ }
36
+ export declare const CODEX_RETRUST_REMINDER_TEXT: string;
37
+ export declare function setCodexRetrustReminder(targetPath: string, setBy: string): Promise<void>;
38
+ export declare function readCodexRetrustReminder(targetPath: string): Promise<GdhCodexRetrustReminder | null>;
39
+ export declare function clearCodexRetrustReminder(targetPath: string): Promise<void>;
40
+ //# sourceMappingURL=codex-retrust-reminder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-retrust-reminder.d.ts","sourceRoot":"","sources":["../../src/state/codex-retrust-reminder.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,eAAO,MAAM,oCAAoC,2CACP,CAAC;AAE3C,MAAM,WAAW,uBAAuB;IACtC,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,2BAA2B,QAIT,CAAC;AAEhC,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAYzC;AAED,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAGf"}