@telora/daemon 0.18.55 → 0.18.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/build-info.json +6 -3
  2. package/dist/ai-inspection-context.d.ts.map +1 -1
  3. package/dist/ai-inspection-context.js +11 -1
  4. package/dist/ai-inspection-context.js.map +1 -1
  5. package/dist/ai-inspection-runner.d.ts.map +1 -1
  6. package/dist/ai-inspection-runner.js +0 -1
  7. package/dist/ai-inspection-runner.js.map +1 -1
  8. package/dist/audit-phase.d.ts.map +1 -1
  9. package/dist/audit-phase.js +4 -0
  10. package/dist/audit-phase.js.map +1 -1
  11. package/dist/cascade-restatement.d.ts +14 -5
  12. package/dist/cascade-restatement.d.ts.map +1 -1
  13. package/dist/cascade-restatement.js +35 -6
  14. package/dist/cascade-restatement.js.map +1 -1
  15. package/dist/cli/connect.d.ts +15 -11
  16. package/dist/cli/connect.d.ts.map +1 -1
  17. package/dist/cli/connect.js +20 -24
  18. package/dist/cli/connect.js.map +1 -1
  19. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  20. package/dist/completion/review-exit-phase.js +37 -10
  21. package/dist/completion/review-exit-phase.js.map +1 -1
  22. package/dist/de-restatement.d.ts.map +1 -1
  23. package/dist/de-restatement.js +0 -1
  24. package/dist/de-restatement.js.map +1 -1
  25. package/dist/delivery-reconciler.d.ts +21 -1
  26. package/dist/delivery-reconciler.d.ts.map +1 -1
  27. package/dist/delivery-reconciler.js +21 -3
  28. package/dist/delivery-reconciler.js.map +1 -1
  29. package/dist/directive/close-loop-stage.d.ts.map +1 -1
  30. package/dist/directive/close-loop-stage.js +10 -2
  31. package/dist/directive/close-loop-stage.js.map +1 -1
  32. package/dist/focus-executor.d.ts +6 -0
  33. package/dist/focus-executor.d.ts.map +1 -1
  34. package/dist/focus-executor.js +10 -2
  35. package/dist/focus-executor.js.map +1 -1
  36. package/dist/focus-lifecycle.js +1 -1
  37. package/dist/focus-lifecycle.js.map +1 -1
  38. package/dist/focus-provisioning.js +1 -1
  39. package/dist/focus-provisioning.js.map +1 -1
  40. package/dist/negative-branch.d.ts +32 -1
  41. package/dist/negative-branch.d.ts.map +1 -1
  42. package/dist/negative-branch.js +55 -9
  43. package/dist/negative-branch.js.map +1 -1
  44. package/dist/prompt-sections/persona-sections.d.ts +19 -0
  45. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  46. package/dist/prompt-sections/persona-sections.js +55 -0
  47. package/dist/prompt-sections/persona-sections.js.map +1 -1
  48. package/dist/queries/verification.d.ts +132 -0
  49. package/dist/queries/verification.d.ts.map +1 -1
  50. package/dist/queries/verification.js +271 -0
  51. package/dist/queries/verification.js.map +1 -1
  52. package/dist/reality-writeback.d.ts +257 -0
  53. package/dist/reality-writeback.d.ts.map +1 -0
  54. package/dist/reality-writeback.js +179 -0
  55. package/dist/reality-writeback.js.map +1 -0
  56. package/dist/resolvers/shared/reality-tree.d.ts +39 -1
  57. package/dist/resolvers/shared/reality-tree.d.ts.map +1 -1
  58. package/dist/resolvers/shared/reality-tree.js +51 -1
  59. package/dist/resolvers/shared/reality-tree.js.map +1 -1
  60. package/dist/review-defect-detector.d.ts +33 -0
  61. package/dist/review-defect-detector.d.ts.map +1 -1
  62. package/dist/review-defect-detector.js +53 -0
  63. package/dist/review-defect-detector.js.map +1 -1
  64. package/dist/team-prompt-base.d.ts +1 -1
  65. package/dist/team-prompt-base.d.ts.map +1 -1
  66. package/dist/team-prompt-base.js +1 -1
  67. package/dist/team-prompt-base.js.map +1 -1
  68. package/dist/unified-init.d.ts.map +1 -1
  69. package/dist/unified-init.js +0 -2
  70. package/dist/unified-init.js.map +1 -1
  71. package/dist/unified-shell.d.ts.map +1 -1
  72. package/dist/unified-shell.js +0 -2
  73. package/dist/unified-shell.js.map +1 -1
  74. package/dist/verification-engine.d.ts +10 -0
  75. package/dist/verification-engine.d.ts.map +1 -1
  76. package/dist/verification-engine.js +32 -1
  77. package/dist/verification-engine.js.map +1 -1
  78. package/dist/verify-restatement.d.ts +16 -0
  79. package/dist/verify-restatement.d.ts.map +1 -1
  80. package/dist/verify-restatement.js +7 -0
  81. package/dist/verify-restatement.js.map +1 -1
  82. package/dist/worktree.d.ts +5 -2
  83. package/dist/worktree.d.ts.map +1 -1
  84. package/dist/worktree.js +6 -5
  85. package/dist/worktree.js.map +1 -1
  86. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"persona-sections.d.ts","sourceRoot":"","sources":["../../src/prompt-sections/persona-sections.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,oBAAoB,EAAE,MAAM,GAC3B,MAAM,EAAE,CAqBV;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,8BAA8B,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAQjF;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CA8BtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,+BAA+B,IAAI,MAAM,CAuDxD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,MAAM,EAAE,CAqCV;AAMD,uDAAuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,EAAE,cAAc,EAAE,CAAC;CACjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CA+CvE"}
