@principles/core 1.297.3 → 1.297.5

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 (63) hide show
  1. package/README.md +1 -1
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/prompt-builder/index.d.ts +1 -3
  5. package/dist/prompt-builder/index.d.ts.map +1 -1
  6. package/dist/prompt-builder/index.js +0 -1
  7. package/dist/prompt-builder/index.js.map +1 -1
  8. package/dist/prompt-builder/size-guard.d.ts +3 -4
  9. package/dist/prompt-builder/size-guard.d.ts.map +1 -1
  10. package/dist/prompt-builder/size-guard.js +7 -25
  11. package/dist/prompt-builder/size-guard.js.map +1 -1
  12. package/dist/prompt-builder/types.d.ts +1 -7
  13. package/dist/prompt-builder/types.d.ts.map +1 -1
  14. package/dist/runtime-v2/activation/index.d.ts +6 -0
  15. package/dist/runtime-v2/activation/index.d.ts.map +1 -1
  16. package/dist/runtime-v2/activation/index.js +3 -0
  17. package/dist/runtime-v2/activation/index.js.map +1 -1
  18. package/dist/runtime-v2/activation/openclaw-promotion-checks.d.ts +75 -0
  19. package/dist/runtime-v2/activation/openclaw-promotion-checks.d.ts.map +1 -1
  20. package/dist/runtime-v2/activation/openclaw-promotion-checks.js +131 -37
  21. package/dist/runtime-v2/activation/openclaw-promotion-checks.js.map +1 -1
  22. package/dist/runtime-v2/activation/production-gate-deps.d.ts.map +1 -1
  23. package/dist/runtime-v2/activation/production-gate-deps.js +7 -3
  24. package/dist/runtime-v2/activation/production-gate-deps.js.map +1 -1
  25. package/dist/runtime-v2/activation/recovery-composition.d.ts +54 -0
  26. package/dist/runtime-v2/activation/recovery-composition.d.ts.map +1 -0
  27. package/dist/runtime-v2/activation/recovery-composition.js +129 -0
  28. package/dist/runtime-v2/activation/recovery-composition.js.map +1 -0
  29. package/dist/runtime-v2/activation/recovery-control-surfaces.d.ts +62 -0
  30. package/dist/runtime-v2/activation/recovery-control-surfaces.d.ts.map +1 -0
  31. package/dist/runtime-v2/activation/recovery-control-surfaces.js +84 -0
  32. package/dist/runtime-v2/activation/recovery-control-surfaces.js.map +1 -0
  33. package/dist/runtime-v2/activation/rulecode-shadow-summary.d.ts +13 -1
  34. package/dist/runtime-v2/activation/rulecode-shadow-summary.d.ts.map +1 -1
  35. package/dist/runtime-v2/activation/rulecode-shadow-summary.js +24 -1
  36. package/dist/runtime-v2/activation/rulecode-shadow-summary.js.map +1 -1
  37. package/dist/runtime-v2/index.d.ts +2 -5
  38. package/dist/runtime-v2/index.d.ts.map +1 -1
  39. package/dist/runtime-v2/index.js +1 -5
  40. package/dist/runtime-v2/index.js.map +1 -1
  41. package/dist/runtime-v2/recovery-actions-log.d.ts.map +1 -1
  42. package/dist/runtime-v2/recovery-actions-log.js +2 -3
  43. package/dist/runtime-v2/recovery-actions-log.js.map +1 -1
  44. package/dist/runtime-v2/trajectory-schema.d.ts.map +1 -1
  45. package/dist/runtime-v2/trajectory-schema.js +12 -1
  46. package/dist/runtime-v2/trajectory-schema.js.map +1 -1
  47. package/dist/runtime-v2/types/event-types.d.ts +10 -0
  48. package/dist/runtime-v2/types/event-types.d.ts.map +1 -1
  49. package/dist/runtime-v2/types/event-types.js +1 -0
  50. package/dist/runtime-v2/types/event-types.js.map +1 -1
  51. package/package.json +1 -1
  52. package/dist/prompt-builder/principle-selection.d.ts +0 -68
  53. package/dist/prompt-builder/principle-selection.d.ts.map +0 -1
  54. package/dist/prompt-builder/principle-selection.js +0 -140
  55. package/dist/prompt-builder/principle-selection.js.map +0 -1
  56. package/dist/runtime-v2/pruning-mask.d.ts +0 -27
  57. package/dist/runtime-v2/pruning-mask.d.ts.map +0 -1
  58. package/dist/runtime-v2/pruning-mask.js +0 -59
  59. package/dist/runtime-v2/pruning-mask.js.map +0 -1
  60. package/dist/runtime-v2/pruning-review-log.d.ts +0 -41
  61. package/dist/runtime-v2/pruning-review-log.d.ts.map +0 -1
  62. package/dist/runtime-v2/pruning-review-log.js +0 -106
  63. package/dist/runtime-v2/pruning-review-log.js.map +0 -1
package/README.md CHANGED
@@ -31,7 +31,7 @@ Three automated layers prevent I/O from leaking into core:
31
31
  | `sqlite-state-store` | `runtime-v2/store/sqlite-connection.ts`, `runtime-v2/store/runtime-state-manager.ts` | runtime-v2 state.db connection + manager |
32
32
  | `read-model` | 5 `*read-model*.ts` files | Read-only composite models querying state.db + ledger |
33
33
  | `audit-observability` | `candidate-audit.ts`, `pain-signal-observability.ts` | Audit + pain signal observability writers |
34
- | `remediation-review` | `internalization-integrity-remediation.ts`, `pruning-review-log.ts` | Integrity remediation + pruning review log |
34
+ | `remediation-review` | `internalization-integrity-remediation.ts`, `recovery-actions-log.ts` | Integrity remediation + owner-action audit log |
35
35
 
