@principles/core 1.288.1 → 1.289.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/runtime-v2/bridge-result-shaper.d.ts +8 -0
  2. package/dist/runtime-v2/bridge-result-shaper.d.ts.map +1 -1
  3. package/dist/runtime-v2/bridge-result-shaper.js +61 -3
  4. package/dist/runtime-v2/bridge-result-shaper.js.map +1 -1
  5. package/dist/runtime-v2/candidate-intake-service.d.ts +62 -2
  6. package/dist/runtime-v2/candidate-intake-service.d.ts.map +1 -1
  7. package/dist/runtime-v2/candidate-intake-service.js +234 -77
  8. package/dist/runtime-v2/candidate-intake-service.js.map +1 -1
  9. package/dist/runtime-v2/index.d.ts +2 -0
  10. package/dist/runtime-v2/index.d.ts.map +1 -1
  11. package/dist/runtime-v2/index.js +5 -0
  12. package/dist/runtime-v2/index.js.map +1 -1
  13. package/dist/runtime-v2/pain-signal-bridge.d.ts +28 -0
  14. package/dist/runtime-v2/pain-signal-bridge.d.ts.map +1 -1
  15. package/dist/runtime-v2/pain-signal-bridge.js +144 -1
  16. package/dist/runtime-v2/pain-signal-bridge.js.map +1 -1
  17. package/dist/runtime-v2/pain-signal-runtime-factory.d.ts +35 -6
  18. package/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
  19. package/dist/runtime-v2/pain-signal-runtime-factory.js +162 -14
  20. package/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
  21. package/dist/runtime-v2/pain-to-principle-service.d.ts +10 -0
  22. package/dist/runtime-v2/pain-to-principle-service.d.ts.map +1 -1
  23. package/dist/runtime-v2/pain-to-principle-service.js +11 -1
  24. package/dist/runtime-v2/pain-to-principle-service.js.map +1 -1
  25. package/dist/telemetry-event.d.ts +2 -2
  26. package/dist/telemetry-event.d.ts.map +1 -1
  27. package/dist/telemetry-event.js +5 -0
  28. package/dist/telemetry-event.js.map +1 -1
  29. package/package.json +1 -1
@@ -169,13 +169,38 @@ export class CandidateIntakeService {
169
169
  #stateManager;
170
170
  #ledgerAdapter;
171
171
  #reuseDecision;
172
+ #reuseRecommendation;
172
173
  #reuseStateDir;
173
174
  constructor(opts) {
175
+ if (opts.reuseDecision && opts.reuseRecommendation) {
176
+ throw new CandidateIntakeError(INTAKE_ERROR_CODES.REUSE_CHECK_FAILED, 'reuseDecision and reuseRecommendation are mutually exclusive. nextAction: supply reuseRecommendation for automatic intake or reuseDecision for Owner decisions, never both.', { reason: 'reuse_gate_misconfigured' });
177
+ }
174
178
  this.#stateManager = opts.stateManager;
175
179
  this.#ledgerAdapter = opts.ledgerAdapter;
176
180
  this.#reuseDecision = opts.reuseDecision;
181
+ this.#reuseRecommendation = opts.reuseRecommendation;
177
182
  this.#reuseStateDir = opts.reuseStateDir;
178
183
  }
184
+ /**
185
+ * PRI-917 v0.3.3 — run the auto-path recommendation hook. A throwing hook
186
+ * (buggy builder, adapter crash) is an `unavailable` recommendation, NOT an
187
+ * intake failure: Rule 4 forbids evaluation failures from blocking learning.
188
+ */
189
+ async #runReuseRecommendation(claim, proposal) {
190
+ const hook = this.#reuseRecommendation;
191
+ if (!hook) {
192
+ return { status: 'unavailable', reason: 'reuse recommendation hook is not configured' };
193
+ }
194
+ try {
195
+ return await hook(claim, proposal);
196
+ }
197
+ catch (err) {
198
+ return {
199
+ status: 'unavailable',
200
+ reason: err instanceof Error ? err.message : String(err),
201
+ };
202
+ }
203
+ }
179
204
  /**
180
205
  * Consume a pending candidate: load it and its artifact, build a
181
206
  * LedgerPrincipleEntry, and write it to the ledger via the adapter — but ONLY
@@ -194,6 +219,19 @@ export class CandidateIntakeService {
194
219
  * - LEDGER_WRITE_FAILED when ledger write fails
195
220
  */
