create-principles-disciple 1.145.3 → 1.145.4

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 (109) hide show
  1. package/_release/product-identity.json +2 -2
  2. package/codex-adapter/dist/worker/workspace-worker.js +2 -1
  3. package/codex-adapter/package.json +1 -1
  4. package/console/dist/server/config/pd-config-store.js +3 -0
  5. package/core/dist/runtime-v2/index.d.ts +3 -3
  6. package/core/dist/runtime-v2/index.d.ts.map +1 -1
  7. package/core/dist/runtime-v2/index.js +1 -1
  8. package/core/dist/runtime-v2/index.js.map +1 -1
  9. package/core/dist/runtime-v2/internalization/peer-runner-contracts.d.ts +8 -1
  10. package/core/dist/runtime-v2/internalization/peer-runner-contracts.d.ts.map +1 -1
  11. package/core/dist/runtime-v2/internalization/peer-runner-contracts.js.map +1 -1
  12. package/core/dist/runtime-v2/internalization/pitask-metadata.d.ts +32 -0
  13. package/core/dist/runtime-v2/internalization/pitask-metadata.d.ts.map +1 -1
  14. package/core/dist/runtime-v2/internalization/pitask-metadata.js +51 -0
  15. package/core/dist/runtime-v2/internalization/pitask-metadata.js.map +1 -1
  16. package/core/dist/runtime-v2/recovery-actions-log.d.ts +15 -0
  17. package/core/dist/runtime-v2/recovery-actions-log.d.ts.map +1 -1
  18. package/core/dist/runtime-v2/recovery-actions-log.js +7 -1
  19. package/core/dist/runtime-v2/recovery-actions-log.js.map +1 -1
  20. package/core/dist/runtime-v2/recovery-sweep-service.d.ts +116 -1
  21. package/core/dist/runtime-v2/recovery-sweep-service.d.ts.map +1 -1
  22. package/core/dist/runtime-v2/recovery-sweep-service.js +252 -13
  23. package/core/dist/runtime-v2/recovery-sweep-service.js.map +1 -1
  24. package/core/dist/runtime-v2/runtime-state-handle.d.ts +8 -0
  25. package/core/dist/runtime-v2/runtime-state-handle.d.ts.map +1 -1
  26. package/core/dist/runtime-v2/runtime-state-handle.js +1 -0
  27. package/core/dist/runtime-v2/runtime-state-handle.js.map +1 -1
  28. package/core/dist/runtime-v2/store/runtime-state-manager.d.ts +10 -0
  29. package/core/dist/runtime-v2/store/runtime-state-manager.d.ts.map +1 -1
  30. package/core/dist/runtime-v2/store/runtime-state-manager.js +1 -0
  31. package/core/dist/runtime-v2/store/runtime-state-manager.js.map +1 -1
  32. package/core/dist/runtime-v2/store/task/memory-task-store.d.ts +4 -0
  33. package/core/dist/runtime-v2/store/task/memory-task-store.d.ts.map +1 -1
  34. package/core/dist/runtime-v2/store/task/memory-task-store.js +10 -0
  35. package/core/dist/runtime-v2/store/task/memory-task-store.js.map +1 -1
  36. package/core/dist/runtime-v2/store/task/sqlite-task-store.d.ts +4 -0
  37. package/core/dist/runtime-v2/store/task/sqlite-task-store.d.ts.map +1 -1
  38. package/core/dist/runtime-v2/store/task/sqlite-task-store.js +21 -0
  39. package/core/dist/runtime-v2/store/task/sqlite-task-store.js.map +1 -1
  40. package/core/dist/runtime-v2/store/task/task-store.d.ts +14 -6
  41. package/core/dist/runtime-v2/store/task/task-store.d.ts.map +1 -1
  42. package/core/package.json +1 -1
  43. package/dist/installer.d.ts +1 -1
  44. package/dist/installer.d.ts.map +1 -1
  45. package/dist/installer.js +5 -1
  46. package/dist/installer.js.map +1 -1
  47. package/dist/installers/workbuddy-host-installer.d.ts.map +1 -1
  48. package/dist/installers/workbuddy-host-installer.js +5 -1
  49. package/dist/installers/workbuddy-host-installer.js.map +1 -1
  50. package/dist/manifest-host-union.d.ts +23 -0
  51. package/dist/manifest-host-union.d.ts.map +1 -0
  52. package/dist/manifest-host-union.js +22 -0
  53. package/dist/manifest-host-union.js.map +1 -0
  54. package/dist/uninstaller.d.ts +2 -1
  55. package/dist/uninstaller.d.ts.map +1 -1
  56. package/dist/uninstaller.js +7 -1
  57. package/dist/uninstaller.js.map +1 -1
  58. package/host-runtime/dist/behavior-example-pack-assembler.d.ts +41 -0
  59. package/host-runtime/dist/behavior-example-pack-assembler.js +243 -0
  60. package/host-runtime/dist/behavior-history.d.ts +6 -0
  61. package/host-runtime/dist/behavior-history.js +76 -0
  62. package/host-runtime/dist/index.d.ts +3 -0
  63. package/host-runtime/dist/index.js +3 -0
  64. package/host-runtime/dist/workspace-behavior-evidence.d.ts +3 -0
  65. package/host-runtime/dist/workspace-behavior-evidence.js +74 -0
  66. package/host-runtime/package.json +10 -2
  67. package/install-layout/dist/index.d.ts +40 -1
  68. package/install-layout/dist/index.js +88 -6
  69. package/install-layout/package.json +1 -1
  70. package/package.json +3 -3
  71. package/pd-cli/dist/commands/runtime-internalization-evidence.d.ts +2 -3
  72. package/pd-cli/dist/commands/runtime-internalization-evidence.d.ts.map +1 -1
  73. package/pd-cli/dist/commands/runtime-internalization-evidence.js +7 -26
  74. package/pd-cli/dist/commands/runtime-internalization-evidence.js.map +1 -1
  75. package/pd-cli/dist/commands/runtime-recovery-failed-task.d.ts +22 -0
  76. package/pd-cli/dist/commands/runtime-recovery-failed-task.d.ts.map +1 -0
  77. package/pd-cli/dist/commands/runtime-recovery-failed-task.js +470 -0
  78. package/pd-cli/dist/commands/runtime-recovery-failed-task.js.map +1 -0
  79. package/pd-cli/dist/commands/runtime-recovery-failed-tasks.d.ts +24 -0
  80. package/pd-cli/dist/commands/runtime-recovery-failed-tasks.d.ts.map +1 -1
  81. package/pd-cli/dist/commands/runtime-recovery-failed-tasks.js +4 -1
  82. package/pd-cli/dist/commands/runtime-recovery-failed-tasks.js.map +1 -1
  83. package/pd-cli/dist/index.js +5 -0
  84. package/pd-cli/dist/index.js.map +1 -1
  85. package/pd-cli/package.json +1 -1
  86. package/plugin/dist/bundle.js +501 -497
  87. package/plugin/dist/core/behavior-example-pack-assembler.d.ts +4 -32
  88. package/plugin/dist/core/rule-context-assembler.d.ts +0 -9
  89. package/plugin/dist/openclaw.plugin.json +1 -1
  90. package/plugin/dist/rulehost-evidence.js +19 -19
  91. package/plugin/openclaw.plugin.json +1 -1
  92. package/plugin/package.json +1 -1
  93. package/release-manager/dist/installer.d.ts +1 -1
  94. package/release-manager/dist/installer.d.ts.map +1 -1
  95. package/release-manager/dist/installer.js +5 -1
  96. package/release-manager/dist/installer.js.map +1 -1
  97. package/release-manager/dist/installers/workbuddy-host-installer.d.ts.map +1 -1
  98. package/release-manager/dist/installers/workbuddy-host-installer.js +5 -1
  99. package/release-manager/dist/installers/workbuddy-host-installer.js.map +1 -1
  100. package/release-manager/dist/manifest-host-union.d.ts +23 -0
  101. package/release-manager/dist/manifest-host-union.d.ts.map +1 -0
  102. package/release-manager/dist/manifest-host-union.js +22 -0
  103. package/release-manager/dist/manifest-host-union.js.map +1 -0
  104. package/release-manager/dist/uninstaller.d.ts +2 -1
  105. package/release-manager/dist/uninstaller.d.ts.map +1 -1
  106. package/release-manager/dist/uninstaller.js +7 -1
  107. package/release-manager/dist/uninstaller.js.map +1 -1
  108. package/release-manager/package.json +2 -2
  109. package/workbuddy-adapter/package.json +1 -1
