@principles/core 1.284.16 → 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__/adversarial-loop.test.js +8 -1
- package/dist/runtime-v2/__tests__/adversarial-loop.test.js.map +1 -1
- 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/activation/writers/rule-host-writer.d.ts.map +1 -1
- package/dist/runtime-v2/activation/writers/rule-host-writer.js +15 -1
- package/dist/runtime-v2/activation/writers/rule-host-writer.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/__tests__/schema-prompt-adapter-semantic.test.js +18 -4
- package/dist/runtime-v2/adapter/__tests__/schema-prompt-adapter-semantic.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/adversarial-loop.d.ts.map +1 -1
- package/dist/runtime-v2/adversarial-loop.js +14 -1
- package/dist/runtime-v2/adversarial-loop.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-v2.test.js +49 -0
- package/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder-v2.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js +64 -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-gate-authority.test.js +5 -13
- package/dist/runtime-v2/internalization/__tests__/evaluator-gate-authority.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 +67 -15
- package/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/artificer-prompt-builder.js +119 -4
- package/dist/runtime-v2/internalization/artificer-prompt-builder.js.map +1 -1
- package/dist/runtime-v2/internalization/artificer-runner.d.ts +12 -0
- package/dist/runtime-v2/internalization/artificer-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/artificer-runner.js +102 -158
- 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 +37 -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/refiner-sandbox-wrapper.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/refiner-sandbox-wrapper.js +25 -1
- package/dist/runtime-v2/internalization/refiner-sandbox-wrapper.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/internalization/v2-adversarial-cases.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/v2-adversarial-cases.js +25 -2
- package/dist/runtime-v2/internalization/v2-adversarial-cases.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/tools/artificer-l2-tool-contract.d.ts.map +1 -1
- package/dist/runtime-v2/tools/artificer-l2-tool-contract.js +10 -0
- package/dist/runtime-v2/tools/artificer-l2-tool-contract.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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"attach-summary-envelope.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/attach-summary-envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Layer 2 — CandidateLineage: on-demand ancestry traversal (design §6.4).
|
|
3
|
-
*
|
|
4
|
-
* Pure logic with **injected** I/O (artifact store + task reader). Walks an
|
|
5
|
-
* artifact's ancestry via `lineageArtifactIds`, determining each node's stage
|
|
6
|
-
* by the two-hop `artifact.sourceTaskId → task.taskKind` (F1 — never by
|
|
7
|
-
* `artifactKind`, which is ambiguous: all internalization artifacts are
|
|
8
|
-
* `principle`).
|
|
9
|
-
*
|
|
10
|
-
* Result contract (rc-9, design §6.4 error table):
|
|
11
|
-
* - data corruption (unparseable / shape-invalid / store-throw) → `ok: false`
|
|
12
|
-
* + a `LineageError`; the caller MUST surface it as an explicit failure or
|
|
13
|
-
* structured degradation — never silently fall through.
|
|
14
|
-
* - expected absence (no lineage ids / ancestor pruned / task missing / depth
|
|
15
|
-
* limit / cycle) → `ok: true` with a partial chain + notes; `complete` is
|
|
16
|
-
* false and `notes` is non-empty.
|
|
17
|
-
*
|
|
18
|
-
* Stale-instance rebind (PRI-717): a lineage edge whose artifact id no longer
|
|
19
|
-
* resolves is first checked against the producer-task convention
|
|
20
|
-
* (`pi-art-<taskId>-run_<taskId>_<seq>`); when the producing task still has a
|
|
21
|
-
* current durable artifact, the edge resolves to it and a
|
|
22
|
-
* `lineage_edge_rebound` event is emitted. Everything else stays fail-closed
|
|
23
|
-
* `ancestor_pruned`.
|
|
24
|
-
*
|
|
25
|
-
* Request-scoped cache: a single `CandidateLineage` instance lives for one
|
|
26
|
-
* `buildContext`; repeated `getArtifactById` calls for the same id hit the
|
|
27
|
-
* cache, not the store (CP-18).
|
|
28
|
-
*
|
|
29
|
-
* rc-1: every `contentJson` stays `unknown` — it is never narrowed or cast.
|
|
30
|
-
*/
|
|
31
|
-
import type { PIArtifactStore } from './pi-artifact.js';
|
|
32
|
-
import type { ArtifactSummary, SummaryRunnerKind } from './artifact-summary.js';
|
|
33
|
-
export interface LineageNode {
|
|
34
|
-
readonly artifactId: string;
|
|
35
|
-
readonly taskId: string;
|
|
36
|
-
/** Stage determined by the two-hop sourceTaskId → task.taskKind (F1). */
|
|
37
|
-
readonly taskKind: string;
|
|
38
|
-
readonly runnerKind: SummaryRunnerKind | 'unknown';
|
|
39
|
-
/** rc-1: remains `unknown`; the caller narrows it. */
|
|
40
|
-
readonly contentJson: unknown;
|
|
41
|
-
readonly summary?: ArtifactSummary;
|
|
42
|
-
}
|
|
43
|
-
export type LineageNoteCode = 'source_trace_missing' | 'ancestor_pruned' | 'task_missing' | 'depth_limit_reached' | 'cycle_detected';
|
|
44
|
-
export interface LineageNote {
|
|
45
|
-
readonly code: LineageNoteCode;
|
|
46
|
-
readonly artifactId: string;
|
|
47
|
-
readonly detail: string;
|
|
48
|
-
}
|
|
49
|
-
export interface LineageChain {
|
|
50
|
-
/** From start node upstream, in traversal order. */
|
|
51
|
-
readonly nodes: readonly LineageNode[];
|
|
52
|
-
/** false when notes is non-empty (partial chain). */
|
|
53
|
-
readonly complete: boolean;
|
|
54
|
-
readonly notes: readonly LineageNote[];
|
|
55
|
-
}
|
|
56
|
-
export type LineageError = {
|
|
57
|
-
readonly kind: 'content_json_unparseable';
|
|
58
|
-
readonly artifactId: string;
|
|
59
|
-
readonly detail: string;
|
|
60
|
-
} | {
|
|
61
|
-
readonly kind: 'artifact_shape_invalid';
|
|
62
|
-
readonly artifactId: string;
|
|
63
|
-
readonly detail: string;
|
|
64
|
-
} | {
|
|
65
|
-
readonly kind: 'store_failure';
|
|
66
|
-
readonly detail: string;
|
|
67
|
-
};
|
|
68
|
-
export type LineageResult = {
|
|
69
|
-
readonly ok: true;
|
|
70
|
-
readonly value: LineageChain;
|
|
71
|
-
} | {
|
|
72
|
-
readonly ok: false;
|
|
73
|
-
readonly error: LineageError;
|
|
74
|
-
};
|
|
75
|
-
/** Lineage telemetry event (forwarded to the caller's emit, if provided). */
|
|
76
|
-
export type LineageEvent = {
|
|
77
|
-
readonly type: 'lineage_data_corrupt';
|
|
78
|
-
readonly artifactId: string;
|
|
79
|
-
readonly detail: string;
|
|
80
|
-
readonly errorKind: LineageError['kind'];
|
|
81
|
-
} | {
|
|
82
|
-
readonly type: 'lineage_store_failure';
|
|
83
|
-
readonly detail: string;
|
|
84
|
-
} | {
|
|
85
|
-
readonly type: 'lineage_partial';
|
|
86
|
-
readonly artifactId: string;
|
|
87
|
-
readonly noteCode: LineageNoteCode;
|
|
88
|
-
readonly detail: string;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* A lineage edge referenced a superseded artifact INSTANCE id and was
|
|
92
|
-
* resolved to the producer task's CURRENT artifact (PRI-717). Durable
|
|
93
|
-
* artifact ids embed the producing run (`pi-art-<taskId>-run_<taskId>_<seq>`)
|
|
94
|
-
* and the upsert rewrites the id on every re-run of the same task, so edges
|
|
95
|
-
* captured before an upstream revision dangle even though the logical
|
|
96
|
-
* artifact (UNIQUE(source_task_id, artifact_kind)) still exists. Emitted so
|
|
97
|
-
* the rebind stays observable (rc-9) — it is not a partial-chain note.
|
|
98
|
-
*/
|
|
99
|
-
| {
|
|
100
|
-
readonly type: 'lineage_edge_rebound';
|
|
101
|
-
readonly staleArtifactId: string;
|
|
102
|
-
readonly resolvedArtifactId: string;
|
|
103
|
-
readonly taskId: string;
|
|
104
|
-
};
|
|
105
|
-
/** Two-hop task reader (F1) — resolves taskKind from a taskId. */
|
|
106
|
-
export interface LineageTaskReader {
|
|
107
|
-
getTaskById(taskId: string): Promise<{
|
|
108
|
-
readonly taskId: string;
|
|
109
|
-
readonly taskKind: string;
|
|
110
|
-
} | null>;
|
|
111
|
-
}
|
|
112
|
-
export interface CandidateLineageDeps {
|
|
113
|
-
readonly artifacts: Pick<PIArtifactStore, 'getArtifactById' | 'listBySourceTaskId'>;
|
|
114
|
-
readonly tasks: LineageTaskReader;
|
|
115
|
-
/** Default 6 (longest pipeline chain + 1). */
|
|
116
|
-
readonly maxDepth?: number;
|
|
117
|
-
readonly emit?: (event: LineageEvent) => void;
|
|
118
|
-
}
|
|
119
|
-
export declare class CandidateLineage {
|
|
120
|
-
private readonly artifacts;
|
|
121
|
-
private readonly tasks;
|
|
122
|
-
private readonly maxDepth;
|
|
123
|
-
private readonly emit;
|
|
124
|
-
/** request-scoped: artifactId → resolved record (or null if known-absent). */
|
|
125
|
-
private readonly cache;
|
|
126
|
-
/** request-scoped: taskId → resolved taskKind (or null). */
|
|
127
|
-
private readonly taskCache;
|
|
128
|
-
constructor(deps: CandidateLineageDeps);
|
|
129
|
-
/**
|
|
130
|
-
* Resolve the full ancestry chain starting from `startArtifactId`.
|
|
131
|
-
* Walks `lineageArtifactIds` upstream, building an ordered node list.
|
|
132
|
-
*/
|
|
133
|
-
resolve(startArtifactId: string): Promise<LineageResult>;
|
|
134
|
-
/**
|
|
135
|
-
* Find the nearest ancestor node with a given `taskKind` (F1 — never by
|
|
136
|
-
* `artifactKind`). Returns `{ ok: true, node: null }` when no ancestor
|
|
137
|
-
* matches (a valid result, not an error).
|
|
138
|
-
*/
|
|
139
|
-
findAncestorByTaskKind(startArtifactId: string, taskKind: string): Promise<{
|
|
140
|
-
readonly ok: true;
|
|
141
|
-
readonly node: LineageNode | null;
|
|
142
|
-
readonly notes: readonly LineageNote[];
|
|
143
|
-
} | {
|
|
144
|
-
readonly ok: false;
|
|
145
|
-
readonly error: LineageError;
|
|
146
|
-
}>;
|
|
147
|
-
/**
|
|
148
|
-
* Iterative BFS resolution with cycle detection (via `visited`) and depth
|
|
149
|
-
* limiting. `visited` carries artifactIds already resolved (prevents cycles
|
|
150
|
-
* and redundant fetches across the whole traversal, not just one path).
|
|
151
|
-
*
|
|
152
|
-
* Depth counts BFS LEVELS (start = level 0), matching the documented
|
|
153
|
-
* `maxDepth = longest pipeline chain + 1` invariant — not the number of
|
|
154
|
-
* nodes processed. A node-counting loop would stop mid-level on wide chains
|
|
155
|
-
* (the split-diagnostician router fans out to two artifacts per level) and
|
|
156
|
-
* starve deep ancestors of resolution (PRI-717).
|
|
157
|
-
*/
|
|
158
|
-
private resolveChain;
|
|
159
|
-
/**
|
|
160
|
-
* PRI-717: attempt to resolve a dangling lineage edge to the producer
|
|
161
|
-
* task's CURRENT artifact. Only fires when the edge id follows the
|
|
162
|
-
* producer convention AND that task still has a durable artifact of the
|
|
163
|
-
* SAME id family; any other outcome keeps the fail-closed
|
|
164
|
-
* `ancestor_pruned` handling in the caller.
|
|
165
|
-
*
|
|
166
|
-
* Review fix (rebind identity): the durable logical identity is
|
|
167
|
-
* (sourceTaskId, artifactKind) — an evaluator task may carry BOTH a
|
|
168
|
-
* `pi-art-…` principle row and a `pi-rule-…` rule row. The stale edge
|
|
169
|
-
* names a `pi-art-` instance of the task, so only the CURRENT instance of
|
|
170
|
-
* the SAME id family is a rebound candidate — never another kind's row
|
|
171
|
-
* and never array order. `matches.length !== 1` (0 = no current instance
|
|
172
|
-
* of this family, >1 = data anomaly against UNIQUE(source_task_id,
|
|
173
|
-
* artifact_kind)) stays fail-closed, with the ambiguity reported back so
|
|
174
|
-
* the caller's note says why — never a silent pick.
|
|
175
|
-
*
|
|
176
|
-
* The rebind result is cached under the STALE id so repeated edges to the
|
|
177
|
-
* same superseded instance stay idempotent within one request (CP-18).
|
|
178
|
-
*/
|
|
179
|
-
private tryReboundInstance;
|
|
180
|
-
/** Cached artifact fetch. Returns `ok:false` on store failure or corruption. */
|
|
181
|
-
private getArtifactCached;
|
|
182
|
-
/** Cached task fetch (two-hop). Returns `ok:false` only on reader failure (treated as store_failure). */
|
|
183
|
-
private getTaskCached;
|
|
184
|
-
}
|
|
185
|
-
//# sourceMappingURL=candidate-lineage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"candidate-lineage.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/candidate-lineage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,357 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Layer 2 — CandidateLineage: on-demand ancestry traversal (design §6.4).
|
|
3
|
-
*
|
|
4
|
-
* Pure logic with **injected** I/O (artifact store + task reader). Walks an
|
|
5
|
-
* artifact's ancestry via `lineageArtifactIds`, determining each node's stage
|
|
6
|
-
* by the two-hop `artifact.sourceTaskId → task.taskKind` (F1 — never by
|
|
7
|
-
* `artifactKind`, which is ambiguous: all internalization artifacts are
|
|
8
|
-
* `principle`).
|
|
9
|
-
*
|
|
10
|
-
* Result contract (rc-9, design §6.4 error table):
|
|
11
|
-
* - data corruption (unparseable / shape-invalid / store-throw) → `ok: false`
|
|
12
|
-
* + a `LineageError`; the caller MUST surface it as an explicit failure or
|
|
13
|
-
* structured degradation — never silently fall through.
|
|
14
|
-
* - expected absence (no lineage ids / ancestor pruned / task missing / depth
|
|
15
|
-
* limit / cycle) → `ok: true` with a partial chain + notes; `complete` is
|
|
16
|
-
* false and `notes` is non-empty.
|
|
17
|
-
*
|
|
18
|
-
* Stale-instance rebind (PRI-717): a lineage edge whose artifact id no longer
|
|
19
|
-
* resolves is first checked against the producer-task convention
|
|
20
|
-
* (`pi-art-<taskId>-run_<taskId>_<seq>`); when the producing task still has a
|
|
21
|
-
* current durable artifact, the edge resolves to it and a
|
|
22
|
-
* `lineage_edge_rebound` event is emitted. Everything else stays fail-closed
|
|
23
|
-
* `ancestor_pruned`.
|
|
24
|
-
*
|
|
25
|
-
* Request-scoped cache: a single `CandidateLineage` instance lives for one
|
|
26
|
-
* `buildContext`; repeated `getArtifactById` calls for the same id hit the
|
|
27
|
-
* cache, not the store (CP-18).
|
|
28
|
-
*
|
|
29
|
-
* rc-1: every `contentJson` stays `unknown` — it is never narrowed or cast.
|
|
30
|
-
*/
|
|
31
|
-
import { SUMMARY_RUNNER_KINDS } from './artifact-summary.js';
|
|
32
|
-
// ── Helpers ──────────────────────────────────────────────────────────────────
|
|
33
|
-
const DEFAULT_MAX_DEPTH = 6;
|
|
34
|
-
const ARTIFACT_ID_PREFIX = 'pi-art-';
|
|
35
|
-
const RUN_MARKER = '-run_';
|
|
36
|
-
/**
|
|
37
|
-
* Recover the producing task id from a durable artifact INSTANCE id
|
|
38
|
-
* (`pi-art-<taskId>-run_<taskId>_<seq>` — the run id embeds its own task id).
|
|
39
|
-
*
|
|
40
|
-
* Returns null when the id does not follow the producer convention (foreign
|
|
41
|
-
* shape, mismatched run segment, non-numeric sequence); the caller then keeps
|
|
42
|
-
* the fail-closed `ancestor_pruned` path — a non-parseable edge is never
|
|
43
|
-
* silently rebound to a guessed task.
|
|
44
|
-
*/
|
|
45
|
-
function parseArtifactInstanceTaskId(artifactId) {
|
|
46
|
-
if (!artifactId.startsWith(ARTIFACT_ID_PREFIX))
|
|
47
|
-
return null;
|
|
48
|
-
const markerIdx = artifactId.lastIndexOf(RUN_MARKER);
|
|
49
|
-
if (markerIdx <= ARTIFACT_ID_PREFIX.length)
|
|
50
|
-
return null;
|
|
51
|
-
const taskId = artifactId.slice(ARTIFACT_ID_PREFIX.length, markerIdx);
|
|
52
|
-
if (taskId === '')
|
|
53
|
-
return null;
|
|
54
|
-
// The run segment after the marker must be `run_<taskId>_<digits>` for the
|
|
55
|
-
// same taskId — a mismatch means the id is not a producer-convention id.
|
|
56
|
-
const runSegment = artifactId.slice(markerIdx + 1 + 'run_'.length);
|
|
57
|
-
const expectedRunPrefix = `${taskId}_`;
|
|
58
|
-
if (!runSegment.startsWith(expectedRunPrefix))
|
|
59
|
-
return null;
|
|
60
|
-
const seq = runSegment.slice(expectedRunPrefix.length);
|
|
61
|
-
return /^(0|[1-9][0-9]*)$/.test(seq) ? taskId : null;
|
|
62
|
-
}
|
|
63
|
-
function isRecord(value) {
|
|
64
|
-
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Read an existing ArtifactSummary off a contentJson (Layer 0 envelope), with
|
|
68
|
-
* full value-type validation (rc-2). Returns null when absent or malformed —
|
|
69
|
-
* the node simply carries no `summary`, which is a valid partial state.
|
|
70
|
-
*/
|
|
71
|
-
function readSummary(contentJson) {
|
|
72
|
-
if (!isRecord(contentJson) || !Object.hasOwn(contentJson, 'summary'))
|
|
73
|
-
return undefined;
|
|
74
|
-
const { summary } = contentJson;
|
|
75
|
-
if (!isRecord(summary))
|
|
76
|
-
return undefined;
|
|
77
|
-
// rc-2: full value-type validation, then construct a typed object (no as cast).
|
|
78
|
-
if (Object.hasOwn(summary, 'schemaVersion') && summary.schemaVersion === 1
|
|
79
|
-
&& Object.hasOwn(summary, 'runnerKind') && typeof summary.runnerKind === 'string'
|
|
80
|
-
&& SUMMARY_RUNNER_KINDS.includes(summary.runnerKind)
|
|
81
|
-
&& Object.hasOwn(summary, 'headline') && typeof summary.headline === 'string'
|
|
82
|
-
&& Object.hasOwn(summary, 'fields') && isRecord(summary.fields)
|
|
83
|
-
&& Object.values(summary.fields).every((v) => typeof v === 'string')
|
|
84
|
-
&& Object.hasOwn(summary, 'derivedFrom') && summary.derivedFrom === 'structured_output'
|
|
85
|
-
&& Object.hasOwn(summary, 'omittedFields') && Array.isArray(summary.omittedFields)
|
|
86
|
-
&& summary.omittedFields.every((v) => typeof v === 'string')) {
|
|
87
|
-
// runtime-contract-exempt: ERR-001 narrowing after full value-type validation: runnerKind checked against SUMMARY_RUNNER_KINDS, fields checked via Object.values().every(typeof string), omittedFields checked via Array.isArray + every. The casts are type-only — the values are already validated at runtime above.
|
|
88
|
-
return {
|
|
89
|
-
schemaVersion: 1,
|
|
90
|
-
runnerKind: summary.runnerKind, // runtime-contract-exempt: ERR-001 validated via SUMMARY_RUNNER_KINDS.includes above
|
|
91
|
-
headline: summary.headline,
|
|
92
|
-
fields: summary.fields, // runtime-contract-exempt: ERR-001 validated via Object.values().every(typeof===string) above
|
|
93
|
-
derivedFrom: 'structured_output',
|
|
94
|
-
omittedFields: summary.omittedFields, // runtime-contract-exempt: ERR-001 validated via Array.isArray + every(typeof===string) above
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
return undefined;
|
|
98
|
-
}
|
|
99
|
-
// ── CandidateLineage ─────────────────────────────────────────────────────────
|
|
100
|
-
export class CandidateLineage {
|
|
101
|
-
artifacts;
|
|
102
|
-
tasks;
|
|
103
|
-
maxDepth;
|
|
104
|
-
emit;
|
|
105
|
-
/** request-scoped: artifactId → resolved record (or null if known-absent). */
|
|
106
|
-
cache = new Map();
|
|
107
|
-
/** request-scoped: taskId → resolved taskKind (or null). */
|
|
108
|
-
taskCache = new Map();
|
|
109
|
-
constructor(deps) {
|
|
110
|
-
this.artifacts = deps.artifacts;
|
|
111
|
-
this.tasks = deps.tasks;
|
|
112
|
-
this.maxDepth = deps.maxDepth ?? DEFAULT_MAX_DEPTH;
|
|
113
|
-
this.emit = deps.emit ?? (() => undefined);
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Resolve the full ancestry chain starting from `startArtifactId`.
|
|
117
|
-
* Walks `lineageArtifactIds` upstream, building an ordered node list.
|
|
118
|
-
*/
|
|
119
|
-
async resolve(startArtifactId) {
|
|
120
|
-
return this.resolveChain(startArtifactId, new Set());
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Find the nearest ancestor node with a given `taskKind` (F1 — never by
|
|
124
|
-
* `artifactKind`). Returns `{ ok: true, node: null }` when no ancestor
|
|
125
|
-
* matches (a valid result, not an error).
|
|
126
|
-
*/
|
|
127
|
-
async findAncestorByTaskKind(startArtifactId, taskKind) {
|
|
128
|
-
const result = await this.resolve(startArtifactId);
|
|
129
|
-
if (!result.ok)
|
|
130
|
-
return { ok: false, error: result.error };
|
|
131
|
-
const node = result.value.nodes.find((n) => n.taskKind === taskKind) ?? null;
|
|
132
|
-
return { ok: true, node, notes: result.value.notes };
|
|
133
|
-
}
|
|
134
|
-
// ── Internal traversal ─────────────────────────────────────────────────────
|
|
135
|
-
/**
|
|
136
|
-
* Iterative BFS resolution with cycle detection (via `visited`) and depth
|
|
137
|
-
* limiting. `visited` carries artifactIds already resolved (prevents cycles
|
|
138
|
-
* and redundant fetches across the whole traversal, not just one path).
|
|
139
|
-
*
|
|
140
|
-
* Depth counts BFS LEVELS (start = level 0), matching the documented
|
|
141
|
-
* `maxDepth = longest pipeline chain + 1` invariant — not the number of
|
|
142
|
-
* nodes processed. A node-counting loop would stop mid-level on wide chains
|
|
143
|
-
* (the split-diagnostician router fans out to two artifacts per level) and
|
|
144
|
-
* starve deep ancestors of resolution (PRI-717).
|
|
145
|
-
*/
|
|
146
|
-
async resolveChain(startArtifactId, visited) {
|
|
147
|
-
const nodes = [];
|
|
148
|
-
const notes = [];
|
|
149
|
-
// Resolved (post-rebind) artifact ids already emitted as nodes. Distinct
|
|
150
|
-
// edge ids — one stale instance, one current — can resolve to the SAME
|
|
151
|
-
// logical artifact when siblings were written across an upstream
|
|
152
|
-
// revision; the second resolution must be a silent skip, not a duplicate
|
|
153
|
-
// node or a spurious cycle note.
|
|
154
|
-
const seenResolvedIds = new Set();
|
|
155
|
-
// BFS-style frontier of artifact ids to resolve, seeded with the start.
|
|
156
|
-
// Each iteration drains one full LEVEL, then the frontier's next level is
|
|
157
|
-
// the artifacts discovered by that drain.
|
|
158
|
-
const queue = [startArtifactId];
|
|
159
|
-
let level = 0;
|
|
160
|
-
while (queue.length > 0) {
|
|
161
|
-
// NOTE: a re-queued already-visited id (fan-in diamond — the EP002
|
|
162
|
-
// router topology) is diagnosed as `cycle_detected` when popped. That
|
|
163
|
-
// is the pre-existing diagnostic contract (a true lineage cycle is
|
|
164
|
-
// indistinguishable from a diamond without creation-time ordering);
|
|
165
|
-
// `complete` is advisory only — production consumers gate on `ok` and
|
|
166
|
-
// node reachability, not on `complete`.
|
|
167
|
-
if (level >= this.maxDepth) {
|
|
168
|
-
const [last] = queue;
|
|
169
|
-
notes.push({ code: 'depth_limit_reached', artifactId: last ?? startArtifactId, detail: `maxDepth (${this.maxDepth}) reached; remaining ${queue.length} ancestor(s) not traversed` });
|
|
170
|
-
this.emit({ type: 'lineage_partial', artifactId: last ?? startArtifactId, noteCode: 'depth_limit_reached', detail: `maxDepth ${this.maxDepth}` });
|
|
171
|
-
break;
|
|
172
|
-
}
|
|
173
|
-
const levelSize = queue.length;
|
|
174
|
-
for (let i = 0; i < levelSize; i++) {
|
|
175
|
-
const artifactId = queue.shift();
|
|
176
|
-
if (artifactId === undefined)
|
|
177
|
-
break;
|
|
178
|
-
// Cycle detection.
|
|
179
|
-
if (visited.has(artifactId)) {
|
|
180
|
-
notes.push({ code: 'cycle_detected', artifactId, detail: `artifact ${artifactId} already on the resolution path` });
|
|
181
|
-
this.emit({ type: 'lineage_partial', artifactId, noteCode: 'cycle_detected', detail: 'cycle detected' });
|
|
182
|
-
continue;
|
|
183
|
-
}
|
|
184
|
-
visited.add(artifactId);
|
|
185
|
-
// Fetch artifact (cached).
|
|
186
|
-
const artifactResult = await this.getArtifactCached(artifactId);
|
|
187
|
-
if (!artifactResult.ok)
|
|
188
|
-
return artifactResult; // propagate corruption / store failure
|
|
189
|
-
let artifact = artifactResult.value;
|
|
190
|
-
if (artifact === null) {
|
|
191
|
-
// Ancestor referenced but pruned — expected, partial. PRI-717: the
|
|
192
|
-
// edge may reference a superseded INSTANCE id of a task whose
|
|
193
|
-
// logical artifact still exists (id embeds the run; upsert rewrites
|
|
194
|
-
// it on re-run). Attempt one observable rebind before giving up.
|
|
195
|
-
const rebound = await this.tryReboundInstance(artifactId);
|
|
196
|
-
if (!rebound.ok)
|
|
197
|
-
return rebound;
|
|
198
|
-
artifact = rebound.value;
|
|
199
|
-
if (artifact === null) {
|
|
200
|
-
notes.push({
|
|
201
|
-
code: 'ancestor_pruned',
|
|
202
|
-
artifactId,
|
|
203
|
-
detail: rebound.ambiguousCandidates !== undefined
|
|
204
|
-
? `ancestor artifact ${artifactId} not rebound: ambiguous current artifacts for source task (${rebound.ambiguousCandidates} same-family candidates) — refusing to pick by array order`
|
|
205
|
-
: `ancestor artifact ${artifactId} not found (pruned)`,
|
|
206
|
-
});
|
|
207
|
-
this.emit({ type: 'lineage_partial', artifactId, noteCode: 'ancestor_pruned', detail: 'artifact not found' });
|
|
208
|
-
continue;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
if (seenResolvedIds.has(artifact.artifactId))
|
|
212
|
-
continue;
|
|
213
|
-
seenResolvedIds.add(artifact.artifactId);
|
|
214
|
-
// Parse contentJson (rc-1: stays unknown on success; unparseable = corruption).
|
|
215
|
-
let contentJson;
|
|
216
|
-
try {
|
|
217
|
-
contentJson = JSON.parse(artifact.contentJson);
|
|
218
|
-
}
|
|
219
|
-
catch {
|
|
220
|
-
const err = { kind: 'content_json_unparseable', artifactId, detail: `contentJson of ${artifactId} is not valid JSON` };
|
|
221
|
-
this.emit({ type: 'lineage_data_corrupt', artifactId, detail: err.detail, errorKind: 'content_json_unparseable' });
|
|
222
|
-
return { ok: false, error: err };
|
|
223
|
-
}
|
|
224
|
-
// Shape check: must have sourceTaskId (rc-3 fail loud on corruption).
|
|
225
|
-
if (typeof artifact.sourceTaskId !== 'string' || artifact.sourceTaskId === '') {
|
|
226
|
-
const err = { kind: 'artifact_shape_invalid', artifactId, detail: `artifact ${artifactId} missing required sourceTaskId` };
|
|
227
|
-
this.emit({ type: 'lineage_data_corrupt', artifactId, detail: err.detail, errorKind: 'artifact_shape_invalid' });
|
|
228
|
-
return { ok: false, error: err };
|
|
229
|
-
}
|
|
230
|
-
// Two-hop: sourceTaskId → task.taskKind (F1).
|
|
231
|
-
const taskResult = await this.getTaskCached(artifact.sourceTaskId);
|
|
232
|
-
if (!taskResult.ok)
|
|
233
|
-
return taskResult;
|
|
234
|
-
const task = taskResult.value;
|
|
235
|
-
let taskKind;
|
|
236
|
-
let runnerKind;
|
|
237
|
-
if (task === null) {
|
|
238
|
-
taskKind = 'unknown';
|
|
239
|
-
runnerKind = 'unknown';
|
|
240
|
-
notes.push({ code: 'task_missing', artifactId, detail: `task ${artifact.sourceTaskId} not found; cannot determine stage via two-hop` });
|
|
241
|
-
this.emit({ type: 'lineage_partial', artifactId, noteCode: 'task_missing', detail: `task ${artifact.sourceTaskId} missing` });
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
({ taskKind } = task);
|
|
245
|
-
runnerKind = SUMMARY_RUNNER_KINDS.includes(taskKind)
|
|
246
|
-
? taskKind
|
|
247
|
-
: 'unknown';
|
|
248
|
-
}
|
|
249
|
-
const node = {
|
|
250
|
-
// On a rebind the node carries the RESOLVED artifact's identity, not
|
|
251
|
-
// the superseded edge id — downstream stage attribution reads these.
|
|
252
|
-
artifactId: artifact.artifactId,
|
|
253
|
-
taskId: artifact.sourceTaskId,
|
|
254
|
-
taskKind,
|
|
255
|
-
runnerKind,
|
|
256
|
-
contentJson,
|
|
257
|
-
summary: readSummary(contentJson),
|
|
258
|
-
};
|
|
259
|
-
nodes.push(node);
|
|
260
|
-
// Extend frontier with lineage ids (ancestry).
|
|
261
|
-
const lineageIds = Array.isArray(artifact.lineageArtifactIds) ? artifact.lineageArtifactIds : [];
|
|
262
|
-
if (lineageIds.length === 0 && nodes.length === 1) {
|
|
263
|
-
// The start node has no ancestry — not an error, just a short chain.
|
|
264
|
-
}
|
|
265
|
-
for (const id of lineageIds) {
|
|
266
|
-
if (typeof id === 'string' && id !== '') {
|
|
267
|
-
queue.push(id);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
level++;
|
|
272
|
-
}
|
|
273
|
-
return { ok: true, value: { nodes, complete: notes.length === 0, notes } };
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* PRI-717: attempt to resolve a dangling lineage edge to the producer
|
|
277
|
-
* task's CURRENT artifact. Only fires when the edge id follows the
|
|
278
|
-
* producer convention AND that task still has a durable artifact of the
|
|
279
|
-
* SAME id family; any other outcome keeps the fail-closed
|
|
280
|
-
* `ancestor_pruned` handling in the caller.
|
|
281
|
-
*
|
|
282
|
-
* Review fix (rebind identity): the durable logical identity is
|
|
283
|
-
* (sourceTaskId, artifactKind) — an evaluator task may carry BOTH a
|
|
284
|
-
* `pi-art-…` principle row and a `pi-rule-…` rule row. The stale edge
|
|
285
|
-
* names a `pi-art-` instance of the task, so only the CURRENT instance of
|
|
286
|
-
* the SAME id family is a rebound candidate — never another kind's row
|
|
287
|
-
* and never array order. `matches.length !== 1` (0 = no current instance
|
|
288
|
-
* of this family, >1 = data anomaly against UNIQUE(source_task_id,
|
|
289
|
-
* artifact_kind)) stays fail-closed, with the ambiguity reported back so
|
|
290
|
-
* the caller's note says why — never a silent pick.
|
|
291
|
-
*
|
|
292
|
-
* The rebind result is cached under the STALE id so repeated edges to the
|
|
293
|
-
* same superseded instance stay idempotent within one request (CP-18).
|
|
294
|
-
*/
|
|
295
|
-
async tryReboundInstance(staleArtifactId) {
|
|
296
|
-
const taskId = parseArtifactInstanceTaskId(staleArtifactId);
|
|
297
|
-
if (taskId === null)
|
|
298
|
-
return { ok: true, value: null };
|
|
299
|
-
try {
|
|
300
|
-
const candidates = await this.artifacts.listBySourceTaskId(taskId);
|
|
301
|
-
const instancePrefix = `${ARTIFACT_ID_PREFIX}${taskId}-run_`;
|
|
302
|
-
const matches = candidates.filter((candidate) => candidate.artifactId.startsWith(instancePrefix));
|
|
303
|
-
if (matches.length !== 1) {
|
|
304
|
-
return { ok: true, value: null, ...(matches.length > 1 ? { ambiguousCandidates: matches.length } : {}) };
|
|
305
|
-
}
|
|
306
|
-
const [resolved] = matches;
|
|
307
|
-
if (resolved === undefined)
|
|
308
|
-
return { ok: true, value: null };
|
|
309
|
-
this.cache.set(staleArtifactId, resolved);
|
|
310
|
-
this.emit({
|
|
311
|
-
type: 'lineage_edge_rebound',
|
|
312
|
-
staleArtifactId,
|
|
313
|
-
resolvedArtifactId: resolved.artifactId,
|
|
314
|
-
taskId,
|
|
315
|
-
});
|
|
316
|
-
return { ok: true, value: resolved };
|
|
317
|
-
}
|
|
318
|
-
catch (storeErr) {
|
|
319
|
-
const err = { kind: 'store_failure', detail: storeErr instanceof Error ? storeErr.message : String(storeErr) };
|
|
320
|
-
this.emit({ type: 'lineage_store_failure', detail: err.detail });
|
|
321
|
-
return { ok: false, error: err };
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
/** Cached artifact fetch. Returns `ok:false` on store failure or corruption. */
|
|
325
|
-
async getArtifactCached(artifactId) {
|
|
326
|
-
if (this.cache.has(artifactId)) {
|
|
327
|
-
return { ok: true, value: this.cache.get(artifactId) ?? null };
|
|
328
|
-
}
|
|
329
|
-
try {
|
|
330
|
-
const record = await this.artifacts.getArtifactById(artifactId);
|
|
331
|
-
this.cache.set(artifactId, record);
|
|
332
|
-
return { ok: true, value: record };
|
|
333
|
-
}
|
|
334
|
-
catch (storeErr) {
|
|
335
|
-
const err = { kind: 'store_failure', detail: storeErr instanceof Error ? storeErr.message : String(storeErr) };
|
|
336
|
-
this.emit({ type: 'lineage_store_failure', detail: err.detail });
|
|
337
|
-
return { ok: false, error: err };
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
/** Cached task fetch (two-hop). Returns `ok:false` only on reader failure (treated as store_failure). */
|
|
341
|
-
async getTaskCached(taskId) {
|
|
342
|
-
if (this.taskCache.has(taskId)) {
|
|
343
|
-
return { ok: true, value: this.taskCache.get(taskId) ?? null };
|
|
344
|
-
}
|
|
345
|
-
try {
|
|
346
|
-
const task = await this.tasks.getTaskById(taskId);
|
|
347
|
-
this.taskCache.set(taskId, task);
|
|
348
|
-
return { ok: true, value: task };
|
|
349
|
-
}
|
|
350
|
-
catch (readerErr) {
|
|
351
|
-
const err = { kind: 'store_failure', detail: readerErr instanceof Error ? readerErr.message : String(readerErr) };
|
|
352
|
-
this.emit({ type: 'lineage_store_failure', detail: err.detail });
|
|
353
|
-
return { ok: false, error: err };
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
//# sourceMappingURL=candidate-lineage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"candidate-lineage.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/candidate-lineage.ts"],"names":[],"mappings":"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"}
|