36
36
  ### Adding a new I/O file (rare — prefer plugin)
37
37
 
package/dist/index.d.ts CHANGED
@@ -12,7 +12,7 @@
12
12
  * import { RuntimeStateManager, SqliteTaskStore } from '@principles/core';
13
13
  */
14
14
  export { buildAttitudeDirective, detectCorrectionCue, escapeXml, extractMessageContent, isMinimalTrigger, truncateInjectionToBudget, isValidModelFormat, resolveModelFromConfig, } from './prompt-builder/index.js';
15
- export type { PromptInjectionPart, SizeGuardOptions, CoreLogger, ModelConfigObject } from './prompt-builder/index.js';
15
+ export type { SizeGuardOptions, CoreLogger, ModelConfigObject } from './prompt-builder/index.js';
16
16
  export { matchEmpathyKeywords, createDefaultKeywordStore, applyKeywordUpdates, shouldTriggerOptimization, getKeywordStoreSummary, EMPATHY_SEED_KEYWORDS, DEFAULT_EMPATHY_KEYWORD_CONFIG, scoreToSeverity, severityToPenalty, normalizeSeverity, } from './prompt-builder/index.js';
17
17
  export type { EmpathyKeywordStore, EmpathyKeywordEntry, EmpathyKeywordStats, EmpathyMatchResult, EmpathyKeywordUpdate, EmpathyOptimizationResult, SeedKeywordEntry, EmpathyKeywordConfig, } from './prompt-builder/index.js';
18
18
  export { extractVersion, extractDate, extractSummary, parseWorkingMemorySection, workingMemoryToInjection, extractMilestones, validateCurrentFocus, mergeWorkingMemory, compressFocusContent, DEFAULT_FOCUS_COMPRESSION_OPTIONS, } from './prompt-builder/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,SAAS,EACT,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGjG,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,8BAA8B,EAC9B,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,cAAc,EACd,WAAW,EACX,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,iCAAiC,GAClC,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACpH,YAAY,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAOlG,OAAO,EACL,yBAAyB,EACzB,SAAS,EACT,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,SAAS,EACT,iCAAiC,EACjC,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,iCAAiC,GAClC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,oCAAoC,EACpC,2BAA2B,EAC3B,wBAAwB,EACxB,iCAAiC,EACjC,2BAA2B,EAC3B,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,eAAe,EACf,SAAS,EACT,2BAA2B,EAC3B,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,WAAW,EACX,OAAO,EACP,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC9B,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAGxE,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AACxF,YAAY,EACV,SAAS,EACT,eAAe,EACf,oBAAoB,GACrB,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,QAAQ,EACR,SAAS,GACV,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AAG7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG3E,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAMzE,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC"}
@@ -11,8 +11,7 @@
11
11
  * PRI-81 Empathy Keyword Matching Migration (Phase A)
12
12
  * PRI-81 Focus Compression Migration (Phase B)
13
13
  */
14
- export type { PromptInjectionPart, SizeGuardOptions, TruncateResult } from './types.js';
15
- export type { InjectablePrinciple, PrincipleSelectionResult } from './principle-selection.js';
14
+ export type { SizeGuardOptions, TruncateResult } from './types.js';
16
15
  export type { RoutingInput, RoutingClassification } from './routing-guidance.js';
17
16
  export type { EmpathyKeywordStore, EmpathyKeywordEntry, EmpathyKeywordStats, EmpathyMatchResult, EmpathyKeywordUpdate, EmpathyOptimizationResult, SeedKeywordEntry, EmpathyKeywordConfig } from './empathy-types.js';
18
17
  export type { FileArtifact, WorkingMemorySnapshot, FocusCompressionOptions, FocusCompressionResult } from './focus-compression.js';
@@ -23,7 +22,6 @@ export { escapeXml } from './xml-escape.js';
23
22
  export { extractMessageContent } from './message-extraction.js';
24
23
  export { isMinimalTrigger } from './minimal-trigger.js';
25
24
  export { truncateInjectionToBudget } from './size-guard.js';
26
- export { formatPrinciple, selectPrinciplesForInjection, DEFAULT_PRINCIPLE_BUDGET } from './principle-selection.js';
27
25
  export { containsKeyword, computeCombinedText, classifyTaskKind, buildReason, buildBlockers, READER_KEYWORDS, EDITOR_KEYWORDS, HIGH_ENTROPY_KEYWORDS } from './routing-guidance.js';
28
26
  export { isValidModelFormat, resolveModelFromConfig } from './model-config.js';
29
27
  export { matchEmpathyKeywords, createDefaultKeywordStore, applyKeywordUpdates, shouldTriggerOptimization, getKeywordStoreSummary } from './empathy-keyword-matching.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompt-builder/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACxF,YAAY,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC9F,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACjF,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACrN,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACnI,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACnH,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACpL,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAG/E,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACxK,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGlJ,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompt-builder/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACjF,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACrN,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACnI,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACpL,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAG/E,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACxK,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGlJ,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -18,7 +18,6 @@ export { escapeXml } from './xml-escape.js';
18
18
  export { extractMessageContent } from './message-extraction.js';
19
19
  export { isMinimalTrigger } from './minimal-trigger.js';
20
20
  export { truncateInjectionToBudget } from './size-guard.js';
21
- export { formatPrinciple, selectPrinciplesForInjection, DEFAULT_PRINCIPLE_BUDGET } from './principle-selection.js';
22
21
  export { containsKeyword, computeCombinedText, classifyTaskKind, buildReason, buildBlockers, READER_KEYWORDS, EDITOR_KEYWORDS, HIGH_ENTROPY_KEYWORDS } from './routing-guidance.js';
23
22
  export { isValidModelFormat, resolveModelFromConfig } from './model-config.js';