@@ -0,0 +1,470 @@
1
+ import * as path from 'path';
2
+ import * as fs from 'fs';
3
+ import { createRuntimeStateHandle, appendRecoveryAction, inspectFailedTaskRecovery, recoverSingleFailedTask, listRecoveryActions, hydratePITaskRecord, } from '@principles/core/runtime-v2';
4
+ import { resolveWorkspaceDir } from '../resolve-workspace.js';
5
+ import { buildExecutionNextAction } from './runtime-recovery-failed-tasks.js';
6
+ /** ERR-001-safe record narrowing for untrusted parsed JSON (rc-1/rc-2). */
7
+ function isRecord(value) {
8
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
9
+ }
10
+ function emit(payload, json) {
11
+ if (json) {
12
+ console.log(JSON.stringify(payload, null, 2));
13
+ }
14
+ else {
15
+ for (const [key, value] of Object.entries(payload)) {
16
+ if (value === undefined)
17
+ continue;
18
+ console.log(` ${key}: ${typeof value === 'object' ? JSON.stringify(value) : String(value)}`);
19
+ }
20
+ }
21
+ }
22
+ function refusal(payload, json) {
23
+ emit({ ok: false, ...payload }, json);
24
+ process.exitCode = 1;
25
+ }
26
+ /**
27
+ * PRI-991 (P1-01): both modes refuse a workspace whose state.db does not
28
+ * exist BEFORE opening any connection — dry-run must not create it and
29
+ * confirm must not bootstrap a wrong-typed path. The open itself re-validates
30
+ * (no TOCTOU reliance): the check only picks the refusal path.
31
+ */
32
+ function stateDbPath(workspaceDir) {
33
+ return path.join(workspaceDir, '.pd', 'state.db');
34
+ }
35
+ /**
36
+ * PRI-991 (P1-01): classify storage-level open/query failures (missing file,
37
+ * not-a-database, missing tables) as structured `storage_unavailable`
38
+ * instead of the generic recovery_error — dry-run's read-only connection
39
+ * cannot migrate or bootstrap, so these are terminal for the invocation.
40
+ */
41
+ function isSqliteUnavailable(err) {
42
+ if (!isRecord(err))
43
+ return false;
44
+ return typeof err.code === 'string' && err.code.startsWith('SQLITE_');
45
+ }
46
+ /**
47
+ * PRI-991 (P2-B): channel-aware recovery nextAction. A recovered
48
+ * code_tool_hook Artificer task is NOT executable via run-once (it refuses
49
+ * Code Rule tasks) — the next auto-consumer cycle runs the IAER evidence
50
+ * preflight and, without Owner evidence, parks the task in
51
+ * needs_human_review at zero model cost. Every OTHER kind reuses the shared
52
+ * per-kind guidance authority (buildExecutionNextAction) so both recovery
53
+ * surfaces stay identical.
54
+ */
55
+ function buildRecoveryNextAction(task) {
56
+ const { diagnosticJson } = task;
57
+ if (diagnosticJson !== null && diagnosticJson.trim() !== '') {
58
+ try {
59
+ const parsed = JSON.parse(diagnosticJson);
60
+ if (isRecord(parsed) && Object.hasOwn(parsed, 'pi_metadata')) {
61
+ const meta = parsed.pi_metadata;
62
+ if (isRecord(meta) && Object.hasOwn(meta, 'channel') && typeof meta.channel === 'string' && meta.channel === 'code_tool_hook') {
63
+ return 'Task recovered to pending. The next auto-consumer cycle runs the evidence preflight on it: without Owner evidence it is parked in needs_human_review (zero model cost), then attach/resume via: pd runtime internalization evidence attach --confirm → pd runtime internalization evidence resume --confirm';
64
+ }
65
+ }
66
+ }
67
+ catch {
68
+ // Unparseable payload — fall through to the per-kind guidance below.
69
+ }
70
+ }
71
+ return buildExecutionNextAction(task);
72
+ }
73
+ /**
74
+ * PRI-991 (r2 P2): the JSONL projection is a read-check-append sequence —
75
+ * concurrent confirm/repair processes can each observe an actionId missing
76
+ * and append it twice. This lock (O_EXCL create, git-12 precedent: an
77
+ * existing lock is never overwritten or auto-deleted) serializes ALL
78
+ * projections for one workspace so the check+append pair is atomic. A stale
79
+ * lock from a crashed holder blocks projections until a human removes it —
80
+ * the durable row facts are unaffected.
81
+ */
82
+ function projectionLockPath(workspaceDir) {
83
+ return path.join(workspaceDir, '.state', 'recovery_actions.jsonl.lock');
84
+ }
85
+ /**
86
+ * Project the durable recovery facts that are missing from the JSONL,
87
+ * serialized by the projection lock. Sync I/O inside the lock keeps the
88
+ * check+append pair atomic within the process and the lock file arbitrates
89
+ * across processes. Returns which records were projected / already present,
90
+ * or a structured refusal (lock held / sink failure) with ZERO appends.
91
+ */
92
+ function projectRecoveryRecordsOnce(workspaceDir, taskId, records) {
93
+ fs.mkdirSync(path.join(workspaceDir, '.state'), { recursive: true });
94
+ const lockPath = projectionLockPath(workspaceDir);
95
+ let lockFd;
96
+ try {
97
+ lockFd = fs.openSync(lockPath, 'wx');
98
+ }
99
+ catch {
100
+ return {
101
+ ok: false,
102
+ projected: 0,
103
+ skipped: 0,
104
+ reasonCode: 'audit_projection_locked',
105
+ reason: `Another projection holds ${lockPath}`,
106
+ nextAction: 'Wait for the concurrent projection to finish, or (if its holder process is gone) remove the stale lock file manually, then re-run',
107
+ };
108
+ }
109
+ try {
110
+ // Write holder info THROUGH the already-held wx descriptor — reopening
111
+ // the path by name would be a file-system race (CodeQL js/file-system-
112
+ // race): the fd pins the inode this process created.
113
+ try {
114
+ fs.writeFileSync(lockFd, `${JSON.stringify({ pid: process.pid, at: new Date().toISOString() })}\n`);
115
+ }
116
+ catch {
117
+ // Holder info is best-effort debugging aid — never blocks projection.
118
+ }
119
+ const projectedIds = new Set(listRecoveryActions(workspaceDir, { taskId }).map((a) => a.actionId));
120
+ const missing = records.filter((r) => !projectedIds.has(r.actionId));
121
+ for (const record of missing) {
122
+ appendRecoveryAction(workspaceDir, {
123
+ actionId: record.actionId,
124
+ taskId,
125
+ previousStatus: record.previousStatus,
126
+ result: 'recovered',
127
+ operator: record.operator ?? undefined,
128
+ forceApplied: record.budgetResetApplied,
129
+ previousAttemptCount: record.previousAttemptCount,
130
+ });
131
+ }
132
+ return { ok: true, projected: missing.length, skipped: records.length - missing.length };
133
+ }
134
+ catch (err) {
135
+ return {
136
+ ok: false,
137
+ projected: 0,
138
+ skipped: 0,
139
+ reasonCode: 'audit_projection_failed',
140
+ reason: err instanceof Error ? err.message : String(err),
141
+ nextAction: 'Fix the audit sink (workspace/.state/recovery_actions.jsonl); the durable row facts are untouched — re-run --repair-audit afterwards',
142
+ };
143
+ }
144
+ finally {
145
+ fs.closeSync(lockFd);
146
+ fs.rmSync(lockPath, { force: true });
147
+ }
148
+ }
149
+ async function repairAuditProjection(opts, workspaceDir) {
150
+ // performs is the idempotent JSONL projection append, serialized by the
151
+ // projection lock (r2 P2: check-then-append alone is not concurrency-safe).
152
+ let handle = null;
153
+ try {
154
+ handle = await createRuntimeStateHandle({ workspaceDir, readonly: true, bootstrapIfMissing: false });
155
+ const rawTask = await handle.stateManager.getTask(String(opts.taskId));
156
+ if (!rawTask) {
157
+ refusal({ reason: 'Task not found in this workspace', reasonCode: 'task_not_found', taskId: opts.taskId, nextAction: 'Verify the exact taskId (pd runtime internalization queue --json)' }, opts.json);
158
+ return;
159
+ }
160
+ const piTask = hydratePITaskRecord(rawTask);
161
+ const records = piTask?.failedTaskRecoveries ?? [];
162
+ if (records.length === 0) {
163
+ refusal({
164
+ reason: 'No durable recovery fact in the task metadata — nothing to project',
165
+ reasonCode: 'no_durable_recovery_record',
166
+ taskId: opts.taskId,
167
+ nextAction: 'recovery_actions.jsonl has no row-fact fallback for this task (legacy absent-metadata recovery); the recovery itself stands as reported by its confirm output',
168
+ }, opts.json);
169
+ return;
170
+ }
171
+ const outcome = projectRecoveryRecordsOnce(workspaceDir, String(opts.taskId), records);
172
+ if (!outcome.ok) {
173
+ refusal({
174
+ reason: outcome.reason,
175
+ reasonCode: outcome.reasonCode,
176
+ taskId: opts.taskId,
177
+ nextAction: outcome.nextAction,
178
+ }, opts.json);
179
+ return;
180
+ }
181
+ emit({
182
+ ok: true,
183
+ mode: 'repair_audit',
184
+ taskId: opts.taskId,
185
+ auditStatus: outcome.projected > 0 ? 'repaired' : 'already_projected',
186
+ projected: outcome.projected,
187
+ alreadyProjected: outcome.skipped,
188
+ totalDurableFacts: records.length,
189
+ nextAction: outcome.projected > 0
190
+ ? 'Audit projection restored. Verify: pd runtime internalization queue --json (task state untouched by this mode)'
191
+ : 'Nothing to do — the JSONL projection already carries every durable actionId',
192
+ }, opts.json);
193
+ }
194
+ catch (err) {
195
+ if (isSqliteUnavailable(err)) {
196
+ refusal({ reason: err instanceof Error ? err.message : String(err), reasonCode: 'storage_unavailable', nextAction: 'Check the workspace path — repair-audit opens the database read-only and never creates it' }, opts.json);
197
+ return;
198
+ }
199
+ refusal({ reason: err instanceof Error ? err.message : String(err), reasonCode: 'repair_failed', nextAction: 'Fix the audit sink (workspace/.state/recovery_actions.jsonl) and re-run; the durable row fact is untouched' }, opts.json);
200
+ }
201
+ finally {
202
+ if (handle)
203
+ await handle.close();
204
+ }
205
+ }
206
+ export async function handleRuntimeRecoveryFailedTask(opts) {
207
+ if (opts.dryRun && opts.confirm) {
208
+ refusal({
209
+ reason: 'Error: --dry-run and --confirm are mutually exclusive',
210
+ reasonCode: 'flag_conflict',
211
+ nextAction: 'Specify only one of --dry-run or --confirm (dry-run is the default)',
212
+ }, opts.json);
213
+ return;
214
+ }
215
+ // Explicit --dry-run promises zero writes, including to recovery_actions.jsonl.
216
+ // --repair-audit is an intentional JSONL write operation, so neither execution
217
+ // mode flag may be combined with it (default no-flag dry-run remains distinct).
218
+ if (opts.repairAudit && (opts.confirm || opts.dryRun)) {
219
+ refusal({
220
+ reason: 'Error: --repair-audit cannot be combined with --confirm or --dry-run',
221
+ reasonCode: 'flag_conflict',
222
+ nextAction: 'Run --repair-audit alone to project the JSONL, or --dry-run alone for strictly zero-write inspection',
223
+ }, opts.json);
224
+ return;
225
+ }
226
+ const rawTaskId = opts.taskId ?? '';
227
+ const taskId = rawTaskId.trim();
228
+ if (taskId === '' || taskId !== rawTaskId) {
229
+ refusal({
230
+ reason: 'Error: --task-id requires the exact task id (no surrounding whitespace)',
231
+ reasonCode: 'invalid_task_id',
232
+ nextAction: 'Copy the full taskId from: pd runtime internalization queue --json (or the audit-artificer-evidence output)',
233
+ }, opts.json);
234
+ return;
235
+ }
236
+ // PRI-991 (r2 P1-03): the UNIFIED workspace authority resolves every
237
+ // target — explicit flag included — so assertSafeDirectoryRoot (empty /
238
+ // parent traversal / filesystem root) and the config-difference warnings
239
+ // apply to this state-mutating command like every other CLI command.
240
+ let workspaceDir;
241
+ try {
242
+ workspaceDir = resolveWorkspaceDir(opts.workspace);
243
+ }
244
+ catch (err) {
245
+ refusal({
246
+ reason: err instanceof Error ? err.message : String(err),
247
+ reasonCode: 'workspace_invalid',
248
+ nextAction: 'Provide a safe explicit workspace directory with --workspace <path> (no traversal segments, not a filesystem root)',
249
+ }, opts.json);
250
+ return;
251
+ }
252
+ // PRI-991 (P1-01): refuse before opening ANY connection when the database
253
+ // does not exist — dry-run must not create it, confirm must not bootstrap.
254
+ if (!fs.existsSync(stateDbPath(workspaceDir))) {
255
+ refusal({
256
+ reason: `No state database at ${stateDbPath(workspaceDir)}`,
257
+ reasonCode: 'storage_unavailable',
258
+ nextAction: 'This workspace has no .pd/state.db — verify the --workspace path; recovery never creates databases',
259
+ }, opts.json);
260
+ return;
261
+ }
262
+ if (opts.repairAudit) {
263
+ await repairAuditProjection(opts, workspaceDir);
264
+ return;
265
+ }
266
+ const isConfirm = opts.confirm ?? false;
267
+ // PRI-991 (P1-01): dry-run opens a STRICTLY read-only connection with
268
+ // bootstrap disabled — no mkdir, no WAL journal, no schema init/migration
269
+ // can happen from the file open onward. Confirm uses the controlled write
270
+ // connection (bootstrap likewise disabled: the DB is known to exist).
271
+ let closeHandle = null;
272
+ try {
273
+ const handle = await createRuntimeStateHandle({
274
+ workspaceDir,
275
+ readonly: !isConfirm,
276
+ bootstrapIfMissing: false,
277
+ });
278
+ closeHandle = handle.close;
279
+ const { stateManager } = handle;
280
+ if (!isConfirm) {
281
+ // Dry-run (default): pure read — no task mutation, no audit append.
282
+ const inspection = await inspectFailedTaskRecovery(stateManager, taskId);
283
+ const plannedChange = inspection.eligible && inspection.isExhausted === true
284
+ ? {
285
+ status: 'failed → pending',
286
+ attemptBudget: `${inspection.attemptCount}/${inspection.maxAttempts} → 0/${(inspection.maxAttempts ?? 0) + 3} (with --reset-budget)`,
287
+ audit: 'a durable recovery fact is written into the task metadata in the same transaction, then projected to .state/recovery_actions.jsonl',
288
+ }
289
+ : inspection.eligible
290
+ ? {
291
+ status: 'failed → pending',
292
+ attemptBudget: `${inspection.attemptCount}/${inspection.maxAttempts} → 0/${inspection.maxAttempts}`,
293
+ audit: 'a durable recovery fact is written into the task metadata in the same transaction, then projected to .state/recovery_actions.jsonl',
294
+ }
295
+ : undefined;
296
+ const payload = {
297
+ ok: inspection.eligible,
298
+ mode: 'dry_run',
299
+ ...inspection,
300
+ plannedChange,
301
+ wouldWriteAudit: false,
302
+ workspace: workspaceDir,
303
+ ...(inspection.eligible
304
+ ? { nextAction: inspection.isExhausted === true
305
+ ? 'Recover with: pd runtime recovery failed-task --task-id <exact-task-id> --confirm --reset-budget'
306
+ : 'Recover with: pd runtime recovery failed-task --task-id <exact-task-id> --confirm' }
307
+ : {}),
308
+ };
309
+ if (!inspection.eligible) {
310
+ payload.reasonCode = inspection.reasonCode;
311
+ }
312
+ emit(payload, opts.json);
313
+ if (!inspection.eligible) {
314
+ process.exitCode = 1;
315
+ }
316
+ return;
317
+ }
318
+ // Confirm: precheck for precise structured refusals (and zero writes on
319
+ // refusal), then the strict single-task mutation (full-snapshot CAS).
320
+ const inspection = await inspectFailedTaskRecovery(stateManager, taskId);
321
+ if (!inspection.eligible) {
322
+ refusal({
323
+ reason: 'Task is not recoverable in its current state',
324
+ reasonCode: inspection.reasonCode,
325
+ taskId,
326
+ taskKind: inspection.taskKind,
327
+ status: inspection.status,
328
+ attemptCount: inspection.attemptCount,
329
+ maxAttempts: inspection.maxAttempts,
330
+ nextAction: inspection.nextAction,
331
+ }, opts.json);
332
+ return;
333
+ }
334
+ // PRI-991 (r2 P1-02): BEFORE the CAS, project any durable facts from
335
+ // PRIOR recoveries that never made it to the JSONL — otherwise this
336
+ // recovery's array append (bounded retention) could be the last holder
337
+ // of an unprojected actionId. Projection failure aborts the confirm
338
+ // BEFORE any state change (cli-5): the Owner fixes the sink and retries.
339
+ const preTask = await stateManager.getTask(taskId);
340
+ const prePi = preTask ? hydratePITaskRecord(preTask) : null;
341
+ const preRecords = prePi?.failedTaskRecoveries ?? [];
342
+ if (preRecords.length > 0) {
343
+ const pre = projectRecoveryRecordsOnce(workspaceDir, taskId, preRecords);
344
+ if (!pre.ok) {
345
+ refusal({
346
+ reason: pre.reason ?? 'Audit projection failed before recovery',
347
+ reasonCode: pre.reasonCode ?? 'audit_projection_failed',
348
+ taskId,
349
+ nextAction: `${pre.nextAction} The recovery was NOT executed (zero state change) — retry after the audit sink is writable`,
350
+ }, opts.json);
351
+ return;
352
+ }
353
+ }
354
+ const outcome = await recoverSingleFailedTask(stateManager, taskId, {
355
+ resetBudget: opts.resetBudget ?? false,
356
+ // r2 P1-01: the label rides the durable fact in the SAME CAS.
357
+ operator: opts.decidedBy,
358
+ });
359
+ if (outcome.status !== 'recovered') {
360
+ // Lost a race against a concurrent writer, or a guard fired at mutation
361
+ // time — structured refusal, zero writes.
362
+ refusal({
363
+ reason: 'Task recovery refused (guard fired or state changed between precheck and mutation)',
364
+ reasonCode: outcome.status === 'not_found' ? 'task_not_found' : outcome.status,
365
+ taskId,
366
+ ...(outcome.status === 'not_failed' ? { currentStatus: outcome.previousStatus } : {}),
367
+ ...(outcome.status === 'budget_exhausted'
368
+ ? { nextAction: outcome.nextAction }
369
+ : { nextAction: 'Re-run the dry-run to inspect the current state' }),
370
+ }, opts.json);
371
+ return;
372
+ }
373
+ // PRI-991 (P1-03): the durable audit fact is ALREADY committed inside the
374
+ // recovery CAS (task metadata failedTaskRecoveries, actionId shared).
375
+ // The JSONL line is a projection under the projection lock; a projection
376
+ // failure must never misreport the recovery as failed — and never asks
377
+ // the Owner to re-confirm.
378
+ const current = await stateManager.getTask(taskId);
379
+ const projected = projectRecoveryRecordsOnce(workspaceDir, taskId, [
380
+ {
381
+ actionId: outcome.actionId,
382
+ recoveredAt: new Date().toISOString(),
383
+ operator: opts.decidedBy?.trim() ? opts.decidedBy.trim() : null,
384
+ previousStatus: 'failed',
385
+ previousAttemptCount: outcome.previousAttemptCount,
386
+ previousMaxAttempts: outcome.previousMaxAttempts,
387
+ newMaxAttempts: outcome.newMaxAttempts,
388
+ budgetResetApplied: outcome.budgetResetApplied,
389
+ },
390
+ ]);
391
+ const auditStatus = projected.ok ? 'projected' : 'recovered_but_audit_failed';
392
+ const auditFailureReason = projected.ok ? undefined : projected.reason;
393
+ const nextAction = buildRecoveryNextAction({
394
+ taskId,
395
+ taskKind: outcome.taskKind,
396
+ inputRef: current?.inputRef ?? null,
397
+ diagnosticJson: typeof current?.diagnosticJson === 'string' ? current.diagnosticJson : null,
398
+ });
399
+ emit({
400
+ ok: true,
401
+ mode: 'confirm',
402
+ taskId,
403
+ taskKind: outcome.taskKind,
404
+ previousStatus: outcome.previousStatus,
405
+ newStatus: current?.status ?? 'pending',
406
+ attemptCount: current?.attemptCount ?? 0,
407
+ maxAttempts: current?.maxAttempts ?? outcome.newMaxAttempts,
408
+ previousAttemptCount: outcome.previousAttemptCount,
409
+ previousMaxAttempts: outcome.previousMaxAttempts,
410
+ newMaxAttempts: outcome.newMaxAttempts,
411
+ budgetResetApplied: outcome.budgetResetApplied,
412
+ auditStatus,
413
+ ...(auditStatus === 'recovered_but_audit_failed'
414
+ ? {
415
+ auditFailureReason,
416
+ auditActionId: outcome.actionId,
417
+ decidedByLabel: opts.decidedBy ?? null,
418
+ nextAction: `Recovery IS committed (durable fact in the task metadata, actionId ${outcome.actionId}); the JSONL projection failed (${auditFailureReason ?? 'unknown'}). Do NOT re-run --confirm. Repair with: pd runtime recovery failed-task --task-id <exact-task-id> --repair-audit`,
419
+ }
420
+ : {
421
+ auditActionId: outcome.actionId,
422
+ nextAction,
423
+ }),
424
+ workspace: workspaceDir,
425
+ }, opts.json);
426
+ }
427
+ catch (err) {
428
+ if (isSqliteUnavailable(err)) {
429
+ refusal({
430
+ reason: err instanceof Error ? err.message : String(err),
431
+ reasonCode: 'storage_unavailable',
432
+ nextAction: 'The database could not be opened in its requested mode (readonly for --dry-run); recovery never migrates or bootstraps schemas',
433
+ }, opts.json);
434
+ return;
435
+ }
436
+ refusal({
437
+ reason: err instanceof Error ? err.message : String(err),
438
+ reasonCode: 'recovery_error',
439
+ nextAction: 'Check the workspace path and DB connectivity, then re-run the dry-run',
440
+ }, opts.json);
441
+ }
442
+ finally {
443
+ if (closeHandle) {
444
+ await closeHandle();
445
+ }
446
+ }
447
+ }
448
+ /**
449
+ * Register `failed-task` (singular) under `pd runtime recovery` (PRI-991).
450
+ * The exact single-task counterpart of the batch `failed-tasks` command:
451
+ * the two coexist and the batch command is unchanged.
452
+ */
453
+ export function registerRuntimeRecoveryFailedTaskCommand(recoveryCmd, handlers = {}) {
454
+ const handler = handlers.failedTask ?? handleRuntimeRecoveryFailedTask;
455
+ recoveryCmd
456
+ .command('failed-task')
457
+ .description('Recover ONE failed task by exact taskId (dry-run default; exhausted tasks additionally require --reset-budget)')
458
+ .requiredOption('--task-id <taskId>', 'Exact task id — no prefix, no wildcard, no fallback to batch recovery')
459
+ .option('-w, --workspace <path>', 'Workspace directory')
460
+ .option('--dry-run', 'Strictly read-only precheck: opens the DB read-only (never creates/migrates), shows the exact planned change (default)')
461
+ .option('--confirm', 'Actually recover this one task (full-snapshot CAS; durable audit fact + JSONL projection)')
462
+ .option('--reset-budget', 'Explicitly reset an exhausted attempt budget (required when attempts are exhausted; records previousAttemptCount in the audit)')
463
+ .option('--repair-audit', 'Idempotently re-project the JSONL audit line from the durable recovery fact in the task metadata (never mutates task state)')
464
+ .option('--decidedBy <label>', 'Operator-provided label recorded in the audit log (a label, NOT an authenticated identity)')
465
+ .option('--json', 'Output raw JSON')
466
+ .action(async (opts) => {
467
+ await handler(opts);
468
+ });
469
+ }
470
+ //# sourceMappingURL=runtime-recovery-failed-task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-recovery-failed-task.js","sourceRoot":"","sources":["../../src/commands/runtime-recovery-failed-task.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,30 @@ interface RecoveryFailedTasksOptions {
5
5
  force?: boolean;
