create-principles-disciple 1.133.13 → 1.134.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 (61) hide show
  1. package/console/dist/server/routes/update.js +38 -7
  2. package/console/dist/server/update/legacy-mutation-journal.d.ts +118 -0
  3. package/console/dist/server/update/legacy-mutation-journal.js +220 -0
  4. package/console/dist/web/assets/app.js +81 -11
  5. package/console/package.json +2 -2
  6. package/core/dist/runtime-v2/__tests__/recovery-sweep-service.test.js +130 -0
  7. package/core/dist/runtime-v2/__tests__/recovery-sweep-service.test.js.map +1 -1
  8. package/core/dist/runtime-v2/recovery-sweep-service.d.ts +9 -0
  9. package/core/dist/runtime-v2/recovery-sweep-service.d.ts.map +1 -1
  10. package/core/dist/runtime-v2/recovery-sweep-service.js +7 -2
  11. package/core/dist/runtime-v2/recovery-sweep-service.js.map +1 -1
  12. package/core/package.json +1 -1
  13. package/dist/installer.d.ts +48 -0
  14. package/dist/installer.d.ts.map +1 -1
  15. package/dist/installer.js +115 -13
  16. package/dist/installer.js.map +1 -1
  17. package/dist/uninstaller.d.ts.map +1 -1
  18. package/dist/uninstaller.js +7 -3
  19. package/dist/uninstaller.js.map +1 -1
  20. package/dist/update/install-layout.d.ts +39 -2
  21. package/dist/update/install-layout.d.ts.map +1 -1
  22. package/dist/update/install-layout.js +69 -3
  23. package/dist/update/install-layout.js.map +1 -1
  24. package/dist/update/release-manager-authority.d.ts +8 -0
  25. package/dist/update/release-manager-authority.d.ts.map +1 -1
  26. package/dist/update/release-manager-authority.js +26 -4
  27. package/dist/update/release-manager-authority.js.map +1 -1
  28. package/dist/update/release-metadata-source.d.ts +85 -0
  29. package/dist/update/release-metadata-source.d.ts.map +1 -0
  30. package/dist/update/release-metadata-source.js +102 -0
  31. package/dist/update/release-metadata-source.js.map +1 -0
  32. package/package.json +2 -2
  33. package/pd-cli/dist/commands/runtime-recovery-failed-tasks.d.ts.map +1 -1
  34. package/pd-cli/dist/commands/runtime-recovery-failed-tasks.js +82 -6
  35. package/pd-cli/dist/commands/runtime-recovery-failed-tasks.js.map +1 -1
  36. package/pd-cli/dist/index.js +6 -3
  37. package/pd-cli/dist/index.js.map +1 -1
  38. package/pd-cli/package.json +1 -1
  39. package/plugin/dist/bundle.js +3 -3
  40. package/plugin/dist/governance-audit.js +139 -139
  41. package/plugin/dist/rulehost-evidence.js +144 -144
  42. package/release-manager/dist/installer.d.ts +48 -0
  43. package/release-manager/dist/installer.d.ts.map +1 -1
  44. package/release-manager/dist/installer.js +115 -13
  45. package/release-manager/dist/installer.js.map +1 -1
  46. package/release-manager/dist/uninstaller.d.ts.map +1 -1
  47. package/release-manager/dist/uninstaller.js +7 -3
  48. package/release-manager/dist/uninstaller.js.map +1 -1
  49. package/release-manager/dist/update/install-layout.d.ts +39 -2
  50. package/release-manager/dist/update/install-layout.d.ts.map +1 -1
  51. package/release-manager/dist/update/install-layout.js +69 -3
  52. package/release-manager/dist/update/install-layout.js.map +1 -1
  53. package/release-manager/dist/update/release-manager-authority.d.ts +8 -0
  54. package/release-manager/dist/update/release-manager-authority.d.ts.map +1 -1
  55. package/release-manager/dist/update/release-manager-authority.js +26 -4
  56. package/release-manager/dist/update/release-manager-authority.js.map +1 -1
  57. package/release-manager/dist/update/release-metadata-source.d.ts +85 -0
  58. package/release-manager/dist/update/release-metadata-source.d.ts.map +1 -0
  59. package/release-manager/dist/update/release-metadata-source.js +102 -0
  60. package/release-manager/dist/update/release-metadata-source.js.map +1 -0
  61. package/release-manager/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"install-layout.d.ts","sourceRoot":"","sources":["../../src/update/install-layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAmE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEjI,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAgB9D;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAO3D;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,YAAY,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAIzC;CACF;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAgBD,gEAAgE;AAChE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,iBAAiB,GAAG,IAAI,CAuBlF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,CAgBnE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAOlF"}
