@principles/core 1.284.17 → 1.284.18
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.
- package/dist/runtime-v2/__tests__/artificer-runner-vslice.test.js +101 -14
- package/dist/runtime-v2/__tests__/artificer-runner-vslice.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/evidence-sanitizer.test.js +113 -1
- package/dist/runtime-v2/__tests__/evidence-sanitizer.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/pain-to-principle-service.test.js +0 -1
- package/dist/runtime-v2/__tests__/pain-to-principle-service.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/scribe-runner-vslice.test.js +211 -0
- package/dist/runtime-v2/__tests__/scribe-runner-vslice.test.js.map +1 -1
- package/dist/runtime-v2/adapter/__tests__/openclaw-cli-runtime-adapter-message-file.test.js +23 -1
- package/dist/runtime-v2/adapter/__tests__/openclaw-cli-runtime-adapter-message-file.test.js.map +1 -1
- package/dist/runtime-v2/adapter/__tests__/principle-tree-ledger-adapter.test.js +25 -0
- package/dist/runtime-v2/adapter/__tests__/principle-tree-ledger-adapter.test.js.map +1 -1
- package/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.d.ts.map +1 -1
- package/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.js +38 -7
- package/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.js.map +1 -1
- package/dist/runtime-v2/adapter/output-schema-registry.d.ts.map +1 -1
- package/dist/runtime-v2/adapter/output-schema-registry.js +0 -2
- package/dist/runtime-v2/adapter/output-schema-registry.js.map +1 -1
- package/dist/runtime-v2/adapter/principle-tree-ledger-adapter.d.ts +16 -0
- package/dist/runtime-v2/adapter/principle-tree-ledger-adapter.d.ts.map +1 -1
- package/dist/runtime-v2/adapter/principle-tree-ledger-adapter.js +22 -0
- package/dist/runtime-v2/adapter/principle-tree-ledger-adapter.js.map +1 -1
- package/dist/runtime-v2/agent-spec.d.ts +0 -1
- package/dist/runtime-v2/agent-spec.d.ts.map +1 -1
- package/dist/runtime-v2/agent-spec.js +3 -1
- package/dist/runtime-v2/agent-spec.js.map +1 -1
- package/dist/runtime-v2/config/__tests__/internal-agent-names.test.js +3 -1
- package/dist/runtime-v2/config/__tests__/internal-agent-names.test.js.map +1 -1
- package/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js +0 -7
- package/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js.map +1 -1
- package/dist/runtime-v2/config/__tests__/pd-config-context-injection.test.js +0 -1
- package/dist/runtime-v2/config/__tests__/pd-config-context-injection.test.js.map +1 -1
- package/dist/runtime-v2/config/__tests__/pd-config-contract.test.js +0 -1
- package/dist/runtime-v2/config/__tests__/pd-config-contract.test.js.map +1 -1
- package/dist/runtime-v2/config/__tests__/pd-config-principles.test.js +0 -1
- package/dist/runtime-v2/config/__tests__/pd-config-principles.test.js.map +1 -1
- package/dist/runtime-v2/config/__tests__/pd-config-reasoning.test.js +0 -1
- package/dist/runtime-v2/config/__tests__/pd-config-reasoning.test.js.map +1 -1
- package/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js +0 -1
- package/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js.map +1 -1
- package/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js +61 -1
- package/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js.map +1 -1
- package/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
- package/dist/runtime-v2/config/pd-config-defaults.js +0 -1
- package/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
- package/dist/runtime-v2/config/pd-config-types.d.ts +1 -1
- package/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
- package/dist/runtime-v2/config/pd-config-types.js +0 -1
- package/dist/runtime-v2/config/pd-config-types.js.map +1 -1
- package/dist/runtime-v2/config/pd-config-validate.d.ts.map +1 -1
- package/dist/runtime-v2/config/pd-config-validate.js +20 -1
- package/dist/runtime-v2/config/pd-config-validate.js.map +1 -1
- package/dist/runtime-v2/evidence-sanitizer.d.ts +17 -2
- package/dist/runtime-v2/evidence-sanitizer.d.ts.map +1 -1
- package/dist/runtime-v2/evidence-sanitizer.js +80 -11
- package/dist/runtime-v2/evidence-sanitizer.js.map +1 -1
- package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +3 -3
- package/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
- package/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
- package/dist/runtime-v2/feature-flags/feature-flag-contract.js +11 -40
- package/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
- package/dist/runtime-v2/feature-flags/feature-flag-lifecycle.d.ts.map +1 -1
- package/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js +6 -40
- package/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js.map +1 -1
- package/dist/runtime-v2/index.d.ts +9 -6
- package/dist/runtime-v2/index.d.ts.map +1 -1
- package/dist/runtime-v2/index.js +12 -5
- package/dist/runtime-v2/index.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js +61 -29
- package/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +0 -1
- package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.js +2 -2
- package/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/evaluator-artificer-repair-replay.test.js +2 -13
- package/dist/runtime-v2/internalization/__tests__/evaluator-artificer-repair-replay.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/evaluator-chinese-feedback-contract.test.js +1 -5
- package/dist/runtime-v2/internalization/__tests__/evaluator-chinese-feedback-contract.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/evaluator-out-of-scope-governance.test.js +1 -5
- package/dist/runtime-v2/internalization/__tests__/evaluator-out-of-scope-governance.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/external-review-p0-regressions.test.js +1 -1
- package/dist/runtime-v2/internalization/__tests__/external-review-p0-regressions.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/formation-context.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/formation-context.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/formation-context.test.js +428 -0
- package/dist/runtime-v2/internalization/__tests__/formation-context.test.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/scribe-prompt-builder.test.js +97 -0
- package/dist/runtime-v2/internalization/__tests__/scribe-prompt-builder.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.js +61 -0
- package/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.js.map +1 -1
- package/dist/runtime-v2/internalization/artifact-summary.d.ts +11 -0
- package/dist/runtime-v2/internalization/artifact-summary.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/artifact-summary.js.map +1 -1
- package/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts +48 -14
- package/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/artificer-prompt-builder.js +32 -1
- package/dist/runtime-v2/internalization/artificer-prompt-builder.js.map +1 -1
- package/dist/runtime-v2/internalization/artificer-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/artificer-runner.js +60 -156
- package/dist/runtime-v2/internalization/artificer-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/diag-distiller-runner.d.ts +1 -1
- package/dist/runtime-v2/internalization/diag-distiller-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/diag-distiller-runner.js +2 -19
- package/dist/runtime-v2/internalization/diag-distiller-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/diag-rootcause-runner.js +1 -5
- package/dist/runtime-v2/internalization/diag-rootcause-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/diag-router-runner.d.ts +1 -1
- package/dist/runtime-v2/internalization/diag-router-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/diag-router-runner.js +9 -32
- package/dist/runtime-v2/internalization/diag-router-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/dreamer-runner.d.ts +1 -9
- package/dist/runtime-v2/internalization/dreamer-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/dreamer-runner.js +4 -35
- package/dist/runtime-v2/internalization/dreamer-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/evaluator-runner.d.ts +3 -54
- package/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/evaluator-runner.js +18 -230
- package/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/formation-context.d.ts +208 -0
- package/dist/runtime-v2/internalization/formation-context.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/formation-context.js +621 -0
- package/dist/runtime-v2/internalization/formation-context.js.map +1 -0
- package/dist/runtime-v2/internalization/index.d.ts +0 -2
- package/dist/runtime-v2/internalization/index.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/index.js +0 -2
- package/dist/runtime-v2/internalization/index.js.map +1 -1
- package/dist/runtime-v2/internalization/philosopher-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/philosopher-runner.js +1 -25
- package/dist/runtime-v2/internalization/philosopher-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts +53 -1
- package/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/scribe-prompt-builder.js +65 -3
- package/dist/runtime-v2/internalization/scribe-prompt-builder.js.map +1 -1
- package/dist/runtime-v2/internalization/scribe-runner.d.ts +17 -0
- package/dist/runtime-v2/internalization/scribe-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/scribe-runner.js +58 -40
- package/dist/runtime-v2/internalization/scribe-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/split-diagnostician-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/split-diagnostician-runner.js +13 -2
- package/dist/runtime-v2/internalization/split-diagnostician-runner.js.map +1 -1
- package/dist/runtime-v2/observer/__tests__/agent-scheduler.test.js +31 -21
- package/dist/runtime-v2/observer/__tests__/agent-scheduler.test.js.map +1 -1
- package/dist/runtime-v2/observer/agent-scheduler.d.ts +0 -5
- package/dist/runtime-v2/observer/agent-scheduler.d.ts.map +1 -1
- package/dist/runtime-v2/owner-decision/__tests__/owner-decision-view.test.d.ts +2 -0
- package/dist/runtime-v2/owner-decision/__tests__/owner-decision-view.test.d.ts.map +1 -0
- package/dist/runtime-v2/owner-decision/__tests__/owner-decision-view.test.js +559 -0
- package/dist/runtime-v2/owner-decision/__tests__/owner-decision-view.test.js.map +1 -0
- package/dist/runtime-v2/owner-decision/owner-decision-view-contract.d.ts +7868 -0
- package/dist/runtime-v2/owner-decision/owner-decision-view-contract.d.ts.map +1 -0
- package/dist/runtime-v2/owner-decision/owner-decision-view-contract.js +367 -0
- package/dist/runtime-v2/owner-decision/owner-decision-view-contract.js.map +1 -0
- package/dist/runtime-v2/owner-decision/owner-decision-view.d.ts +415 -0
- package/dist/runtime-v2/owner-decision/owner-decision-view.d.ts.map +1 -0
- package/dist/runtime-v2/owner-decision/owner-decision-view.js +856 -0
- package/dist/runtime-v2/owner-decision/owner-decision-view.js.map +1 -0
- package/dist/runtime-v2/owner-decision/semantic-selector.d.ts +72 -0
- package/dist/runtime-v2/owner-decision/semantic-selector.d.ts.map +1 -0
- package/dist/runtime-v2/owner-decision/semantic-selector.js +176 -0
- package/dist/runtime-v2/owner-decision/semantic-selector.js.map +1 -0
- package/dist/runtime-v2/runner/base-peer-runner.d.ts +0 -125
- package/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
- package/dist/runtime-v2/runner/base-peer-runner.js +0 -323
- package/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
- package/dist/runtime-v2/runner/peer-runner-types.d.ts +0 -12
- package/dist/runtime-v2/runner/peer-runner-types.d.ts.map +1 -1
- package/dist/runtime-v2/signal-collector/types.d.ts +0 -12
- package/dist/runtime-v2/signal-collector/types.d.ts.map +1 -1
- package/dist/runtime-v2/signal-collector/types.js.map +1 -1
- package/dist/runtime-v2/types/event-types.d.ts +9 -0
- package/dist/runtime-v2/types/event-types.d.ts.map +1 -1
- package/dist/runtime-v2/types/event-types.js +12 -0
- package/dist/runtime-v2/types/event-types.js.map +1 -1
- package/dist/telemetry-event.d.ts +2 -2
- package/dist/telemetry-event.d.ts.map +1 -1
- package/dist/telemetry-event.js +7 -84
- package/dist/telemetry-event.js.map +1 -1
- package/package.json +1 -1
- package/dist/runtime-v2/feature-flags/__tests__/artifact-summary-redundancy-flag.test.d.ts +0 -15
- package/dist/runtime-v2/feature-flags/__tests__/artifact-summary-redundancy-flag.test.d.ts.map +0 -1
- package/dist/runtime-v2/feature-flags/__tests__/artifact-summary-redundancy-flag.test.js +0 -90
- package/dist/runtime-v2/feature-flags/__tests__/artifact-summary-redundancy-flag.test.js.map +0 -1
- package/dist/runtime-v2/feature-flags/__tests__/context-manifest-budget-flag.test.d.ts +0 -12
- package/dist/runtime-v2/feature-flags/__tests__/context-manifest-budget-flag.test.d.ts.map +0 -1
- package/dist/runtime-v2/feature-flags/__tests__/context-manifest-budget-flag.test.js +0 -117
- package/dist/runtime-v2/feature-flags/__tests__/context-manifest-budget-flag.test.js.map +0 -1
- package/dist/runtime-v2/feature-flags/__tests__/progressive-evaluator-flag.test.d.ts +0 -8
- package/dist/runtime-v2/feature-flags/__tests__/progressive-evaluator-flag.test.d.ts.map +0 -1
- package/dist/runtime-v2/feature-flags/__tests__/progressive-evaluator-flag.test.js +0 -56
- package/dist/runtime-v2/feature-flags/__tests__/progressive-evaluator-flag.test.js.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/candidate-lineage.pri717.test.d.ts +0 -26
- package/dist/runtime-v2/internalization/__tests__/candidate-lineage.pri717.test.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/candidate-lineage.pri717.test.js +0 -420
- package/dist/runtime-v2/internalization/__tests__/candidate-lineage.pri717.test.js.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/candidate-lineage.property.test.d.ts +0 -15
- package/dist/runtime-v2/internalization/__tests__/candidate-lineage.property.test.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/candidate-lineage.property.test.js +0 -306
- package/dist/runtime-v2/internalization/__tests__/candidate-lineage.property.test.js.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/context-manifest.property.test.d.ts +0 -12
- package/dist/runtime-v2/internalization/__tests__/context-manifest.property.test.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/context-manifest.property.test.js +0 -176
- package/dist/runtime-v2/internalization/__tests__/context-manifest.property.test.js.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/context-resolution.test.d.ts +0 -2
- package/dist/runtime-v2/internalization/__tests__/context-resolution.test.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/context-resolution.test.js +0 -377
- package/dist/runtime-v2/internalization/__tests__/context-resolution.test.js.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-scope-regression.test.d.ts +0 -22
- package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-scope-regression.test.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-scope-regression.test.js +0 -92
- package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-scope-regression.test.js.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike.test.d.ts +0 -2
- package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike.test.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike.test.js +0 -1039
- package/dist/runtime-v2/internalization/__tests__/progressive-disclosure-spike.test.js.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/progressive-evaluator-stage-isolation.property.test.d.ts +0 -13
- package/dist/runtime-v2/internalization/__tests__/progressive-evaluator-stage-isolation.property.test.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/progressive-evaluator-stage-isolation.property.test.js +0 -257
- package/dist/runtime-v2/internalization/__tests__/progressive-evaluator-stage-isolation.property.test.js.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/progressive-evaluator.property.test.d.ts +0 -11
- package/dist/runtime-v2/internalization/__tests__/progressive-evaluator.property.test.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/progressive-evaluator.property.test.js +0 -154
- package/dist/runtime-v2/internalization/__tests__/progressive-evaluator.property.test.js.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/prompt-budget-manager.property.test.d.ts +0 -12
- package/dist/runtime-v2/internalization/__tests__/prompt-budget-manager.property.test.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/prompt-budget-manager.property.test.js +0 -254
- package/dist/runtime-v2/internalization/__tests__/prompt-budget-manager.property.test.js.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/resolve-injection.property.test.d.ts +0 -15
- package/dist/runtime-v2/internalization/__tests__/resolve-injection.property.test.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/resolve-injection.property.test.js +0 -150
- package/dist/runtime-v2/internalization/__tests__/resolve-injection.property.test.js.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/shared-information-plane-runner.test.d.ts +0 -2
- package/dist/runtime-v2/internalization/__tests__/shared-information-plane-runner.test.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/shared-information-plane-runner.test.js +0 -773
- package/dist/runtime-v2/internalization/__tests__/shared-information-plane-runner.test.js.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/summary-chain-flow.property.test.d.ts +0 -22
- package/dist/runtime-v2/internalization/__tests__/summary-chain-flow.property.test.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/summary-chain-flow.property.test.js +0 -280
- package/dist/runtime-v2/internalization/__tests__/summary-chain-flow.property.test.js.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/summary-envelope-writer.property.test.d.ts +0 -25
- package/dist/runtime-v2/internalization/__tests__/summary-envelope-writer.property.test.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/__tests__/summary-envelope-writer.property.test.js +0 -413
- package/dist/runtime-v2/internalization/__tests__/summary-envelope-writer.property.test.js.map +0 -1
- package/dist/runtime-v2/internalization/attach-summary-envelope.d.ts +0 -60
- package/dist/runtime-v2/internalization/attach-summary-envelope.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/attach-summary-envelope.js +0 -126
- package/dist/runtime-v2/internalization/attach-summary-envelope.js.map +0 -1
- package/dist/runtime-v2/internalization/candidate-lineage.d.ts +0 -185
- package/dist/runtime-v2/internalization/candidate-lineage.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/candidate-lineage.js +0 -357
- package/dist/runtime-v2/internalization/candidate-lineage.js.map +0 -1
- package/dist/runtime-v2/internalization/context-manifest.d.ts +0 -117
- package/dist/runtime-v2/internalization/context-manifest.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/context-manifest.js +0 -156
- package/dist/runtime-v2/internalization/context-manifest.js.map +0 -1
- package/dist/runtime-v2/internalization/context-manifests.d.ts +0 -148
- package/dist/runtime-v2/internalization/context-manifests.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/context-manifests.js +0 -323
- package/dist/runtime-v2/internalization/context-manifests.js.map +0 -1
- package/dist/runtime-v2/internalization/context-resolution.d.ts +0 -189
- package/dist/runtime-v2/internalization/context-resolution.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/context-resolution.js +0 -317
- package/dist/runtime-v2/internalization/context-resolution.js.map +0 -1
- package/dist/runtime-v2/internalization/progressive-evaluator.d.ts +0 -115
- package/dist/runtime-v2/internalization/progressive-evaluator.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/progressive-evaluator.js +0 -248
- package/dist/runtime-v2/internalization/progressive-evaluator.js.map +0 -1
- package/dist/runtime-v2/internalization/prompt-budget-manager.d.ts +0 -90
- package/dist/runtime-v2/internalization/prompt-budget-manager.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/prompt-budget-manager.js +0 -149
- package/dist/runtime-v2/internalization/prompt-budget-manager.js.map +0 -1
- package/dist/runtime-v2/internalization/resolve-injection.d.ts +0 -62
- package/dist/runtime-v2/internalization/resolve-injection.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/resolve-injection.js +0 -78
- package/dist/runtime-v2/internalization/resolve-injection.js.map +0 -1
- package/dist/runtime-v2/internalization/summary-field-reader.d.ts +0 -38
- package/dist/runtime-v2/internalization/summary-field-reader.d.ts.map +0 -1
- package/dist/runtime-v2/internalization/summary-field-reader.js +0 -108
- package/dist/runtime-v2/internalization/summary-field-reader.js.map +0 -1
- package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.d.ts +0 -2
- package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.d.ts.map +0 -1
- package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js +0 -74
- package/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js.map +0 -1
- package/dist/runtime-v2/observer/__tests__/empathy-observer.test.d.ts +0 -2
- package/dist/runtime-v2/observer/__tests__/empathy-observer.test.d.ts.map +0 -1
- package/dist/runtime-v2/observer/__tests__/empathy-observer.test.js +0 -85
- package/dist/runtime-v2/observer/__tests__/empathy-observer.test.js.map +0 -1
- package/dist/runtime-v2/observer/empathy-observer.d.ts +0 -41
- package/dist/runtime-v2/observer/empathy-observer.d.ts.map +0 -1
- package/dist/runtime-v2/observer/empathy-observer.js +0 -104
- package/dist/runtime-v2/observer/empathy-observer.js.map +0 -1
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRI-838 / PRI-839 — formation context resolver unit tests.
|
|
3
|
+
*
|
|
4
|
+
* Covers the three cases the ticket names explicitly:
|
|
5
|
+
* Case 1 dreamer + diagnosis both present → full context
|
|
6
|
+
* Case 2 dreamer present, evidence missing → DEGRADE, never fail
|
|
7
|
+
* Case 3 legacy artifact → compatible
|
|
8
|
+
* plus the bound contract (Phase 2) and the never-throws guarantee.
|
|
9
|
+
*/
|
|
10
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
11
|
+
import { MemoryPIArtifactStore } from '../pi-artifact-store.js';
|
|
12
|
+
import { FORMATION_CANDIDATE_LIMIT, FORMATION_CONTEXT_VERSION, FORMATION_DIAGNOSIS_EVIDENCE_LIMIT, FORMATION_FIELD_MAX_CHARS, FORMATION_TOTAL_MAX_CHARS, projectDreamerProposals, resolveFormationContext, summarizeCandidateDifferences, } from '../formation-context.js';
|
|
13
|
+
// ── Fixtures ────────────────────────────────────────────────────────────────
|
|
14
|
+
const DREAMER_ART_ID = 'pi-art-dreamer-1';
|
|
15
|
+
const DIAG_ART_ID = 'pi-art-diag-router-1';
|
|
16
|
+
const DREAMER_TASK_ID = 'dreamer-task-1';
|
|
17
|
+
const DIAG_TASK_ID = 'diag-router-task-1';
|
|
18
|
+
function makeArtifact(params) {
|
|
19
|
+
return {
|
|
20
|
+
artifactId: params.artifactId,
|
|
21
|
+
artifactKind: 'principle',
|
|
22
|
+
sourceTaskId: params.sourceTaskId,
|
|
23
|
+
lineageArtifactIds: [...(params.lineageArtifactIds ?? [])],
|
|
24
|
+
validationStatus: 'pending',
|
|
25
|
+
contentJson: typeof params.content === 'string' ? params.content : JSON.stringify(params.content),
|
|
26
|
+
createdAt: '2026-09-18T00:00:00.000Z',
|
|
27
|
+
updatedAt: '2026-09-18T00:00:00.000Z',
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function dreamerContent(overrides = {}) {
|
|
31
|
+
return {
|
|
32
|
+
valid: true,
|
|
33
|
+
taskId: DREAMER_TASK_ID,
|
|
34
|
+
candidates: [
|
|
35
|
+
{
|
|
36
|
+
candidateIndex: 0,
|
|
37
|
+
badDecision: 'agent wrote without validating the parent path',
|
|
38
|
+
betterDecision: 'resolve and validate the parent path before writing',
|
|
39
|
+
rationale: 'unvalidated parents allow traversal',
|
|
40
|
+
confidence: 0.4,
|
|
41
|
+
riskLevel: 'high',
|
|
42
|
+
strategicPerspective: 'defensive',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
candidateIndex: 1,
|
|
46
|
+
badDecision: 'agent ignored the contract file',
|
|
47
|
+
betterDecision: 'read the contract before acting',
|
|
48
|
+
rationale: 'guessing contracts produces silent drift',
|
|
49
|
+
confidence: 0.9,
|
|
50
|
+
riskLevel: 'low',
|
|
51
|
+
strategicPerspective: 'evidence-first',
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
sourcePainId: 'pain-1',
|
|
55
|
+
contextRefs: ['pi-art-pain-1'],
|
|
56
|
+
generatedAt: '2026-09-18T00:00:00.000Z',
|
|
57
|
+
...overrides,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function routerDiagnosisContent() {
|
|
61
|
+
return {
|
|
62
|
+
valid: true,
|
|
63
|
+
diagnosisId: 'diag-1',
|
|
64
|
+
summary: 'contract guessed from examples',
|
|
65
|
+
rootCause: 'Assumption: the agent inferred a configuration contract from example files',
|
|
66
|
+
violatedPrinciples: [
|
|
67
|
+
{ principleId: 'T-03', title: 'Evidence first', rationale: 'contracts must be read, not guessed' },
|
|
68
|
+
],
|
|
69
|
+
evidence: [
|
|
70
|
+
{ sourceRef: 'trajectory://session-1/turn-4', note: 'agent wrote a config without reading the contract' },
|
|
71
|
+
],
|
|
72
|
+
recommendations: [
|
|
73
|
+
{ kind: 'principle', description: 'read the authoritative contract before mutating config' },
|
|
74
|
+
],
|
|
75
|
+
confidence: 0.8,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
async function makeHarness(params) {
|
|
79
|
+
const store = new MemoryPIArtifactStore();
|
|
80
|
+
for (const artifact of params.artifacts) {
|
|
81
|
+
await store.upsertArtifact(artifact);
|
|
82
|
+
}
|
|
83
|
+
const events = [];
|
|
84
|
+
const tasks = new Map(Object.entries(params.tasks ?? {}));
|
|
85
|
+
if (params.storeThrows) {
|
|
86
|
+
vi.spyOn(store, 'getArtifactById').mockRejectedValue(new Error('storage_unavailable'));
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
store,
|
|
90
|
+
events,
|
|
91
|
+
tasks,
|
|
92
|
+
resolve: (dreamerArtifactId) => resolveFormationContext({
|
|
93
|
+
sourceDreamerArtifactId: dreamerArtifactId,
|
|
94
|
+
artifactStore: store,
|
|
95
|
+
lookupTask: async (id) => tasks.get(id) ?? null,
|
|
96
|
+
emitEvent: (eventName, taskId, payload) => events.push({ eventName, taskId, payload }),
|
|
97
|
+
taskId: 'scribe-task-1',
|
|
98
|
+
}),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/** Dreamer task whose direct predecessor is the diag_router stage. */
|
|
102
|
+
const DREAMER_TASK_WITH_ROUTER = {
|
|
103
|
+
taskKind: 'dreamer',
|
|
104
|
+
status: 'succeeded',
|
|
105
|
+
dependencyTaskIds: [DIAG_TASK_ID],
|
|
106
|
+
};
|
|
107
|
+
// ── Case 1: normal ──────────────────────────────────────────────────────────
|
|
108
|
+
describe('PRI-838 Case 1 — dreamer + diagnosis both resolvable', () => {
|
|
109
|
+
it('resolves the full bounded formation context', async () => {
|
|
110
|
+
const harness = await makeHarness({
|
|
111
|
+
artifacts: [
|
|
112
|
+
makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent(), lineageArtifactIds: [DIAG_ART_ID] }),
|
|
113
|
+
makeArtifact({ artifactId: DIAG_ART_ID, sourceTaskId: DIAG_TASK_ID, content: routerDiagnosisContent() }),
|
|
114
|
+
],
|
|
115
|
+
tasks: { [DREAMER_TASK_ID]: DREAMER_TASK_WITH_ROUTER, [DIAG_TASK_ID]: { taskKind: 'diag_router', status: 'succeeded', dependencyTaskIds: [] } },
|
|
116
|
+
});
|
|
117
|
+
const context = await harness.resolve(DREAMER_ART_ID);
|
|
118
|
+
expect(context).toBeDefined();
|
|
119
|
+
expect(context?.version).toBe(FORMATION_CONTEXT_VERSION);
|
|
120
|
+
// Dreamer: ALL candidates survive — this is the DC-1/DC-3 fix.
|
|
121
|
+
expect(context?.dreamerProposals).toHaveLength(2);
|
|
122
|
+
expect(context?.dreamerProposals.map((c) => c.candidateIndex)).toEqual([1, 0]); // confidence DESC
|
|
123
|
+
expect(context?.dreamerProposals.map((c) => c.priorityRank)).toEqual([1, 2]);
|
|
124
|
+
expect(context?.dreamerContextRefs).toEqual(['pi-art-pain-1']);
|
|
125
|
+
// Diagnosis: root cause + evidence + violated principles.
|
|
126
|
+
expect(context?.sourceDiagnosis?.stage).toBe('diag_router');
|
|
127
|
+
expect(context?.sourceDiagnosis?.rootCause).toContain('Assumption:');
|
|
128
|
+
expect(context?.sourceDiagnosis?.evidence).toHaveLength(1);
|
|
129
|
+
expect(context?.sourceDiagnosis?.violatedPrinciples[0]?.principleId).toBe('T-03');
|
|
130
|
+
expect(context?.sourceDiagnosis?.recommendations[0]).toContain('[principle]');
|
|
131
|
+
// Provenance: ids + lineage preserved.
|
|
132
|
+
expect(context?.provenance.sourceDreamerArtifactId).toBe(DREAMER_ART_ID);
|
|
133
|
+
expect(context?.provenance.sourceDiagnosisArtifactId).toBe(DIAG_ART_ID);
|
|
134
|
+
expect(context?.provenance.sourcePainId).toBe('pain-1');
|
|
135
|
+
expect(context?.provenance.lineageArtifactIds).toEqual([DIAG_ART_ID]);
|
|
136
|
+
expect(context?.truncationNotes).toEqual([]);
|
|
137
|
+
expect(harness.events.at(-1)?.eventName).toBe('formation_context_resolved');
|
|
138
|
+
});
|
|
139
|
+
it('prefers diag_router over the earlier diagnostic stages', async () => {
|
|
140
|
+
const distillerArtId = 'pi-art-diag-distiller-1';
|
|
141
|
+
const harness = await makeHarness({
|
|
142
|
+
artifacts: [
|
|
143
|
+
makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() }),
|
|
144
|
+
makeArtifact({ artifactId: 'pi-art-diag-distiller-1', sourceTaskId: 'diag-distiller-task-1', content: routerDiagnosisContent() }),
|
|
145
|
+
makeArtifact({ artifactId: DIAG_ART_ID, sourceTaskId: DIAG_TASK_ID, content: routerDiagnosisContent() }),
|
|
146
|
+
],
|
|
147
|
+
tasks: {
|
|
148
|
+
[DREAMER_TASK_ID]: { taskKind: 'dreamer', status: 'succeeded', dependencyTaskIds: ['diag-distiller-task-1', DIAG_TASK_ID] },
|
|
149
|
+
'diag-distiller-task-1': { taskKind: 'diag_distiller', status: 'succeeded', dependencyTaskIds: [] },
|
|
150
|
+
[DIAG_TASK_ID]: { taskKind: 'diag_router', status: 'succeeded', dependencyTaskIds: [] },
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
const context = await harness.resolve(DREAMER_ART_ID);
|
|
154
|
+
expect(context?.sourceDiagnosis?.stage).toBe('diag_router');
|
|
155
|
+
expect(context?.sourceDiagnosis?.artifactId).toBe(DIAG_ART_ID);
|
|
156
|
+
void distillerArtId;
|
|
157
|
+
});
|
|
158
|
+
it('is deterministic — identical input yields identical output', async () => {
|
|
159
|
+
const build = async () => makeHarness({
|
|
160
|
+
artifacts: [
|
|
161
|
+
makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() }),
|
|
162
|
+
makeArtifact({ artifactId: DIAG_ART_ID, sourceTaskId: DIAG_TASK_ID, content: routerDiagnosisContent() }),
|
|
163
|
+
],
|
|
164
|
+
tasks: { [DREAMER_TASK_ID]: DREAMER_TASK_WITH_ROUTER, [DIAG_TASK_ID]: { taskKind: 'diag_router', status: 'succeeded', dependencyTaskIds: [] } },
|
|
165
|
+
});
|
|
166
|
+
const first = await (await build()).resolve(DREAMER_ART_ID);
|
|
167
|
+
const second = await (await build()).resolve(DREAMER_ART_ID);
|
|
168
|
+
expect(JSON.stringify(first)).toBe(JSON.stringify(second));
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
// ── Case 2: degrade, never fail ─────────────────────────────────────────────
|
|
172
|
+
describe('PRI-838 Case 2 — evidence missing degrades without failing', () => {
|
|
173
|
+
it('dreamer resolvable but no diagnostic predecessor → context without diagnosis', async () => {
|
|
174
|
+
const harness = await makeHarness({
|
|
175
|
+
artifacts: [makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() })],
|
|
176
|
+
tasks: { [DREAMER_TASK_ID]: { taskKind: 'dreamer', status: 'succeeded', dependencyTaskIds: [] } },
|
|
177
|
+
});
|
|
178
|
+
const context = await harness.resolve(DREAMER_ART_ID);
|
|
179
|
+
// Degraded, NOT undefined: the proposals are still worth carrying.
|
|
180
|
+
expect(context).toBeDefined();
|
|
181
|
+
expect(context?.sourceDiagnosis).toBeUndefined();
|
|
182
|
+
expect(context?.dreamerProposals).toHaveLength(2);
|
|
183
|
+
expect(context?.truncationNotes.some((note) => note.includes('diagnosis omitted'))).toBe(true);
|
|
184
|
+
});
|
|
185
|
+
it('diagnostic predecessor exists but is not succeeded → diagnosis omitted, no throw', async () => {
|
|
186
|
+
const harness = await makeHarness({
|
|
187
|
+
artifacts: [makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() })],
|
|
188
|
+
tasks: {
|
|
189
|
+
[DREAMER_TASK_ID]: DREAMER_TASK_WITH_ROUTER,
|
|
190
|
+
[DIAG_TASK_ID]: { taskKind: 'diag_router', status: 'running', dependencyTaskIds: [] },
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
const context = await harness.resolve(DREAMER_ART_ID);
|
|
194
|
+
expect(context).toBeDefined();
|
|
195
|
+
expect(context?.sourceDiagnosis).toBeUndefined();
|
|
196
|
+
});
|
|
197
|
+
it('dreamer artifact missing → undefined plus an observable event (never throws)', async () => {
|
|
198
|
+
const harness = await makeHarness({ artifacts: [] });
|
|
199
|
+
const context = await harness.resolve('pi-art-does-not-exist');
|
|
200
|
+
expect(context).toBeUndefined();
|
|
201
|
+
expect(harness.events.some((event) => event.eventName === 'formation_dreamer_artifact_missing')).toBe(true);
|
|
202
|
+
});
|
|
203
|
+
it('no dreamer id at all → undefined plus an observable event', async () => {
|
|
204
|
+
const harness = await makeHarness({ artifacts: [] });
|
|
205
|
+
const context = await harness.resolve(undefined);
|
|
206
|
+
expect(context).toBeUndefined();
|
|
207
|
+
expect(harness.events[0]?.eventName).toBe('formation_context_skipped');
|
|
208
|
+
expect(harness.events[0]?.payload.reason).toBe('dreamer_artifact_id_missing');
|
|
209
|
+
});
|
|
210
|
+
it('artifact store failure is contained — undefined + event, never a throw', async () => {
|
|
211
|
+
const harness = await makeHarness({
|
|
212
|
+
artifacts: [makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() })],
|
|
213
|
+
storeThrows: true,
|
|
214
|
+
});
|
|
215
|
+
const context = await harness.resolve(DREAMER_ART_ID);
|
|
216
|
+
expect(context).toBeUndefined();
|
|
217
|
+
expect(harness.events.at(-1)?.eventName).toBe('formation_context_failed');
|
|
218
|
+
});
|
|
219
|
+
it('dreamer contentJson is not JSON → undefined plus an observable event', async () => {
|
|
220
|
+
const harness = await makeHarness({
|
|
221
|
+
artifacts: [makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: '{not json' })],
|
|
222
|
+
});
|
|
223
|
+
const context = await harness.resolve(DREAMER_ART_ID);
|
|
224
|
+
expect(context).toBeUndefined();
|
|
225
|
+
expect(harness.events.at(-1)?.eventName).toBe('formation_context_invalid');
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
// ── Case 3: legacy compatibility ────────────────────────────────────────────
|
|
229
|
+
describe('PRI-838 Case 3 — legacy artifacts stay compatible', () => {
|
|
230
|
+
it('legacy dreamer artifact without optional signals resolves with explicit nulls', async () => {
|
|
231
|
+
const harness = await makeHarness({
|
|
232
|
+
artifacts: [
|
|
233
|
+
makeArtifact({
|
|
234
|
+
artifactId: DREAMER_ART_ID,
|
|
235
|
+
sourceTaskId: DREAMER_TASK_ID,
|
|
236
|
+
content: {
|
|
237
|
+
// pre-PRI-508 shape: only the three required fields, no contextRefs,
|
|
238
|
+
// no sourcePainId, no confidence/riskLevel/strategicPerspective.
|
|
239
|
+
candidates: [{ badDecision: 'bad', betterDecision: 'better', rationale: 'why' }],
|
|
240
|
+
},
|
|
241
|
+
}),
|
|
242
|
+
],
|
|
243
|
+
tasks: { [DREAMER_TASK_ID]: { taskKind: 'dreamer', status: 'succeeded', dependencyTaskIds: [] } },
|
|
244
|
+
});
|
|
245
|
+
const context = await harness.resolve(DREAMER_ART_ID);
|
|
246
|
+
expect(context?.dreamerProposals).toHaveLength(1);
|
|
247
|
+
const [candidate] = context?.dreamerProposals ?? [];
|
|
248
|
+
expect(candidate?.badDecision).toBe('bad');
|
|
249
|
+
expect(candidate?.confidence).toBeNull();
|
|
250
|
+
expect(candidate?.riskLevel).toBeNull();
|
|
251
|
+
expect(candidate?.strategicPerspective).toBeNull();
|
|
252
|
+
expect(context?.dreamerContextRefs).toEqual([]);
|
|
253
|
+
expect(context?.provenance.sourcePainId).toBeNull();
|
|
254
|
+
});
|
|
255
|
+
it('legacy dreamer task with no enqueued dependencies → still resolves the proposals', async () => {
|
|
256
|
+
const harness = await makeHarness({
|
|
257
|
+
artifacts: [makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() })],
|
|
258
|
+
// task row absent entirely (pre-PRI-508 chains)
|
|
259
|
+
});
|
|
260
|
+
const context = await harness.resolve(DREAMER_ART_ID);
|
|
261
|
+
expect(context?.dreamerProposals).toHaveLength(2);
|
|
262
|
+
expect(context?.truncationNotes.some((note) => note.includes('not resolvable'))).toBe(true);
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
// ── Phase 2: the bound contract ─────────────────────────────────────────────
|
|
266
|
+
describe('PRI-838 Phase 2 — bounded projection', () => {
|
|
267
|
+
it('candidates beyond FORMATION_CANDIDATE_LIMIT are dropped and counted', () => {
|
|
268
|
+
const candidates = Array.from({ length: FORMATION_CANDIDATE_LIMIT + 3 }, (_, index) => ({
|
|
269
|
+
candidateIndex: index,
|
|
270
|
+
badDecision: `bad-${index}`,
|
|
271
|
+
betterDecision: `better-${index}`,
|
|
272
|
+
rationale: `why-${index}`,
|
|
273
|
+
confidence: 0.5,
|
|
274
|
+
riskLevel: 'low',
|
|
275
|
+
strategicPerspective: `lens-${index}`,
|
|
276
|
+
}));
|
|
277
|
+
const projection = projectDreamerProposals({ candidates });
|
|
278
|
+
expect(projection.candidates).toHaveLength(FORMATION_CANDIDATE_LIMIT);
|
|
279
|
+
expect(projection.omittedCandidateCount).toBe(3);
|
|
280
|
+
expect(projection.truncationNotes.some((note) => note.includes('truncated'))).toBe(true);
|
|
281
|
+
});
|
|
282
|
+
it('per-field values are clamped, so one huge field cannot blow the budget', () => {
|
|
283
|
+
const projection = projectDreamerProposals({
|
|
284
|
+
candidates: [{
|
|
285
|
+
badDecision: 'x'.repeat(FORMATION_FIELD_MAX_CHARS * 5),
|
|
286
|
+
betterDecision: 'b',
|
|
287
|
+
rationale: 'r',
|
|
288
|
+
}],
|
|
289
|
+
});
|
|
290
|
+
const [candidate] = projection.candidates;
|
|
291
|
+
expect(candidate?.badDecision.length).toBe(FORMATION_FIELD_MAX_CHARS);
|
|
292
|
+
expect(candidate?.badDecision.endsWith('…')).toBe(true);
|
|
293
|
+
});
|
|
294
|
+
it('a malformed candidate is skipped without discarding the valid ones', () => {
|
|
295
|
+
const projection = projectDreamerProposals({
|
|
296
|
+
candidates: [
|
|
297
|
+
{ badDecision: 'bad-0', betterDecision: 'better-0', rationale: 'why-0' },
|
|
298
|
+
{ betterDecision: 'b', rationale: 'r' }, // missing badDecision
|
|
299
|
+
'not-a-record',
|
|
300
|
+
{ badDecision: 'bad-3', betterDecision: 'better-3', rationale: 'why-3' },
|
|
301
|
+
],
|
|
302
|
+
});
|
|
303
|
+
expect(projection.candidates.map((candidate) => candidate.candidateIndex)).toEqual([0, 3]);
|
|
304
|
+
expect(projection.truncationNotes.some((note) => note.includes('malformed'))).toBe(true);
|
|
305
|
+
});
|
|
306
|
+
it('bounds the diagnosis evidence array', () => {
|
|
307
|
+
const evidence = Array.from({ length: FORMATION_DIAGNOSIS_EVIDENCE_LIMIT + 4 }, (_, index) => ({
|
|
308
|
+
sourceRef: `ref-${index}`,
|
|
309
|
+
note: `note-${index}`,
|
|
310
|
+
}));
|
|
311
|
+
const harness = makeHarness({
|
|
312
|
+
artifacts: [
|
|
313
|
+
makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() }),
|
|
314
|
+
makeArtifact({ artifactId: DIAG_ART_ID, sourceTaskId: DIAG_TASK_ID, content: { ...routerDiagnosisContent(), evidence } }),
|
|
315
|
+
],
|
|
316
|
+
tasks: { [DREAMER_TASK_ID]: DREAMER_TASK_WITH_ROUTER, [DIAG_TASK_ID]: { taskKind: 'diag_router', status: 'succeeded', dependencyTaskIds: [] } },
|
|
317
|
+
});
|
|
318
|
+
return harness.then(async (h) => {
|
|
319
|
+
const context = await h.resolve(DREAMER_ART_ID);
|
|
320
|
+
expect(context?.sourceDiagnosis?.evidence).toHaveLength(FORMATION_DIAGNOSIS_EVIDENCE_LIMIT);
|
|
321
|
+
expect(context?.sourceDiagnosis?.omittedFields.some((field) => field.startsWith('evidence['))).toBe(true);
|
|
322
|
+
});
|
|
323
|
+
});
|
|
324
|
+
it('the serialized block never exceeds the documented cap and says what it lost', async () => {
|
|
325
|
+
// A diagnosis whose bulk cannot fit alongside a full proposal set.
|
|
326
|
+
const evidence = Array.from({ length: FORMATION_DIAGNOSIS_EVIDENCE_LIMIT }, (_, index) => ({
|
|
327
|
+
sourceRef: `ref-${index}`.padEnd(FORMATION_FIELD_MAX_CHARS, 'r'),
|
|
328
|
+
note: `note-${index}`.padEnd(FORMATION_FIELD_MAX_CHARS, 'n'),
|
|
329
|
+
}));
|
|
330
|
+
const harness = await makeHarness({
|
|
331
|
+
artifacts: [
|
|
332
|
+
makeArtifact({ artifactId: DREAMER_ART_ID, sourceTaskId: DREAMER_TASK_ID, content: dreamerContent() }),
|
|
333
|
+
makeArtifact({
|
|
334
|
+
artifactId: DIAG_ART_ID,
|
|
335
|
+
sourceTaskId: DIAG_TASK_ID,
|
|
336
|
+
content: { ...routerDiagnosisContent(), summary: 's'.padEnd(FORMATION_FIELD_MAX_CHARS, 's'), evidence },
|
|
337
|
+
}),
|
|
338
|
+
],
|
|
339
|
+
tasks: { [DREAMER_TASK_ID]: DREAMER_TASK_WITH_ROUTER, [DIAG_TASK_ID]: { taskKind: 'diag_router', status: 'succeeded', dependencyTaskIds: [] } },
|
|
340
|
+
});
|
|
341
|
+
const context = await harness.resolve(DREAMER_ART_ID);
|
|
342
|
+
expect(context).toBeDefined();
|
|
343
|
+
expect(JSON.stringify(context).length).toBeLessThanOrEqual(FORMATION_TOTAL_MAX_CHARS);
|
|
344
|
+
expect(context?.truncationNotes.length).toBeGreaterThan(0);
|
|
345
|
+
});
|
|
346
|
+
it('holds the cap even when every field is maximal and the drops themselves add notes', async () => {
|
|
347
|
+
// Regression for review finding PRI-1756-P2: `trimSection` records one note
|
|
348
|
+
// per dropped item, and those notes are part of the serialized object. A
|
|
349
|
+
// single lineage truncation therefore could not bring the block back under
|
|
350
|
+
// the cap — five maximal candidates plus a maximal diagnosis produced 8550
|
|
351
|
+
// chars against an 8000 budget, leaving the prompt boundary unbounded.
|
|
352
|
+
const max = FORMATION_FIELD_MAX_CHARS;
|
|
353
|
+
const maximalCandidates = Array.from({ length: FORMATION_CANDIDATE_LIMIT }, (_, index) => ({
|
|
354
|
+
candidateIndex: index,
|
|
355
|
+
badDecision: 'B'.padEnd(max, 'b'),
|
|
356
|
+
betterDecision: 'D'.padEnd(max, 'd'),
|
|
357
|
+
rationale: 'R'.padEnd(max, 'r'),
|
|
358
|
+
confidence: 0.9,
|
|
359
|
+
riskLevel: 'medium',
|
|
360
|
+
strategicPerspective: 'S'.padEnd(max, 's'),
|
|
361
|
+
}));
|
|
362
|
+
const harness = await makeHarness({
|
|
363
|
+
artifacts: [
|
|
364
|
+
makeArtifact({
|
|
365
|
+
artifactId: DREAMER_ART_ID,
|
|
366
|
+
sourceTaskId: DREAMER_TASK_ID,
|
|
367
|
+
content: { ...dreamerContent(), candidates: maximalCandidates },
|
|
368
|
+
// Far more lineage ids than the last-resort limit.
|
|
369
|
+
lineageArtifactIds: Array.from({ length: 64 }, (_, i) => `lineage-artifact-id-${String(i).padStart(3, '0')}`),
|
|
370
|
+
}),
|
|
371
|
+
makeArtifact({
|
|
372
|
+
artifactId: DIAG_ART_ID,
|
|
373
|
+
sourceTaskId: DIAG_TASK_ID,
|
|
374
|
+
content: {
|
|
375
|
+
...routerDiagnosisContent(),
|
|
376
|
+
summary: 'M'.padEnd(max, 'm'),
|
|
377
|
+
rootCause: 'C'.padEnd(max, 'c'),
|
|
378
|
+
violatedPrinciples: Array.from({ length: 8 }, (_, i) => ({
|
|
379
|
+
principleId: `P-${i}`,
|
|
380
|
+
title: 'T'.padEnd(max, 't'),
|
|
381
|
+
rationale: 'V'.padEnd(max, 'v'),
|
|
382
|
+
})),
|
|
383
|
+
evidence: Array.from({ length: 8 }, (_, i) => ({
|
|
384
|
+
sourceRef: `ref-${i}`.padEnd(max, 'e'),
|
|
385
|
+
note: 'N'.padEnd(max, 'n'),
|
|
386
|
+
})),
|
|
387
|
+
recommendations: Array.from({ length: 5 }, (_, i) => ({
|
|
388
|
+
kind: 'principle',
|
|
389
|
+
description: `R${i}`.padEnd(max - 8, 'x'),
|
|
390
|
+
})),
|
|
391
|
+
},
|
|
392
|
+
}),
|
|
393
|
+
],
|
|
394
|
+
tasks: {
|
|
395
|
+
[DREAMER_TASK_ID]: DREAMER_TASK_WITH_ROUTER,
|
|
396
|
+
[DIAG_TASK_ID]: { taskKind: 'diag_router', status: 'succeeded', dependencyTaskIds: [] },
|
|
397
|
+
},
|
|
398
|
+
});
|
|
399
|
+
const context = await harness.resolve(DREAMER_ART_ID);
|
|
400
|
+
expect(context).toBeDefined();
|
|
401
|
+
// The cap is a hard prompt-boundary contract, not a best-effort target.
|
|
402
|
+
const serialized = JSON.stringify(context);
|
|
403
|
+
expect(serialized.length).toBeLessThanOrEqual(FORMATION_TOTAL_MAX_CHARS);
|
|
404
|
+
// Degradation must stay observable (rc-9) — never silent.
|
|
405
|
+
expect(context?.truncationNotes.length).toBeGreaterThan(0);
|
|
406
|
+
// And it must be VALID JSON, never a mid-value slice.
|
|
407
|
+
expect(() => JSON.parse(serialized)).not.toThrow();
|
|
408
|
+
});
|
|
409
|
+
});
|
|
410
|
+
// ── Difference summary (PRI-839) ────────────────────────────────────────────
|
|
411
|
+
describe('PRI-839 summarizeCandidateDifferences', () => {
|
|
412
|
+
it('states the count, risk spread and distinct better-decisions', () => {
|
|
413
|
+
const { candidates } = projectDreamerProposals(dreamerContent());
|
|
414
|
+
const summary = summarizeCandidateDifferences(candidates);
|
|
415
|
+
expect(summary).toContain('2 mutually distinct proposals');
|
|
416
|
+
expect(summary).toContain('risk spread');
|
|
417
|
+
expect(summary).toContain('distinct better-decisions: 2');
|
|
418
|
+
expect(summary).toContain('dreamer confidence range: 0.4..0.9');
|
|
419
|
+
});
|
|
420
|
+
it('says so explicitly when there was only one proposal', () => {
|
|
421
|
+
expect(summarizeCandidateDifferences([])).toContain('No dreamer proposals');
|
|
422
|
+
const { candidates } = projectDreamerProposals({
|
|
423
|
+
candidates: [{ badDecision: 'b', betterDecision: 'bb', rationale: 'r' }],
|
|
424
|
+
});
|
|
425
|
+
expect(summarizeCandidateDifferences(candidates)).toContain('no alternatives were proposed');
|
|
426
|
+
});
|
|
427
|
+
});
|
|
428
|
+
//# sourceMappingURL=formation-context.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formation-context.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/formation-context.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -80,4 +80,101 @@ describe('ScribePromptBuilder (PRI-109)', () => {
|
|
|
80
80
|
expect(instruction).not.toContain('from philosopher artifact if available');
|
|
81
81
|
});
|
|
82
82
|
});
|
|
83
|
+
// ── PRI-838: formation evidence in the scribe prompt contract ───────────────
|
|
84
|
+
describe('ScribePromptBuilder — PRI-838 formation evidence', () => {
|
|
85
|
+
const builder = new ScribePromptBuilder();
|
|
86
|
+
const baseInput = {
|
|
87
|
+
taskId: 'scribe-838',
|
|
88
|
+
contextHash: 'ctx-838',
|
|
89
|
+
sourcePhilosopherArtifactId: 'pi-art-phil-838',
|
|
90
|
+
sourceDreamerArtifactId: 'pi-art-dreamer-838',
|
|
91
|
+
philosopherArtifact: { taskId: 'phil-838', thesis: 'T', sourceDreamerArtifactId: 'pi-art-dreamer-838' },
|
|
92
|
+
};
|
|
93
|
+
const formationContext = {
|
|
94
|
+
version: 'formation-context.v1',
|
|
95
|
+
dreamerProposals: [
|
|
96
|
+
{
|
|
97
|
+
candidateIndex: 1,
|
|
98
|
+
priorityRank: 1,
|
|
99
|
+
badDecision: 'agent guessed the contract from examples',
|
|
100
|
+
betterDecision: 'read the authoritative contract first',
|
|
101
|
+
rationale: 'guessing drifts silently',
|
|
102
|
+
confidence: 0.9,
|
|
103
|
+
riskLevel: 'low',
|
|
104
|
+
strategicPerspective: 'evidence-first',
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
dreamerContextRefs: ['pi-art-pain-838'],
|
|
108
|
+
sourceDiagnosis: {
|
|
109
|
+
artifactId: 'pi-art-diag-838',
|
|
110
|
+
taskId: 'diag-router-838',
|
|
111
|
+
stage: 'diag_router',
|
|
112
|
+
rootCause: 'Assumption: contract inferred from examples',
|
|
113
|
+
summary: 'contract guessed',
|
|
114
|
+
violatedPrinciples: [{ principleId: 'T-03', title: 'Evidence first', rationale: 'read, do not guess' }],
|
|
115
|
+
evidence: [{ sourceRef: 'trajectory://s-1/t-4', note: 'wrote config without reading contract' }],
|
|
116
|
+
recommendations: ['[principle] read the authoritative contract'],
|
|
117
|
+
confidence: 0.8,
|
|
118
|
+
omittedFields: [],
|
|
119
|
+
},
|
|
120
|
+
provenance: {
|
|
121
|
+
sourceDreamerArtifactId: 'pi-art-dreamer-838',
|
|
122
|
+
sourceDreamerTaskId: 'dreamer-838',
|
|
123
|
+
sourceDiagnosisArtifactId: 'pi-art-diag-838',
|
|
124
|
+
sourceDiagnosisTaskId: 'diag-router-838',
|
|
125
|
+
sourcePainId: 'pain-838',
|
|
126
|
+
lineageArtifactIds: ['pi-art-diag-838'],
|
|
127
|
+
},
|
|
128
|
+
truncationNotes: [],
|
|
129
|
+
};
|
|
130
|
+
it('promptContractVersion was bumped to v4', () => {
|
|
131
|
+
expect(SCRIBE_PROMPT_CONTRACT_VERSION).toBe('scribe-output-v1.prompt.v4');
|
|
132
|
+
});
|
|
133
|
+
it('carries formationContext in the payload when provided', () => {
|
|
134
|
+
const { promptInput, message } = builder.buildPrompt({ ...baseInput, formationContext });
|
|
135
|
+
expect(promptInput.formationContext).toBeDefined();
|
|
136
|
+
const parsed = JSON.parse(message);
|
|
137
|
+
expect(parsed.formationContext?.dreamerProposals).toHaveLength(1);
|
|
138
|
+
expect(parsed.formationContext?.sourceDiagnosis?.rootCause).toContain('Assumption:');
|
|
139
|
+
expect(parsed.formationContext?.provenance.sourcePainId).toBe('pain-838');
|
|
140
|
+
});
|
|
141
|
+
it('appends the formation-evidence addendum to the system prompt when provided', () => {
|
|
142
|
+
const { systemPrompt } = builder.buildPrompt({ ...baseInput, formationContext });
|
|
143
|
+
expect(systemPrompt).toContain('ADDITIONAL CONTEXT (formation evidence recovery)');
|
|
144
|
+
expect(systemPrompt).toContain('formationContext.sourceDiagnosis');
|
|
145
|
+
expect(systemPrompt).toContain('formationContext.dreamerProposals');
|
|
146
|
+
expect(systemPrompt).toContain('formationContext.provenance');
|
|
147
|
+
});
|
|
148
|
+
it('reuses the frozen PRI-815 candidate-priority contract verbatim', () => {
|
|
149
|
+
const { systemPrompt } = builder.buildPrompt({ ...baseInput, formationContext });
|
|
150
|
+
expect(systemPrompt).toContain('CANDIDATE PRIORITY (must obey):');
|
|
151
|
+
expect(systemPrompt).toContain('source intent (sourceDiagnosis) > critique conclusions (philosopherArtifact) > proposals as candidate evidence (dreamerProposals).');
|
|
152
|
+
expect(systemPrompt).toContain('do NOT revive a proposal the critique explicitly rejected');
|
|
153
|
+
expect(systemPrompt).toContain('Do NOT merge mutually exclusive proposals into one principle.');
|
|
154
|
+
expect(systemPrompt).toContain('Longer output is not better');
|
|
155
|
+
});
|
|
156
|
+
it('omits formationContext entirely when absent (pre-PRI-838 compat)', () => {
|
|
157
|
+
const { promptInput, message, systemPrompt } = builder.buildPrompt(baseInput);
|
|
158
|
+
expect(Object.hasOwn(promptInput, 'formationContext')).toBe(false);
|
|
159
|
+
const parsed = JSON.parse(message);
|
|
160
|
+
expect(Object.hasOwn(parsed, 'formationContext')).toBe(false);
|
|
161
|
+
expect(systemPrompt).not.toContain('formation evidence recovery');
|
|
162
|
+
});
|
|
163
|
+
it('degradation instruction is present for the absent-diagnosis case', () => {
|
|
164
|
+
// Case 2/3: the model must be told to degrade rather than invent the intent.
|
|
165
|
+
const { systemPrompt } = builder.buildPrompt({ ...baseInput, formationContext });
|
|
166
|
+
expect(systemPrompt).toContain('the source intent is UNAVAILABLE');
|
|
167
|
+
});
|
|
168
|
+
it('buildScribeProtocolInstruction gates the addendum on formationEvidence', () => {
|
|
169
|
+
expect(buildScribeProtocolInstruction({ formationEvidence: true })).toContain('CANDIDATE PRIORITY');
|
|
170
|
+
expect(buildScribeProtocolInstruction({ formationEvidence: false })).not.toContain('CANDIDATE PRIORITY');
|
|
171
|
+
expect(buildScribeProtocolInstruction()).not.toContain('CANDIDATE PRIORITY');
|
|
172
|
+
});
|
|
173
|
+
it('does not leak formationEvidence into the core axiom options', () => {
|
|
174
|
+
// Regression guard: the option must be destructured out, not forwarded.
|
|
175
|
+
const withFlag = buildScribeProtocolInstruction({ formationEvidence: true, coreGrounding: true });
|
|
176
|
+
const withoutFlag = buildScribeProtocolInstruction({ coreGrounding: true });
|
|
177
|
+
expect(withFlag.startsWith(withoutFlag)).toBe(true);
|
|
178
|
+
});
|
|
179
|
+
});
|
|
83
180
|
//# sourceMappingURL=scribe-prompt-builder.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scribe-prompt-builder.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/scribe-prompt-builder.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scribe-prompt-builder.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/scribe-prompt-builder.test.ts"],"names":[],"mappings":"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"}
|