6
6
  json?: boolean;
7
7
  }
8
+ /**
9
+ * PRI-674 review P2: per-kind execution guidance must point at commands that
10
+ * actually support the recovered task kind (cli-6-output-next-action).
11
+ *
12
+ * Verified against real command surfaces:
13
+ * - `pd runtime internalization run-once` supports ONLY the 6 peer runner
14
+ * kinds (SUPPORTED_RUNNERS in runtime-internalization-run-once.ts).
15
+ * - `pd diagnose run --task-id <id>` is the only diagnostician execution
16
+ * entry (SplitDiagnosticianRunner runs the full A→B→C pipeline from the
17
+ * PARENT task; running a diag_* stage as parent would create bogus nested
18
+ * stage tasks).
19
+ * - diag_* stage linkage: persisted inputRef = parent task ID
20
+ * (SplitDiagnosticianRunner.ensureSubTask), with the
21
+ * diag_<stage>-<parentTaskId> ID convention as fallback. When the parent
22
+ * cannot be resolved we say so instead of printing a guessed command.
23
+ * PRI-991 (P2-B): exported and reused by the single-task recovery command so
24
+ * both recovery surfaces emit IDENTICAL per-kind execution guidance — no
25
+ * second guidance authority.
26
+ */
27
+ export declare function buildExecutionNextAction(t: {
28
+ taskId: string;
29
+ taskKind: string;
30
+ inputRef: string | null;
31
+ }): string;
8
32
  export declare function handleRuntimeRecoveryFailedTasks(opts: RecoveryFailedTasksOptions): Promise<void>;
