@telora/daemon 0.17.75 → 0.17.82
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/README.md +9 -5
- package/build-info.json +6 -3
- package/dist/auto-update.d.ts +8 -4
- package/dist/auto-update.d.ts.map +1 -1
- package/dist/auto-update.js +9 -5
- package/dist/auto-update.js.map +1 -1
- package/dist/cascade-restatement.d.ts +8 -0
- package/dist/cascade-restatement.d.ts.map +1 -1
- package/dist/cascade-restatement.js +16 -1
- package/dist/cascade-restatement.js.map +1 -1
- package/dist/cli/backfill-frt-prose.d.ts +42 -0
- package/dist/cli/backfill-frt-prose.d.ts.map +1 -1
- package/dist/cli/backfill-frt-prose.js +61 -4
- package/dist/cli/backfill-frt-prose.js.map +1 -1
- package/dist/cli/connect.d.ts +25 -15
- package/dist/cli/connect.d.ts.map +1 -1
- package/dist/cli/connect.js +76 -20
- package/dist/cli/connect.js.map +1 -1
- package/dist/de-restatement.d.ts +2 -0
- package/dist/de-restatement.d.ts.map +1 -1
- package/dist/de-restatement.js +1 -1
- package/dist/de-restatement.js.map +1 -1
- package/dist/index.js +14 -7
- package/dist/index.js.map +1 -1
- package/dist/loop-engine.d.ts.map +1 -1
- package/dist/loop-engine.js +12 -3
- package/dist/loop-engine.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
- package/dist/prompt-sections/execution-sections.js +19 -1
- package/dist/prompt-sections/execution-sections.js.map +1 -1
- package/dist/prompts/starter-prompt.d.ts +1 -1
- package/dist/prompts/starter-prompt.d.ts.map +1 -1
- package/dist/prompts/starter-prompt.js +1 -1
- package/dist/queries/focuses.d.ts +39 -0
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +87 -0
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/index.d.ts +2 -2
- package/dist/queries/index.d.ts.map +1 -1
- package/dist/queries/index.js +1 -1
- package/dist/queries/index.js.map +1 -1
- package/dist/queries/verification.d.ts +10 -1
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js.map +1 -1
- package/dist/resolvers/shared/reality-tree.d.ts +15 -0
- package/dist/resolvers/shared/reality-tree.d.ts.map +1 -1
- package/dist/resolvers/shared/reality-tree.js.map +1 -1
- package/dist/retire-aware-restatement.d.ts +35 -0
- package/dist/retire-aware-restatement.d.ts.map +1 -1
- package/dist/retire-aware-restatement.js +111 -17
- package/dist/retire-aware-restatement.js.map +1 -1
- package/dist/self-update.d.ts +21 -0
- package/dist/self-update.d.ts.map +1 -1
- package/dist/self-update.js +56 -4
- package/dist/self-update.js.map +1 -1
- package/dist/unified-init.d.ts.map +1 -1
- package/dist/unified-init.js +40 -1
- package/dist/unified-init.js.map +1 -1
- package/dist/unified-shell.d.ts.map +1 -1
- package/dist/unified-shell.js +11 -1
- package/dist/unified-shell.js.map +1 -1
- package/dist/verification-engine.d.ts +21 -8
- package/dist/verification-engine.d.ts.map +1 -1
- package/dist/verification-engine.js +108 -14
- package/dist/verification-engine.js.map +1 -1
- package/dist/verify-reconciliation.d.ts +75 -0
- package/dist/verify-reconciliation.d.ts.map +1 -0
- package/dist/verify-reconciliation.js +164 -0
- package/dist/verify-reconciliation.js.map +1 -0
- package/dist/verify-restatement.d.ts +82 -28
- package/dist/verify-restatement.d.ts.map +1 -1
- package/dist/verify-restatement.js +98 -43
- package/dist/verify-restatement.js.map +1 -1
- package/package.json +3 -3
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
* @module verification-engine
|
|
24
24
|
*/
|
|
25
25
|
import { getPendingVerifications, type PendingVerification, type VerificationOutcome } from './queries/verification.js';
|
|
26
|
-
import { type TargetRestatement } from './verify-restatement.js';
|
|
26
|
+
import { type ReconcileTargetsResult, type TargetRestatement, type VerifyEvidence } from './verify-restatement.js';
|
|
27
|
+
import { type FileEscalationInput } from './escalations.js';
|
|
27
28
|
import type { DaemonConfig } from './types.js';
|
|
28
29
|
import { type AiInspectionInputs } from './ai-inspection-context.js';
|
|
29
30
|
import { runAiInspection as defaultRunAiInspection, type InspectionResult } from './ai-inspection-runner.js';
|
|
@@ -34,6 +35,8 @@ interface StrategyResult {
|
|
|
34
35
|
exitCode?: number | null;
|
|
35
36
|
stdoutTail?: string;
|
|
36
37
|
stderrTail?: string;
|
|
38
|
+
/** Delivery diff against integration, when the strategy resolved one (ai_inspection). */
|
|
39
|
+
deliveryDiff?: string;
|
|
37
40
|
}
|
|
38
41
|
/**
|
|
39
42
|
* Run a configured shell command in the focus's worktree (or the product
|
|
@@ -75,14 +78,24 @@ export interface VerificationDeps {
|
|
|
75
78
|
recordOutcome: (deliveryId: string, outcome: VerificationOutcome) => Promise<void>;
|
|
76
79
|
verifyInjection: (injectionNodeId: string, restatements?: TargetRestatement[]) => Promise<void>;
|
|
77
80
|
/**
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
81
|
+
* Reconcile the declared desired effect against the achieved outcome (authored
|
|
82
|
+
* from the supplied EVIDENCE -- diff/tests/inspection, NOT the UDE problem text)
|
|
83
|
+
* for each UDE the injection targets, classifying match / legitimate_divergence
|
|
84
|
+
* / shortfall. match / legitimate_divergence come back in `restatements` for the
|
|
85
|
+
* engine to carry INTO the verify call; shortfalls come back in `shortfalls` so
|
|
86
|
+
* the engine can hold the gate and escalate. The edge applies the supplied prose
|
|
87
|
+
* + classification; it never runs the LLM.
|
|
84
88
|
*/
|
|
85
|
-
authorTargetRestatements?: (injectionNodeId: string, focusId: string | null) => Promise<
|
|
89
|
+
authorTargetRestatements?: (injectionNodeId: string, focusId: string | null, evidence: VerifyEvidence) => Promise<ReconcileTargetsResult>;
|
|
90
|
+
/**
|
|
91
|
+
* File a human escalation when an injection's achieved outcome falls SHORT of
|
|
92
|
+
* its declared desired effect. Reality is asymmetric: we never soften the
|
|
93
|
+
* declared DE to match a lesser achievement -- we hold the gate and hand the
|
|
94
|
+
* gap to the intent owner.
|
|
95
|
+
*/
|
|
96
|
+
fileEscalation: (input: FileEscalationInput) => Promise<void>;
|
|
97
|
+
/** Org scope for filed escalations. */
|
|
98
|
+
organizationId: string;
|
|
86
99
|
/** Persist a single drift proposal observed during ai_inspection. */
|
|
87
100
|
emitDriftProposal: (payload: DriftProposalCreatePayload) => Promise<void>;
|
|
88
101
|
runDeterministic: typeof runDeterministicStrategy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-engine.d.ts","sourceRoot":"","sources":["../src/verification-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EACL,uBAAuB,EAGvB,KAAK,mBAAmB,EAExB,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAEL,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"verification-engine.d.ts","sourceRoot":"","sources":["../src/verification-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,9 @@ import { spawn } from 'node:child_process';
|
|
|
26
26
|
import { getPendingVerifications, recordDeliveryVerificationOutcome, verifyInjectionOnPass, } from './queries/verification.js';
|
|
27
27
|
import { configForProduct } from './config.js';
|
|
28
28
|
import { authorTargetRestatements as defaultAuthorTargetRestatements, } from './verify-restatement.js';
|
|
29
|
+
import { fileEscalation as defaultFileEscalation } from './escalations.js';
|
|
30
|
+
import { getGitDiff } from './assembly-resolvers.js';
|
|
31
|
+
import { ESCALATION_REASONS, ESCALATION_DISPOSITIONS } from '@telora/daemon-core';
|
|
29
32
|
import { resolveAiInspectionInputs as defaultResolveAiInspectionInputs, } from './ai-inspection-context.js';
|
|
30
33
|
import { runAiInspection as defaultRunAiInspection, } from './ai-inspection-runner.js';
|
|
31
34
|
import { buildDefaultSecurityFindingGateDeps, evaluateFindingNoLongerPresent, escalateOnGateFail, } from './security-finding-gate.js';
|
|
@@ -128,6 +131,7 @@ export async function runAiInspectionStrategy(deps, v) {
|
|
|
128
131
|
return {
|
|
129
132
|
outcome,
|
|
130
133
|
rationale: inspection.rationale,
|
|
134
|
+
deliveryDiff: inputs.deliveryDiff,
|
|
131
135
|
inspection,
|
|
132
136
|
};
|
|
133
137
|
}
|
|
@@ -154,7 +158,9 @@ const defaultDeps = (config) => {
|
|
|
154
158
|
getPendingVerifications,
|
|
155
159
|
recordOutcome: recordDeliveryVerificationOutcome,
|
|
156
160
|
verifyInjection: verifyInjectionOnPass,
|
|
157
|
-
authorTargetRestatements: (injectionNodeId, focusId) => defaultAuthorTargetRestatements(injectionNodeId, focusId),
|
|
161
|
+
authorTargetRestatements: (injectionNodeId, focusId, evidence) => defaultAuthorTargetRestatements(injectionNodeId, focusId, evidence),
|
|
162
|
+
fileEscalation: defaultFileEscalation,
|
|
163
|
+
organizationId: config.organizationId,
|
|
158
164
|
emitDriftProposal: defaultEmitDriftProposal,
|
|
159
165
|
runDeterministic: runDeterministicStrategy,
|
|
160
166
|
runAiInspection: defaultRunAiInspection,
|
|
@@ -173,6 +179,68 @@ const STRATEGIES = {
|
|
|
173
179
|
behavioral: () => runBehavioralStrategy(),
|
|
174
180
|
ai_inspection: (deps, v) => runAiInspectionStrategy(deps, v),
|
|
175
181
|
};
|
|
182
|
+
/**
|
|
183
|
+
* Build the cited-evidence bundle the achieved-DE authoring consumes. Sourced
|
|
184
|
+
* from the verification verdict (NOT the UDE problem text):
|
|
185
|
+
* - ai_inspection: the runner rationale + the delivery diff it inspected.
|
|
186
|
+
* - deterministic: the check exit code + stdout/stderr tails, plus the diff
|
|
187
|
+
* against integration (fetched best-effort; an empty diff just yields less
|
|
188
|
+
* evidence, it never blocks).
|
|
189
|
+
*/
|
|
190
|
+
function buildVerifyEvidence(result, v, deps) {
|
|
191
|
+
let diff = result.deliveryDiff ?? '';
|
|
192
|
+
if (diff === '') {
|
|
193
|
+
try {
|
|
194
|
+
diff = getGitDiff(deps.resolveCwd(v.productId), deps.integrationBranch);
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
// best-effort: no diff is fine, the other evidence slots still carry signal
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
diff: diff || undefined,
|
|
202
|
+
testStdout: result.stdoutTail,
|
|
203
|
+
testStderr: result.stderrTail,
|
|
204
|
+
exitCode: result.exitCode,
|
|
205
|
+
inspectionRationale: result.inspection?.rationale,
|
|
206
|
+
verdictRationale: result.rationale,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* File one human escalation carrying the declared-vs-achieved gap for the
|
|
211
|
+
* injection's shortfall target(s). Best-effort: a failure to escalate must not
|
|
212
|
+
* crash the tick (the gate is already held by the demoted 'failed' outcome).
|
|
213
|
+
*/
|
|
214
|
+
async function escalateShortfalls(v, shortfalls, deps) {
|
|
215
|
+
const lines = shortfalls.map((s) => `- node ${s.nodeId}\n declared: ${s.declaredStatement}\n achieved: ${s.achievedStatement}\n shortfall: ${s.reason}`);
|
|
216
|
+
try {
|
|
217
|
+
await deps.fileEscalation({
|
|
218
|
+
organizationId: deps.organizationId,
|
|
219
|
+
...(v.focusId ? { focusId: v.focusId } : {}),
|
|
220
|
+
...(v.productId ? { productId: v.productId } : {}),
|
|
221
|
+
reason: `Verify reconciliation: achieved outcome falls short of declared intent ` +
|
|
222
|
+
`for injection ${v.injectionNodeId} (delivery "${v.deliveryName}"). ` +
|
|
223
|
+
`The flip was withheld -- reality is not lowered to match a lesser intent. ` +
|
|
224
|
+
`Declared-vs-achieved gap(s):\n${lines.join('\n')}`,
|
|
225
|
+
reasonType: ESCALATION_REASONS.DECISION_NEEDED,
|
|
226
|
+
disposition: ESCALATION_DISPOSITIONS.NEEDS_INTENT,
|
|
227
|
+
kind: 'verify_shortfall',
|
|
228
|
+
details: {
|
|
229
|
+
injection_node_id: v.injectionNodeId,
|
|
230
|
+
delivery_id: v.deliveryId,
|
|
231
|
+
shortfalls: shortfalls.map((s) => ({
|
|
232
|
+
node_id: s.nodeId,
|
|
233
|
+
declared: s.declaredStatement,
|
|
234
|
+
achieved: s.achievedStatement,
|
|
235
|
+
reason: s.reason,
|
|
236
|
+
})),
|
|
237
|
+
},
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
catch (err) {
|
|
241
|
+
console.warn(`[verification] shortfall escalation failed for delivery ${v.deliveryId}:`, err.message);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
176
244
|
/**
|
|
177
245
|
* Run verification for a single delivery.
|
|
178
246
|
*
|
|
@@ -220,27 +288,53 @@ export async function runVerificationForDelivery(v, deps) {
|
|
|
220
288
|
// every passing delivery. The gate is best-effort defense in depth.
|
|
221
289
|
}
|
|
222
290
|
if (securityGatePassed) {
|
|
223
|
-
//
|
|
224
|
-
//
|
|
225
|
-
//
|
|
226
|
-
//
|
|
227
|
-
//
|
|
228
|
-
//
|
|
291
|
+
// Reconcile declared intent vs achieved outcome for this injection's UDE
|
|
292
|
+
// targets. The achieved desired effect is authored from the CITED worktree
|
|
293
|
+
// EVIDENCE (diff/tests/inspection), NOT the UDE problem text; each target is
|
|
294
|
+
// classified match / legitimate_divergence / shortfall.
|
|
295
|
+
//
|
|
296
|
+
// ASYMMETRY: a shortfall is NEVER carried into verify and NEVER softens the
|
|
297
|
+
// declared DE. If ANY target falls short, we hold the gate (demote to
|
|
298
|
+
// 'failed'), skip the flip, and escalate the gap to a human. Reality is
|
|
299
|
+
// moved toward intent, never the reverse.
|
|
229
300
|
let restatements = [];
|
|
301
|
+
let shortfalls = [];
|
|
230
302
|
if (deps.authorTargetRestatements) {
|
|
303
|
+
const evidence = buildVerifyEvidence(result, v, deps);
|
|
231
304
|
try {
|
|
232
|
-
|
|
305
|
+
const reconciled = await deps.authorTargetRestatements(v.injectionNodeId, v.focusId, evidence);
|
|
306
|
+
restatements = reconciled.restatements;
|
|
307
|
+
shortfalls = reconciled.shortfalls;
|
|
233
308
|
}
|
|
234
309
|
catch (err) {
|
|
235
|
-
|
|
310
|
+
// A reconciliation we could not run at all is asymmetric-unsafe: do not
|
|
311
|
+
// flip an injection whose achievement we could not verify. Treat the
|
|
312
|
+
// whole injection as a shortfall and hold the gate.
|
|
313
|
+
console.warn(`[verification] verify-time reconciliation failed for ${v.injectionNodeId}:`, err.message);
|
|
314
|
+
shortfalls = [{
|
|
315
|
+
nodeId: v.injectionNodeId,
|
|
316
|
+
declaredStatement: '(unknown -- reconciliation failed)',
|
|
317
|
+
achievedStatement: '(reconciliation failed)',
|
|
318
|
+
reason: `Reconciliation failed: ${err.message}`,
|
|
319
|
+
}];
|
|
236
320
|
}
|
|
237
321
|
}
|
|
238
|
-
|
|
239
|
-
|
|
322
|
+
if (shortfalls.length > 0) {
|
|
323
|
+
// Hold the gate, do NOT flip, escalate the declared-vs-achieved gap.
|
|
324
|
+
result.outcome = 'failed';
|
|
325
|
+
result.rationale =
|
|
326
|
+
`verify reconciliation found ${shortfalls.length} shortfall(s) vs declared intent; ` +
|
|
327
|
+
`injection ${v.injectionNodeId} not flipped (escalated to human)`;
|
|
328
|
+
await escalateShortfalls(v, shortfalls, deps);
|
|
240
329
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
330
|
+
else {
|
|
331
|
+
try {
|
|
332
|
+
await deps.verifyInjection(v.injectionNodeId, restatements);
|
|
333
|
+
}
|
|
334
|
+
catch (err) {
|
|
335
|
+
result.outcome = 'pending';
|
|
336
|
+
result.rationale = `verifyInjection failed for ${v.injectionNodeId}: ${err.message}`;
|
|
337
|
+
}
|
|
244
338
|
}
|
|
245
339
|
}
|
|
246
340
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-engine.js","sourceRoot":"","sources":["../src/verification-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verification-engine.js","sourceRoot":"","sources":["../src/verification-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verify-time reconciliation: declared intent vs achieved outcome.
|
|
3
|
+
*
|
|
4
|
+
* Under the differential-focus model a flip is no longer a polarity rewrite of
|
|
5
|
+
* the UDE prose. At verify, the daemon must:
|
|
6
|
+
*
|
|
7
|
+
* 1. Re-derive the ACHIEVED desired effect from CITED worktree EVIDENCE
|
|
8
|
+
* (diff, test output, AI-inspection finding) -- NOT by re-reading the
|
|
9
|
+
* targeted UDE's problem statement. The achieved DE describes what the
|
|
10
|
+
* evidence shows was actually accomplished.
|
|
11
|
+
* 2. Compare the achieved DE against the DECLARED desired effect
|
|
12
|
+
* (node.frtStatement, preserved permanently) and classify the gap:
|
|
13
|
+
* - match -- the achieved outcome realizes the declared intent.
|
|
14
|
+
* - legitimate_divergence-- a valid but different outcome (carries a reason).
|
|
15
|
+
* - shortfall -- the achieved outcome falls short of the intent.
|
|
16
|
+
*
|
|
17
|
+
* Reality is asymmetric: it moves toward intent, never the reverse. So this
|
|
18
|
+
* module NEVER softens the declared DE to match a lesser achievement. On a
|
|
19
|
+
* shortfall the caller short-circuits the flip and escalates to a human.
|
|
20
|
+
*
|
|
21
|
+
* The judgment is a SINGLE model call producing {achievedStatement,
|
|
22
|
+
* classification, divergenceReason?}. It reuses the same `claude` CLI print-mode
|
|
23
|
+
* plumbing as the de-restatement helper -- no new client or secret wiring.
|
|
24
|
+
*
|
|
25
|
+
* @module verify-reconciliation
|
|
26
|
+
*/
|
|
27
|
+
import { type RestatementOptions } from './de-restatement.js';
|
|
28
|
+
/** How the achieved effect compares to the declared desired effect. */
|
|
29
|
+
export type VerifyClassification = 'match' | 'legitimate_divergence' | 'shortfall';
|
|
30
|
+
/** Cited worktree evidence the achieved desired effect is derived from. */
|
|
31
|
+
export interface VerifyEvidence {
|
|
32
|
+
/** Delivery diff against the integration branch, when available. */
|
|
33
|
+
diff?: string;
|
|
34
|
+
/** Captured stdout from a deterministic check (tests/lint/types). */
|
|
35
|
+
testStdout?: string;
|
|
36
|
+
/** Captured stderr from a deterministic check. */
|
|
37
|
+
testStderr?: string;
|
|
38
|
+
/** Exit code of a deterministic check, when run. */
|
|
39
|
+
exitCode?: number | null;
|
|
40
|
+
/** Rationale produced by an ai_inspection runner, when used. */
|
|
41
|
+
inspectionRationale?: string;
|
|
42
|
+
/** Free-form rationale string carried on the verification verdict. */
|
|
43
|
+
verdictRationale?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface ReconcileInputs {
|
|
46
|
+
/** The DECLARED desired effect (node.frtStatement, preserved). */
|
|
47
|
+
declaredStatement: string;
|
|
48
|
+
/** Cited worktree evidence; the achieved DE is derived from THIS, not the UDE. */
|
|
49
|
+
evidence: VerifyEvidence;
|
|
50
|
+
}
|
|
51
|
+
export interface ReconcileJudgment {
|
|
52
|
+
/** The ACHIEVED desired effect, authored from the cited evidence. */
|
|
53
|
+
achievedStatement: string;
|
|
54
|
+
classification: VerifyClassification;
|
|
55
|
+
/** Populated only on legitimate_divergence / shortfall: what the gap is. */
|
|
56
|
+
divergenceReason?: string;
|
|
57
|
+
}
|
|
58
|
+
export type ReconcileOptions = RestatementOptions;
|
|
59
|
+
export declare const RECONCILE_SYSTEM_PROMPT = "You reconcile a software delivery's DECLARED desired effect against what its worktree EVIDENCE actually shows was accomplished, for a Goldratt reality-tree flip.\n\nYou will be given:\n- The DECLARED desired effect: the outcome the work was supposed to realize. This is the intent of record. Do NOT lower it.\n- EVIDENCE from the worktree: the code diff, test/lint/type output, and/or an inspection finding. This is the only ground truth for what was actually achieved.\n\nDo TWO things:\n1. Author the ACHIEVED desired effect: ONE concrete positive sentence describing what the EVIDENCE shows was accomplished. Derive it from the evidence, NOT from the declared sentence -- if the evidence accomplished something different from or narrower than the declaration, the achieved sentence must say what the evidence shows, not echo the declaration.\n2. Classify how the achieved outcome compares to the declared desired effect:\n - \"match\": the achieved outcome realizes the declared intent.\n - \"legitimate_divergence\": the achieved outcome differs from the declared intent but is a valid, defensible result (e.g. a better approach, an equivalent substitution). Give a one-sentence reason naming the gap.\n - \"shortfall\": the achieved outcome falls short of the declared intent -- it does less, is incomplete, or the evidence does not support the declaration. Give a one-sentence reason naming what is missing.\n\nRespond with ONE JSON object and nothing else:\n{\"achievedStatement\": \"<one sentence>\", \"classification\": \"match\" | \"legitimate_divergence\" | \"shortfall\", \"divergenceReason\": \"<one sentence, omit or empty when classification is match>\"}";
|
|
60
|
+
export declare function buildReconcileSystemPrompt(): string;
|
|
61
|
+
/** Render the cited evidence into the user message. Evidence-only -- the UDE text is never included. */
|
|
62
|
+
export declare function buildReconcileUserMessage(inputs: ReconcileInputs): string;
|
|
63
|
+
/** True when the evidence bundle carries no usable signal. */
|
|
64
|
+
export declare function evidenceIsEmpty(ev: VerifyEvidence): boolean;
|
|
65
|
+
/** Parse the model's JSON judgment. Tolerates code fences / surrounding prose. */
|
|
66
|
+
export declare function parseReconcileJson(raw: string): ReconcileJudgment | null;
|
|
67
|
+
/**
|
|
68
|
+
* Reconcile the declared desired effect against the cited evidence.
|
|
69
|
+
*
|
|
70
|
+
* Single model call. Throws on model-invocation or parse failure; the verify
|
|
71
|
+
* caller catches and treats a reconciliation failure conservatively (it does
|
|
72
|
+
* NOT flip an injection it could not reconcile).
|
|
73
|
+
*/
|
|
74
|
+
export declare function reconcileAchievedEffect(inputs: ReconcileInputs, opts?: ReconcileOptions): Promise<ReconcileJudgment>;
|
|
75
|
+
//# sourceMappingURL=verify-reconciliation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-reconciliation.d.ts","sourceRoot":"","sources":["../src/verify-reconciliation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,uEAAuE;AACvE,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,uBAAuB,GAAG,WAAW,CAAC;AAEnF,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kFAAkF;IAClF,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,oBAAoB,CAAC;IACrC,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAElD,eAAO,MAAM,uBAAuB,gpDAcyJ,CAAC;AAE9L,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,wGAAwG;AACxG,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAkCzE;AAED,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAQ3D;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAgDxE;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,eAAe,EACvB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAkB5B"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verify-time reconciliation: declared intent vs achieved outcome.
|
|
3
|
+
*
|
|
4
|
+
* Under the differential-focus model a flip is no longer a polarity rewrite of
|
|
5
|
+
* the UDE prose. At verify, the daemon must:
|
|
6
|
+
*
|
|
7
|
+
* 1. Re-derive the ACHIEVED desired effect from CITED worktree EVIDENCE
|
|
8
|
+
* (diff, test output, AI-inspection finding) -- NOT by re-reading the
|
|
9
|
+
* targeted UDE's problem statement. The achieved DE describes what the
|
|
10
|
+
* evidence shows was actually accomplished.
|
|
11
|
+
* 2. Compare the achieved DE against the DECLARED desired effect
|
|
12
|
+
* (node.frtStatement, preserved permanently) and classify the gap:
|
|
13
|
+
* - match -- the achieved outcome realizes the declared intent.
|
|
14
|
+
* - legitimate_divergence-- a valid but different outcome (carries a reason).
|
|
15
|
+
* - shortfall -- the achieved outcome falls short of the intent.
|
|
16
|
+
*
|
|
17
|
+
* Reality is asymmetric: it moves toward intent, never the reverse. So this
|
|
18
|
+
* module NEVER softens the declared DE to match a lesser achievement. On a
|
|
19
|
+
* shortfall the caller short-circuits the flip and escalates to a human.
|
|
20
|
+
*
|
|
21
|
+
* The judgment is a SINGLE model call producing {achievedStatement,
|
|
22
|
+
* classification, divergenceReason?}. It reuses the same `claude` CLI print-mode
|
|
23
|
+
* plumbing as the de-restatement helper -- no new client or secret wiring.
|
|
24
|
+
*
|
|
25
|
+
* @module verify-reconciliation
|
|
26
|
+
*/
|
|
27
|
+
import { invokeClaudeCli, } from './de-restatement.js';
|
|
28
|
+
export const RECONCILE_SYSTEM_PROMPT = `You reconcile a software delivery's DECLARED desired effect against what its worktree EVIDENCE actually shows was accomplished, for a Goldratt reality-tree flip.
|
|
29
|
+
|
|
30
|
+
You will be given:
|
|
31
|
+
- The DECLARED desired effect: the outcome the work was supposed to realize. This is the intent of record. Do NOT lower it.
|
|
32
|
+
- EVIDENCE from the worktree: the code diff, test/lint/type output, and/or an inspection finding. This is the only ground truth for what was actually achieved.
|
|
33
|
+
|
|
34
|
+
Do TWO things:
|
|
35
|
+
1. Author the ACHIEVED desired effect: ONE concrete positive sentence describing what the EVIDENCE shows was accomplished. Derive it from the evidence, NOT from the declared sentence -- if the evidence accomplished something different from or narrower than the declaration, the achieved sentence must say what the evidence shows, not echo the declaration.
|
|
36
|
+
2. Classify how the achieved outcome compares to the declared desired effect:
|
|
37
|
+
- "match": the achieved outcome realizes the declared intent.
|
|
38
|
+
- "legitimate_divergence": the achieved outcome differs from the declared intent but is a valid, defensible result (e.g. a better approach, an equivalent substitution). Give a one-sentence reason naming the gap.
|
|
39
|
+
- "shortfall": the achieved outcome falls short of the declared intent -- it does less, is incomplete, or the evidence does not support the declaration. Give a one-sentence reason naming what is missing.
|
|
40
|
+
|
|
41
|
+
Respond with ONE JSON object and nothing else:
|
|
42
|
+
{"achievedStatement": "<one sentence>", "classification": "match" | "legitimate_divergence" | "shortfall", "divergenceReason": "<one sentence, omit or empty when classification is match>"}`;
|
|
43
|
+
export function buildReconcileSystemPrompt() {
|
|
44
|
+
return RECONCILE_SYSTEM_PROMPT;
|
|
45
|
+
}
|
|
46
|
+
/** Render the cited evidence into the user message. Evidence-only -- the UDE text is never included. */
|
|
47
|
+
export function buildReconcileUserMessage(inputs) {
|
|
48
|
+
const parts = [`Declared desired effect:\n${inputs.declaredStatement}`];
|
|
49
|
+
const ev = inputs.evidence;
|
|
50
|
+
const evidenceSections = [];
|
|
51
|
+
if (ev.diff && ev.diff.trim() !== '') {
|
|
52
|
+
evidenceSections.push(`Code diff (against integration):\n${ev.diff}`);
|
|
53
|
+
}
|
|
54
|
+
if (typeof ev.exitCode === 'number') {
|
|
55
|
+
evidenceSections.push(`Deterministic check exit code: ${ev.exitCode}`);
|
|
56
|
+
}
|
|
57
|
+
if (ev.testStdout && ev.testStdout.trim() !== '') {
|
|
58
|
+
evidenceSections.push(`Check stdout:\n${ev.testStdout}`);
|
|
59
|
+
}
|
|
60
|
+
if (ev.testStderr && ev.testStderr.trim() !== '') {
|
|
61
|
+
evidenceSections.push(`Check stderr:\n${ev.testStderr}`);
|
|
62
|
+
}
|
|
63
|
+
if (ev.inspectionRationale && ev.inspectionRationale.trim() !== '') {
|
|
64
|
+
evidenceSections.push(`Inspection finding:\n${ev.inspectionRationale}`);
|
|
65
|
+
}
|
|
66
|
+
if (ev.verdictRationale && ev.verdictRationale.trim() !== '') {
|
|
67
|
+
evidenceSections.push(`Verdict rationale:\n${ev.verdictRationale}`);
|
|
68
|
+
}
|
|
69
|
+
if (evidenceSections.length > 0) {
|
|
70
|
+
parts.push(`Evidence from the worktree:\n\n${evidenceSections.join('\n\n')}`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
parts.push('Evidence from the worktree:\n\n(no evidence captured)');
|
|
74
|
+
}
|
|
75
|
+
parts.push('Author the ACHIEVED desired-effect sentence from the EVIDENCE above (not from the declared sentence), then classify it against the declared desired effect. Respond with the JSON object only.');
|
|
76
|
+
return parts.join('\n\n');
|
|
77
|
+
}
|
|
78
|
+
/** True when the evidence bundle carries no usable signal. */
|
|
79
|
+
export function evidenceIsEmpty(ev) {
|
|
80
|
+
const hasText = (ev.diff && ev.diff.trim() !== '') ||
|
|
81
|
+
(ev.testStdout && ev.testStdout.trim() !== '') ||
|
|
82
|
+
(ev.testStderr && ev.testStderr.trim() !== '') ||
|
|
83
|
+
(ev.inspectionRationale && ev.inspectionRationale.trim() !== '') ||
|
|
84
|
+
(ev.verdictRationale && ev.verdictRationale.trim() !== '');
|
|
85
|
+
return !hasText && typeof ev.exitCode !== 'number';
|
|
86
|
+
}
|
|
87
|
+
/** Parse the model's JSON judgment. Tolerates code fences / surrounding prose. */
|
|
88
|
+
export function parseReconcileJson(raw) {
|
|
89
|
+
const stripped = raw.replace(/```(?:json)?\s*/g, '').replace(/```/g, '');
|
|
90
|
+
const firstBrace = stripped.indexOf('{');
|
|
91
|
+
if (firstBrace < 0)
|
|
92
|
+
return null;
|
|
93
|
+
let depth = 0;
|
|
94
|
+
let endIdx = -1;
|
|
95
|
+
for (let i = firstBrace; i < stripped.length; i += 1) {
|
|
96
|
+
const ch = stripped[i];
|
|
97
|
+
if (ch === '{')
|
|
98
|
+
depth += 1;
|
|
99
|
+
else if (ch === '}') {
|
|
100
|
+
depth -= 1;
|
|
101
|
+
if (depth === 0) {
|
|
102
|
+
endIdx = i;
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (endIdx < 0)
|
|
108
|
+
return null;
|
|
109
|
+
let parsed;
|
|
110
|
+
try {
|
|
111
|
+
parsed = JSON.parse(stripped.slice(firstBrace, endIdx + 1));
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
if (!parsed || typeof parsed !== 'object')
|
|
117
|
+
return null;
|
|
118
|
+
const obj = parsed;
|
|
119
|
+
const achieved = typeof obj.achievedStatement === 'string' ? obj.achievedStatement.trim() : '';
|
|
120
|
+
if (achieved === '')
|
|
121
|
+
return null;
|
|
122
|
+
const classification = obj.classification;
|
|
123
|
+
if (classification !== 'match' &&
|
|
124
|
+
classification !== 'legitimate_divergence' &&
|
|
125
|
+
classification !== 'shortfall') {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const reasonRaw = typeof obj.divergenceReason === 'string' ? obj.divergenceReason.trim() : '';
|
|
129
|
+
const judgment = {
|
|
130
|
+
achievedStatement: achieved,
|
|
131
|
+
classification,
|
|
132
|
+
};
|
|
133
|
+
if (classification !== 'match' && reasonRaw !== '') {
|
|
134
|
+
judgment.divergenceReason = reasonRaw;
|
|
135
|
+
}
|
|
136
|
+
return judgment;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Reconcile the declared desired effect against the cited evidence.
|
|
140
|
+
*
|
|
141
|
+
* Single model call. Throws on model-invocation or parse failure; the verify
|
|
142
|
+
* caller catches and treats a reconciliation failure conservatively (it does
|
|
143
|
+
* NOT flip an injection it could not reconcile).
|
|
144
|
+
*/
|
|
145
|
+
export async function reconcileAchievedEffect(inputs, opts = {}) {
|
|
146
|
+
const systemPrompt = buildReconcileSystemPrompt();
|
|
147
|
+
const userMessage = buildReconcileUserMessage(inputs);
|
|
148
|
+
const invoke = opts.invokeModel ?? ((sys, msg) => invokeClaudeCli(sys, msg, opts));
|
|
149
|
+
const raw = await invoke(systemPrompt, userMessage);
|
|
150
|
+
const judgment = parseReconcileJson(raw);
|
|
151
|
+
if (!judgment) {
|
|
152
|
+
throw new Error('verify-reconciliation produced no parseable judgment');
|
|
153
|
+
}
|
|
154
|
+
// A divergence/shortfall with no reason still classifies; backfill a generic
|
|
155
|
+
// reason so the downstream record/escalation always carries one.
|
|
156
|
+
if (judgment.classification !== 'match' && !judgment.divergenceReason) {
|
|
157
|
+
judgment.divergenceReason =
|
|
158
|
+
judgment.classification === 'shortfall'
|
|
159
|
+
? 'Achieved outcome falls short of the declared desired effect.'
|
|
160
|
+
: 'Achieved outcome diverges from the declared desired effect.';
|
|
161
|
+
}
|
|
162
|
+
return judgment;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=verify-reconciliation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-reconciliation.js","sourceRoot":"","sources":["../src/verify-reconciliation.ts"],"names":[],"mappings":"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"}
|