24
23
  // PRI-81 Phase A: Empathy keyword matching
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompt-builder/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,YAAY;AACZ,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACnH,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACpL,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,2CAA2C;AAC3C,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACxK,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAElJ,oCAAoC;AACpC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompt-builder/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,YAAY;AACZ,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACpL,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,2CAA2C;AAC3C,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACxK,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAElJ,oCAAoC;AACpC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -10,10 +10,9 @@
10
10
  * 1. project_context (always stripped first when over limit)
11
11
  * 1.5. intent_block (PRI-467: always stripped, sits between project_context and thinking_os)
12
12
  * 2. thinking_os (only in diag mode)
13
- * 3. evolution_principles (only in diag mode)
14
- * 4. reflection_log (only in diag mode)
15
- * 5. reason: line truncation (only in diag mode, when reason: line > 129 chars)
16
- * 6. fallback: only replaces appendSystemContext — prependSystemContext and
13
+ * 3. reflection_log (only in diag mode)
14
+ * 4. reason: line truncation (only in diag mode, when reason: line > 129 chars)
15
+ * 5. fallback: only replaces appendSystemContext — prependSystemContext and
17
16
  * prependContext are ALWAYS preserved (matching plugin behavior)
18
17
  *
19
18
  * Phase: PRI-75 Prompt Injection SDK Migration Phase 1