1
+ {"version":3,"file":"persona-sections.d.ts","sourceRoot":"","sources":["../../src/prompt-sections/persona-sections.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,oBAAoB,EAAE,MAAM,GAC3B,MAAM,EAAE,CAqBV;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iCAAiC,IAAI,MAAM,EAAE,CA8B5D;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,8BAA8B,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAQjF;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CA8BtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,+BAA+B,IAAI,MAAM,CAuDxD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,MAAM,EAAE,CAqCV;AAMD,uDAAuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,EAAE,cAAc,EAAE,CAAC;CACjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CAsDvE"}
@@ -38,6 +38,55 @@ export function buildRemediationDirectiveSection(reviewFiledOpenCount) {
38
38
  '',
39
39
  ];
40
40
  }
41
+ /**
42
+ * Build the review-outcome-stamping obligation.
43
+ *
44
+ * A review pass MUST converge to an explicit, machine-readable outcome. The
45
+ * differential signal the verify gate consumes is `approved` / `gaps_found`;
46
+ * a review that exits WITHOUT stamping one is reality moving with nothing to
47
+ * measure it against -- a clean-but-unstamped review is then indistinguishable
48
+ * from a gaps-found review and the loop cannot converge cleanly (it falls back
49
+ * to issue-evidence routing and can burn a re-code cycle on a deferrable note).
50
+ *
51
+ * This section makes calling `focus_review_complete` a HARD, REQUIRED, terminal
52
+ * obligation rather than an optional courtesy. It is emitted on the review
53
+ * lineage ONLY -- a coding team has nothing to stamp -- so the caller includes
54
+ * it only for a reviewing-stage spawn (and the review branch of the resume
55
+ * delta). The literal tokens `focus_review_complete`, `approved`, `gaps_found`,
56
+ * `summary`, `references`, `REQUIRED`, and `terminal` all appear verbatim so the
57
+ * obligation is grep-verifiable by the enforcement tests and reviewers.
58
+ */
59
+ export function buildReviewOutcomeStampingSection() {
60
+ return [
61
+ '## REQUIRED: Stamp the Review Outcome Before You Exit',
62
+ '',
63
+ 'Your review is NOT complete until you stamp an explicit, machine-readable',
64
+ 'outcome. This is a hard, terminal obligation -- not an optional courtesy.',
65
+ 'Filing issues (or finding nothing to file) and then exiting is INCOMPLETE.',
66
+ '',
67
+ 'As the FINAL step of your review pass you MUST call `focus_review_complete`',
68
+ '(the `telora_product_focus` tool with `action: "review_complete"`) with:',
69
+ '',
70
+ '- `outcome`: exactly one of `approved` or `gaps_found`.',
71
+ ' - `approved` -- the diff meets the acceptance criteria for every delivery.',
72
+ ' A non-blocking, deferrable triage note (low priority, explicitly safe to',
73
+ ' defer) does NOT make a pass `gaps_found`: file it, then still stamp',
74
+ ' `approved`. Only a genuinely blocking gap is `gaps_found`.',
75
+ ' - `gaps_found` -- at least one blocking gap exists; you filed an issue for',
76
+ ' each. The delivery re-enters the coding cycle to close them.',
77
+ '- `summary`: a short prose summary of what passed and what (if anything) was',
78
+ ' filed.',
79
+ '- `references`: the file/section references your verdict rests on.',
80
+ '',
81
+ 'Why this is required: `approved` / `gaps_found` is the differential signal',
82
+ 'the verify gate consumes. An exited-without-stamping review is ambiguous --',
83
+ 'the daemon cannot tell a clean review from a gaps-found one, so it falls back',
84
+ 'to inferring an outcome from any open issues and may burn a re-code cycle on',
85
+ 'a note you meant to defer. Stamping the outcome is what lets the loop',
86
+ 'converge. Do NOT exit the review pass without this terminal call.',
87
+ '',
88
+ ];
89
+ }
41
90
  /**
42
91
  * The marker we look for in the assembled stage-directive context to know a
43
92
  * review report is being rendered into the prompt. The focus.last_review_report
@@ -312,6 +361,12 @@ export function buildResumeDeltaMessage(ctx) {
312
361
  lines.push('integration base yourself to see the current state of the worktree._');
313
362
  }
314
363
  lines.push('');
364
+ // A resumed review session must still converge to a stamped outcome -- the
365
+ // obligation is carried on the delta too, not just the fresh prompt, so a
366
+ // review that runs entirely across resumes cannot exit unstamped.
367
+ if (isReview) {
368
+ lines.push(...buildReviewOutcomeStampingSection());
369
+ }
315
370
  return lines.join('\n');
316
371
  }
317
372
  //# sourceMappingURL=persona-sections.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"persona-sections.js","sourceRoot":"","sources":["../../src/prompt-sections/persona-sections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persona-sections.js","sourceRoot":"","sources":["../../src/prompt-sections/persona-sections.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  * - Record the outcome of a verification attempt.
6
6
  * - Trigger the existing reality_tree_verify_injection compound op on pass.
7
7
  */
