@principles/core 1.270.5 → 1.272.0
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__/admission-gate.test.js +23 -6
- package/dist/runtime-v2/__tests__/admission-gate.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/adversarial-loop.test.js +22 -0
- package/dist/runtime-v2/__tests__/adversarial-loop.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/context-payload-validation.test.js +1 -1
- package/dist/runtime-v2/__tests__/context-payload-validation.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/evaluator-repair-loop.test.js +20 -0
- package/dist/runtime-v2/__tests__/evaluator-repair-loop.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/evidence-guards.test.js +2 -2
- package/dist/runtime-v2/__tests__/evidence-guards.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/golden-path-diagnostician-e2e.test.js +1 -1
- package/dist/runtime-v2/__tests__/golden-path-diagnostician-e2e.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/governance-experience.test.js +19 -0
- package/dist/runtime-v2/__tests__/governance-experience.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/pain-evidence-contract.test.js +3 -3
- package/dist/runtime-v2/__tests__/pain-evidence-contract.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.js +1 -1
- package/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/rollout-reviewer-verdict-paths.test.js +26 -5
- package/dist/runtime-v2/__tests__/rollout-reviewer-verdict-paths.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/rollout-rule-candidate-contract.test.d.ts +2 -0
- package/dist/runtime-v2/__tests__/rollout-rule-candidate-contract.test.d.ts.map +1 -0
- package/dist/runtime-v2/__tests__/rollout-rule-candidate-contract.test.js +243 -0
- package/dist/runtime-v2/__tests__/rollout-rule-candidate-contract.test.js.map +1 -0
- package/dist/runtime-v2/admission-gate.d.ts +8 -1
- package/dist/runtime-v2/admission-gate.d.ts.map +1 -1
- package/dist/runtime-v2/admission-gate.js +14 -0
- package/dist/runtime-v2/admission-gate.js.map +1 -1
- package/dist/runtime-v2/context-payload.d.ts +9 -3
- package/dist/runtime-v2/context-payload.d.ts.map +1 -1
- package/dist/runtime-v2/context-payload.js +3 -1
- package/dist/runtime-v2/context-payload.js.map +1 -1
- package/dist/runtime-v2/evidence-triage/__tests__/observation-resolver.test.js +2 -2
- package/dist/runtime-v2/evidence-triage/__tests__/observation-resolver.test.js.map +1 -1
- package/dist/runtime-v2/evidence-triage/observation-resolver.d.ts +1 -1
- package/dist/runtime-v2/evidence-triage/observation-resolver.d.ts.map +1 -1
- package/dist/runtime-v2/evidence-triage/observation-resolver.js +2 -2
- package/dist/runtime-v2/evidence-triage/observation-resolver.js.map +1 -1
- package/dist/runtime-v2/evidence-triage/types.d.ts +1 -1
- package/dist/runtime-v2/evidence-triage/types.d.ts.map +1 -1
- package/dist/runtime-v2/evolution/evolution-types.d.ts +8 -4
- package/dist/runtime-v2/evolution/evolution-types.d.ts.map +1 -1
- package/dist/runtime-v2/evolution/evolution-types.js +3 -1
- package/dist/runtime-v2/evolution/evolution-types.js.map +1 -1
- package/dist/runtime-v2/governance-experience-contract.d.ts +16 -16
- package/dist/runtime-v2/governance-experience-contract.d.ts.map +1 -1
- package/dist/runtime-v2/governance-experience-contract.js +4 -1
- package/dist/runtime-v2/governance-experience-contract.js.map +1 -1
- package/dist/runtime-v2/governance-experience.d.ts.map +1 -1
- package/dist/runtime-v2/governance-experience.js +30 -8
- package/dist/runtime-v2/governance-experience.js.map +1 -1
- package/dist/runtime-v2/index.d.ts +11 -1
- package/dist/runtime-v2/index.d.ts.map +1 -1
- package/dist/runtime-v2/index.js +7 -0
- package/dist/runtime-v2/index.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/artificer-code-bearing.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/artificer-code-bearing.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/artificer-code-bearing.test.js +114 -0
- package/dist/runtime-v2/internalization/__tests__/artificer-code-bearing.test.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/evaluator-gate-authority.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/evaluator-gate-authority.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/evaluator-gate-authority.test.js +256 -0
- package/dist/runtime-v2/internalization/__tests__/evaluator-gate-authority.test.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/evaluator-prompt-builder.test.js +1 -1
- package/dist/runtime-v2/internalization/__tests__/internalization-transition-decision.test.js +15 -14
- package/dist/runtime-v2/internalization/__tests__/internalization-transition-decision.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/owner-decision-architecture.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/owner-decision-architecture.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/owner-decision-architecture.test.js +56 -0
- package/dist/runtime-v2/internalization/__tests__/owner-decision-architecture.test.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/owner-decision-review.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/owner-decision-review.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/owner-decision-review.test.js +229 -0
- package/dist/runtime-v2/internalization/__tests__/owner-decision-review.test.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/owner-decision.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/owner-decision.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/owner-decision.test.js +1054 -0
- package/dist/runtime-v2/internalization/__tests__/owner-decision.test.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/owner-override-resume.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/owner-override-resume.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/owner-override-resume.test.js +328 -0
- package/dist/runtime-v2/internalization/__tests__/owner-override-resume.test.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/rule-activation-contract.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/rule-activation-contract.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/rule-activation-contract.test.js +187 -0
- package/dist/runtime-v2/internalization/__tests__/rule-activation-contract.test.js.map +1 -0
- package/dist/runtime-v2/internalization/artificer-code-bearing.d.ts +39 -0
- package/dist/runtime-v2/internalization/artificer-code-bearing.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/artificer-code-bearing.js +33 -0
- package/dist/runtime-v2/internalization/artificer-code-bearing.js.map +1 -0
- package/dist/runtime-v2/internalization/evaluator-output.d.ts +63 -2
- package/dist/runtime-v2/internalization/evaluator-output.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/evaluator-output.js +139 -2
- package/dist/runtime-v2/internalization/evaluator-output.js.map +1 -1
- package/dist/runtime-v2/internalization/evaluator-prompt-builder.d.ts +54 -2
- package/dist/runtime-v2/internalization/evaluator-prompt-builder.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/evaluator-prompt-builder.js +49 -2
- package/dist/runtime-v2/internalization/evaluator-prompt-builder.js.map +1 -1
- package/dist/runtime-v2/internalization/evaluator-runner.d.ts +45 -8
- package/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/evaluator-runner.js +465 -43
- package/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/index.d.ts +2 -0
- package/dist/runtime-v2/internalization/index.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/index.js +1 -0
- package/dist/runtime-v2/internalization/index.js.map +1 -1
- package/dist/runtime-v2/internalization/internalization-orchestrator.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/internalization-orchestrator.js +10 -54
- package/dist/runtime-v2/internalization/internalization-orchestrator.js.map +1 -1
- package/dist/runtime-v2/internalization/internalization-transition-decision.d.ts +7 -1
- package/dist/runtime-v2/internalization/internalization-transition-decision.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/internalization-transition-decision.js +9 -2
- package/dist/runtime-v2/internalization/internalization-transition-decision.js.map +1 -1
- package/dist/runtime-v2/internalization/owner-decision-review.d.ts +98 -0
- package/dist/runtime-v2/internalization/owner-decision-review.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/owner-decision-review.js +287 -0
- package/dist/runtime-v2/internalization/owner-decision-review.js.map +1 -0
- package/dist/runtime-v2/internalization/owner-resolution-service.d.ts +100 -0
- package/dist/runtime-v2/internalization/owner-resolution-service.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/owner-resolution-service.js +385 -0
- package/dist/runtime-v2/internalization/owner-resolution-service.js.map +1 -0
- package/dist/runtime-v2/internalization/owner-retry.d.ts +12 -0
- package/dist/runtime-v2/internalization/owner-retry.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/owner-retry.js +23 -0
- package/dist/runtime-v2/internalization/owner-retry.js.map +1 -1
- package/dist/runtime-v2/internalization/owner-review.d.ts +199 -0
- package/dist/runtime-v2/internalization/owner-review.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/owner-review.js +470 -0
- package/dist/runtime-v2/internalization/owner-review.js.map +1 -0
- package/dist/runtime-v2/internalization/peer-runner-contracts.d.ts +5 -1
- package/dist/runtime-v2/internalization/peer-runner-contracts.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/peer-runner-contracts.js.map +1 -1
- package/dist/runtime-v2/internalization/pitask-metadata.d.ts +84 -0
- package/dist/runtime-v2/internalization/pitask-metadata.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/pitask-metadata.js +166 -0
- package/dist/runtime-v2/internalization/pitask-metadata.js.map +1 -1
- package/dist/runtime-v2/internalization/revision-reopen.d.ts +56 -0
- package/dist/runtime-v2/internalization/revision-reopen.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/revision-reopen.js +144 -0
- package/dist/runtime-v2/internalization/revision-reopen.js.map +1 -0
- package/dist/runtime-v2/internalization/rollout-reviewer-runner.d.ts +25 -0
- package/dist/runtime-v2/internalization/rollout-reviewer-runner.d.ts.map +1 -1
- package/dist/runtime-v2/internalization/rollout-reviewer-runner.js +202 -23
- package/dist/runtime-v2/internalization/rollout-reviewer-runner.js.map +1 -1
- package/dist/runtime-v2/internalization/rule-activation-contract.d.ts +35 -0
- package/dist/runtime-v2/internalization/rule-activation-contract.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/rule-activation-contract.js +36 -0
- package/dist/runtime-v2/internalization/rule-activation-contract.js.map +1 -0
- package/dist/runtime-v2/pain-signal-bridge.d.ts +2 -0
- package/dist/runtime-v2/pain-signal-bridge.d.ts.map +1 -1
- package/dist/runtime-v2/pain-signal-bridge.js +4 -3
- package/dist/runtime-v2/pain-signal-bridge.js.map +1 -1
- package/dist/runtime-v2/pain-to-principle-service.d.ts +1 -0
- package/dist/runtime-v2/pain-to-principle-service.d.ts.map +1 -1
- package/dist/runtime-v2/pain-to-principle-service.js +1 -0
- package/dist/runtime-v2/pain-to-principle-service.js.map +1 -1
- package/dist/runtime-v2/runner/__tests__/pain-signal-bridge-admission.test.js +6 -6
- package/dist/runtime-v2/runner/__tests__/pain-signal-bridge-admission.test.js.map +1 -1
- package/dist/runtime-v2/store/context/sqlite-context-assembler.d.ts.map +1 -1
- package/dist/runtime-v2/store/context/sqlite-context-assembler.js +25 -5
- package/dist/runtime-v2/store/context/sqlite-context-assembler.js.map +1 -1
- package/dist/runtime-v2/store/context/sqlite-context-assembler.test.js +39 -9
- package/dist/runtime-v2/store/context/sqlite-context-assembler.test.js.map +1 -1
- package/dist/runtime-v2/store/runtime-state-manager.d.ts +12 -0
- package/dist/runtime-v2/store/runtime-state-manager.d.ts.map +1 -1
- package/dist/runtime-v2/store/runtime-state-manager.js +17 -0
- package/dist/runtime-v2/store/runtime-state-manager.js.map +1 -1
- package/dist/runtime-v2/store/task/__tests__/sqlite-task-store-cas.test.d.ts +2 -0
- package/dist/runtime-v2/store/task/__tests__/sqlite-task-store-cas.test.d.ts.map +1 -0
- package/dist/runtime-v2/store/task/__tests__/sqlite-task-store-cas.test.js +114 -0
- package/dist/runtime-v2/store/task/__tests__/sqlite-task-store-cas.test.js.map +1 -0
- package/dist/runtime-v2/store/task/memory-task-store.d.ts +1 -0
- package/dist/runtime-v2/store/task/memory-task-store.d.ts.map +1 -1
- package/dist/runtime-v2/store/task/memory-task-store.js +8 -0
- package/dist/runtime-v2/store/task/memory-task-store.js.map +1 -1
- package/dist/runtime-v2/store/task/sqlite-task-store.d.ts +20 -0
- package/dist/runtime-v2/store/task/sqlite-task-store.d.ts.map +1 -1
- package/dist/runtime-v2/store/task/sqlite-task-store.js +81 -0
- package/dist/runtime-v2/store/task/sqlite-task-store.js.map +1 -1
- package/dist/runtime-v2/store/task/task-store.d.ts +9 -0
- package/dist/runtime-v2/store/task/task-store.d.ts.map +1 -1
- package/dist/runtime-v2/store/workspace-isolation.test.js +1 -0
- package/dist/runtime-v2/store/workspace-isolation.test.js.map +1 -1
- package/dist/runtime-v2/task-status.d.ts +2 -1
- package/dist/runtime-v2/task-status.d.ts.map +1 -1
- package/dist/runtime-v2/task-status.js +5 -1
- package/dist/runtime-v2/task-status.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { type DecisionArtifactRecord, type OwnerDecisionFactStore } from './owner-review.js';
|
|
2
|
+
import type { OwnerResolutionAction } from './pitask-metadata.js';
|
|
3
|
+
export type DeterministicCheckStatus = 'passed' | 'failed' | 'not_run' | 'unavailable';
|
|
4
|
+
export type ReviewEvidenceCompleteness = 'complete' | 'partial' | 'insufficient';
|
|
5
|
+
export type EvidenceClass = 'deterministic_check' | 'runtime_observation' | 'automated_review' | 'declared_case' | 'provenance';
|
|
6
|
+
export interface OwnerDecisionReviewStore extends OwnerDecisionFactStore {
|
|
7
|
+
getArtifactById(artifactId: string): Promise<DecisionArtifactRecord | null>;
|
|
8
|
+
}
|
|
9
|
+
export interface OwnerEvidenceItem {
|
|
10
|
+
readonly evidenceClass: EvidenceClass;
|
|
11
|
+
readonly label: string;
|
|
12
|
+
readonly value: string;
|
|
13
|
+
}
|
|
14
|
+
export interface BoundEvidenceManifestV1 {
|
|
15
|
+
readonly schemaVersion: 'owner-review-evidence-v1';
|
|
16
|
+
readonly digestAlgorithm: 'sha256';
|
|
17
|
+
readonly sources: readonly {
|
|
18
|
+
readonly role: 'decision' | 'scribe' | 'artificer' | 'evaluator' | 'rollout';
|
|
19
|
+
readonly stableId: string;
|
|
20
|
+
readonly contentHash: string;
|
|
21
|
+
}[];
|
|
22
|
+
readonly semanticFacts: {
|
|
23
|
+
readonly completeness: ReviewEvidenceCompleteness;
|
|
24
|
+
readonly deterministicStatuses: readonly {
|
|
25
|
+
readonly check: string;
|
|
26
|
+
readonly status: DeterministicCheckStatus;
|
|
27
|
+
}[];
|
|
28
|
+
readonly offeredActions: readonly OwnerResolutionAction[];
|
|
29
|
+
readonly acceptRequirement: string;
|
|
30
|
+
readonly briefSemanticHash: string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export interface EvaluatorDecisionBrief {
|
|
34
|
+
readonly kind: 'evaluator';
|
|
35
|
+
readonly principle: {
|
|
36
|
+
readonly title?: string;
|
|
37
|
+
readonly statement?: string;
|
|
38
|
+
readonly rationale?: string;
|
|
39
|
+
readonly scope: readonly string[];
|
|
40
|
+
};
|
|
41
|
+
readonly implementation: {
|
|
42
|
+
readonly summary?: string;
|
|
43
|
+
readonly affectedTools: readonly string[];
|
|
44
|
+
readonly risks: readonly string[];
|
|
45
|
+
};
|
|
46
|
+
readonly strengths: readonly string[];
|
|
47
|
+
readonly concerns: readonly string[];
|
|
48
|
+
readonly requiredChanges: readonly string[];
|
|
49
|
+
readonly score?: number;
|
|
50
|
+
}
|
|
51
|
+
export interface RolloutDecisionBrief {
|
|
52
|
+
readonly kind: 'rollout';
|
|
53
|
+
readonly summary?: string;
|
|
54
|
+
readonly requiredChanges: readonly string[];
|
|
55
|
+
readonly risks: readonly string[];
|
|
56
|
+
}
|
|
57
|
+
export type OwnerDecisionBrief = EvaluatorDecisionBrief | RolloutDecisionBrief;
|
|
58
|
+
export interface OwnerDecisionReviewSnapshot {
|
|
59
|
+
readonly schemaVersion: 'owner-decision-review-v1';
|
|
60
|
+
readonly reviewKey: string;
|
|
61
|
+
readonly taskId: string;
|
|
62
|
+
readonly kind: 'evaluator' | 'rollout';
|
|
63
|
+
readonly brief: OwnerDecisionBrief;
|
|
64
|
+
readonly evidence: {
|
|
65
|
+
readonly completeness: ReviewEvidenceCompleteness;
|
|
66
|
+
readonly deterministicChecks: readonly {
|
|
67
|
+
readonly check: string;
|
|
68
|
+
readonly status: DeterministicCheckStatus;
|
|
69
|
+
}[];
|
|
70
|
+
readonly items: readonly OwnerEvidenceItem[];
|
|
71
|
+
readonly manifest: BoundEvidenceManifestV1;
|
|
72
|
+
readonly digest: string;
|
|
73
|
+
};
|
|
74
|
+
readonly capability: {
|
|
75
|
+
readonly baseAllowedActions: readonly OwnerResolutionAction[];
|
|
76
|
+
readonly finalOfferedActions: readonly OwnerResolutionAction[];
|
|
77
|
+
readonly acceptRequirement: {
|
|
78
|
+
readonly kind: 'none';
|
|
79
|
+
} | {
|
|
80
|
+
readonly kind: 'acknowledge_partial_evidence';
|
|
81
|
+
} | {
|
|
82
|
+
readonly kind: 'forbidden';
|
|
83
|
+
readonly reasonCode: string;
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
readonly staleBinding: {
|
|
87
|
+
readonly expectedRevisionEpoch: number;
|
|
88
|
+
readonly expectedSourceRunId: string;
|
|
89
|
+
readonly expectedSourceArtifactId: string;
|
|
90
|
+
readonly expectedSourceArtifactHash: string;
|
|
91
|
+
readonly expectedEvidenceDigest: string;
|
|
92
|
+
};
|
|
93
|
+
readonly reasonCode: string;
|
|
94
|
+
readonly legacy: boolean;
|
|
95
|
+
readonly createdAt: string;
|
|
96
|
+
}
|
|
97
|
+
export declare function buildOwnerDecisionReview(store: OwnerDecisionReviewStore, taskId: string): Promise<OwnerDecisionReviewSnapshot | null>;
|
|
98
|
+
//# sourceMappingURL=owner-decision-review.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner-decision-review.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/owner-decision-review.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { deriveArtifactSummary } from './artifact-summary.js';
|
|
3
|
+
import { collectOwnerDecisionFacts, computeArtifactContentHash, deriveOwnerDecisionCapability, } from './owner-review.js';
|
|
4
|
+
import { assessArtificerCodeBearing } from './artificer-code-bearing.js';
|
|
5
|
+
const MAX_TEXT = 600;
|
|
6
|
+
const MAX_ITEMS = 3;
|
|
7
|
+
const MAX_LINEAGE_ARTIFACTS = 16;
|
|
8
|
+
function isRecord(value) {
|
|
9
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
10
|
+
}
|
|
11
|
+
function parseRecord(contentJson) {
|
|
12
|
+
try {
|
|
13
|
+
const parsed = JSON.parse(contentJson);
|
|
14
|
+
return isRecord(parsed) ? parsed : null;
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function clamp(value) {
|
|
21
|
+
const trimmed = value.trim();
|
|
22
|
+
return trimmed.length <= MAX_TEXT ? trimmed : `${trimmed.slice(0, MAX_TEXT - 1)}…`;
|
|
23
|
+
}
|
|
24
|
+
function readRecord(source, key) {
|
|
25
|
+
if (!isRecord(source) || !Object.hasOwn(source, key))
|
|
26
|
+
return null;
|
|
27
|
+
return isRecord(source[key]) ? source[key] : null;
|
|
28
|
+
}
|
|
29
|
+
function readString(source, key) {
|
|
30
|
+
if (!isRecord(source) || !Object.hasOwn(source, key))
|
|
31
|
+
return undefined;
|
|
32
|
+
const value = source[key];
|
|
33
|
+
return typeof value === 'string' && value.trim() !== '' ? clamp(value) : undefined;
|
|
34
|
+
}
|
|
35
|
+
function readNumber(source, key) {
|
|
36
|
+
if (!isRecord(source) || !Object.hasOwn(source, key))
|
|
37
|
+
return undefined;
|
|
38
|
+
const value = source[key];
|
|
39
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
|
|
40
|
+
}
|
|
41
|
+
function readStringArray(source, key, max = MAX_ITEMS) {
|
|
42
|
+
if (!isRecord(source) || !Object.hasOwn(source, key) || !Array.isArray(source[key]))
|
|
43
|
+
return [];
|
|
44
|
+
return source[key]
|
|
45
|
+
.filter((entry) => typeof entry === 'string' && entry.trim() !== '')
|
|
46
|
+
.slice(0, max)
|
|
47
|
+
.map(clamp);
|
|
48
|
+
}
|
|
49
|
+
function deterministicStatus(content) {
|
|
50
|
+
if (content === null)
|
|
51
|
+
return 'unavailable';
|
|
52
|
+
if (!Object.hasOwn(content, 'adversarialResult'))
|
|
53
|
+
return 'not_run';
|
|
54
|
+
const result = content.adversarialResult;
|
|
55
|
+
if (!isRecord(result) || !Object.hasOwn(result, 'passed'))
|
|
56
|
+
return 'unavailable';
|
|
57
|
+
if (result.passed === true)
|
|
58
|
+
return 'passed';
|
|
59
|
+
if (result.passed === false)
|
|
60
|
+
return 'failed';
|
|
61
|
+
return 'unavailable';
|
|
62
|
+
}
|
|
63
|
+
function stableValue(value) {
|
|
64
|
+
if (Array.isArray(value))
|
|
65
|
+
return value.map(stableValue);
|
|
66
|
+
if (!isRecord(value))
|
|
67
|
+
return value;
|
|
68
|
+
const result = {};
|
|
69
|
+
for (const key of Object.keys(value).sort())
|
|
70
|
+
result[key] = stableValue(value[key]);
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
function hashSemantic(value) {
|
|
74
|
+
return createHash('sha256').update(JSON.stringify(stableValue(value)), 'utf8').digest('hex');
|
|
75
|
+
}
|
|
76
|
+
async function collectCanonicalArtifacts(store, decision) {
|
|
77
|
+
const collected = [];
|
|
78
|
+
const seen = new Set([decision.artifactId]);
|
|
79
|
+
const queue = [...(decision.lineageArtifactIds ?? [])];
|
|
80
|
+
while (queue.length > 0 && collected.length < MAX_LINEAGE_ARTIFACTS) {
|
|
81
|
+
const artifactId = queue.shift();
|
|
82
|
+
if (artifactId === undefined || seen.has(artifactId))
|
|
83
|
+
continue;
|
|
84
|
+
seen.add(artifactId);
|
|
85
|
+
const artifact = await store.getArtifactById(artifactId).catch(() => null);
|
|
86
|
+
if (!artifact)
|
|
87
|
+
continue;
|
|
88
|
+
const task = artifact.sourceTaskId
|
|
89
|
+
? await store.getTask(artifact.sourceTaskId).catch(() => null)
|
|
90
|
+
: null;
|
|
91
|
+
collected.push({ artifact, taskKind: task?.taskKind ?? 'unknown' });
|
|
92
|
+
for (const parent of artifact.lineageArtifactIds ?? []) {
|
|
93
|
+
if (!seen.has(parent))
|
|
94
|
+
queue.push(parent);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return collected;
|
|
98
|
+
}
|
|
99
|
+
function declaredLineageId(content, directKey, traceKey) {
|
|
100
|
+
const direct = readString(content, directKey);
|
|
101
|
+
const traced = readString(readRecord(content, 'sourceTrace'), traceKey);
|
|
102
|
+
if (direct && traced && direct !== traced)
|
|
103
|
+
return false;
|
|
104
|
+
return direct ?? traced ?? null;
|
|
105
|
+
}
|
|
106
|
+
function selectLineageArtifact(canonical, taskKind, declaredId) {
|
|
107
|
+
if (declaredId === false)
|
|
108
|
+
return null;
|
|
109
|
+
const candidates = canonical.filter((entry) => entry.taskKind === taskKind);
|
|
110
|
+
if (declaredId !== null) {
|
|
111
|
+
return candidates.find((entry) => entry.artifact.artifactId === declaredId)?.artifact ?? null;
|
|
112
|
+
}
|
|
113
|
+
return candidates.length === 1 ? candidates[0]?.artifact ?? null : null;
|
|
114
|
+
}
|
|
115
|
+
function summaryFor(taskKind, artifact) {
|
|
116
|
+
if (!artifact)
|
|
117
|
+
return null;
|
|
118
|
+
const content = parseRecord(artifact.contentJson);
|
|
119
|
+
return content === null ? null : deriveArtifactSummary(taskKind, content);
|
|
120
|
+
}
|
|
121
|
+
function sourceEntry(role, artifact) {
|
|
122
|
+
return {
|
|
123
|
+
role,
|
|
124
|
+
stableId: artifact.artifactId,
|
|
125
|
+
contentHash: computeArtifactContentHash(artifact.contentJson),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
export async function buildOwnerDecisionReview(store, taskId) {
|
|
129
|
+
const facts = await collectOwnerDecisionFacts(store, taskId);
|
|
130
|
+
if (!facts)
|
|
131
|
+
return null;
|
|
132
|
+
const capability = deriveOwnerDecisionCapability(facts);
|
|
133
|
+
if (!capability.eligible || !capability.reviewKey || !facts.decisionArtifact)
|
|
134
|
+
return null;
|
|
135
|
+
const listed = await store.listArtifactsBySourceTask(taskId).catch(() => []);
|
|
136
|
+
const decision = listed.find((entry) => entry.artifactId === facts.decisionArtifact?.artifactId)
|
|
137
|
+
?? await store.getArtifactById(facts.decisionArtifact.artifactId).catch(() => null);
|
|
138
|
+
if (!decision)
|
|
139
|
+
return null;
|
|
140
|
+
const decisionContent = parseRecord(decision.contentJson);
|
|
141
|
+
const canonical = await collectCanonicalArtifacts(store, decision);
|
|
142
|
+
const artificer = selectLineageArtifact(canonical, 'artificer', declaredLineageId(decisionContent, 'sourceArtificerArtifactId', 'artificerArtifactId'));
|
|
143
|
+
const artificerContent = artificer ? parseRecord(artificer.contentJson) : null;
|
|
144
|
+
const artificerLineage = artificer ? await collectCanonicalArtifacts(store, artificer) : [];
|
|
145
|
+
const scribe = selectLineageArtifact(artificerLineage, 'scribe', declaredLineageId(artificerContent, 'sourceScribeArtifactId', 'scribeArtifactId'));
|
|
146
|
+
const codeBearingArtificer = facts.task.taskKind === 'evaluator'
|
|
147
|
+
&& artificer !== null
|
|
148
|
+
&& assessArtificerCodeBearing(artificer.contentJson).codeBearing;
|
|
149
|
+
const checkStatus = deterministicStatus(decisionContent);
|
|
150
|
+
const deterministicChecks = [{ check: 'adversarial_hard_gate', status: checkStatus }];
|
|
151
|
+
const evaluation = readRecord(decisionContent, 'evaluation');
|
|
152
|
+
const sourceRunId = facts.task.humanReviewContext?.sourceRunId
|
|
153
|
+
?? facts.task.completionIntent?.sourceRunId ?? '';
|
|
154
|
+
let brief;
|
|
155
|
+
let completeness;
|
|
156
|
+
if (facts.task.taskKind === 'evaluator') {
|
|
157
|
+
const scribeContent = scribe ? parseRecord(scribe.contentJson) : null;
|
|
158
|
+
const draft = readRecord(scribeContent, 'principleDraft');
|
|
159
|
+
const scribeSummary = summaryFor('scribe', scribe);
|
|
160
|
+
const artificerSummary = summaryFor('artificer', artificer);
|
|
161
|
+
const principleStatement = scribeSummary?.ok
|
|
162
|
+
? scribeSummary.value.fields.principleText
|
|
163
|
+
: readString(draft, 'statement');
|
|
164
|
+
const implementationSummary = artificerSummary?.ok
|
|
165
|
+
? artificerSummary.value.fields.apiSurface
|
|
166
|
+
: readString(artificerContent, 'implementationSummary');
|
|
167
|
+
const affectedTools = readStringArray(artificerContent, 'affectedTools', 20);
|
|
168
|
+
const concerns = readStringArray(evaluation, 'concerns');
|
|
169
|
+
const requiredChanges = readStringArray(evaluation, 'requiredChanges');
|
|
170
|
+
brief = {
|
|
171
|
+
kind: 'evaluator',
|
|
172
|
+
principle: {
|
|
173
|
+
...(readString(draft, 'title') ? { title: readString(draft, 'title') } : {}),
|
|
174
|
+
...(principleStatement ? { statement: principleStatement } : {}),
|
|
175
|
+
...(readString(draft, 'rationale') ? { rationale: readString(draft, 'rationale') } : {}),
|
|
176
|
+
scope: readStringArray(draft, 'applicability', 10),
|
|
177
|
+
},
|
|
178
|
+
implementation: {
|
|
179
|
+
...(implementationSummary ? { summary: implementationSummary } : {}),
|
|
180
|
+
affectedTools,
|
|
181
|
+
risks: readStringArray(artificerContent, 'risks'),
|
|
182
|
+
},
|
|
183
|
+
strengths: readStringArray(evaluation, 'strengths'),
|
|
184
|
+
concerns,
|
|
185
|
+
requiredChanges,
|
|
186
|
+
...(readNumber(evaluation, 'score') !== undefined ? { score: readNumber(evaluation, 'score') } : {}),
|
|
187
|
+
};
|
|
188
|
+
const identifiable = Boolean(principleStatement || implementationSummary || affectedTools.length > 0);
|
|
189
|
+
completeness = principleStatement && (implementationSummary || affectedTools.length > 0)
|
|
190
|
+
? 'complete'
|
|
191
|
+
: identifiable ? 'partial' : 'insufficient';
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
const review = readRecord(decisionContent, 'review');
|
|
195
|
+
brief = {
|
|
196
|
+
kind: 'rollout',
|
|
197
|
+
...(readString(review, 'summary') ? { summary: readString(review, 'summary') } : {}),
|
|
198
|
+
requiredChanges: readStringArray(review, 'requiredChanges'),
|
|
199
|
+
risks: [
|
|
200
|
+
...readStringArray(review, 'rolloutRisks'),
|
|
201
|
+
...readStringArray(decisionContent, 'risks'),
|
|
202
|
+
].slice(0, MAX_ITEMS),
|
|
203
|
+
};
|
|
204
|
+
completeness = brief.summary ? 'complete' : brief.requiredChanges.length > 0 ? 'partial' : 'insufficient';
|
|
205
|
+
}
|
|
206
|
+
const baseAllowedActions = [...capability.allowedActions];
|
|
207
|
+
let finalOfferedActions = [...baseAllowedActions];
|
|
208
|
+
let acceptRequirement = { kind: 'none' };
|
|
209
|
+
if (checkStatus === 'failed') {
|
|
210
|
+
finalOfferedActions = finalOfferedActions.filter((action) => action !== 'accept_current');
|
|
211
|
+
acceptRequirement = { kind: 'forbidden', reasonCode: 'adversarial_hard_gate_failed' };
|
|
212
|
+
}
|
|
213
|
+
else if (codeBearingArtificer && checkStatus !== 'passed') {
|
|
214
|
+
finalOfferedActions = finalOfferedActions.filter((action) => action !== 'accept_current');
|
|
215
|
+
acceptRequirement = { kind: 'forbidden', reasonCode: 'adversarial_hard_gate_not_passed' };
|
|
216
|
+
}
|
|
217
|
+
else if (completeness === 'insufficient') {
|
|
218
|
+
finalOfferedActions = finalOfferedActions.filter((action) => action !== 'accept_current');
|
|
219
|
+
acceptRequirement = { kind: 'forbidden', reasonCode: 'review_evidence_insufficient' };
|
|
220
|
+
}
|
|
221
|
+
else if (completeness === 'partial' && finalOfferedActions.includes('accept_current')) {
|
|
222
|
+
acceptRequirement = { kind: 'acknowledge_partial_evidence' };
|
|
223
|
+
}
|
|
224
|
+
const items = [];
|
|
225
|
+
if (brief.kind === 'evaluator') {
|
|
226
|
+
for (const value of brief.strengths)
|
|
227
|
+
items.push({ evidenceClass: 'automated_review', label: 'strength', value });
|
|
228
|
+
for (const value of brief.concerns)
|
|
229
|
+
items.push({ evidenceClass: 'automated_review', label: 'concern', value });
|
|
230
|
+
}
|
|
231
|
+
items.push({
|
|
232
|
+
evidenceClass: 'deterministic_check',
|
|
233
|
+
label: 'adversarial_hard_gate',
|
|
234
|
+
value: checkStatus,
|
|
235
|
+
});
|
|
236
|
+
const sources = [
|
|
237
|
+
sourceEntry(facts.task.taskKind === 'evaluator' ? 'evaluator' : 'rollout', decision),
|
|
238
|
+
];
|
|
239
|
+
if (artificer)
|
|
240
|
+
sources.push(sourceEntry('artificer', artificer));
|
|
241
|
+
if (scribe)
|
|
242
|
+
sources.push(sourceEntry('scribe', scribe));
|
|
243
|
+
const briefSemanticHash = hashSemantic(brief);
|
|
244
|
+
const manifest = {
|
|
245
|
+
schemaVersion: 'owner-review-evidence-v1',
|
|
246
|
+
digestAlgorithm: 'sha256',
|
|
247
|
+
sources,
|
|
248
|
+
semanticFacts: {
|
|
249
|
+
completeness,
|
|
250
|
+
deterministicStatuses: deterministicChecks,
|
|
251
|
+
offeredActions: finalOfferedActions,
|
|
252
|
+
acceptRequirement: acceptRequirement.kind,
|
|
253
|
+
briefSemanticHash,
|
|
254
|
+
},
|
|
255
|
+
};
|
|
256
|
+
const digest = hashSemantic(manifest);
|
|
257
|
+
return {
|
|
258
|
+
schemaVersion: 'owner-decision-review-v1',
|
|
259
|
+
reviewKey: capability.reviewKey,
|
|
260
|
+
taskId,
|
|
261
|
+
kind: facts.task.taskKind === 'evaluator' ? 'evaluator' : 'rollout',
|
|
262
|
+
brief,
|
|
263
|
+
evidence: {
|
|
264
|
+
completeness,
|
|
265
|
+
deterministicChecks,
|
|
266
|
+
items,
|
|
267
|
+
manifest,
|
|
268
|
+
digest,
|
|
269
|
+
},
|
|
270
|
+
capability: {
|
|
271
|
+
baseAllowedActions,
|
|
272
|
+
finalOfferedActions,
|
|
273
|
+
acceptRequirement,
|
|
274
|
+
},
|
|
275
|
+
staleBinding: {
|
|
276
|
+
expectedRevisionEpoch: facts.task.revisionCount ?? 0,
|
|
277
|
+
expectedSourceRunId: sourceRunId,
|
|
278
|
+
expectedSourceArtifactId: decision.artifactId,
|
|
279
|
+
expectedSourceArtifactHash: facts.decisionArtifact.contentHash,
|
|
280
|
+
expectedEvidenceDigest: digest,
|
|
281
|
+
},
|
|
282
|
+
reasonCode: capability.reasonCode,
|
|
283
|
+
legacy: capability.legacy,
|
|
284
|
+
createdAt: facts.task.updatedAt,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=owner-decision-review.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner-decision-review.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/owner-decision-review.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* owner-resolution-service.ts — PRI-629 Owner 裁决的应用层(Console/CLI 共用)。
|
|
3
|
+
*
|
|
4
|
+
* 职责: 校验 reviewKey(stale 防护)→ CAS 写入 OwnerResolutionRecord →
|
|
5
|
+
* 按动作分派:
|
|
6
|
+
* - accept_current / reject_current (verdict override): 写 pending resolution
|
|
7
|
+
* 并把任务原子翻回 pending(保留 runnerDecision/completionIntent — 与
|
|
8
|
+
* owner-retry 的 authority reset 相反);实际效果由 runner 的入口恢复门
|
|
9
|
+
* 在 LLM 之前应用(SPEC §10: pending Owner Resolution 优先于 pending
|
|
10
|
+
* Completion Intent 优先于 normal LLM invocation)。
|
|
11
|
+
* - revise_once: 解析修订目标 → 以 resolution-scoped causeId reopen
|
|
12
|
+
* (幂等)→ 标 applied。不开自动预算,repairIteration 不变(SPEC §11)。
|
|
13
|
+
*
|
|
14
|
+
* 并发语义(SPEC §7): same reviewKey + same action → idempotent success;
|
|
15
|
+
* same reviewKey + different action → already_resolved;全部经
|
|
16
|
+
* updateTaskIfDiagnosticJsonUnchanged 单 SQL conditional mutation。
|
|
17
|
+
*/
|
|
18
|
+
import type { RuntimeStateManager } from '../store/runtime-state-manager.js';
|
|
19
|
+
import { type OwnerResolutionAction, type RunnerDecision } from './pitask-metadata.js';
|
|
20
|
+
import { type OwnerDecisionFactStore } from './owner-review.js';
|
|
21
|
+
import { type OwnerDecisionReviewStore } from './owner-decision-review.js';
|
|
22
|
+
import { reopenTaskForRevision } from './revision-reopen.js';
|
|
23
|
+
export interface OwnerResolutionRequest {
|
|
24
|
+
readonly action: OwnerResolutionAction;
|
|
25
|
+
readonly reviewKey: string;
|
|
26
|
+
readonly expectedRevisionEpoch: number;
|
|
27
|
+
readonly expectedSourceRunId: string;
|
|
28
|
+
readonly expectedSourceArtifactId: string;
|
|
29
|
+
readonly expectedSourceArtifactHash: string;
|
|
30
|
+
/** Required by the Console v1.2 route; optional only for pre-v1.2 internal callers. */
|
|
31
|
+
readonly expectedEvidenceDigest?: string;
|
|
32
|
+
readonly acknowledgement?: {
|
|
33
|
+
readonly kind: 'partial_evidence';
|
|
34
|
+
readonly acknowledged: true;
|
|
35
|
+
readonly note?: string;
|
|
36
|
+
};
|
|
37
|
+
readonly ownerInstruction?: string | null;
|
|
38
|
+
}
|
|
39
|
+
export interface OwnerIdentityContext {
|
|
40
|
+
readonly ownerId: string;
|
|
41
|
+
readonly credentialId?: string;
|
|
42
|
+
}
|
|
43
|
+
export type OwnerResolutionOutcome = {
|
|
44
|
+
status: 'resolved';
|
|
45
|
+
resolutionId: string;
|
|
46
|
+
reviewKey: string;
|
|
47
|
+
action: OwnerResolutionAction;
|
|
48
|
+
applied: boolean;
|
|
49
|
+
effectiveDecision?: RunnerDecision;
|
|
50
|
+
targetTaskId?: string;
|
|
51
|
+
/** verdict override 动作: 任务已翻回 pending,由 runner 入口恢复门应用 */
|
|
52
|
+
runnerWillApply: boolean;
|
|
53
|
+
} | {
|
|
54
|
+
status: 'not_found';
|
|
55
|
+
} | {
|
|
56
|
+
status: 'metadata_invalid';
|
|
57
|
+
} | {
|
|
58
|
+
status: 'not_decision_capable';
|
|
59
|
+
blockers: readonly string[];
|
|
60
|
+
} | {
|
|
61
|
+
status: 'stale_owner_decision';
|
|
62
|
+
} | {
|
|
63
|
+
status: 'evidence_acknowledgement_required';
|
|
64
|
+
} | {
|
|
65
|
+
status: 'already_resolved';
|
|
66
|
+
existingAction: OwnerResolutionAction;
|
|
67
|
+
} | {
|
|
68
|
+
status: 'cas_conflict';
|
|
69
|
+
} | {
|
|
70
|
+
status: 'revise_target_unresolved';
|
|
71
|
+
} | {
|
|
72
|
+
status: 'revise_reopen_failed';
|
|
73
|
+
reason: string;
|
|
74
|
+
};
|
|
75
|
+
export interface OwnerResolutionApplyDeps {
|
|
76
|
+
readonly stateManager: RuntimeStateManager;
|
|
77
|
+
readonly now?: () => string;
|
|
78
|
+
/** 注入以便测试替换;生产为 revision-reopen.ts 的核心实现 */
|
|
79
|
+
readonly reopenTaskForRevision?: typeof reopenTaskForRevision;
|
|
80
|
+
}
|
|
81
|
+
/** RuntimeStateManager → OwnerDecisionFactStore 的窄适配(pi artifacts 经专用 store)。 */
|
|
82
|
+
export declare function factStoreFromStateManager(stateManager: RuntimeStateManager): OwnerDecisionFactStore;
|
|
83
|
+
export declare function reviewStoreFromStateManager(stateManager: RuntimeStateManager): OwnerDecisionReviewStore;
|
|
84
|
+
/** revise_once 可选短指导的有界消毒(SPEC §13)— 仅作 revision feedback,非命令。 */
|
|
85
|
+
export declare function sanitizeOwnerInstruction(raw: unknown): string | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* 应用一次 Owner 裁决。全程幂等、crash-safe:
|
|
88
|
+
* - verdict override: authority 记录(pending)与 status 翻转在同一次 CAS
|
|
89
|
+
* mutation 中落库;crash 后重放 = idempotent success;实际效果由 runner
|
|
90
|
+
* 恢复门执行(不重新调用 LLM,SPEC §30)。
|
|
91
|
+
* - revise_once: pending 记录 → reopen(causeId 幂等)→ applied;任一步
|
|
92
|
+
* crash 后重放收敛到同一结果。
|
|
93
|
+
*/
|
|
94
|
+
export interface ApplyOwnerResolutionArgs {
|
|
95
|
+
readonly taskId: string;
|
|
96
|
+
readonly request: OwnerResolutionRequest;
|
|
97
|
+
readonly identity: OwnerIdentityContext;
|
|
98
|
+
}
|
|
99
|
+
export declare function applyOwnerResolution(deps: OwnerResolutionApplyDeps, args: ApplyOwnerResolutionArgs): Promise<OwnerResolutionOutcome>;
|
|
100
|
+
//# sourceMappingURL=owner-resolution-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner-resolution-service.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/owner-resolution-service.ts"],"names":[],"mappings":"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"}
|