@@ -1 +1 @@
1
- {"version":3,"file":"size-guard.d.ts","sourceRoot":"","sources":["../../src/prompt-builder/size-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAInE;;;;;;;;;;;;GAYG;AAEH,wBAAgB,yBAAyB,CACvC,oBAAoB,EAAE,MAAM,EAC5B,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,cAAc,CA4IhB"}
1
+ {"version":3,"file":"size-guard.d.ts","sourceRoot":"","sources":["../../src/prompt-builder/size-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAInE;;;;;;;;;;;;GAYG;AAEH,wBAAgB,yBAAyB,CACvC,oBAAoB,EAAE,MAAM,EAC5B,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,cAAc,CA0HhB"}
@@ -10,10 +10,9 @@
10
10
  * 1. project_context (always stripped first when over limit)
11
11
  * 1.5. intent_block (PRI-467: always stripped, sits between project_context and thinking_os)
12
12
  * 2. thinking_os (only in diag mode)
13
- * 3. evolution_principles (only in diag mode)
14
- * 4. reflection_log (only in diag mode)
15
- * 5. reason: line truncation (only in diag mode, when reason: line > 129 chars)
16
- * 6. fallback: only replaces appendSystemContext — prependSystemContext and
13
+ * 3. reflection_log (only in diag mode)
14
+ * 4. reason: line truncation (only in diag mode, when reason: line > 129 chars)
15
+ * 5. fallback: only replaces appendSystemContext — prependSystemContext and
17
16
  * prependContext are ALWAYS preserved (matching plugin behavior)
18
17
  *
19
18
  * Phase: PRI-75 Prompt Injection SDK Migration Phase 1
@@ -85,7 +84,7 @@ export function truncateInjectionToBudget(prependSystemContext, prependContext,
85
84
  if (totalSize <= budget) {
86
85
  return { prependSystemContext: ps, prependContext: pc, appendSystemContext: ac, truncated: true, truncationLog };
87
86
  }
88
- // Steps 2-4: only in diagnostician priority mode
87
+ // Steps 2-3: only in diagnostician priority mode
89
88
  if (inDiagMode) {
90
89
  // Step 2 — strip thinking_os
91
90
  if (blocks?.thinkingOsContent && ac.includes('<thinking_os>')) {
@@ -104,24 +103,7 @@ export function truncateInjectionToBudget(prependSystemContext, prependContext,
104
103
  if (totalSize <= budget) {
105
104
  return { prependSystemContext: ps, prependContext: pc, appendSystemContext: ac, truncated: true, truncationLog };
106
105
  }
107
- // Step 3 — strip evolution_principles
108
- if (blocks?.evolutionPrinciplesContent && ac.includes('<evolution_principles>')) {
109
- const marker = `<evolution_principles>\n${blocks.evolutionPrinciplesContent}\n</evolution_principles>`;
110
- if (ac.includes(marker)) {
111
- ac = ac.replace(marker, '<evolution_principles>\n[stripped: evolution_principles]\n</evolution_principles>');
112
- truncationLog.push('evolution_principles');
113
- totalSize = ps.length + pc.length + ac.length;
114
- }
115
- }
116
- else if (ac.includes('<evolution_principles>')) {
117
- ac = ac.replace(/<evolution_principles>[\s\S]*?<\/evolution_principles>/, '<evolution_principles>\n[stripped: evolution_principles]\n</evolution_principles>');
118
- truncationLog.push('evolution_principles');
119
- totalSize = ps.length + pc.length + ac.length;
120
- }
121
- if (totalSize <= budget) {
122
- return { prependSystemContext: ps, prependContext: pc, appendSystemContext: ac, truncated: true, truncationLog };
123
- }
124
- // Step 4 — strip reflection_log
106
+ // Step 3 — strip reflection_log
125
107
  if (ac.includes('<reflection_log>')) {
126
108
  ac = ac.replace(/<reflection_log>[\s\S]*?<\/reflection_log>/, '<reflection_log>\n[stripped: reflection_log]\n</reflection_log>');
127
109
  truncationLog.push('reflection_log');
@@ -130,7 +112,7 @@ export function truncateInjectionToBudget(prependSystemContext, prependContext,
130
112
  if (totalSize <= budget) {
131
113
  return { prependSystemContext: ps, prependContext: pc, appendSystemContext: ac, truncated: true, truncationLog };
132
114
  }
133
- // Step 5 — truncate reason: lines to 129 chars (only in diag mode)
115
+ // Step 4 — truncate reason: lines to 129 chars (only in diag mode)
134
116
  if (totalSize > budget) {
135
117
  const lines = pc.split('\n');
136
118
  const truncatedLines = lines.map((line) => {
@@ -147,7 +129,7 @@ export function truncateInjectionToBudget(prependSystemContext, prependContext,
147
129
  }
148
130
  }
149
131
  }
150
- // Step 6 — FAIL-CLOSED: if still over budget, replace only appendSystemContext.
132
+ // Step 5 — FAIL-CLOSED: if still over budget, replace only appendSystemContext.
151
133
  // prependSystemContext and prependContext are ALWAYS preserved (matching plugin behavior).
152
134
  if (totalSize > budget) {
153
135
  const fallbackContext = `
@@ -1 +1 @@
1
- {"version":3,"file":"size-guard.js","sourceRoot":"","sources":["../../src/prompt-builder/size-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"size-guard.js","sourceRoot":"","sources":["../../src/prompt-builder/size-guard.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,8 @@
3
3
  *
4
4
  * Phase: PRI-75 Prompt Injection SDK Migration Phase 1
5
5
  */
6
- /*** @alpha Reserved for Phase 2 — selectPrinciplesForInjection will use PromptInjectionPart[] */
7
- export interface PromptInjectionPart {
8
- id: string;
9
- content: string;
10
- }
11
6
  export interface SizeGuardOptions {
12
- /** When true, also strip thinking_os, evolution_principles, reflection_log in addition to project_context */
7
+ /** When true, also strip thinking_os, reflection_log in addition to project_context */
13
8
  diagnosticianMode?: boolean;
14
9
  /** Content strings for exact-match replacement (matching plugin behavior) */
15
10
  blocks?: {
@@ -17,7 +12,6 @@ export interface SizeGuardOptions {
17
12
  /** PRI-467: intent block content (full buildIntentFrictionBlock output) for exact-match stripping */
18
13
  intentBlockContent?: string;
19
14
  thinkingOsContent?: string;
20
- evolutionPrinciplesContent?: string;
21
15
  };
22
16
  }
23
17
  export interface TruncateResult {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prompt-builder/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iGAAiG;AACjG,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,6GAA6G;IAC7G,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,6EAA6E;IAC7E,MAAM,CAAC,EAAE;QACP,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,qGAAqG;QACrG,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,0BAA0B,CAAC,EAAE,MAAM,CAAC;KACrC,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prompt-builder/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,uFAAuF;IACvF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,6EAA6E;IAC7E,MAAM,CAAC,EAAE;QACP,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,qGAAqG;QACrG,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB"}
@@ -19,6 +19,12 @@ export { evaluateRuleCodeSafetyCircuit, initialRuleCodeSafetyCircuitState } from
19
19
  export type { RuleCodeSafetySample, RuleCodeSafetyCircuitState, RuleCodeSafetyTripReason } from './rulecode-safety-circuit-breaker.js';
20
20
  export { collectOpenClawPromotionChecks } from './openclaw-promotion-checks.js';
21
21
  export type { HostLivenessContract } from './openclaw-promotion-checks.js';
22
+ export type { RecoveryReachabilityEvidence, RecoveryCapabilityEvidence, RecoveryCapabilityCoverage } from './openclaw-promotion-checks.js';
23
+ export { validateRecoveryCapabilityCoverage } from './openclaw-promotion-checks.js';
24
+ export { RECOVERY_CONTROL_SURFACES, validateRecoveryControlSurfaces } from './recovery-control-surfaces.js';
25
+ export type { RecoveryControlCapability, RecoveryControlSurface, RecoveryControlValidation } from './recovery-control-surfaces.js';
26
+ export { verifyRecoveryProbeComposition } from './recovery-composition.js';
27
+ export type { RecoveryCompositionArtifact, RecoveryCompositionInput, RecoveryCompositionProbe, RecoveryCompositionResult } from './recovery-composition.js';
22
28
  export { summarizeRuleCodeShadowEvents } from './rulecode-shadow-summary.js';
23
29
  export type { RuleCodeShadowSummary } from './rulecode-shadow-summary.js';
24
30
  export { buildPromotionEvidenceSnapshot, computeArtifactDigest, normalizeOwnerIdentity, verifyPiArtifactRowDigest } from './promotion-evidence-snapshot.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/activation/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/activation/index.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,9 @@ export { REQUIRED_PROMOTION_CHECK_IDS, evaluateRuleCodePromotionReadiness } from
11
11
  export { PromotionReadinessReader } from './promotion-readiness-reader.js';
12
12
  export { evaluateRuleCodeSafetyCircuit, initialRuleCodeSafetyCircuitState } from './rulecode-safety-circuit-breaker.js';
13
13
  export { collectOpenClawPromotionChecks } from './openclaw-promotion-checks.js';
14
+ export { validateRecoveryCapabilityCoverage } from './openclaw-promotion-checks.js';
15
+ export { RECOVERY_CONTROL_SURFACES, validateRecoveryControlSurfaces } from './recovery-control-surfaces.js';
16
+ export { verifyRecoveryProbeComposition } from './recovery-composition.js';
14
17
  export { summarizeRuleCodeShadowEvents } from './rulecode-shadow-summary.js';
15
18
  export { buildPromotionEvidenceSnapshot, computeArtifactDigest, normalizeOwnerIdentity, verifyPiArtifactRowDigest } from './promotion-evidence-snapshot.js';
16
19
  export { ApprovalQueue, decideAutoPromotion } from './approval-queue.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime-v2/activation/index.ts"],"names":[],"mappings":"AAiCA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,mCAAmC,EACnC,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,2EAA2E;AAC3E,OAAO,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAG3H,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAElF,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAMpF,OAAO,EAAE,4BAA4B,EAAE,kCAAkC,EAAE,MAAM,oCAAoC,CAAC;AAEtH,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,EAAE,6BAA6B,EAAE,iCAAiC,EAAE,MAAM,sCAAsC,CAAC;AAExH,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAEhF,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAG5J,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGpF,4EAA4E;AAC5E,0EAA0E;AAC1E,2DAA2D;AAC3D,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAEnG,oEAAoE;AACpE,4EAA4E;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAG7E,8EAA8E;AAC9E,iEAAiE;AACjE,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,cAAc,GACf,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EACL,2BAA2B,EAC3B,QAAQ,IAAI,gBAAgB,EAC5B,uBAAuB,EACvB,4BAA4B,EAC5B,YAAY,EACZ,aAAa,EACb,4BAA4B,GAC7B,MAAM,wCAAwC,CAAC;AAShD,4EAA4E;AAC5E,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,6CAA6C,EAC7C,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,mCAAmC,EACnC,mCAAmC,EACnC,mCAAmC,EACnC,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime-v2/activation/index.ts"],"names":[],"mappings":"AAiCA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,mCAAmC,EACnC,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,2EAA2E;AAC3E,OAAO,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAG3H,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAElF,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAMpF,OAAO,EAAE,4BAA4B,EAAE,kCAAkC,EAAE,MAAM,oCAAoC,CAAC;AAEtH,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,EAAE,6BAA6B,EAAE,iCAAiC,EAAE,MAAM,sCAAsC,CAAC;AAExH,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAGhF,OAAO,EAAE,kCAAkC,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAE5G,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAE3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAG5J,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGpF,4EAA4E;AAC5E,0EAA0E;AAC1E,2DAA2D;AAC3D,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAEnG,oEAAoE;AACpE,4EAA4E;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAG7E,8EAA8E;AAC9E,iEAAiE;AACjE,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,cAAc,GACf,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EACL,2BAA2B,EAC3B,QAAQ,IAAI,gBAAgB,EAC5B,uBAAuB,EACvB,4BAA4B,EAC5B,YAAY,EACZ,aAAa,EACb,4BAA4B,GAC7B,MAAM,wCAAwC,CAAC;AAShD,4EAA4E;AAC5E,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,6CAA6C,EAC7C,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,mCAAmC,EACnC,mCAAmC,EACnC,mCAAmC,EACnC,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,2BAA2B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { PIArtifactSnapshot } from './activation-types.js';
2
+ import type { ToolSemanticRegistry } from '../internalization/tool-semantic-registry.js';
2
3
  import type { PromotionReadinessCheck } from './promotion-readiness-evaluator.js';
3
4
  export interface HostLivenessContract {
4
5
  version: string;
@@ -20,11 +21,85 @@ interface OpenClawPromotionCheckInput {
20
21
  ownerIdentityConfigured: boolean;
21
22
  safetyControlsEnabled: boolean;
22
23
  hostContract: unknown;
24
+ /**
25
+ * SPEC-RULECODE-HOST-PROMOTION-001 B: the contract version the workspace
26
+ * host resolver handed out for THIS promotion target. The shape validator
27
+ * only accepts a contract whose version matches — a Codex (or WorkBuddy)
28
+ * workspace can no longer present the OpenClaw legacy contract (or vice
29
+ * versa) as its capability authority. Defaults to the OpenClaw legacy
30
+ * version so pre-existing callers keep their exact behavior.
31
+ */
32
+ expectedHostContractVersion?: string;
23
33
  existingLiveArtifacts: readonly PIArtifactSnapshot[];
34
+ /**
35
+ * Review R3/P1: composition verification executes through the production
36
+ * boundary (same hardened evaluator + mergeDecisions as the shared gate)
37
+ * and needs the project root for path normalization, exactly like the
38
+ * golden-trace replay does.
39
+ */
40
+ projectDir?: string;
41
+ toolSemantics?: ToolSemanticRegistry;
42
+ /**
43
+ * Review R3/P1: target-environment reachability evidence for the recovery
44
+ * controls, produced per readiness evaluation by the CALLER through a
45
+ * bounded, non-destructive probe (never cached, never destructive):
46
+ * - CLI channel: the caller spawns the real read-only status command and
47
+ * verifies it executes, parses, and reflects the TARGET workspace;
48
+ * - console channel: the caller proves the control's durable substrate is
49
+ * reachable from this process (and the authenticated review route served
50
+ * this request) — the full HTTP entry path from the Owner's browser is
51
+ * e2e/isolated-test evidence, not something a server can self-assert.
52
+ * Absent or failed evidence keeps emergency_controls FAILED — a registry
53
+ * proof in code is not an environment health fact.
54
+ */
55
+ recoveryReachability?: RecoveryReachabilityEvidence;
24
56
  validateProductionArtifact(artifact: PIArtifactSnapshot): Promise<{
25
57
  ok: boolean;
26
58
  }>;
27
59
  }
60
+ export interface RecoveryReachabilityEvidence {
61
+ source: 'cli-status-probe' | 'console-store-probe' | 'console-route-served';
62
+ ok: boolean;
63
+ /** The probe was observed to target the workspace this readiness run governs. */
64
+ workspaceMatched: boolean;
65
+ /** Bounded, structured detail for the failed case (rc-9). */
66
+ detail?: string;
67
+ /**
68
+ * Review R4/P1: PER-CAPABILITY evidence. One aggregate probe can never
69
+ * certify the whole recovery surface — a successful status query says
70
+ * nothing about the deactivate entry, and a readable pause store says
71
+ * nothing about the pause ROUTE. emergency_controls requires one valid,
72
+ * current, workspace-matched entry for EVERY capability in the
73
+ * recovery-control registry: missing, duplicate, unknown, channel-mismatched,
74
+ * or failed entries fail the check (fail closed).
75
+ */
76
+ capabilities?: readonly RecoveryCapabilityEvidence[];
77
+ }
78
+ export interface RecoveryCapabilityEvidence {
79
+ capabilityId: string;
80
+ channel: 'cli' | 'console';
81
+ ok: boolean;
82
+ workspaceMatched: boolean;
83
+ /** Bounded reason when ok/workspaceMatched is false (rc-9). */
84
+ detail?: string;
85
+ }
86
+ export type RecoveryCapabilityCoverage = {
87
+ ok: true;
88
+ } | {
89
+ ok: false;
90
+ reason: 'recovery_capability_evidence_incomplete' | 'recovery_reachability_unverified';
91
+ detail: string;
92
+ };
93
+ /**
94
+ * Review R4/P1: validate the per-capability evidence matrix against the
95
+ * recovery-control registry. Required: every registry capability present
96
+ * EXACTLY once, channel matching the registry, ok AND workspace-matched.
97
+ * Duplicates, unknown ids, missing entries, or channel mismatches are
98
+ * coverage failures; entries that ran but failed (or targeted another
99
+ * workspace) are reachability failures. Never cached — the caller produces
100
+ * this evidence fresh for every readiness evaluation.
101
+ */
102
+ export declare function validateRecoveryCapabilityCoverage(capabilities: readonly RecoveryCapabilityEvidence[] | undefined): RecoveryCapabilityCoverage;
28
103
  export declare function collectOpenClawPromotionChecks(artifact: PIArtifactSnapshot, input: OpenClawPromotionCheckInput): Promise<PromotionReadinessCheck[]>;
29
104
  export {};
30
105
  //# sourceMappingURL=openclaw-promotion-checks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openclaw-promotion-checks.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/activation/openclaw-promotion-checks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,EAAE,OAAO,CAAC;IAChC,iBAAiB,EAAE,SAAS,CAAC,uBAAuB,GAAG,uBAAuB,GAAG,sBAAsB,CAAC,EAAE,CAAC;IAC3G,qBAAqB,EAAE,SAAS;QAC9B,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;KACpC,EAAE,CAAC;IACJ,aAAa,EAAE,SAAS;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1C,gBAAgB,EAAE,OAAO,CAAC;KAC3B,EAAE,CAAC;CACL;AAED,UAAU,2BAA2B;IACnC,uBAAuB,EAAE,OAAO,CAAC;IACjC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,qBAAqB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACrD,0BAA0B,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpF;AA4FD,wBAAsB,8BAA8B,CAClD,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAmCpC"}
1
+ {"version":3,"file":"openclaw-promotion-checks.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/activation/openclaw-promotion-checks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAIlF,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,EAAE,OAAO,CAAC;IAChC,iBAAiB,EAAE,SAAS,CAAC,uBAAuB,GAAG,uBAAuB,GAAG,sBAAsB,CAAC,EAAE,CAAC;IAC3G,qBAAqB,EAAE,SAAS;QAC9B,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;KACpC,EAAE,CAAC;IACJ,aAAa,EAAE,SAAS;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1C,gBAAgB,EAAE,OAAO,CAAC;KAC3B,EAAE,CAAC;CACL;AAED,UAAU,2BAA2B;IACnC,uBAAuB,EAAE,OAAO,CAAC;IACjC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB;;;;;;;OAOG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,qBAAqB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACrD;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC;;;;;;;;;;;;OAYG;IACH,oBAAoB,CAAC,EAAE,4BAA4B,CAAC;IACpD,0BAA0B,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpF;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,kBAAkB,GAAG,qBAAqB,GAAG,sBAAsB,CAAC;IAC5E,EAAE,EAAE,OAAO,CAAC;IACZ,iFAAiF;IACjF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,gBAAgB,EAAE,OAAO,CAAC;IAC1B,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,0BAA0B,GAClC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,yCAAyC,GAAG,kCAAkC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1H;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAChD,YAAY,EAAE,SAAS,0BAA0B,EAAE,GAAG,SAAS,GAC9D,0BAA0B,CAsC5B;AA+ED,wBAAsB,8BAA8B,CAClD,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,uBAAuB,EAAE,CAAC,CA0FpC"}
@@ -1,16 +1,68 @@
1
+ import { validateRecoveryControlSurfaces, RECOVERY_CONTROL_SURFACES } from './recovery-control-surfaces.js';
2
+ import { verifyRecoveryProbeComposition } from './recovery-composition.js';
3
+ /**
4
+ * Review R4/P1: validate the per-capability evidence matrix against the
5
+ * recovery-control registry. Required: every registry capability present
6
+ * EXACTLY once, channel matching the registry, ok AND workspace-matched.
7
+ * Duplicates, unknown ids, missing entries, or channel mismatches are
8
+ * coverage failures; entries that ran but failed (or targeted another
9
+ * workspace) are reachability failures. Never cached — the caller produces
10
+ * this evidence fresh for every readiness evaluation.
11
+ */
12
+ export function validateRecoveryCapabilityCoverage(capabilities) {
13
+ if (capabilities === undefined || capabilities.length === 0) {
14
+ return { ok: false, reason: 'recovery_capability_evidence_incomplete', detail: 'no per-capability reachability evidence supplied' };
15
+ }
16
+ const byId = new Map();
17
+ for (const entry of capabilities) {
18
+ if (byId.has(entry.capabilityId)) {
19
+ return { ok: false, reason: 'recovery_capability_evidence_incomplete', detail: `duplicate evidence for ${entry.capabilityId}` };
20
+ }
21
+ byId.set(entry.capabilityId, entry);
22
+ }
23
+ const problems = [];
24
+ for (const surface of RECOVERY_CONTROL_SURFACES) {
25
+ const entry = byId.get(surface.capabilityId);
26
+ if (entry === undefined) {
27
+ problems.push(`${surface.capabilityId}: no evidence`);
28
+ continue;
29
+ }
30
+ if (entry.channel !== surface.channel) {
31
+ problems.push(`${surface.capabilityId}: evidence channel ${entry.channel} does not match the registry channel ${surface.channel}`);
32
+ continue;
33
+ }
34
+ if (!entry.ok) {
35
+ problems.push(`${surface.capabilityId}: not reachable${entry.detail !== undefined ? ` (${entry.detail})` : ''}`);
36
+ }
37
+ else if (!entry.workspaceMatched) {
38
+ problems.push(`${surface.capabilityId}: evidence does not target the governed workspace${entry.detail !== undefined ? ` (${entry.detail})` : ''}`);
39
+ }
40
+ }
41
+ for (const [capabilityId] of byId) {
42
+ if (!RECOVERY_CONTROL_SURFACES.some(surface => surface.capabilityId === capabilityId)) {
43
+ problems.push(`${capabilityId}: evidence for an unknown capability (not in the recovery-control registry)`);
44
+ }
45
+ }
46
+ if (problems.length > 0) {
47
+ const incomplete = problems.some(problem => problem.includes('no evidence') || problem.includes('unknown capability') || problem.includes('does not match the registry channel'));
48
+ return { ok: false, reason: incomplete ? 'recovery_capability_evidence_incomplete' : 'recovery_reachability_unverified', detail: problems.join('; ') };
49
+ }
50
+ return { ok: true };
51
+ }
1
52
  function isRecord(value) {
2
53
  return typeof value === 'object' && value !== null && !Array.isArray(value);
3
54
  }
4
55
  function isNonEmptyString(value) {
5
56
  return typeof value === 'string' && value.trim().length > 0;
6
57
  }
7
- function validateHostContract(value) {
58
+ const DEFAULT_HOST_CONTRACT_VERSION = 'openclaw-legacy@1';
59
+ function validateHostContract(value, expectedVersion) {
8
60
  if (!isRecord(value))
9
61
  return null;
10
62
  const { outOfBandControls } = value;
11
63
  const { protectedCapabilities } = value;
12
64
  const { neutralProbes } = value;
13
- if (value.version !== 'openclaw-legacy@1'
65
+ if (value.version !== expectedVersion
14
66
  || value.supportsShadowEvidence !== true
15
67
  || !Array.isArray(outOfBandControls)
16
68
  || !Array.isArray(protectedCapabilities)
@@ -48,10 +100,18 @@ function validateHostContract(value) {
48
100
  expectedDecision: 'allow',
49
101
  });
50
102
  }
51
- if (!requiredCapabilities.every(capability => neutralProbeList.some(probe => probe.capabilityId === capability)))
103
+ // Review R3/P1: probe coverage is required for the RULE-INTERCEPTABLE
104
+ // capabilities only (registry CLI channel). Console-channel recovery never
105
+ // passes through the RuleHost gate, so its verification is not a rule
106
+ // replay — probes for those capabilities are rejected by the registry
107
+ // validator instead of demanded here.
108
+ const cliProbeCapabilities = RECOVERY_CONTROL_SURFACES
109
+ .filter(surface => surface.channel === 'cli')
110
+ .map(surface => surface.capabilityId);
111
+ if (!cliProbeCapabilities.every(capability => neutralProbeList.some(probe => probe.capabilityId === capability)))
52
112
  return null;
53
113
  return {
54
- version: 'openclaw-legacy@1',
114
+ version: expectedVersion,
55
115
  supportsShadowEvidence: true,
56
116
  outOfBandControls: requiredControls,
57
117
  protectedCapabilities: protectedCapabilityList,
@@ -67,26 +127,6 @@ function parseArtifactContent(artifact) {
67
127
  return null;
68
128
  }
69
129
  }
70
- function artifactWithNeutralProbes(artifact, contract) {
71
- const content = parseArtifactContent(artifact);
72
- if (!content || !isRecord(content.goldenTrace) || !Array.isArray(content.goldenTrace.cases))
73
- return null;
74
- const cases = contract.neutralProbes.map(probe => ({
75
- caseId: `host-liveness:${probe.probeId}`,
76
- kind: 'positive',
77
- toolName: probe.toolName,
78
- params: { ...probe.params },
79
- expectedDecision: 'allow',
80
- }));
81
- const trace = {
82
- traceId: `${String(content.goldenTrace.traceId)}:host-liveness`,
83
- sourcePainId: String(content.goldenTrace.sourcePainId),
84
- cases: [...content.goldenTrace.cases, ...cases],
85
- createdAt: String(content.goldenTrace.createdAt),
86
- version: 1,
87
- };
88
- return { ...artifact, contentJson: JSON.stringify({ ...content, goldenTrace: trace }) };
89
- }
90
130
  export async function collectOpenClawPromotionChecks(artifact, input) {
91
131
  const content = parseArtifactContent(artifact);
92
132
  const affectedTools = content && Array.isArray(content.affectedTools)
@@ -99,24 +139,78 @@ export async function collectOpenClawPromotionChecks(artifact, input) {
99
139
  ]);
100
140
  const scopeAvoidsProtectedCapabilities = bounded
101
141
  && affectedTools.every(value => !protectedCapabilityIds.has(value));
102
- const contract = validateHostContract(input.hostContract);
103
- let probesPassed = false;
142
+ const contract = validateHostContract(input.hostContract, input.expectedHostContractVersion ?? DEFAULT_HOST_CONTRACT_VERSION);
143
+ // Review R1 (SPEC-RULECODE-HOST-PROMOTION-001): the contract SHAPE alone
144
+ // never certifies control health. Validate its recovery entries against the
145
+ // real-surface registry (command/route registrations proven by the
146
+ // cross-package contract tests that import it).
147
+ const recoverySurfaces = contract !== null ? validateRecoveryControlSurfaces(contract) : null;
148
+ // Review R3/P1: composition verification runs through the PRODUCTION
149
+ // composition boundary — every rule of the composed set compiled by the
150
+ // same hardened evaluator production replay uses, evaluated on each
151
+ // rule-interceptable probe input, merged by the same mergeDecisions the
152
+ // shared gate uses. Per-artifact golden-trace replay alone is NOT
153
+ // "composition verification" and is no longer described or used as one.
154
+ let composition;
104
155
  if (contract && scopeAvoidsProtectedCapabilities) {
105
- probesPassed = true;
106
- for (const candidate of [artifact, ...input.existingLiveArtifacts]) {
107
- const withProbes = artifactWithNeutralProbes(candidate, contract);
108
- if (!withProbes || !(await input.validateProductionArtifact(withProbes)).ok) {
109
- probesPassed = false;
110
- break;
111
- }
112
- }
156
+ composition = verifyRecoveryProbeComposition({
157
+ artifacts: [artifact, ...input.existingLiveArtifacts],
158
+ probes: contract.neutralProbes.map(probe => ({ probeId: probe.probeId, toolName: probe.toolName, params: probe.params })),
159
+ projectDir: input.projectDir ?? '.',
160
+ ...(input.toolSemantics !== undefined ? { toolSemantics: input.toolSemantics } : {}),
161
+ });
162
+ }
163
+ else if (contract) {
164
+ composition = { ok: false, probeId: '__scope__', reason: 'artifact scope overlaps protected capabilities' };
165
+ }
166
+ else {
167
+ // No validated contract → no verified composition (parity with the
168
+ // pre-R3 probesPassed contract requirement).
169
+ composition = { ok: false, probeId: '__contract__', reason: 'no validated host contract' };
113
170
  }
114
- const emergencyControlsHealthy = contract !== null && input.safetyControlsEnabled;
171
+ // Review R3/P1: emergency controls are healthy only when ALL of the
172
+ // following hold — the contract shape-bound to the resolver's version, the
173
+ // safety flag on, every recovery entry verified against the REAL surface
174
+ // registry, TARGET-ENVIRONMENT reachability evidence produced by this very
175
+ // readiness evaluation (no cached "verified once" state), AND the composed
176
+ // rule set (candidate + existing live) allows the rule-interceptable
177
+ // recovery probes through the production merge boundary. Console-channel
178
+ // controls are covered by registry + reachability + structural
179
+ // independence (they never pass through the RuleHost gate; isolated-env
180
+ // route tests prove the pause path and its effect on the gate).
181
+ const reachability = input.recoveryReachability;
182
+ // Review R4/P1: PER-CAPABILITY coverage — the aggregate verdict alone is
183
+ // never accepted. Every registry capability needs its own current,
184
+ // workspace-matched evidence entry (no evidence reuse across capabilities,
185
+ // no caching across evaluations).
186
+ const capabilityCoverage = contract !== null
187
+ ? validateRecoveryCapabilityCoverage(reachability?.capabilities)
188
+ : { ok: true };
189
+ const emergencyControlsHealthy = contract !== null
190
+ && input.safetyControlsEnabled
191
+ && recoverySurfaces !== null
192
+ && recoverySurfaces.ok
193
+ && reachability !== undefined
194
+ && reachability.ok
195
+ && reachability.workspaceMatched
196
+ && capabilityCoverage.ok
197
+ && composition.ok;
198
+ const emergencyReason = contract === null
199
+ ? 'out_of_band_controls_unavailable'
200
+ : !input.safetyControlsEnabled
201
+ ? 'safety_controls_disabled'
202
+ : recoverySurfaces !== null && !recoverySurfaces.ok
203
+ ? recoverySurfaces.reason
204
+ : reachability === undefined || !reachability.ok || !reachability.workspaceMatched
205
+ ? 'recovery_reachability_unverified'
206
+ : !capabilityCoverage.ok
207
+ ? capabilityCoverage.reason
208
+ : 'control_probe_composition_failed';
115
209
  return [
116
210
  { checkId: 'bounded_scope', status: bounded ? 'passed' : 'failed', ...(!bounded ? { reasonCode: 'explicit_affected_tools_required' } : {}) },
117
211
  { checkId: 'runtime_compatibility', status: contract ? 'passed' : 'failed', ...(!contract ? { reasonCode: 'host_liveness_contract_missing_invalid_or_unsupported' } : {}) },
118
- { checkId: 'host_liveness_composition', status: probesPassed ? 'passed' : 'failed', ...(!probesPassed ? { reasonCode: 'neutral_probe_or_live_composition_failed' } : {}) },
119
- { checkId: 'emergency_controls', status: emergencyControlsHealthy ? 'passed' : 'failed', ...(!emergencyControlsHealthy ? { reasonCode: contract ? 'safety_controls_disabled' : 'out_of_band_controls_unavailable' } : {}) },
212
+ { checkId: 'host_liveness_composition', status: composition.ok ? 'passed' : 'failed', ...(!composition.ok ? { reasonCode: composition.probeId.startsWith('__') ? `recovery_composition_${composition.probeId.slice(2)}` : 'recovery_probe_composition_blocked' } : {}) },
213
+ { checkId: 'emergency_controls', status: emergencyControlsHealthy ? 'passed' : 'failed', ...(!emergencyControlsHealthy ? { reasonCode: emergencyReason } : {}) },
120
214
  { checkId: 'runtime_shadow_evidence', status: contract?.supportsShadowEvidence === true ? 'passed' : 'failed', ...(contract?.supportsShadowEvidence === true ? {} : { reasonCode: 'runtime_shadow_evidence_unsupported' }) },
121
215
  { checkId: 'owner_identity_configuration', status: input.ownerIdentityConfigured ? 'passed' : 'failed', ...(!input.ownerIdentityConfigured ? { reasonCode: 'configured_owner_missing' } : {}) },
122
216
  ];