8
+ import { type NodeWriteback, type WritebackClassification } from '../reality-writeback.js';
8
9
  export type VerificationMethod = 'deterministic' | 'behavioral' | 'ai_inspection';
9
10
  export type VerificationOutcome = 'pending' | 'passed' | 'failed' | 'escalated';
10
11
  export interface PendingVerification {
@@ -56,4 +57,135 @@ export declare function verifyInjectionOnPass(injectionNodeId: string, restateme
56
57
  * the verify decision.
57
58
  */
58
59
  export declare function verifyInjectionWithEvidence(injectionNodeId: string, evidence: string): Promise<void>;
60
+ /**
61
+ * Translate the pure `decideNodeWriteback` output into the verify call's
62
+ * `restatements` payload.
63
+ *
64
+ * The flip endpoint (`reality_tree_verify_injection`) is the only seam that
65
+ * persists a node's `verify_classification` / `verify_divergence_reason`, and
66
+ * it does so per-restatement -- but ONLY when the restatement carries a
67
+ * non-empty `statement` (an empty statement is dropped whole, classification
68
+ * included). So a writeback can be applied iff it carries achieved prose.
69
+ *
70
+ * Mapping:
71
+ * - match | legitimate_divergence WITH a non-empty statement -> a
72
+ * VerifyRestatement carried into the flip so classification (+ reason)
73
+ * lands atomically with the promotion. The achieved statement is the prose
74
+ * written as the targeted UDE's new base statement (for a match this equals
75
+ * the declared desired effect carried forward unchanged).
76
+ * - any writeback WITHOUT achieved prose, or a `shortfall` -> NOT emitted as
77
+ * a restatement (there is no edge path that stamps classification without
78
+ * prose, and a shortfall must not flip the node). Reported back via
79
+ * `skipped` so the caller can see what was not stamped.
80
+ *
81
+ * Pure (no I/O); exported for unit testing the mapping.
82
+ */
83
+ export declare function planNodeWritebackApply(writebacks: readonly NodeWriteback[]): {
84
+ restatements: VerifyRestatement[];
85
+ skipped: Array<{
86
+ nodeId: string;
87
+ reason: string;
88
+ }>;
89
+ };
90
+ /**
91
+ * Same as `verifyInjectionWithEvidence` but additionally stamps the per-node
92
+ * realized/diverged writeback computed by `decideNodeWriteback`. Closes the
93
+ * reality-tree writeback loop: as a delivery lands, the nodes its injection
94
+ * targeted carry an explicit match / legitimate_divergence status legible to a
95
+ * later reader.
96
+ *
97
+ * Order of operations:
98
+ * 1. `reality_tree_node_update` on the injection node -> persist evidence.
99
+ * 2. `reality_tree_verify_injection` with the per-node restatements -> flips
100
+ * the injection and promotes overlays, applying the classification (+
101
+ * reason) to each targeted UDE atomically. Writebacks with no achieved
102
+ * prose, and shortfalls, are skipped (logged) -- there is no edge path
103
+ * that persists a classification without prose / a flip.
104
+ *
105
+ * Non-destructive: only stamps status + evidence/reason on nodes the injection
106
+ * owns; a match carries the declared desired effect forward unchanged. When
107
+ * `writebacks` is empty this is byte-equivalent to `verifyInjectionWithEvidence`.
108
+ */
109
+ export declare function verifyInjectionWithWriteback(injectionNodeId: string, evidence: string, writebacks: readonly NodeWriteback[], realityTreeId?: string): Promise<void>;
110
+ /**
111
+ * Surface inward drift proposals for the contradicted nodes in a writeback.
112
+ *
113
+ * For each writeback the pure `detectInwardDrift` deems a contradicted claim
114
+ * (`legitimate_divergence` / `shortfall`), create one `update_statement`
115
+ * crt_drift_proposal flagged `inward:true` via the EXISTING
116
+ * `crt_drift_proposal_create` pipeline. A `match` (or unstamped) node yields
117
+ * nothing, so a clean landing emits no proposals.
118
+ *
119
+ * Requires the reality tree id (the create action keys off it). When the tree
120
+ * id is unknown, the proposals cannot be created -- we log and skip, leaving
121
+ * the per-node stamps in place (a later reader still sees the divergence).
122
+ *
123
+ * Non-fatal: each create is independently try/caught so one failure neither
124
+ * blocks the others nor unwinds the already-applied verify flip.
125
+ */
126
+ export declare function emitInwardDriftProposals(injectionNodeId: string, writebacks: readonly NodeWriteback[], realityTreeId?: string): Promise<void>;
127
+ /**
128
+ * One targeted UDE node resolved at landing: its id plus its declared
129
+ * desired-effect prose, used as the achieved statement on a clean match (the
130
+ * achieved effect equals the declared one, carried forward unchanged).
131
+ */
132
+ export interface ResolvedTargetedNode {
133
+ nodeId: string;
134
+ /** The declared desired-effect prose (frt_statement, else statement). */
135
+ achievedStatement: string;
136
+ /**
137
+ * The node's ORIGINAL claim prose (frt_statement, else statement) AS IT
138
+ * STANDS NOW. For a close-loop clean landing the achieved effect equals the
139
+ * declared one, so this equals `achievedStatement`; it is carried separately
140
+ * so a divergent landing (where achieved != claim) can frame the inward drift
141
+ * proposal against the tree's claim rather than the achieved reality.
142
+ */
143
+ originalClaim: string;
144
+ /**
145
+ * The node's EXISTING stamped verify_classification, if any (e.g. stamped
146
+ * `legitimate_divergence`/`shortfall` by the per-delivery verify path before
147
+ * the focus reached close_loop). Used so the close-loop sweep does NOT
148
+ * clobber an already-diverged stamp back to `match` (TEL-3). `null`/absent =>
149
+ * unstamped, the sweep stamps a clean match.
150
+ */
151
+ existingClassification?: WritebackClassification | null;
152
+ }
153
+ /**
154
+ * Resolve the targeted UDE nodes of an injection via the existing
155
+ * `reality_tree_edge_list` ('targets' edges out of the injection) joined to
156
+ * `reality_tree_node_list` for each target's declared prose. Returns [] when
157
+ * the tree id is unknown or a lookup fails -- the writeback then degrades to a
158
+ * plain injection verify (no per-node stamping), which is non-destructive and
159
+ * matches prior behavior.
160
+ */
161
+ export declare function resolveTargetedNodes(injectionId: string, treeId: string | undefined): Promise<ResolvedTargetedNode[]>;
162
+ /**
163
+ * Build the writeback-applying verify callback used by the close-loop sweep.
164
+ *
165
+ * For each injection the sweep verifies, this closure:
166
+ * 1. Resolves the injection's targeted UDE node ids (edge-list) + each node's
167
+ * EXISTING verify_classification.
168
+ * 2. Models the landing as a CLEAN realization for the still-unstamped (or
169
+ * already-match) targets -- the anchoring delivery closed successfully, so
170
+ * the cascade is treated as flipped and the injection as delivered. A
171
+ * target the per-delivery verify path ALREADY stamped as a contradiction
172
+ * (legitimate_divergence / shortfall) is EXCLUDED from the landing so the
173
+ * close-loop sweep never clobbers a diverged stamp back to 'match' (TEL-3).
174
+ * 3. Computes the per-node writeback and applies it via
175
+ * `verifyInjectionWithWriteback`, stamping match/evidence on each targeted
176
+ * UDE so a later reader sees which claims actually held.
177
+ *
178
+ * No targeted nodes -> the writeback is empty and the call is byte-equivalent
179
+ * to the plain `verifyInjectionWithEvidence`.
180
+ *
181
+ * `treeIdByInjection` maps an injection node id to its reality_tree id, captured
182
+ * by the dispatcher from the focus-injections snapshot. The returned callback
183
+ * matches the `(injectionId, evidence) => Promise<void>` shape the close-loop
184
+ * sweep expects, so it drops into `advanceFocusToDoneWithSweep` unchanged.
185
+ *
186
+ * Exported here (rather than in the dispatcher) so the wiring is unit-testable
187
+ * against the callApi mock seam without dragging the dispatcher's heavy import
188
+ * graph.
189
+ */
190
+ export declare function buildWritebackVerify(treeIdByInjection: ReadonlyMap<string, string>): (injectionId: string, evidence: string) => Promise<void>;
59
191
  //# sourceMappingURL=verification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/queries/verification.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,YAAY,GAAG,eAAe,CAAC;AAClF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEhF,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACnD,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAChD,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAMhC;AAED,wBAAsB,iCAAiC,CACrD,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,eAAe,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,iBAAiB,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,2BAA2B,CAC/C,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAMf"}
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/queries/verification.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  * - Trigger the existing reality_tree_verify_injection compound op on pass.
7
7
  */
8
8
  import { callApi } from './shared.js';
9
+ import { decideNodeWriteback, detectInwardDrift, } from '../reality-writeback.js';
9
10
  export async function getPendingVerifications(productId) {
10
11
  const response = await callApi('daemon_get_pending_verifications', productId ? { productId } : {});
11
12
  return response.items ?? [];
@@ -46,4 +47,274 @@ export async function verifyInjectionWithEvidence(injectionNodeId, evidence) {
46
47
  });
47
48
  await callApi('reality_tree_verify_injection', { injectionNodeId });
48
49
  }
50
+ /**
51
+ * Translate the pure `decideNodeWriteback` output into the verify call's
52
+ * `restatements` payload.
53
+ *
54
+ * The flip endpoint (`reality_tree_verify_injection`) is the only seam that
55
+ * persists a node's `verify_classification` / `verify_divergence_reason`, and
56
+ * it does so per-restatement -- but ONLY when the restatement carries a
57
+ * non-empty `statement` (an empty statement is dropped whole, classification
58
+ * included). So a writeback can be applied iff it carries achieved prose.
59
+ *
60
+ * Mapping:
61
+ * - match | legitimate_divergence WITH a non-empty statement -> a
62
+ * VerifyRestatement carried into the flip so classification (+ reason)
63
+ * lands atomically with the promotion. The achieved statement is the prose
64
+ * written as the targeted UDE's new base statement (for a match this equals
65
+ * the declared desired effect carried forward unchanged).
66
+ * - any writeback WITHOUT achieved prose, or a `shortfall` -> NOT emitted as
67
+ * a restatement (there is no edge path that stamps classification without
68
+ * prose, and a shortfall must not flip the node). Reported back via
69
+ * `skipped` so the caller can see what was not stamped.
70
+ *
71
+ * Pure (no I/O); exported for unit testing the mapping.
72
+ */
73
+ export function planNodeWritebackApply(writebacks) {
74
+ const restatements = [];
75
+ const skipped = [];
76
+ for (const wb of writebacks) {
77
+ if (wb.classification === 'shortfall') {
78
+ skipped.push({
79
+ nodeId: wb.nodeId,
80
+ reason: 'shortfall: no flip; classification not persisted (claim did not hold)',
81
+ });
82
+ continue;
83
+ }
84
+ // TEL-6: an `assumed` match carries no evidence. Persisting a
85
+ // verify_classification='match' for it would record an UNEARNED "verified"
86
+ // claim, so skip it -- the node stays unstamped until grounded by evidence.
87
+ if (wb.classification === 'match' && wb.assumed === true) {
88
+ skipped.push({
89
+ nodeId: wb.nodeId,
90
+ reason: 'assumed match: no evidence; not stamped verified (unearned certainty)',
91
+ });
92
+ continue;
93
+ }
94
+ const statement = wb.statement;
95
+ if (typeof statement !== 'string' || statement.trim().length === 0) {
96
+ skipped.push({
97
+ nodeId: wb.nodeId,
98
+ reason: 'no achieved statement: verify edge drops a restatement with empty prose',
99
+ });
100
+ continue;
101
+ }
102
+ // match | legitimate_divergence WITH prose -> restatement.
103
+ const entry = {
104
+ nodeId: wb.nodeId,
105
+ statement,
106
+ classification: wb.classification,
107
+ };
108
+ if (wb.classification === 'legitimate_divergence' && wb.verifyDivergenceReason) {
109
+ entry.divergenceReason = wb.verifyDivergenceReason;
110
+ }
111
+ restatements.push(entry);
112
+ }
113
+ return { restatements, skipped };
114
+ }
115
+ /**
116
+ * Same as `verifyInjectionWithEvidence` but additionally stamps the per-node
117
+ * realized/diverged writeback computed by `decideNodeWriteback`. Closes the
118
+ * reality-tree writeback loop: as a delivery lands, the nodes its injection
119
+ * targeted carry an explicit match / legitimate_divergence status legible to a
120
+ * later reader.
121
+ *
122
+ * Order of operations:
123
+ * 1. `reality_tree_node_update` on the injection node -> persist evidence.
124
+ * 2. `reality_tree_verify_injection` with the per-node restatements -> flips
125
+ * the injection and promotes overlays, applying the classification (+
126
+ * reason) to each targeted UDE atomically. Writebacks with no achieved
127
+ * prose, and shortfalls, are skipped (logged) -- there is no edge path
128
+ * that persists a classification without prose / a flip.
129
+ *
130
+ * Non-destructive: only stamps status + evidence/reason on nodes the injection
131
+ * owns; a match carries the declared desired effect forward unchanged. When
132
+ * `writebacks` is empty this is byte-equivalent to `verifyInjectionWithEvidence`.
133
+ */
134
+ export async function verifyInjectionWithWriteback(injectionNodeId, evidence, writebacks, realityTreeId) {
135
+ await callApi('reality_tree_node_update', {
136
+ nodeId: injectionNodeId,
137
+ evidence,
138
+ });
139
+ const { restatements, skipped } = planNodeWritebackApply(writebacks);
140
+ if (skipped.length > 0) {
141
+ console.warn(`[reality-writeback] injection ${injectionNodeId.slice(0, 8)}: ` +
142
+ `${skipped.length} targeted node writeback(s) not stamped -- ` +
143
+ skipped.map((s) => `${s.nodeId.slice(0, 8)} (${s.reason})`).join('; '));
144
+ }
145
+ const verifyBody = { injectionNodeId };
146
+ if (restatements.length > 0)
147
+ verifyBody.restatements = restatements;
148
+ await callApi('reality_tree_verify_injection', verifyBody);
149
+ // Inward drift: any node reality CONTRADICTED (legitimate_divergence /
150
+ // shortfall) is a claim the tree got wrong. Turn each one into an inward
151
+ // crt_drift_proposal so the tree-owner can correct the asserting claim,
152
+ // instead of leaving a mistaken assertion frozen. Surfaced for human ratify;
153
+ // never auto-applied. Best-effort + non-fatal: a proposal-emit failure must
154
+ // not undo the verify/flip that already landed.
155
+ await emitInwardDriftProposals(injectionNodeId, writebacks, realityTreeId);
156
+ }
157
+ /**
158
+ * Surface inward drift proposals for the contradicted nodes in a writeback.
159
+ *
160
+ * For each writeback the pure `detectInwardDrift` deems a contradicted claim
161
+ * (`legitimate_divergence` / `shortfall`), create one `update_statement`
162
+ * crt_drift_proposal flagged `inward:true` via the EXISTING
163
+ * `crt_drift_proposal_create` pipeline. A `match` (or unstamped) node yields
164
+ * nothing, so a clean landing emits no proposals.
165
+ *
166
+ * Requires the reality tree id (the create action keys off it). When the tree
167
+ * id is unknown, the proposals cannot be created -- we log and skip, leaving
168
+ * the per-node stamps in place (a later reader still sees the divergence).
169
+ *
170
+ * Non-fatal: each create is independently try/caught so one failure neither
171
+ * blocks the others nor unwinds the already-applied verify flip.
172
+ */
173
+ export async function emitInwardDriftProposals(injectionNodeId, writebacks, realityTreeId) {
174
+ const proposals = writebacks
175
+ .map((wb) => {
176
+ const stamped = {
177
+ nodeId: wb.nodeId,
178
+ verifyClassification: wb.classification,
179
+ verifyDivergenceReason: wb.verifyDivergenceReason ?? null,
180
+ // TEL-5: the claim a human ratifier must reconsider is the tree's
181
+ // ORIGINAL assertion (the claim reality CONTRADICTED), NOT the achieved
182
+ // reality prose. Carry `originalClaim`; the detector falls back to a
183
+ // placeholder when it is absent. (`wb.statement` is the achieved prose
184
+ // -- it belongs in proposedCorrection / the divergence reason, never in
185
+ // observedState.)
186
+ claimStatement: wb.originalClaim ?? null,
187
+ };
188
+ return detectInwardDrift(stamped);
189
+ })
190
+ .filter((p) => p !== null);
191
+ if (proposals.length === 0)
192
+ return;
193
+ if (!realityTreeId) {
194
+ console.warn(`[reality-writeback] injection ${injectionNodeId.slice(0, 8)}: ` +
195
+ `${proposals.length} contradicted node(s) detected but no realityTreeId -- ` +
196
+ `inward drift proposals NOT created (per-node stamps retained).`);
197
+ return;
198
+ }
199
+ for (const proposal of proposals) {
200
+ try {
201
+ await callApi('crt_drift_proposal_create', {
202
+ realityTreeId,
203
+ proposalKind: proposal.proposalKind,
204
+ observedState: proposal.observedState,
205
+ proposedCorrection: proposal.proposedCorrection,
206
+ nodeId: proposal.nodeId,
207
+ proposedMetadata: proposal.proposedMetadata,
208
+ });
209
+ }
210
+ catch (err) {
211
+ console.warn(`[reality-writeback] Failed to create inward drift proposal for node ` +
212
+ `${proposal.nodeId.slice(0, 8)} (tree ${realityTreeId.slice(0, 8)}): ` +
213
+ `${err.message}. Stamp retained; proposal not surfaced.`);
214
+ }
215
+ }
216
+ }
217
+ /**
218
+ * Resolve the targeted UDE nodes of an injection via the existing
219
+ * `reality_tree_edge_list` ('targets' edges out of the injection) joined to
220
+ * `reality_tree_node_list` for each target's declared prose. Returns [] when
221
+ * the tree id is unknown or a lookup fails -- the writeback then degrades to a
222
+ * plain injection verify (no per-node stamping), which is non-destructive and
223
+ * matches prior behavior.
224
+ */
225
+ export async function resolveTargetedNodes(injectionId, treeId) {
226
+ if (!treeId)
227
+ return [];
228
+ try {
229
+ const [edgesResp, nodesResp] = await Promise.all([
230
+ callApi('reality_tree_edge_list', { treeId }),
231
+ callApi('reality_tree_node_list', { treeId }),
232
+ ]);
233
+ const targetIds = (edgesResp.items ?? [])
234
+ .filter((e) => e.edgeType === 'targets' && e.fromNodeId === injectionId)
235
+ .map((e) => e.toNodeId);
236
+ if (targetIds.length === 0)
237
+ return [];
238
+ const nodeById = new Map();
239
+ for (const n of nodesResp.items ?? [])
240
+ nodeById.set(n.id, n);
241
+ const isClassification = (v) => v === 'match' || v === 'legitimate_divergence' || v === 'shortfall';
242
+ return targetIds.map((nodeId) => {
243
+ const node = nodeById.get(nodeId);
244
+ const declared = node?.frtStatement ?? node?.statement ?? '';
245
+ const existing = node?.verifyClassification;
246
+ return {
247
+ nodeId,
248
+ achievedStatement: declared,
249
+ originalClaim: declared,
250
+ existingClassification: isClassification(existing) ? existing : null,
251
+ };
252
+ });
253
+ }
254
+ catch (err) {
255
+ console.warn(`[reality-writeback] Failed to resolve targeted nodes for injection ` +
256
+ `${injectionId.slice(0, 8)} (tree ${treeId.slice(0, 8)}): ${err.message}. ` +
257
+ `Falling back to plain verify (no per-node writeback).`);
258
+ return [];
259
+ }
260
+ }
261
+ /**
262
+ * Build the writeback-applying verify callback used by the close-loop sweep.
263
+ *
264
+ * For each injection the sweep verifies, this closure:
265
+ * 1. Resolves the injection's targeted UDE node ids (edge-list) + each node's
266
+ * EXISTING verify_classification.
267
+ * 2. Models the landing as a CLEAN realization for the still-unstamped (or
268
+ * already-match) targets -- the anchoring delivery closed successfully, so
269
+ * the cascade is treated as flipped and the injection as delivered. A
270
+ * target the per-delivery verify path ALREADY stamped as a contradiction
271
+ * (legitimate_divergence / shortfall) is EXCLUDED from the landing so the
272
+ * close-loop sweep never clobbers a diverged stamp back to 'match' (TEL-3).
273
+ * 3. Computes the per-node writeback and applies it via
274
+ * `verifyInjectionWithWriteback`, stamping match/evidence on each targeted
275
+ * UDE so a later reader sees which claims actually held.
276
+ *
277
+ * No targeted nodes -> the writeback is empty and the call is byte-equivalent
278
+ * to the plain `verifyInjectionWithEvidence`.
279
+ *
280
+ * `treeIdByInjection` maps an injection node id to its reality_tree id, captured
281
+ * by the dispatcher from the focus-injections snapshot. The returned callback
282
+ * matches the `(injectionId, evidence) => Promise<void>` shape the close-loop
283
+ * sweep expects, so it drops into `advanceFocusToDoneWithSweep` unchanged.
284
+ *
285
+ * Exported here (rather than in the dispatcher) so the wiring is unit-testable
286
+ * against the callApi mock seam without dragging the dispatcher's heavy import
287
+ * graph.
288
+ */
289
+ export function buildWritebackVerify(treeIdByInjection) {
290
+ return async (injectionId, evidence) => {
291
+ const treeId = treeIdByInjection.get(injectionId);
292
+ const resolved = await resolveTargetedNodes(injectionId, treeId);
293
+ // TEL-3: a node the per-delivery verify path ALREADY stamped as a
294
+ // contradiction (legitimate_divergence / shortfall) must NOT be clobbered
295
+ // back to 'match' at close-loop. Exclude it from the clean-match landing --
296
+ // its stamp (and its inward drift proposal) already landed at verify time.
297
+ // Only un-stamped (or already-match) nodes get a fresh close-loop match.
298
+ const targetedNodes = resolved
299
+ .filter((n) => n.existingClassification !== 'legitimate_divergence' &&
300
+ n.existingClassification !== 'shortfall')
301
+ .map((n) => ({
302
+ nodeId: n.nodeId,
303
+ achievedStatement: n.achievedStatement,
304
+ originalClaim: n.originalClaim,
305
+ }));
306
+ const writebacks = decideNodeWriteback({
307
+ injectionId,
308
+ targetedNodes,
309
+ cascadeFlipped: true,
310
+ delivered: true,
311
+ evidence,
312
+ });
313
+ // Pass the tree id so any contradicted node (divergence/shortfall) can be
314
+ // surfaced as an inward drift proposal. The close-loop sweep models a clean
315
+ // landing (all 'match'), so this emits nothing here today -- but the seam is
316
+ // wired so a divergent landing routed through this path corrects the tree.
317
+ await verifyInjectionWithWriteback(injectionId, evidence, writebacks, treeId);
318
+ };
319
+ }
49
320
  //# sourceMappingURL=verification.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/queries/verification.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAiBtC,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,kCAAkC,EAClC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAC/B,CAAC;IACF,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,UAAkB,EAClB,OAA4B;IAE5B,MAAM,OAAO,CAAC,6CAA6C,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;AACxF,CAAC;AAiBD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,eAAuB,EACvB,YAAkC;IAElC,MAAM,IAAI,GAA4B,EAAE,eAAe,EAAE,CAAC;IAC1D,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IAC9E,MAAM,OAAO,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,eAAuB,EACvB,QAAgB;IAEhB,MAAM,OAAO,CAAC,0BAA0B,EAAE;QACxC,MAAM,EAAE,eAAe;QACvB,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,+BAA+B,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/queries/verification.ts"],"names":[],"mappings":"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"}