196
221
  async intake(candidateId) {
222
+ return this.#intake(candidateId, false);
223
+ }
224
+ /** Whether the automatic recommendation channel is configured for read-only review. */
225
+ get reuseReviewEnabled() {
226
+ return this.#reuseRecommendation !== undefined && !this.#reuseDecision;
227
+ }
228
+ /** Uses the same input validation and gate as intake, but never writes. */
229
+ async reviewReuse(candidateId) {
230
+ if (!this.reuseReviewEnabled)
231
+ return null;
232
+ return this.#intake(candidateId, true);
233
+ }
234
+ async #intake(candidateId, reviewOnly) {
197
235
  // 1. Input validation (E-01)
198
236
  if (!candidateId || typeof candidateId !== 'string' || candidateId.trim() === '') {
199
237
  throw new CandidateIntakeError(INTAKE_ERROR_CODES.INPUT_INVALID, 'candidateId must be a non-empty string', { candidateId });
@@ -310,15 +348,24 @@ export class CandidateIntakeService {
310
348
  if (this.#reuseDecision && !this.#reuseStateDir) {
311
349
  throw new CandidateIntakeError(INTAKE_ERROR_CODES.REUSE_CHECK_FAILED, `Reuse gate is misconfigured: reuseDecision was provided without reuseStateDir; no Principle was created for candidate ${candidateId}. nextAction: pass reuseStateDir, or remove reuseDecision to disable the gate.`, { candidateId, reason: 'reuse_gate_misconfigured' });
312
350
  }
351
+ if (this.#reuseRecommendation && !this.#reuseStateDir) {
352
+ throw new CandidateIntakeError(INTAKE_ERROR_CODES.REUSE_CHECK_FAILED, `Reuse gate is misconfigured: reuseRecommendation was provided without reuseStateDir; no Principle was created for candidate ${candidateId}. nextAction: pass reuseStateDir, or remove reuseRecommendation to disable the gate.`, { candidateId, reason: 'reuse_gate_misconfigured' });
353
+ }
313
354
  let reuseCheck = 'not_configured';
314
- if (this.#reuseDecision && this.#reuseStateDir) {
355
+ // PRI-939 Option A — outcome of the auto-path recommendation hook when it
356
+ // ran and the write proceeded (Rules 2-4). Undefined for not_configured /
357
+ // no_candidates / Owner-decision shapes. Returned on the ledger_entry
358
+ // result so the degradation reason survives past the gate.
359
+ let autoRecommendation;
360
+ if ((this.#reuseDecision || this.#reuseRecommendation) && this.#reuseStateDir) {
361
+ const reuseClaim = {
362
+ text: recommendation.text || candidate.description || '',
363
+ triggerPattern: recommendation.triggerPattern ?? '',
364
+ action: recommendation.action ?? '',
365
+ };
315
366
  let proposal;
316
367
  try {
317
- proposal = buildReuseProposal(candidateId, buildReuseShortlist({
318
- text: recommendation.text || candidate.description || '',
319
- triggerPattern: recommendation.triggerPattern ?? '',
320
- action: recommendation.action ?? '',
321
- }, this.#reuseStateDir,
368
+ proposal = buildReuseProposal(candidateId, buildReuseShortlist(reuseClaim, this.#reuseStateDir,
322
369
  // Single truth: the persisted candidate's own kind. Step 3b has
323
370
  // already proved eligibility fail-closed, so this is a restatement,
324
371
  // never a second source a caller can override.
@@ -328,88 +375,149 @@ export class CandidateIntakeService {
328
375
  throw new CandidateIntakeError(INTAKE_ERROR_CODES.REUSE_CHECK_FAILED, `Reuse check could not be completed for candidate ${candidateId}; no Principle was created. Cause: ${reuseErr instanceof Error ? reuseErr.message : String(reuseErr)}`, { candidateId, cause: reuseErr });
329
376
  }
330
377
  if (proposalNeedsDecision(proposal)) {
331
- // PRI-917 hardening: the decision function is an UNTRUSTED boundary
332
- // (an AI Owner parses model output), so its return value is validated
333
- // at runtime. Previously anything that was not exactly 'reuse' fell
334
- // through to 'create' — a malformed answer silently manufactured the
335
- // very duplicate this gate exists to prevent (rc-1/rc-2/rc-3).
336
- let decision;
337
- try {
338
- const raw = this.#reuseDecision(proposal);
339
- const validated = validateReuseDecision(raw);
340
- if (!validated.ok) {
341
- throw new CandidateIntakeError(INTAKE_ERROR_CODES.REUSE_CHECK_FAILED, `Reuse decision for candidate ${candidateId} is not a valid reuse|create decision (${validated.reason}); no Principle was created.`, { candidateId, reason: validated.reason });
378
+ // PRI-917 v0.3.3 (OD-PRI917-05) — AUTO-path Reuse Review Gate.
379
+ //
380
+ // Runs only when a recommendation hook is injected WITHOUT an Owner
381
+ // decision function (the production auto shape: bridge / diagnose /
382
+ // pain-retry). The hook is a RECOMMENDATION channel: `reuse` parks the
383
+ // candidate for the Owner (refused/reuse_pending_owner — no Principle,
384
+ // no evidence, candidate stays pending); every other outcome
385
+ // (create / uncertain / unavailable / selection outside the proposal)
386
+ // proceeds to CREATE exactly as the unconfigured gate would (Rules
387
+ // 2-4: uncertain keeps creating in phase 1; evaluation failure must
388
+ // never block learning; a hallucinated id is treated as unavailable).
389
+ if (this.#reuseRecommendation && !this.#reuseDecision) {
390
+ const recommendationOutcome = await this.#runReuseRecommendation(reuseClaim, proposal);
391
+ // PRI-939 Option A: carry the hook outcome out on the CREATE path so
392
+ // callers (bridge / pain-retry / diagnose) can surface the degradation
393
+ // instead of dropping the reason at the gate. Reassigned below when
394
+ // the gate proceeds past the park branch (Rules 2-4).
395
+ autoRecommendation = recommendationOutcome;
396
+ if (recommendationOutcome.status === 'recommended') {
397
+ const { recommendation: verdict, selectedPrincipleId, confidence } = recommendationOutcome;
398
+ if (verdict === 'reuse' &&
399
+ selectedPrincipleId !== undefined &&
400
+ proposal.candidates.some((entry) => entry.principleId === selectedPrincipleId)) {
401
+ return {
402
+ outcome: 'refused',
403
+ reason: 'reuse_pending_owner',
404
+ candidateId,
405
+ rawRecommendationKind: typeof candidate.rawRecommendationKind === 'string' ? candidate.rawRecommendationKind : null,
406
+ message: `Candidate ${candidateId} is a suspected duplicate of existing Principle ${selectedPrincipleId} ` +
407
+ `(semantic reuse recommendation, confidence ${confidence}). No Principle was created and no evidence ` +
408
+ 'was written; the candidate stays PENDING for the Owner. ' +
409
+ `nextAction: pd candidate review --candidate-id ${candidateId} --decide reuse|create --reason "..."`,
410
+ reuseProposal: proposal,
411
+ reuseRecommendation: recommendationOutcome,
412
+ };
413
+ }
414
+ // PRI-939 review fix (CodeRabbit): SPEC v0.3.3 treats a reuse
415
+ // verdict whose selection is outside the proposal as unavailable
416
+ // ("a hallucinated id is treated as unavailable", Rules 2-4). The
417
+ // CREATE still proceeds below, but the observability projection
418
+ // must report the degradation — a bare `recommended` would hide
419
+ // why duplicate protection did not run.
420
+ if (verdict === 'reuse') {
421
+ autoRecommendation = {
422
+ status: 'unavailable',
423
+ reason: `reuse selection ${selectedPrincipleId === undefined ? '(absent)' : selectedPrincipleId} ` +
424
+ 'is not in the proposal (hallucinated id treated as unavailable per SPEC v0.3.3)',
425
+ };
426
+ }
342
427
  }
343
- ({ decision } = validated);
428
+ // create / uncertain / unavailable / hallucinated id → Rules 2/3/4:
429
+ // CREATE proceeds (uncertain keeps creating in phase 1; evaluation
430
+ // failure must never block learning).
431
+ reuseCheck = 'recommended_create';
344
432
  }
345
- catch (decisionErr) {
346
- if (decisionErr instanceof CandidateIntakeError)
347
- throw decisionErr;
348
- // A throwing decision function (LLM timeout, parse crash) is a reuse
349
- // check failure, not an internal error: it must fail closed with a
350
- // candidate-scoped code rather than escaping as an arbitrary throw.
351
- throw new CandidateIntakeError(INTAKE_ERROR_CODES.REUSE_CHECK_FAILED, `Reuse decision for candidate ${candidateId} failed (${decisionErr instanceof Error ? decisionErr.message : String(decisionErr)}); no Principle was created.`, { candidateId, cause: decisionErr });
352
- }
353
- if (decision.decision === 'reuse') {
354
- const known = new Set(proposal.candidates.map((c) => c.principleId));
355
- if (!known.has(decision.selectedPrincipleId)) {
356
- // INV-R08: a selection outside the proposal fails closed. It must
357
- // NOT silently degrade into "create". This is a defect in the
358
- // reuse decision contract, not a malformed intake input, so it
359
- // carries REUSE_CHECK_FAILED rather than INPUT_INVALID — the
360
- // latter would file a governance error under "bad input".
361
- throw new CandidateIntakeError(INTAKE_ERROR_CODES.REUSE_CHECK_FAILED, `Reuse decision selected principle '${decision.selectedPrincipleId}' which is not in the proposal for candidate ${candidateId}; no Principle was created.`, { candidateId, selectedPrincipleId: decision.selectedPrincipleId, reason: 'selected_principle_not_in_proposal' });
362
- }
363
- // PRI-917 PR3B Phase 2 — materialise the verdict as durable evidence
364
- // BEFORE reporting it. A reuse verdict that is not persisted would
365
- // leave the resolution invisible: replay would re-ask the Owner, and
366
- // the SPEC §11/§12 asymmetry (REUSE must be auditable, CREATE's
367
- // artifact speaks for itself) would silently break. The write runs
368
- // INSIDE the ledger's single-writer lock (appendReuseEvidence) and is
369
- // fail-closed: an integrity/shape failure propagates and the
370
- // candidate stays pending — it NEVER degrades into creating a
371
- // Principle (INV-R03/INV-R08).
372
- const painId = await this.#resolveReusePainId(candidateId, candidate);
373
- let evidence;
433
+ else if (this.#reuseDecision) {
434
+ // PRI-917 hardening: the decision function is an UNTRUSTED boundary
435
+ // (an AI Owner parses model output), so its return value is validated
436
+ // at runtime. Previously anything that was not exactly 'reuse' fell
437
+ // through to 'create' — a malformed answer silently manufactured the
438
+ // very duplicate this gate exists to prevent (rc-1/rc-2/rc-3).
439
+ let decision;
374
440
  try {
375
- const appended = this.#ledgerAdapter.appendReuseEvidence(decision.selectedPrincipleId, {
376
- painId,
377
- candidateId,
378
- decision: 'reuse',
379
- actor: decision.actor,
380
- reason: decision.reason,
381
- decidedAt: decision.decidedAt,
382
- });
383
- // The writer either appended this candidate's entry or returned the
384
- // already-recorded one (concurrent-intake dedupe) — the entry for
385
- // THIS candidateId must be present; anything else is a broken
386
- // adapter and fails loud instead of reporting a fabricated record.
387
- const recorded = appended.reuseEvidence.find((e) => e.candidateId === candidateId);
388
- if (!recorded) {
389
- throw new Error(`appendReuseEvidence returned no evidence entry for candidate ${candidateId} (adapter contract violation)`);
441
+ const raw = this.#reuseDecision(proposal);
442
+ const validated = validateReuseDecision(raw);
443
+ if (!validated.ok) {
444
+ throw new CandidateIntakeError(INTAKE_ERROR_CODES.REUSE_CHECK_FAILED, `Reuse decision for candidate ${candidateId} is not a valid reuse|create decision (${validated.reason}); no Principle was created.`, { candidateId, reason: validated.reason });
390
445
  }
391
- evidence = recorded;
446
+ ({ decision } = validated);
392
447
  }
393
- catch (evidenceErr) {
394
- throw new CandidateIntakeError(INTAKE_ERROR_CODES.REUSE_CHECK_FAILED, `Reuse decision for candidate ${candidateId} could not be recorded on principle '${decision.selectedPrincipleId}'; no Principle was created and the decision is not durable. Cause: ${evidenceErr instanceof Error ? evidenceErr.message : String(evidenceErr)}`, { candidateId, selectedPrincipleId: decision.selectedPrincipleId, cause: evidenceErr });
448
+ catch (decisionErr) {
449
+ if (decisionErr instanceof CandidateIntakeError)
450
+ throw decisionErr;
451
+ // A throwing decision function (LLM timeout, parse crash) is a reuse
452
+ // check failure, not an internal error: it must fail closed with a
453
+ // candidate-scoped code rather than escaping as an arbitrary throw.
454
+ throw new CandidateIntakeError(INTAKE_ERROR_CODES.REUSE_CHECK_FAILED, `Reuse decision for candidate ${candidateId} failed (${decisionErr instanceof Error ? decisionErr.message : String(decisionErr)}); no Principle was created.`, { candidateId, cause: decisionErr });
455
+ }
456
+ if (decision.decision === 'reuse') {
457
+ const known = new Set(proposal.candidates.map((c) => c.principleId));
458
+ if (!known.has(decision.selectedPrincipleId)) {
459
+ // INV-R08: a selection outside the proposal fails closed. It must
460
+ // NOT silently degrade into "create". This is a defect in the
461
+ // reuse decision contract, not a malformed intake input, so it
462
+ // carries REUSE_CHECK_FAILED rather than INPUT_INVALID — the
463
+ // latter would file a governance error under "bad input".
464
+ throw new CandidateIntakeError(INTAKE_ERROR_CODES.REUSE_CHECK_FAILED, `Reuse decision selected principle '${decision.selectedPrincipleId}' which is not in the proposal for candidate ${candidateId}; no Principle was created.`, { candidateId, selectedPrincipleId: decision.selectedPrincipleId, reason: 'selected_principle_not_in_proposal' });
465
+ }
466
+ // PRI-917 PR3B Phase 2 — materialise the verdict as durable evidence
467
+ // BEFORE reporting it. A reuse verdict that is not persisted would
468
+ // leave the resolution invisible: replay would re-ask the Owner, and
469
+ // the SPEC §11/§12 asymmetry (REUSE must be auditable, CREATE's
470
+ // artifact speaks for itself) would silently break. The write runs
471
+ // INSIDE the ledger's single-writer lock (appendReuseEvidence) and is
472
+ // fail-closed: an integrity/shape failure propagates and the
473
+ // candidate stays pending — it NEVER degrades into creating a
474
+ // Principle (INV-R03/INV-R08).
475
+ const painId = await this.#resolveReusePainId(candidateId, candidate);
476
+ let evidence;
477
+ try {
478
+ const appended = this.#ledgerAdapter.appendReuseEvidence(decision.selectedPrincipleId, {
479
+ painId,
480
+ candidateId,
481
+ decision: 'reuse',
482
+ actor: decision.actor,
483
+ reason: decision.reason,
484
+ decidedAt: decision.decidedAt,
485
+ });
486
+ // The writer either appended this candidate's entry or returned the
487
+ // already-recorded one (concurrent-intake dedupe) — the entry for
488
+ // THIS candidateId must be present; anything else is a broken
489
+ // adapter and fails loud instead of reporting a fabricated record.
490
+ const recorded = appended.reuseEvidence.find((e) => e.candidateId === candidateId);
491
+ if (!recorded) {
492
+ throw new Error(`appendReuseEvidence returned no evidence entry for candidate ${candidateId} (adapter contract violation)`);
493
+ }
494
+ evidence = recorded;
495
+ }
496
+ catch (evidenceErr) {
497
+ throw new CandidateIntakeError(INTAKE_ERROR_CODES.REUSE_CHECK_FAILED, `Reuse decision for candidate ${candidateId} could not be recorded on principle '${decision.selectedPrincipleId}'; no Principle was created and the decision is not durable. Cause: ${evidenceErr instanceof Error ? evidenceErr.message : String(evidenceErr)}`, { candidateId, selectedPrincipleId: decision.selectedPrincipleId, cause: evidenceErr });
498
+ }
499
+ return {
500
+ outcome: 'refused',
501
+ reason: 'reuse_selected',
502
+ candidateId,
503
+ rawRecommendationKind: typeof candidate.rawRecommendationKind === 'string' ? candidate.rawRecommendationKind : null,
504
+ message: `Candidate ${candidateId} was resolved to existing Principle ${decision.selectedPrincipleId}; the reuse decision was recorded on that Principle's reuseEvidence and no new Principle was created. This candidate DOES target the Principle Ledger — review the reuse proposal, and do not re-run intake to force a new Principle.`,
505
+ reuseProposal: proposal,
506
+ selectedPrincipleId: decision.selectedPrincipleId,
507
+ reuseEvidence: evidence,
508
+ };
395
509
  }
396
- return {
397
- outcome: 'refused',
398
- reason: 'reuse_selected',
399
- candidateId,
400
- rawRecommendationKind: typeof candidate.rawRecommendationKind === 'string' ? candidate.rawRecommendationKind : null,
401
- message: `Candidate ${candidateId} was resolved to existing Principle ${decision.selectedPrincipleId}; the reuse decision was recorded on that Principle's reuseEvidence and no new Principle was created. This candidate DOES target the Principle Ledger — review the reuse proposal, and do not re-run intake to force a new Principle.`,
402
- reuseProposal: proposal,
403
- selectedPrincipleId: decision.selectedPrincipleId,
404
- reuseEvidence: evidence,
405
- };
510
+ reuseCheck = 'create_decided';
406
511
  }
407
- reuseCheck = 'create_decided';
408
512
  }
409
513
  else {
410
514
  reuseCheck = 'no_candidates';
411
515
  }
412
516
  }
517
+ // Replay review is read-only: create/uncertain/unavailable never resumes a
518
+ // ledger write, and the Owner verdict path is excluded by reviewReuse.
519
+ if (reviewOnly)
520
+ return null;
413
521
  // 5. Build 11-field LedgerPrincipleEntry (E-06)
414
522
  const entry = {
415
523
  id: randomUUID(),
@@ -427,7 +535,16 @@ export class CandidateIntakeService {
427
535
  // 6. Write to ledger via adapter (E-01, D-09)
428
536
  try {
429
537
  const written = this.#ledgerAdapter.writeProbationEntry(entry);
430
- return { outcome: 'ledger_entry', written: true, entry: written, reuseCheck };
538
+ return {
539
+ outcome: 'ledger_entry',
540
+ written: true,
541
+ entry: written,
542
+ reuseCheck,
543
+ // PRI-939 Option A: the hook outcome rides out on the CREATE result so
544
+ // the degradation (unavailable) reason reaches the Owner's output
545
+ // instead of dying at the gate. Undefined unless the auto-shape hook ran.
546
+ ...(autoRecommendation !== undefined ? { reuseRecommendation: autoRecommendation } : {}),
547
+ };
431
548
  }
432
549
  catch (err) {
433
550
  if (err instanceof CandidateIntakeError) {
@@ -466,6 +583,26 @@ export class CandidateIntakeService {
466
583
  catch (err) {
467
584
  throw new CandidateIntakeError(INTAKE_ERROR_CODES.REUSE_CHECK_FAILED, `Reuse decision for candidate ${candidateId} cannot be recorded: the pain diagnosis lookup failed. Cause: ${err instanceof Error ? err.message : String(err)}`, { candidateId, reason: 'reuse_pain_unresolvable', cause: err });
468
585
  }
586
+ if (diagnoses.length === 0) {
587
+ // PRI-917 v0.3.3 replay fix (R6 reality replay finding): production
588
+ // candidates are minted on the diag_router SUB-task, while pain_diagnoses
589
+ // rows are persisted under the TOP diagnostician task — a lookup by the
590
+ // candidate's own taskId can therefore NEVER resolve, making every fresh
591
+ // reuse decision fail closed. Walk the canonical router → diagnostician
592
+ // chain (same discipline as the seeding-side resolver: verify the task
593
+ // kind, read diagnosisId from the router run's validated outputPayload)
594
+ // and retry the lookup against the top task. rc-6: the walk only follows
595
+ // real task/run records, never parses ids out of task-id strings.
596
+ const topTaskId = await this.#resolveTopDiagnosticianTaskId(candidate);
597
+ if (topTaskId !== null) {
598
+ try {
599
+ diagnoses = await this.#stateManager.getDiagnosesByTaskId(topTaskId);
600
+ }
601
+ catch (err) {
602
+ throw new CandidateIntakeError(INTAKE_ERROR_CODES.REUSE_CHECK_FAILED, `Reuse decision for candidate ${candidateId} cannot be recorded: the pain diagnosis lookup for the top diagnostician task failed. Cause: ${err instanceof Error ? err.message : String(err)}`, { candidateId, reason: 'reuse_pain_unresolvable', cause: err });
603
+ }
604
+ }
605
+ }
469
606
  if (diagnoses.length === 0) {
470
607
  refuse('no persisted pain diagnosis exists for its task');
471
608
  }
@@ -483,5 +620,25 @@ export class CandidateIntakeService {
483
620
  }
484
621
  return latestPainId;
485
622
  }
623
+ /**
624
+ * PRI-917 v0.3.3 replay fix — resolve the TOP diagnostician task behind a
625
+ * diag_router sub-task. The sub-task's canonical parent link is its
626
+ * `inputRef` (verified against a real diagnostician task record — rc-6: the
627
+ * walk only follows persisted task records, never parses ids out of
628
+ * task-id strings). Returns `null` for any non-router task or broken link
629
+ * (the caller keeps the direct-lookup behavior).
630
+ */
631
+ async #resolveTopDiagnosticianTaskId(candidate) {
632
+ const task = await this.#stateManager.getTask(candidate.taskId);
633
+ if (!task || task.taskKind !== 'diag_router')
634
+ return null;
635
+ const parentTaskId = typeof task.inputRef === 'string' ? task.inputRef.trim() : '';
636
+ if (parentTaskId === '')
637
+ return null;
638
+ const topTask = await this.#stateManager.getTask(parentTaskId);
639
+ if (!topTask || topTask.taskKind !== 'diagnostician')
640
+ return null;
641
+ return topTask.taskId;
642
+ }
486
643
  }
487
644
  //# sourceMappingURL=candidate-intake-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"candidate-intake-service.js","sourceRoot":"","sources":["../../src/runtime-v2/candidate-intake-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"candidate-intake-service.js","sourceRoot":"","sources":["../../src/runtime-v2/candidate-intake-service.ts"],"names":[],"mappings":"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"}
@@ -61,6 +61,8 @@ export type { CandidateIntakeInput, CandidateIntakeOutput, LedgerPrincipleEntry,
61
61
  export { validateRecommendation } from './candidate-intake.js';
62
62
  export { CandidateIntakeService } from './candidate-intake-service.js';
63
63
  export type { CandidateIntakeServiceOptions } from './candidate-intake-service.js';
64
+ export { createReuseRecommendationHook } from './pain-signal-runtime-factory.js';
65
+ export type { ReuseRecommendationOutcome } from './candidate-intake-service.js';
64
66
  export { extractIntakeRecommendation } from './candidate-intake-service.js';
65
67
  export type { CandidateRecommendationExtraction, CandidateIntakeResult } from './candidate-intake-service.js';
66
68
  export { buildReuseProposal, proposalNeedsDecision } from './principle-reuse/reuse-proposal.js';