1
+ {"version":3,"file":"install-layout.d.ts","sourceRoot":"","sources":["../../src/update/install-layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAmE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGjI,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAgB9D;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAO3D;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,YAAY,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAIzC;CACF;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAgBD,gEAAgE;AAChE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,iBAAiB,GAAG,IAAI,CAuBlF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;;;;;;OAQG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAmBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,CAwBnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAO3F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAYlF;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI,CAKN"}
@@ -20,6 +20,7 @@
20
20
  import * as fs from 'node:fs';
21
21
  import * as path from 'node:path';
22
22
  import { parseProductVersion, ProductIdentityError, isReleaseChannelName } from './product-identity.js';
23
+ import { normalizeReleaseMetadataUrl } from './release-metadata-source.js';
23
24
  export function resolvePdHomePaths(pdHome) {
24
25
  const home = path.resolve(pdHome);
25
26
  return {
@@ -93,10 +94,25 @@ export function readBootstrapManifest(paths) {
93
94
  throw error;
94
95
  }
95
96
  }
97
+ /** Strict validator for the optional `releaseMetadataUrl` field (rc-3). */
98
+ function parseReleaseMetadataUrlField(value, paths) {
99
+ if (value === undefined)
100
+ return undefined;
101
+ // An empty or whitespace-only value is "not configured", consistent with how
102
+ // the resolver treats an unset environment override — it must not brick
103
+ // readiness for the whole install (PRI-709 review).
104
+ if (typeof value === 'string' && value.trim().length === 0)
105
+ return undefined;
106
+ const normalized = normalizeReleaseMetadataUrl(value);
107
+ if (normalized === null) {
108
+ throw new InstallLayoutError('releaseMetadataUrl', `install.json releaseMetadataUrl must be a non-empty http(s) URL, got: ${JSON.stringify(value)} (${paths.installConfigPath})`);
109
+ }
110
+ return normalized;
111
+ }
96
112
  /**
97
113
  * Installation-level settings (SPEC §2.3). Missing file yields the safe
98
- * default (stable channel, automatic checks off); a malformed file fails
99
- * loud instead of degrading to guesses.
114
+ * default (stable channel, automatic checks off, no metadata source); a
115
+ * malformed file fails loud instead of degrading to guesses.
100
116
  */
101
117
  export function readInstallConfig(paths) {
102
118
  const value = readJsonFileIfExists(paths.installConfigPath, 'install.json');
@@ -114,14 +130,64 @@ export function readInstallConfig(paths) {
114
130
  if (typeof autoCheckValue !== 'boolean') {
115
131
  throw new InstallLayoutError('autoCheck', `install.json autoCheck must be a boolean, got: ${JSON.stringify(autoCheckValue)}`);
116
132
  }
117
- return { channel: channelValue, autoCheck: autoCheckValue };
133
+ const releaseMetadataUrl = parseReleaseMetadataUrlField(Object.hasOwn(record, 'releaseMetadataUrl') ? record.releaseMetadataUrl : undefined, paths);
134
+ return {
135
+ channel: channelValue,
136
+ autoCheck: autoCheckValue,
137
+ ...(releaseMetadataUrl !== undefined ? { releaseMetadataUrl } : {}),
138
+ };
139
+ }
140
+ /**
141
+ * Read `install.json` as an untyped record for merge-preserving writers.
142
+ *
143
+ * PRI-709 P0-1: `~/.pd/install.json` historically had more than one writer
144
+ * with disjoint schemas — the installer wrote `{layoutVersion, mode, hosts,
145
+ * workspaces}` and `writeInstallConfig` wrote `{channel, autoCheck}`, each
146
+ * wholesale-clobbering the other's fields (and making the manifest parser fail
147
+ * on the victim's shape). Every writer of this file must therefore merge into
148
+ * the existing record instead of replacing it. Corrupt JSON still fails loud
149
+ * (rc-3): overwriting an unreadable file would destroy state we cannot
150
+ * inspect.
151
+ */
152
+ export function readInstallJsonRecord(filePath) {
153
+ const value = readJsonFileIfExists(filePath, 'install.json');
154
+ if (value === undefined)
155
+ return undefined;
156
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
157
+ throw new InstallLayoutError('install.json', `install.json must be a JSON object: ${filePath}`);
158
+ }
159
+ return { ...value };
118
160
  }
161
+ /**
162
+ * Merge-preserving write (PRI-709 P0-1). Own fields are overwritten; every
163
+ * other field already present is preserved so the installer-owned manifest
164
+ * fields (`layoutVersion`, `mode`, `hosts`, `workspaces`) survive an
165
+ * update-side config write and vice versa.
166
+ *
167
+ * PRI-709 review: a caller that does not know about `releaseMetadataUrl` (and
168
+ * therefore leaves it `undefined`) must not silently DELETE the durable tier
169
+ * the installer wrote. An absent field in `config` preserves whatever is on
170
+ * disk; only an explicit value overwrites it. There is no programmatic way to
171
+ * clear the field — clearing is an installer-level decision.
172
+ */
119
173
  export function writeInstallConfig(paths, config) {
174
+ const existing = readInstallJsonRecord(paths.installConfigPath);
120
175
  const payload = {
176
+ ...(existing ?? {}),
121
177
  channel: config.channel,
122
178
  autoCheck: config.autoCheck,
123
179
  };
180
+ if (config.releaseMetadataUrl !== undefined) {
181
+ payload.releaseMetadataUrl = config.releaseMetadataUrl;
182
+ }
124
183
  fs.mkdirSync(paths.home, { recursive: true });
125
184
  fs.writeFileSync(paths.installConfigPath, `${JSON.stringify(payload, null, 2)}\n`);
126
185
  }
186
+ /** Field-level merge for writers that do not own the whole record. */
187
+ export function mergeIntoInstallJson(filePath, patch) {
188
+ const existing = readInstallJsonRecord(filePath);
189
+ const payload = { ...(existing ?? {}), ...patch };
190
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
191
+ fs.writeFileSync(filePath, `${JSON.stringify(payload, null, 2)}\n`);
192
+ }
127
193
  //# sourceMappingURL=install-layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-layout.js","sourceRoot":"","sources":["../../src/update/install-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-layout.js","sourceRoot":"","sources":["../../src/update/install-layout.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,7 @@
42
42
  * stay structurally not-ready with explicit reasons.
43
43
  */
44
44
  import { ReleaseManager, type InstallStatus, type LegacyUpdaterDecision } from './release-manager.js';
45
+ import { type ReleaseMetadataSource } from './release-metadata-source.js';
45
46
  /** Mutation kinds the console MutationController routes (PRI-659 contract). */
46
47
  export declare const RELEASE_MANAGER_AUTHORITY_KINDS: readonly ['check', 'apply', 'apply-full', 'rollback'];
47
48
  export type ReleaseManagerAuthorityKind = (typeof RELEASE_MANAGER_AUTHORITY_KINDS)[number];
@@ -64,6 +65,13 @@ export interface ReleaseManagerAuthority {
64
65
  /** Install status snapshot; null when the install state failed a strict reader. */
65
66
  readonly installStatus: InstallStatus | null;
66
67
  readonly kinds: Readonly<Record<ReleaseManagerAuthorityKind, ReleaseManagerAuthorityReadiness>>;
68
+ /**
69
+ * PRI-709 P0-1: how the metadata base URL was resolved. `metadataBaseUrl` is
70
+ * `undefined` for `invalid` / `unconfigured` — the same condition that
71
+ * produces the `metadata_source_unconfigured` readiness reason, so an
72
+ * unconfigured install still falls back exactly as before.
73
+ */
74
+ readonly metadataSource: ReleaseMetadataSource;
67
75
  }
68
76
  export declare function createReleaseManagerAuthority(options: ReleaseManagerAuthorityOptions): ReleaseManagerAuthority;
69
77
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"release-manager-authority.d.ts","sourceRoot":"","sources":["../../src/update/release-manager-authority.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,EACL,cAAc,EAEd,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAG9B,+EAA+E;AAC/E,eAAO,MAAM,+BAA+B,YAAI,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,CAAU,CAAC;AACrG,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3F,MAAM,MAAM,6BAA6B,GACrC,8BAA8B,GAC9B,yBAAyB,GACzB,uBAAuB,GACvB,uBAAuB,GACvB,wBAAwB,CAAC;AAE7B,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,6BAA6B,EAAE,CAAC;CAC5D;AAUD,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qFAAqF;IACrF,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,mFAAmF;IACnF,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;CAC1F;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,mFAAmF;IACnF,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,2BAA2B,EAAE,gCAAgC,CAAC,CAAC,CAAC;CACjG;AAkBD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,8BAA8B,GACtC,uBAAuB,CA0DzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAeA"}
1
+ {"version":3,"file":"release-manager-authority.d.ts","sourceRoot":"","sources":["../../src/update/release-manager-authority.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,EACL,cAAc,EAEd,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAgC,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAExG,+EAA+E;AAC/E,eAAO,MAAM,+BAA+B,YAAI,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,CAAU,CAAC;AACrG,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3F,MAAM,MAAM,6BAA6B,GACrC,8BAA8B,GAC9B,yBAAyB,GACzB,uBAAuB,GACvB,uBAAuB,GACvB,wBAAwB,CAAC;AAE7B,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,6BAA6B,EAAE,CAAC;CAC5D;AAUD,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qFAAqF;IACrF,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,mFAAmF;IACnF,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;CAC1F;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,mFAAmF;IACnF,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,2BAA2B,EAAE,gCAAgC,CAAC,CAAC,CAAC;IAChG;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;CAChD;AAkBD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,8BAA8B,GACtC,uBAAuB,CA8EzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAeA"}
@@ -43,7 +43,8 @@
43
43
  */
44
44
  import * as fs from 'node:fs';
45
45
  import { ReleaseManager, ReleaseManagerError, } from './release-manager.js';
46
- import { InstallLayoutError, resolvePdHomePaths } from './install-layout.js';
46
+ import { InstallLayoutError, readInstallConfig, resolvePdHomePaths } from './install-layout.js';
47
+ import { resolveReleaseMetadataSource } from './release-metadata-source.js';
47
48
  /** Mutation kinds the console MutationController routes (PRI-659 contract). */
48
49
  export const RELEASE_MANAGER_AUTHORITY_KINDS = ['check', 'apply', 'apply-full', 'rollback'];
49
50
  /**
@@ -71,12 +72,33 @@ function probeTransactionJournalDir(pdHome) {
71
72
  }
72
73
  export function createReleaseManagerAuthority(options) {
73
74
  const reasons = new Set();
74
- if (options.metadataBaseUrl === undefined || options.metadataBaseUrl.length === 0) {
75
+ // PRI-709 P0-1: resolve the metadata source BEFORE constructing the manager.
76
+ // `install_config` is the durable tier — an install that was installed with
77
+ // a metadata URL resolves it from ~/.pd/install.json with no env present.
78
+ // A corrupt install.json is reported, not swallowed: it is also the state
79
+ // `manager.inspect()` reads, so both surface as `install_state_corrupt`.
80
+ let installConfig = null;
81
+ try {
82
+ installConfig = readInstallConfig(resolvePdHomePaths(options.pdHome));
83
+ }
84
+ catch (error) {
85
+ if (error instanceof InstallLayoutError) {
86
+ reasons.add('install_state_corrupt');
87
+ }
88
+ else {
89
+ throw error;
90
+ }
91
+ }
92
+ const metadataSource = resolveReleaseMetadataSource({
93
+ explicit: options.metadataBaseUrl,
94
+ installConfig,
95
+ });
96
+ if (metadataSource.metadataBaseUrl === undefined) {
75
97
  reasons.add('metadata_source_unconfigured');
76
98
  }
77
99
  const manager = new ReleaseManager({
78
100
  pdHome: options.pdHome,
79
- metadataBaseUrl: options.metadataBaseUrl ?? '',
101
+ metadataBaseUrl: metadataSource.metadataBaseUrl ?? '',
80
102
  ...(options.openclawHome !== undefined ? { openclawHome: options.openclawHome } : {}),
81
103
  ...(options.now !== undefined ? { now: options.now } : {}),
82
104
  ...(options.legacyCheck !== undefined ? { legacyCheck: options.legacyCheck } : {}),
@@ -123,7 +145,7 @@ export function createReleaseManagerAuthority(options) {
123
145
  reasons: ROLLBACK_AVAILABLE ? baseReasons : [...baseReasons, 'rollback_not_available'],
124
146
  },
125
147
  };
126
- return { manager, installStatus, kinds };
148
+ return { manager, installStatus, kinds, metadataSource };
127
149
  }
128
150
  /**
129
151
  * Map a ReleaseManager refusal onto the console's explicit-fallback reason
@@ -1 +1 @@
1
- {"version":3,"file":"release-manager-authority.js","sourceRoot":"","sources":["../../src/update/release-manager-authority.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"release-manager-authority.js","sourceRoot":"","sources":["../../src/update/release-manager-authority.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Release metadata source contract (PRI-709 P0-1).
3
+ *
4
+ * PRI-698 Phase 0 Audit finding F-4: `PD_RELEASE_METADATA_URL` had no supply
5
+ * side anywhere in the repository — every consumer read the process env
6
+ * directly, so a ReleaseManager install could only ever become ready inside
7
+ * the single shell that exported the variable. There was no durable,
8
+ * installer-owned answer to "where does signed release metadata come from?".
9
+ *
10
+ * This module is that answer. It is a READ-SIDE contract only: it resolves
11
+ * the base URL of the signed release metadata repository and refuses to guess
12
+ * one. It does not publish, sign, mirror or cache metadata (scope boundary —
13
+ * the publishing pipeline is out of scope for PRI-709).
14
+ *
15
+ * Resolution order (highest precedence first):
16
+ *
17
+ * 1. `explicit` — caller-supplied override. The Console passes the
18
+ * operator's process-level env value here, so an
19
+ * operator override always wins over install state.
20
+ * 2. `env` — `PD_RELEASE_METADATA_URL` read by this module.
21
+ * 3. `install_config` — `~/.pd/install.json` → `releaseMetadataUrl`,
22
+ * written by the installer at install time. This is
23
+ * the durable tier: it survives new shells, new
24
+ * processes and Console restarts.
25
+ * 4. `unconfigured` — no source exists. `metadataBaseUrl` is `undefined`
26
+ * and the caller's fallback semantics are UNCHANGED
27
+ * (ADR-0024 §2.4 — refusal with a stable reason, never
28
+ * a guessed endpoint).
29
+ *
30
+ * `invalid` short-circuits: a candidate source that exists but is not a usable
31
+ * http(s) base URL is reported, never silently skipped in favour of a lower
32
+ * tier. An operator who misconfigures the override must see the
33
+ * misconfiguration, not a surprising fallback to install state.
34
+ *
35
+ * This module deliberately imports nothing from `install-layout.js`: callers
36
+ * pass the already-read install config in. That keeps the layering one-way
37
+ * (install-layout → this module) with no cycle.
38
+ */
39
+ /** Operator override environment variable for the metadata repository base URL. */
40
+ export declare const RELEASE_METADATA_URL_ENV = "PD_RELEASE_METADATA_URL";
41
+ export type ReleaseMetadataSourceKind =
42
+ /** Caller-supplied override (Console passes the process-level env value). */
43
+ 'explicit'
44
+ /** `PD_RELEASE_METADATA_URL` resolved by this module. */
45
+ | 'env'
46
+ /** Durable install-time source: `~/.pd/install.json` → `releaseMetadataUrl`. */
47
+ | 'install_config'
48
+ /** A candidate source exists but is not a usable http(s) base URL. */
49
+ | 'invalid'
50
+ /** No source configured; fallback semantics unchanged. */
51
+ | 'unconfigured';
52
+ export interface ReleaseMetadataSource {
53
+ readonly kind: ReleaseMetadataSourceKind;
54
+ /** `undefined` for `invalid` and `unconfigured` — never a guessed URL. */
55
+ readonly metadataBaseUrl: string | undefined;
56
+ /** Stable machine-readable detail for `invalid`; null otherwise. */
57
+ readonly detail: string | null;
58
+ }
59
+ export interface ResolveReleaseMetadataSourceOptions {
60
+ /** Caller-supplied override; empty string is treated as absent. */
61
+ readonly explicit?: string | undefined;
62
+ /** Defaults to `process.env.PD_RELEASE_METADATA_URL`. */
63
+ readonly env?: string | undefined;
64
+ /** Already-read install config; null when install state is corrupt. */
65
+ readonly installConfig?: {
66
+ readonly releaseMetadataUrl?: string;
67
+ } | null;
68
+ }
69
+ /**
70
+ * Strict validator for a metadata repository base URL.
71
+ *
72
+ * Returns the trimmed URL, or `null` when the value is not a non-empty
73
+ * `http(s)` URL. Whitespace-only input is absent, not valid — the ReleaseManager
74
+ * must never be handed a URL it would have to repair.
75
+ */
76
+ export declare function normalizeReleaseMetadataUrl(raw: unknown): string | null;
77
+ /** True when the value is a usable metadata repository base URL. */
78
+ export declare function isReleaseMetadataUrl(raw: unknown): raw is string;
79
+ /**
80
+ * Resolve the release metadata source. Never throws: an unusable source is a
81
+ * reported outcome (`invalid` / `unconfigured`), so readiness probing stays
82
+ * side-effect free and observable.
83
+ */
84
+ export declare function resolveReleaseMetadataSource(options?: ResolveReleaseMetadataSourceOptions): ReleaseMetadataSource;
85
+ //# sourceMappingURL=release-metadata-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-metadata-source.d.ts","sourceRoot":"","sources":["../../src/update/release-metadata-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,mFAAmF;AACnF,eAAO,MAAM,wBAAwB,4BAA4B,CAAC;AAElE,MAAM,MAAM,yBAAyB;AACnC,6EAA6E;AAC3E,UAAU;AACZ,yDAAyD;GACvD,KAAK;AACP,gFAAgF;GAC9E,gBAAgB;AAClB,sEAAsE;GACpE,SAAS;AACX,0DAA0D;GACxD,cAAc,CAAC;AAEnB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,0EAA0E;IAC1E,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,mCAAmC;IAClD,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,yDAAyD;IACzD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,uEAAuE;IACvE,QAAQ,CAAC,aAAa,CAAC,EAAE;QAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC1E;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAYvE;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,GAAE,mCAAwC,GAChD,qBAAqB,CA4BvB"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Release metadata source contract (PRI-709 P0-1).
3
+ *
4
+ * PRI-698 Phase 0 Audit finding F-4: `PD_RELEASE_METADATA_URL` had no supply
5
+ * side anywhere in the repository — every consumer read the process env
6
+ * directly, so a ReleaseManager install could only ever become ready inside
7
+ * the single shell that exported the variable. There was no durable,
8
+ * installer-owned answer to "where does signed release metadata come from?".
9
+ *
10
+ * This module is that answer. It is a READ-SIDE contract only: it resolves
11
+ * the base URL of the signed release metadata repository and refuses to guess
12
+ * one. It does not publish, sign, mirror or cache metadata (scope boundary —
13
+ * the publishing pipeline is out of scope for PRI-709).
14
+ *
15
+ * Resolution order (highest precedence first):
16
+ *
17
+ * 1. `explicit` — caller-supplied override. The Console passes the
18
+ * operator's process-level env value here, so an
19
+ * operator override always wins over install state.
20
+ * 2. `env` — `PD_RELEASE_METADATA_URL` read by this module.
21
+ * 3. `install_config` — `~/.pd/install.json` → `releaseMetadataUrl`,
22
+ * written by the installer at install time. This is
23
+ * the durable tier: it survives new shells, new
24
+ * processes and Console restarts.
25
+ * 4. `unconfigured` — no source exists. `metadataBaseUrl` is `undefined`
26
+ * and the caller's fallback semantics are UNCHANGED
27
+ * (ADR-0024 §2.4 — refusal with a stable reason, never
28
+ * a guessed endpoint).
29
+ *
30
+ * `invalid` short-circuits: a candidate source that exists but is not a usable
31
+ * http(s) base URL is reported, never silently skipped in favour of a lower
32
+ * tier. An operator who misconfigures the override must see the
33
+ * misconfiguration, not a surprising fallback to install state.
34
+ *
35
+ * This module deliberately imports nothing from `install-layout.js`: callers
36
+ * pass the already-read install config in. That keeps the layering one-way
37
+ * (install-layout → this module) with no cycle.
38
+ */
39
+ /** Operator override environment variable for the metadata repository base URL. */
40
+ export const RELEASE_METADATA_URL_ENV = 'PD_RELEASE_METADATA_URL';
41
+ /**
42
+ * Strict validator for a metadata repository base URL.
43
+ *
44
+ * Returns the trimmed URL, or `null` when the value is not a non-empty
45
+ * `http(s)` URL. Whitespace-only input is absent, not valid — the ReleaseManager
46
+ * must never be handed a URL it would have to repair.
47
+ */
48
+ export function normalizeReleaseMetadataUrl(raw) {
49
+ if (typeof raw !== 'string')
50
+ return null;
51
+ const trimmed = raw.trim();
52
+ if (trimmed.length === 0)
53
+ return null;
54
+ let parsed;
55
+ try {
56
+ parsed = new URL(trimmed);
57
+ }
58
+ catch {
59
+ return null;
60
+ }
61
+ if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:')
62
+ return null;
63
+ return trimmed;
64
+ }
65
+ /** True when the value is a usable metadata repository base URL. */
66
+ export function isReleaseMetadataUrl(raw) {
67
+ return normalizeReleaseMetadataUrl(raw) !== null;
68
+ }
69
+ /**
70
+ * Resolve the release metadata source. Never throws: an unusable source is a
71
+ * reported outcome (`invalid` / `unconfigured`), so readiness probing stays
72
+ * side-effect free and observable.
73
+ */
74
+ export function resolveReleaseMetadataSource(options = {}) {
75
+ const env = options.env !== undefined
76
+ ? options.env
77
+ : process.env[RELEASE_METADATA_URL_ENV];
78
+ const candidates = [
79
+ { tier: 'explicit', raw: options.explicit },
80
+ { tier: 'env', raw: env },
81
+ { tier: 'install_config', raw: options.installConfig?.releaseMetadataUrl },
82
+ ];
83
+ for (const candidate of candidates) {
84
+ if (candidate.raw === undefined || candidate.raw === null)
85
+ continue;
86
+ if (typeof candidate.raw === 'string' && candidate.raw.trim().length === 0)
87
+ continue;
88
+ const normalized = normalizeReleaseMetadataUrl(candidate.raw);
89
+ if (normalized === null) {
90
+ // Refusal over silent degradation: do not fall through to a lower tier
91
+ // and pretend the operator's intent was absent.
92
+ return {
93
+ kind: 'invalid',
94
+ metadataBaseUrl: undefined,
95
+ detail: `${candidate.tier}_url_invalid`,
96
+ };
97
+ }
98
+ return { kind: candidate.tier, metadataBaseUrl: normalized, detail: null };
99
+ }
100
+ return { kind: 'unconfigured', metadataBaseUrl: undefined, detail: null };
101
+ }
102
+ //# sourceMappingURL=release-metadata-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-metadata-source.js","sourceRoot":"","sources":["../../src/update/release-metadata-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,mFAAmF;AACnF,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC;AA+BlE;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAY;IACtD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,OAAO,2BAA2B,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAC1C,OAAO,GAAwC,EAAE;IAEjD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,KAAK,SAAS;QACnC,CAAC,CAAC,OAAO,CAAC,GAAG;QACb,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAE1C,MAAM,UAAU,GAA+F;QAC7G,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE;QAC3C,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;QACzB,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,OAAO,CAAC,aAAa,EAAE,kBAAkB,EAAE;KAC3E,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,GAAG,KAAK,SAAS,IAAI,SAAS,CAAC,GAAG,KAAK,IAAI;YAAE,SAAS;QACpE,IAAI,OAAO,SAAS,CAAC,GAAG,KAAK,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACrF,MAAM,UAAU,GAAG,2BAA2B,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,uEAAuE;YACvE,gDAAgD;YAChD,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,eAAe,EAAE,SAAS;gBAC1B,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,cAAc;aACxC,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC7E,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC5E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-principles-disciple",
3
- "version": "1.133.13",
3
+ "version": "1.134.0",
4
4
  "description": "Interactive CLI installer for Principles Disciple OpenClaw plugin",
5
5
  "type": "module",
6
6
  "bin": {
@@ -45,7 +45,7 @@
45
45
  "dependencies": {
46
46
  "@principles/install-layout": "^0.2.0",
47
47
  "@tufjs/models": "3.0.1",
48
- "@inquirer/prompts": "^8.5.2",
48
+ "@inquirer/prompts": "^8.7.1",
49
49
  "commander": "^14.0.3",
50
50
  "fs-extra": "^11.4.0",
51
51
  "js-yaml": "^5.3.0",
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-recovery-failed-tasks.d.ts","sourceRoot":"","sources":["../../src/commands/runtime-recovery-failed-tasks.ts"],"names":[],"mappings":"AAIA,UAAU,0BAA0B;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAaD,wBAAsB,gCAAgC,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CA6JtG"}
1
+ {"version":3,"file":"runtime-recovery-failed-tasks.d.ts","sourceRoot":"","sources":["../../src/commands/runtime-recovery-failed-tasks.ts"],"names":[],"mappings":"AASA,UAAU,0BAA0B;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAyDD,wBAAsB,gCAAgC,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyLtG"}
@@ -1,6 +1,48 @@
1
1
  import * as path from 'path';
2
- import { createRecoverySweepService } from '@principles/core/runtime-v2';
2
+ import { createRecoverySweepService, isPeerRunnerKind, isDiagnosticianStageKind, } from '@principles/core/runtime-v2';
3
3
  import { resolveWorkspaceDir } from '../resolve-workspace.js';
4
+ /** Stage-task ID convention prefix → the remainder is the parent task ID. */
5
+ const DIAG_STAGE_ID_PREFIXES = ['diag_rootcause-', 'diag_distiller-', 'diag_router-'];
6
+ /**
7
+ * PRI-674 review P2: per-kind execution guidance must point at commands that
8
+ * actually support the recovered task kind (cli-6-output-next-action).
9
+ *
10
+ * Verified against real command surfaces:
11
+ * - `pd runtime internalization run-once` supports ONLY the 6 peer runner
12
+ * kinds (SUPPORTED_RUNNERS in runtime-internalization-run-once.ts).
13
+ * - `pd diagnose run --task-id <id>` is the only diagnostician execution
14
+ * entry (SplitDiagnosticianRunner runs the full A→B→C pipeline from the
15
+ * PARENT task; running a diag_* stage as parent would create bogus nested
16
+ * stage tasks).
17
+ * - diag_* stage linkage: persisted inputRef = parent task ID
18
+ * (SplitDiagnosticianRunner.ensureSubTask), with the
19
+ * diag_<stage>-<parentTaskId> ID convention as fallback. When the parent
20
+ * cannot be resolved we say so instead of printing a guessed command.
21
+ */
22
+ function buildExecutionNextAction(t) {
23
+ // Branch on the authoritative taskKind, never on taskId shape.
24
+ if (isDiagnosticianStageKind(t.taskKind)) {
25
+ // Parent from persisted inputRef; fallback: diag_<stage>-<parentTaskId>
26
+ // ID convention (plain prefix split — no regex needed for fixed literals).
27
+ const matchedPrefix = DIAG_STAGE_ID_PREFIXES.find((p) => t.taskId.startsWith(p));
28
+ const parentTaskId = t.inputRef && t.inputRef.trim() !== ''
29
+ ? t.inputRef
30
+ : matchedPrefix
31
+ ? t.taskId.slice(matchedPrefix.length).trim() || undefined
32
+ : undefined;
33
+ if (parentTaskId) {
34
+ return `Stage task of diagnostician parent "${parentTaskId}". Recover the parent, then run: pd diagnose run --task-id ${parentTaskId} (runs the full pipeline including this stage)`;
35
+ }
36
+ return `Stage task whose diagnostician parent could not be resolved (no inputRef linkage, task ID does not follow diag_<stage>-<parentTaskId>). Inspect: pd diagnose status --task-id ${t.taskId} — do not run a stage task directly as a parent`;
37
+ }
38
+ if (t.taskKind === 'diagnostician') {
39
+ return `Run: pd diagnose run --task-id ${t.taskId} (executes the full diag_rootcause→diag_distiller→diag_router pipeline)`;
40
+ }
41
+ if (isPeerRunnerKind(t.taskKind)) {
42
+ return `Run: pd runtime internalization run-once --runner ${t.taskKind} (executes the next ready ${t.taskKind} task)`;
43
+ }
44
+ return `Task kind ${t.taskKind} has no registered CLI execution entry. Inspect: pd diagnose status --task-id ${t.taskId}, or use the Console failed-tasks page`;
45
+ }
4
46
  export async function handleRuntimeRecoveryFailedTasks(opts) {
5
47
  if (opts.dryRun && opts.confirm) {
6
48
  if (opts.json) {
@@ -56,7 +98,7 @@ export async function handleRuntimeRecoveryFailedTasks(opts) {
56
98
  reason: t.isExhausted
57
99
  ? `Task exhausted max attempts (${t.attemptCount}/${t.maxAttempts}) but --force specified — reset to pending`
58
100
  : `Task failed and attempts remain (${t.attemptCount}/${t.maxAttempts}) — reset to pending`,
59
- nextAction: 'Task recovered to pending. Run pd runtime internalization run-once to execute.',
101
+ nextAction: `Task recovered to pending. ${buildExecutionNextAction({ taskId: t.taskId, taskKind: t.taskKind, inputRef: t.inputRef })}`,
60
102
  });
61
103
  }
62
104
  else {
@@ -95,7 +137,7 @@ export async function handleRuntimeRecoveryFailedTasks(opts) {
95
137
  let summaryNextAction = '';
96
138
  if (isDryRun) {
97
139
  if (taskDetails.length === 0) {
98
- summaryReason = 'No failed internalization tasks found';
140
+ summaryReason = 'No failed internalization or diagnostician tasks found';
99
141
  summaryNextAction = 'Nothing to recover';
100
142
  }
101
143
  else {
@@ -105,9 +147,43 @@ export async function handleRuntimeRecoveryFailedTasks(opts) {
105
147
  }
106
148
  else {
107
149
  summaryReason = `Successfully recovered ${recoveredCount} failed tasks, skipped ${skippedCount} tasks`;
108
- summaryNextAction = recoveredCount > 0
109
- ? 'Run pd runtime internalization run-once to execute recovered tasks'
110
- : 'No tasks recovered';
150
+ // PRI-674 review P2: mixed recoveries span different executors — split
151
+ // the summary by actual command surface instead of one command for all.
152
+ if (recoveredCount > 0) {
153
+ const diagParents = [];
154
+ const diagStages = [];
155
+ const peerTasks = [];
156
+ const otherTasks = [];
157
+ for (const t of taskDetails) {
158
+ if (t.action !== 'recovered')
159
+ continue;
160
+ if (t.taskKind === 'diagnostician')
161
+ diagParents.push(t.taskId);
162
+ else if (isDiagnosticianStageKind(t.taskKind))
163
+ diagStages.push(t.taskId);
164
+ else if (isPeerRunnerKind(t.taskKind))
165
+ peerTasks.push(t.taskId);
166
+ else
167
+ otherTasks.push(t.taskId);
168
+ }
169
+ const lines = [];
170
+ if (diagParents.length > 0) {
171
+ lines.push(`For diagnostician parent task(s) (${diagParents.join(', ')}): pd diagnose run --task-id <taskId>`);
172
+ }
173
+ if (diagStages.length > 0) {
174
+ lines.push(`For diag_* stage task(s) (${diagStages.join(', ')}): recover the parent diagnostician task, then pd diagnose run --task-id <parentTaskId> (each stage's parent is in its per-task nextAction)`);
175
+ }
176
+ if (peerTasks.length > 0) {
177
+ lines.push(`For internalization task(s) (${peerTasks.join(', ')}): pd runtime internalization run-once --runner <kind>`);
178
+ }
179
+ if (otherTasks.length > 0) {
180
+ lines.push(`For other task(s) (${otherTasks.join(', ')}): no registered CLI execution entry — see per-task nextAction`);
181
+ }
182
+ summaryNextAction = `Tasks recovered to pending. Execute by kind: ${lines.join('; ')}`;
183
+ }
184
+ else {
185
+ summaryNextAction = 'No tasks recovered';
186
+ }
111
187
  }
112
188
  if (opts.json) {
113
189
  console.log(JSON.stringify({
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-recovery-failed-tasks.js","sourceRoot":"","sources":["../../src/commands/runtime-recovery-failed-tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-recovery-failed-tasks.js","sourceRoot":"","sources":["../../src/commands/runtime-recovery-failed-tasks.ts"],"names":[],"mappings":"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"}