9
33
  export {};
10
34
  //# sourceMappingURL=runtime-recovery-failed-tasks.d.ts.map
@@ -1 +1 @@
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
+ {"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;AAgBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,MAAM,CAuBjH;AAED,wBAAsB,gCAAgC,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyLtG"}
@@ -18,8 +18,11 @@ const DIAG_STAGE_ID_PREFIXES = ['diag_rootcause-', 'diag_distiller-', 'diag_rout
18
18
  * (SplitDiagnosticianRunner.ensureSubTask), with the
19
19
  * diag_<stage>-<parentTaskId> ID convention as fallback. When the parent
20
20
  * cannot be resolved we say so instead of printing a guessed command.
21
+ * PRI-991 (P2-B): exported and reused by the single-task recovery command so
22
+ * both recovery surfaces emit IDENTICAL per-kind execution guidance — no
23
+ * second guidance authority.
21
24
  */
22
- function buildExecutionNextAction(t) {
25
+ export function buildExecutionNextAction(t) {
23
26
  // Branch on the authoritative taskKind, never on taskId shape.
24
27
  if (isDiagnosticianStageKind(t.taskKind)) {
25
28
  // Parent from persisted inputRef; fallback: diag_<stage>-<parentTaskId>
@@ -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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"}
@@ -51,6 +51,7 @@ import { handleRuntimeDiagnosticsExport } from './commands/runtime-diagnostics-e
51
51
  import { registerRuntimeCompatibilityScanCommand } from './commands/runtime-compatibility-scan.js';
52
52
  import { handleRuntimeRecoverySweep } from './commands/runtime-recovery.js';
53
53
  import { handleRuntimeRecoveryFailedTasks } from './commands/runtime-recovery-failed-tasks.js';
54
+ import { registerRuntimeRecoveryFailedTaskCommand } from './commands/runtime-recovery-failed-task.js';
54
55
  import { handleRuntimeArtifactRepair } from './commands/runtime-artifact-repair.js';
55
56
  import { handleRuntimeActivationDeactivate, handleRuntimeActivationList, handleRuntimeActivationEdit, registerRuntimeActivationPromoteCommand, registerRuntimeActivationDeactivateCommand, registerRuntimeActivationListCommand, registerRuntimeActivationDispatchCommand, registerRuntimeActivationApproveCommand, } from './commands/runtime-activation.js';
56
57
  import { handleProvenChannelBaseline } from './commands/proven-channel-baseline.js';
@@ -849,6 +850,10 @@ recoveryCmd
849
850
  json: opts.json,
850
851
  });
851
852
  });
853
+ // PRI-991: exact single-task counterpart of `failed-tasks`. A batch --force
854
+ // resets the budget of EVERY exhausted failed task; this command recovers
855
+ // exactly one Owner-selected task (CAS-guarded, audited, dry-run default).
856
+ registerRuntimeRecoveryFailedTaskCommand(recoveryCmd);
852
857
  diagnosticsCmd
853
858
  .command('export')
854
859
  .description('Export diagnostic bundle for AI assistant analysis')