@telora/daemon 0.22.137 → 0.22.144
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/build-info.json +13 -3
- package/dist/audit/audit-phase.d.ts.map +1 -1
- package/dist/audit/audit-phase.js +15 -0
- package/dist/audit/audit-phase.js.map +1 -1
- package/dist/audit/audit-prompt.d.ts +174 -0
- package/dist/audit/audit-prompt.d.ts.map +1 -1
- package/dist/audit/audit-prompt.js +365 -2
- package/dist/audit/audit-prompt.js.map +1 -1
- package/dist/completion/review-coverage-shas.d.ts +49 -0
- package/dist/completion/review-coverage-shas.d.ts.map +1 -0
- package/dist/completion/review-coverage-shas.js +128 -0
- package/dist/completion/review-coverage-shas.js.map +1 -0
- package/dist/completion/review-exit-deps.d.ts +15 -2
- package/dist/completion/review-exit-deps.d.ts.map +1 -1
- package/dist/completion/review-exit-deps.js +9 -3
- package/dist/completion/review-exit-deps.js.map +1 -1
- package/dist/delivery/delivery-review-coverage.d.ts +200 -0
- package/dist/delivery/delivery-review-coverage.d.ts.map +1 -0
- package/dist/delivery/delivery-review-coverage.js +192 -0
- package/dist/delivery/delivery-review-coverage.js.map +1 -0
- package/dist/queries/focus-branch-work-evidence.d.ts +55 -0
- package/dist/queries/focus-branch-work-evidence.d.ts.map +1 -0
- package/dist/queries/focus-branch-work-evidence.js +65 -0
- package/dist/queries/focus-branch-work-evidence.js.map +1 -0
- package/dist/queries/focus-criteria-standing.d.ts +138 -0
- package/dist/queries/focus-criteria-standing.d.ts.map +1 -0
- package/dist/queries/focus-criteria-standing.js +98 -0
- package/dist/queries/focus-criteria-standing.js.map +1 -0
- package/dist/queries/focus-review-watermark.d.ts +35 -0
- package/dist/queries/focus-review-watermark.d.ts.map +1 -0
- package/dist/queries/focus-review-watermark.js +47 -0
- package/dist/queries/focus-review-watermark.js.map +1 -0
- package/dist/queries/focuses.d.ts +0 -9
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +0 -14
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/queries/verification.d.ts +23 -25
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js +66 -45
- package/dist/queries/verification.js.map +1 -1
- package/dist/resolvers/assembly-engine.d.ts.map +1 -1
- package/dist/resolvers/assembly-engine.js +2 -0
- package/dist/resolvers/assembly-engine.js.map +1 -1
- package/dist/resolvers/focus-criteria-standing.d.ts +24 -0
- package/dist/resolvers/focus-criteria-standing.d.ts.map +1 -0
- package/dist/resolvers/focus-criteria-standing.js +234 -0
- package/dist/resolvers/focus-criteria-standing.js.map +1 -0
- package/dist/resolvers/focus-review-coverage.d.ts +189 -0
- package/dist/resolvers/focus-review-coverage.d.ts.map +1 -0
- package/dist/resolvers/focus-review-coverage.js +487 -0
- package/dist/resolvers/focus-review-coverage.js.map +1 -0
- package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
- package/dist/resolvers/git-diff-against-base.js +11 -0
- package/dist/resolvers/git-diff-against-base.js.map +1 -1
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +7 -1
- package/dist/resolvers/index.js.map +1 -1
- package/dist/resolvers/reality-tree-snapshot.d.ts +9 -4
- package/dist/resolvers/reality-tree-snapshot.d.ts.map +1 -1
- package/dist/resolvers/reality-tree-snapshot.js +64 -17
- package/dist/resolvers/reality-tree-snapshot.js.map +1 -1
- package/dist/resolvers/shared/branch-fact-provenance.d.ts +258 -0
- package/dist/resolvers/shared/branch-fact-provenance.d.ts.map +1 -0
- package/dist/resolvers/shared/branch-fact-provenance.js +571 -0
- package/dist/resolvers/shared/branch-fact-provenance.js.map +1 -0
- package/dist/resolvers/shared/reality-tree-arrival.d.ts +71 -0
- package/dist/resolvers/shared/reality-tree-arrival.d.ts.map +1 -0
- package/dist/resolvers/shared/reality-tree-arrival.js +129 -0
- package/dist/resolvers/shared/reality-tree-arrival.js.map +1 -0
- package/dist/testing/fixtures/index.js +1 -1
- package/package.json +2 -2
|
@@ -49,19 +49,56 @@ async function callVerifyInjectionIdempotent(call, body) {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
|
-
*
|
|
52
|
+
* Build the SINGLE `reality_tree_verify_injection` body: the injection id, the
|
|
53
|
+
* restatement entries (key omitted when there are none, so a plain flip sends
|
|
54
|
+
* the body it always did), and the evidence.
|
|
55
|
+
*
|
|
56
|
+
* EVIDENCE RIDES THIS BODY rather than a preceding `reality_tree_node_update`,
|
|
57
|
+
* and that is the whole point of the collapse. The earned-promotion gate lives
|
|
58
|
+
* INSIDE the verify action
|
|
59
|
+
* (`supabase/functions/product-api/handlers/reality-tree/graph-verification.ts`
|
|
60
|
+
* `verifyInjectionImpl`), so
|
|
61
|
+
* any write issued before it is a write an ordinary refusal -- the common case
|
|
62
|
+
* the gate exists to produce -- has already made and cannot take back. Nor is
|
|
63
|
+
* the answer to reorder the two calls: a verify that succeeded followed by an
|
|
64
|
+
* evidence write that failed leaves a verified injection citing nothing, which
|
|
65
|
+
* inverts the defect instead of closing it. The edge now persists `evidence` in
|
|
66
|
+
* the SAME update that flips `injection_status='verified'` and `status=
|
|
67
|
+
* 'retired'`, strictly after the gate, so a refusal of ANY kind
|
|
68
|
+
* (`unearned_promotion`, `override_reason_required`, a bad lifecycle status,
|
|
69
|
+
* unreadable anchors) leaves the injection byte-for-byte as it found it. The
|
|
70
|
+
* MCP tool `telora_reality_tree_injection_verify` was collapsed onto the same
|
|
71
|
+
* action first (f5527c3c1); this is the same fix on the busier caller.
|
|
72
|
+
*
|
|
73
|
+
* A blank/absent citation sends NO `evidence` key, mirroring the edge's own
|
|
74
|
+
* rule: an absent value writes no column rather than blanking the citation
|
|
75
|
+
* already there. Several callers (the plain stamp with no evidence resolved)
|
|
76
|
+
* legitimately have none, and treating that as "erase what is there" would
|
|
77
|
+
* destroy evidence on a path that never had any to offer.
|
|
78
|
+
*/
|
|
79
|
+
function buildVerifyInjectionBody(injectionNodeId, entries, evidence) {
|
|
80
|
+
const body = { injectionNodeId };
|
|
81
|
+
if (entries.length > 0)
|
|
82
|
+
body.restatements = entries;
|
|
83
|
+
// Trimmed, because the edge trims before deciding whether to write -- sending
|
|
84
|
+
// the trimmed text keeps client and server reading the same citation.
|
|
85
|
+
const cited = typeof evidence === 'string' ? evidence.trim() : '';
|
|
86
|
+
if (cited.length > 0)
|
|
87
|
+
body.evidence = cited;
|
|
88
|
+
return body;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Compound op: retires the injection, persists the evidence that justifies it,
|
|
92
|
+
* and promotes its FRT overlay to CRT -- in ONE gated call.
|
|
53
93
|
* Idempotent: an injection already 'verified' is a success, not an error.
|
|
54
94
|
* Optional per-target restatements (authored on the passing verdict) are
|
|
55
95
|
* applied by the edge as each targeted UDE's new base statement; the edge
|
|
56
96
|
* never authors prose itself.
|
|
57
97
|
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* `
|
|
61
|
-
*
|
|
62
|
-
* tests it was verified on (rather than evidence=null). An empty/blank evidence
|
|
63
|
-
* string is skipped -- the retire still happens, but only a real citation is
|
|
64
|
-
* written.
|
|
98
|
+
* `evidence`, when a real citation, is carried on the verify body and written
|
|
99
|
+
* by the edge in the same update that retires the node -- never by a preceding
|
|
100
|
+
* `reality_tree_node_update`, which a refused verify could not take back. See
|
|
101
|
+
* `buildVerifyInjectionBody`. A blank/absent value writes nothing.
|
|
65
102
|
*
|
|
66
103
|
* `withheldNodeIds` are targets that must NOT flip with the injection: nodes an
|
|
67
104
|
* operator EXCUSED from a shortfall (verify/shortfall-rulings.ts) -- cleared from
|
|
@@ -72,36 +109,25 @@ async function callVerifyInjectionIdempotent(call, body) {
|
|
|
72
109
|
*/
|
|
73
110
|
export async function verifyInjectionOnPass(injectionNodeId, restatements, evidence, withheldNodeIds = [], deps = {}) {
|
|
74
111
|
const call = deps.callApi ?? callApi;
|
|
75
|
-
if (evidence && evidence.trim().length > 0) {
|
|
76
|
-
await call('reality_tree_node_update', { nodeId: injectionNodeId, evidence });
|
|
77
|
-
}
|
|
78
112
|
const withheld = withheldNodeIds.map((nodeId) => ({ nodeId, classification: 'shortfall' }));
|
|
79
113
|
const entries = [...(restatements ?? []), ...withheld];
|
|
80
|
-
|
|
81
|
-
if (entries.length > 0)
|
|
82
|
-
body.restatements = entries;
|
|
83
|
-
await callVerifyInjectionIdempotent(call, body);
|
|
114
|
+
await callVerifyInjectionIdempotent(call, buildVerifyInjectionBody(injectionNodeId, entries, evidence));
|
|
84
115
|
}
|
|
85
116
|
/**
|
|
86
|
-
* Same compound op as `verifyInjectionOnPass
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
* 1. `reality_tree_node_update` writes the evidence rationale onto the
|
|
91
|
-
* injection node so audit reads can later see why the verify was made.
|
|
92
|
-
* 2. `reality_tree_verify_injection` flips injection_status to 'verified',
|
|
93
|
-
* deletes targets edges, and promotes FRT overlays.
|
|
117
|
+
* Same compound op as `verifyInjectionOnPass`, for a caller that always has a
|
|
118
|
+
* citation: ONE `reality_tree_verify_injection` call carrying `evidence`, which
|
|
119
|
+
* the edge persists in the same update that flips injection_status to
|
|
120
|
+
* 'verified', retains targets edges, and promotes FRT overlays.
|
|
94
121
|
*
|
|
95
122
|
* Used by the focus-level close-loop injection sweep so the rationale
|
|
96
123
|
* (which closed delivery anchored the realization) is persisted alongside
|
|
97
|
-
* the verify decision
|
|
124
|
+
* the verify decision -- and, because it is one gated call, persisted if and
|
|
125
|
+
* only if that decision was actually made. See `buildVerifyInjectionBody` for
|
|
126
|
+
* why the evidence cannot be a separate preceding write.
|
|
98
127
|
*/
|
|
99
|
-
export async function verifyInjectionWithEvidence(injectionNodeId, evidence) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
evidence,
|
|
103
|
-
});
|
|
104
|
-
await callVerifyInjectionIdempotent(callApi, { injectionNodeId });
|
|
128
|
+
export async function verifyInjectionWithEvidence(injectionNodeId, evidence, deps = {}) {
|
|
129
|
+
const call = deps.callApi ?? callApi;
|
|
130
|
+
await callVerifyInjectionIdempotent(call, buildVerifyInjectionBody(injectionNodeId, [], evidence));
|
|
105
131
|
}
|
|
106
132
|
/**
|
|
107
133
|
* Translate the pure `decideNodeWriteback` output into the verify call's
|
|
@@ -175,13 +201,15 @@ export function planNodeWritebackApply(writebacks) {
|
|
|
175
201
|
* targeted carry an explicit match / legitimate_divergence status legible to a
|
|
176
202
|
* later reader.
|
|
177
203
|
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
204
|
+
* ONE gated call does all of it: `reality_tree_verify_injection` carries the
|
|
205
|
+
* per-node restatements AND the evidence, so the edge flips the injection,
|
|
206
|
+
* promotes overlays, applies the classification (+ reason) to each targeted
|
|
207
|
+
* UDE, and persists the citation in a single post-gate update. Writebacks with
|
|
208
|
+
* no achieved prose, and shortfalls, are skipped (logged) -- there is no edge
|
|
209
|
+
* path that persists a classification without prose / a flip. The evidence is
|
|
210
|
+
* NOT a preceding `reality_tree_node_update`: see `buildVerifyInjectionBody`
|
|
211
|
+
* for why a write ahead of the earned-promotion gate is a write a refusal
|
|
212
|
+
* cannot take back.
|
|
185
213
|
*
|
|
186
214
|
* Non-destructive: only stamps status + evidence/reason on nodes the injection
|
|
187
215
|
* owns; a match carries the declared desired effect forward unchanged. When
|
|
@@ -189,20 +217,13 @@ export function planNodeWritebackApply(writebacks) {
|
|
|
189
217
|
*/
|
|
190
218
|
export async function verifyInjectionWithWriteback(injectionNodeId, evidence, writebacks, realityTreeId, deps = {}) {
|
|
191
219
|
const call = deps.callApi ?? callApi;
|
|
192
|
-
await call('reality_tree_node_update', {
|
|
193
|
-
nodeId: injectionNodeId,
|
|
194
|
-
evidence,
|
|
195
|
-
});
|
|
196
220
|
const { restatements, skipped } = planNodeWritebackApply(writebacks);
|
|
197
221
|
if (skipped.length > 0) {
|
|
198
222
|
log.warn(`[reality-writeback] injection ${injectionNodeId.slice(0, 8)}: ` +
|
|
199
223
|
`${skipped.length} targeted node writeback(s) not stamped -- ` +
|
|
200
224
|
skipped.map((s) => `${s.nodeId.slice(0, 8)} (${s.reason})`).join('; '));
|
|
201
225
|
}
|
|
202
|
-
|
|
203
|
-
if (restatements.length > 0)
|
|
204
|
-
verifyBody.restatements = restatements;
|
|
205
|
-
await callVerifyInjectionIdempotent(call, verifyBody);
|
|
226
|
+
await callVerifyInjectionIdempotent(call, buildVerifyInjectionBody(injectionNodeId, restatements, evidence));
|
|
206
227
|
// Inward drift: any node reality CONTRADICTED (legitimate_divergence /
|
|
207
228
|
// shortfall) is a claim the tree got wrong. Turn each one into an inward
|
|
208
229
|
// crt_drift_proposal so the tree-owner can correct the asserting claim,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/queries/verification.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,0GAA0G;AAC1G,gBAAgB;AAEhB;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAoB,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kCAAkC,GAMnC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;AA2C1D,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;;;;;;;;;GASG;AACH,MAAM,UAAU,0BAA0B,CAAC,GAAY;IACrD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,OAAO,8CAA8C,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,6BAA6B,CAC1C,IAAoB,EACpB,IAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC;YAAE,MAAM,GAAG,CAAC;QAChD,GAAG,CAAC,IAAI,CACN,gCAAgC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,0BAA0B;YAClG,mDAAmD,CACpD,CAAC;IACJ,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/queries/verification.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assembly-engine.d.ts","sourceRoot":"","sources":["../../src/resolvers/assembly-engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assembly-engine.d.ts","sourceRoot":"","sources":["../../src/resolvers/assembly-engine.ts"],"names":[],"mappings":"AAuBA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtD,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,oFAAoF;IACpF,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAKD,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAEzF;AAED,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAErD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAelG;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iCAAiC,CACrD,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,gBAAgB,CAAC,CA0D3B"}
|
|
@@ -9,10 +9,12 @@
|
|
|
9
9
|
// packages/daemon/src/resolvers/escalation-answers-resolver.test.ts,
|
|
10
10
|
// packages/daemon/src/resolvers/focus-anchoring-injections-resolver.test.ts,
|
|
11
11
|
// packages/daemon/src/resolvers/focus-context-resolver.test.ts,
|
|
12
|
+
// packages/daemon/src/resolvers/focus-criteria-standing.test.ts,
|
|
12
13
|
// packages/daemon/src/resolvers/focus-endpoint-catalog.test.ts,
|
|
13
14
|
// packages/daemon/src/resolvers/focus-injections-resolver.test.ts,
|
|
14
15
|
// packages/daemon/src/resolvers/focus-last-review-report-resolver.test.ts,
|
|
15
16
|
// packages/daemon/src/resolvers/focus-reality-tree-resolver.test.ts,
|
|
17
|
+
// packages/daemon/src/resolvers/focus-review-coverage.test.ts,
|
|
16
18
|
// packages/daemon/src/resolvers/linear-linked-issues.test.ts,
|
|
17
19
|
// packages/daemon/src/resolvers/prd-resolvers.test.ts,
|
|
18
20
|
// packages/daemon/src/resolvers/shared/review-window-commits.test.ts,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assembly-engine.js","sourceRoot":"","sources":["../../src/resolvers/assembly-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"assembly-engine.js","sourceRoot":"","sources":["../../src/resolvers/assembly-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AssemblyContext } from './assembly-engine.js';
|
|
2
|
+
import type { FocusCriteriaStanding } from '../queries/focus-criteria-standing.js';
|
|
3
|
+
/** Section heading, shared by the rendered standing and the failure line. */
|
|
4
|
+
export declare const CRITERIA_STANDING_HEADING = "## Focus acceptance criteria standing (what did THIS focus declare it was for?)";
|
|
5
|
+
/** Render the standing. Never returns an empty string. */
|
|
6
|
+
export declare function renderFocusCriteriaStanding(standing: FocusCriteriaStanding): string;
|
|
7
|
+
/**
|
|
8
|
+
* Render the EXPLICIT failure line. Rendered instead of nothing on every read
|
|
9
|
+
* failure, because an absent section reads as "there is nothing left to
|
|
10
|
+
* address" -- a floor nobody measured.
|
|
11
|
+
*/
|
|
12
|
+
export declare function renderFocusCriteriaStandingFailure(reason: string): string;
|
|
13
|
+
/** Injected seam; the default is the real product-api read. */
|
|
14
|
+
export interface FocusCriteriaStandingResolverDeps {
|
|
15
|
+
getStanding: (focusId: string) => Promise<FocusCriteriaStanding>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolve the section. Exported (with an injectable deps seam) so tests drive
|
|
19
|
+
* it without registering a module mock.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveFocusCriteriaStanding(context: AssemblyContext, deps?: FocusCriteriaStandingResolverDeps): Promise<string>;
|
|
22
|
+
/** Register this module's resolver(s). Called from initResolvers() -- not an import side effect. */
|
|
23
|
+
export declare function registerFocusCriteriaStandingResolver(): void;
|
|
24
|
+
//# sourceMappingURL=focus-criteria-standing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus-criteria-standing.d.ts","sourceRoot":"","sources":["../../src/resolvers/focus-criteria-standing.ts"],"names":[],"mappings":"AA8CA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,uCAAuC,CAAC;AAK/C,6EAA6E;AAC7E,eAAO,MAAM,yBAAyB,oFAC6C,CAAC;AAwFpF,0DAA0D;AAC1D,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAmBnF;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAazE;AAID,+DAA+D;AAC/D,MAAM,WAAW,iCAAiC;IAChD,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAClE;AA+CD;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,eAAe,EACxB,IAAI,GAAE,iCAA+C,GACpD,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED,oGAAoG;AACpG,wBAAgB,qCAAqC,IAAI,IAAI,CAG5D"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/resolvers/focus-criteria-standing.test.ts
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
/**
|
|
5
|
+
* focus.criteria_standing
|
|
6
|
+
*
|
|
7
|
+
* The focus's OWN declared acceptance criteria, each stated with whether a
|
|
8
|
+
* current delivery addresses it (and which), plus the STATED FLOOR and the
|
|
9
|
+
* basis that floor rests on.
|
|
10
|
+
*
|
|
11
|
+
* WHY A SCOPING PASS NEEDS THIS. An audit pass reads the branch, finds facts,
|
|
12
|
+
* and anchors remediation deliveries. Nothing in that loop ever asks what the
|
|
13
|
+
* focus SAID IT WAS FOR, so the elaboration has no condition under which it
|
|
14
|
+
* stops: a focus can triple its delivery count while its declared criteria sit
|
|
15
|
+
* close to met, because no step measures them. `acceptance_criteria` had a
|
|
16
|
+
* single reader in the whole repo, and only at the instant a review lands
|
|
17
|
+
* approved -- which is to say, never at the moment scoping decides to cut
|
|
18
|
+
* another delivery. This section is that measurement, in front of the pass,
|
|
19
|
+
* between reviews, with no review having to run.
|
|
20
|
+
*
|
|
21
|
+
* WHAT THE FLOOR IS AND IS NOT. `floorReached` says every declared criterion
|
|
22
|
+
* has at least one delivery pointing at it. It does NOT say the work is
|
|
23
|
+
* correct, complete or good -- satisfaction is a REVIEW act under separation of
|
|
24
|
+
* duties. The distinction is carried into the rendered prose, because a pass
|
|
25
|
+
* that reads "floor reached" as "the focus is done" has been handed the wrong
|
|
26
|
+
* instrument.
|
|
27
|
+
*
|
|
28
|
+
* `no_criteria_declared` IS NOT A FLOOR. A focus that declared nothing has gone
|
|
29
|
+
* UNMEASURED, not arrived; the rendering says so in those words. Treating an
|
|
30
|
+
* empty criteria set as satisfied would hand a perfect score to exactly the
|
|
31
|
+
* focuses that declared nothing to be measured against.
|
|
32
|
+
*
|
|
33
|
+
* FAILS SOFT, NEVER SILENT. Every failure path renders an EXPLICIT failure
|
|
34
|
+
* line. An absent or empty section reads to the pass as "there is nothing left
|
|
35
|
+
* to address", i.e. as a floor -- the precise inversion this section exists to
|
|
36
|
+
* prevent -- so "returns ''" is a FAILING outcome for this resolver.
|
|
37
|
+
*
|
|
38
|
+
* NO MATCHING LOGIC LIVES HERE. The standing is computed by the shared composer
|
|
39
|
+
* `supabase/functions/_shared/focus-criteria-standing.ts` behind the `focus_criteria_standing`
|
|
40
|
+
* product-api action and read through `queries/focus-criteria-standing.ts`.
|
|
41
|
+
* This module renders it. A second matcher in the daemon would drift from the
|
|
42
|
+
* one a review verdicts with.
|
|
43
|
+
*/
|
|
44
|
+
import { registerSourceResolver } from './assembly-engine.js';
|
|
45
|
+
import { createLogger } from '../shell/log.js';
|
|
46
|
+
const log = createLogger({ module: 'assembly-engine' });
|
|
47
|
+
/** Section heading, shared by the rendered standing and the failure line. */
|
|
48
|
+
export const CRITERIA_STANDING_HEADING = '## Focus acceptance criteria standing (what did THIS focus declare it was for?)';
|
|
49
|
+
/** The one-line disclaimer that keeps "addressed" from being read as "met". */
|
|
50
|
+
const ADDRESSED_IS_NOT_MET = '**"Addressed" is not "met".** A criterion is addressed when a current delivery POINTS AT it; ' +
|
|
51
|
+
'whether the work satisfies it is a REVIEW judgement, not a computed one.';
|
|
52
|
+
// ── Pure rendering ───────────────────────────────────────────────────
|
|
53
|
+
/** The floor line: the verdict, the count behind it, and the basis it rests on. */
|
|
54
|
+
function renderFloorLine(standing) {
|
|
55
|
+
const total = standing.criteria.length;
|
|
56
|
+
const open = standing.openCriteria.length;
|
|
57
|
+
if (standing.floorBasis === 'no_criteria_declared') {
|
|
58
|
+
return [
|
|
59
|
+
'**Floor: NOT REACHED -- this focus DECLARED NO acceptance criteria.** ' +
|
|
60
|
+
'Basis: `no_criteria_declared`.',
|
|
61
|
+
'An absent criteria set is UNMEASURED, not arrived. It is NOT a floor and must not be read ' +
|
|
62
|
+
'as one: nothing here states what this focus is for, so nothing here can tell you to stop.',
|
|
63
|
+
];
|
|
64
|
+
}
|
|
65
|
+
if (standing.floorBasis === 'all_criteria_addressed') {
|
|
66
|
+
return [
|
|
67
|
+
`**Floor: REACHED -- all ${total} declared criteria are addressed by a current delivery.** ` +
|
|
68
|
+
'Basis: `all_criteria_addressed`.',
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
return [
|
|
72
|
+
`**Floor: NOT REACHED -- ${open} of ${total} declared criteria are still OPEN.** ` +
|
|
73
|
+
'Basis: `open_criteria_remain`.',
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
/** One criterion: its state, its verbatim text, and every delivery claiming it. */
|
|
77
|
+
function renderCriterion(entry, index) {
|
|
78
|
+
const state = entry.status === 'addressed' ? 'ADDRESSED' : 'OPEN';
|
|
79
|
+
const lines = [`${index + 1}. **${state}** -- "${entry.criterion}"`];
|
|
80
|
+
for (const match of entry.addressedBy) {
|
|
81
|
+
lines.push(` - addressed by **${match.deliveryName}** (\`${match.deliveryId}\`) -- ` +
|
|
82
|
+
`basis \`${match.matchBasis}\`, overlap ${match.overlap} ` +
|
|
83
|
+
`(${match.matchedTokens.length}/${match.significantTokenCount} significant tokens)`);
|
|
84
|
+
}
|
|
85
|
+
return lines;
|
|
86
|
+
}
|
|
87
|
+
/** The open set, echoed verbatim: this is the work the focus still owes. */
|
|
88
|
+
function renderOpenPartition(openCriteria) {
|
|
89
|
+
const lines = [`### Still OPEN (${openCriteria.length}) -- the work that remains`, ''];
|
|
90
|
+
if (openCriteria.length === 0) {
|
|
91
|
+
lines.push('_None -- every declared criterion is addressed by a current delivery._');
|
|
92
|
+
return lines;
|
|
93
|
+
}
|
|
94
|
+
for (const criterion of openCriteria)
|
|
95
|
+
lines.push(`- "${criterion}"`);
|
|
96
|
+
return lines;
|
|
97
|
+
}
|
|
98
|
+
/** The scan bounds. An unreported or truncated scan is STATED, never assumed away. */
|
|
99
|
+
function renderScanBasis(standing) {
|
|
100
|
+
const scan = standing.deliveryScan;
|
|
101
|
+
if (!scan) {
|
|
102
|
+
return [
|
|
103
|
+
'- The read did NOT report its delivery-scan bounds, so it is unknown whether every ' +
|
|
104
|
+
'delivery on this focus was considered. Treat an ADDRESSED criterion as the weaker claim.',
|
|
105
|
+
];
|
|
106
|
+
}
|
|
107
|
+
if (scan.truncated) {
|
|
108
|
+
return [
|
|
109
|
+
`- The delivery scan was TRUNCATED at its bound of ${scan.limit} (${scan.evaluated} ` +
|
|
110
|
+
'deliveries evaluated). Unseen deliveries can only ADD matches, so an OPEN criterion ' +
|
|
111
|
+
'here may be a false open -- but a REACHED floor is still sound.',
|
|
112
|
+
];
|
|
113
|
+
}
|
|
114
|
+
return [
|
|
115
|
+
`- Measured against ${scan.evaluated} current non-cancelled deliveries ` +
|
|
116
|
+
`(scan bound ${scan.limit}, not reached).`,
|
|
117
|
+
];
|
|
118
|
+
}
|
|
119
|
+
/** The closing reading rule. The full instruction lives in the audit prompt. */
|
|
120
|
+
const READING_RULE = [
|
|
121
|
+
'**How to read this.** Before you anchor anything, ask what is left to address. An OPEN',
|
|
122
|
+
'criterion IS the work that remains -- anchor against it by name. When every criterion is',
|
|
123
|
+
'addressed, the focus has reached its STATED FLOOR: anchor nothing further unless you have a',
|
|
124
|
+
'genuinely new root cause, and say in your audit summary that the floor is reached.',
|
|
125
|
+
];
|
|
126
|
+
/** Render the standing. Never returns an empty string. */
|
|
127
|
+
export function renderFocusCriteriaStanding(standing) {
|
|
128
|
+
const lines = [
|
|
129
|
+
CRITERIA_STANDING_HEADING,
|
|
130
|
+
'',
|
|
131
|
+
...renderFloorLine(standing),
|
|
132
|
+
'',
|
|
133
|
+
ADDRESSED_IS_NOT_MET,
|
|
134
|
+
'',
|
|
135
|
+
...renderScanBasis(standing),
|
|
136
|
+
'',
|
|
137
|
+
];
|
|
138
|
+
if (standing.criteria.length === 0) {
|
|
139
|
+
lines.push('_This focus declared no acceptance criteria, so there are none to list._');
|
|
140
|
+
return lines.join('\n');
|
|
141
|
+
}
|
|
142
|
+
lines.push(`### Declared criteria (${standing.criteria.length})`, '');
|
|
143
|
+
standing.criteria.forEach((entry, i) => lines.push(...renderCriterion(entry, i)));
|
|
144
|
+
lines.push('', ...renderOpenPartition(standing.openCriteria), '', ...READING_RULE);
|
|
145
|
+
return lines.join('\n');
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Render the EXPLICIT failure line. Rendered instead of nothing on every read
|
|
149
|
+
* failure, because an absent section reads as "there is nothing left to
|
|
150
|
+
* address" -- a floor nobody measured.
|
|
151
|
+
*/
|
|
152
|
+
export function renderFocusCriteriaStandingFailure(reason) {
|
|
153
|
+
return [
|
|
154
|
+
CRITERIA_STANDING_HEADING,
|
|
155
|
+
'',
|
|
156
|
+
'**READ FAILED -- this focus\'s criteria standing is UNKNOWN.**',
|
|
157
|
+
`Reason: ${reason}`,
|
|
158
|
+
'',
|
|
159
|
+
'This section could not be computed, which is NOT the same as "every declared criterion is',
|
|
160
|
+
'addressed". You have NO floor here: do not conclude the focus has reached one, and do not',
|
|
161
|
+
'treat the silence as licence to anchor freely either. Judge each candidate on the tree\'s',
|
|
162
|
+
'own evidence, anchor only a genuinely new root cause, and record in your audit summary that',
|
|
163
|
+
'the criteria standing was unreadable on this pass.',
|
|
164
|
+
].join('\n');
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* The real read.
|
|
168
|
+
*
|
|
169
|
+
* `queries/focus-criteria-standing.js` is reached through a DEFERRED dynamic
|
|
170
|
+
* import, not a static one (the type import above erases). A static import
|
|
171
|
+
* would put it -- and its `queries/shared.js` + zod chain -- in the module
|
|
172
|
+
* graph of `resolvers/index.js`, which several resolver tests load while
|
|
173
|
+
* holding a PARTIAL `mock.module` over `queries/shared.js`; under the tsx mock
|
|
174
|
+
* loader a partial namespace makes every unlisted export (here
|
|
175
|
+
* `callApiValidated`) a load-time SyntaxError for anything importing it, and
|
|
176
|
+
* ten unrelated resolver test files go red. Deferring keeps that chain out of
|
|
177
|
+
* every test that does not actually run this resolver -- the documented escape
|
|
178
|
+
* (packages/daemon/CLAUDE.md on the mock-loader quirk; same move in
|
|
179
|
+
* `focus-review-coverage.ts` and `listener-auto-advance.ts`).
|
|
180
|
+
*/
|
|
181
|
+
async function readCriteriaStanding(focusId) {
|
|
182
|
+
const { getFocusCriteriaStanding } = await import('../queries/focus-criteria-standing.js');
|
|
183
|
+
return getFocusCriteriaStanding(focusId);
|
|
184
|
+
}
|
|
185
|
+
const defaultDeps = {
|
|
186
|
+
getStanding: readCriteriaStanding,
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* A standing whose own fields disagree is not a reading, and the direction that
|
|
190
|
+
* matters is one-way: a `floorReached: true` that arrives alongside open
|
|
191
|
+
* criteria (or no criteria at all) would render a FALSE FLOOR, which is silent
|
|
192
|
+
* and unrecoverable for the pass. Returns the contradiction to report, or null.
|
|
193
|
+
*/
|
|
194
|
+
function describeContradiction(standing) {
|
|
195
|
+
const floorClaimed = standing.floorReached || standing.floorBasis === 'all_criteria_addressed';
|
|
196
|
+
if (!floorClaimed)
|
|
197
|
+
return null;
|
|
198
|
+
if (standing.floorReached !== (standing.floorBasis === 'all_criteria_addressed')) {
|
|
199
|
+
return `floorReached=${standing.floorReached} contradicts floorBasis='${standing.floorBasis}'`;
|
|
200
|
+
}
|
|
201
|
+
if (standing.openCriteria.length > 0) {
|
|
202
|
+
return `the floor is reported as reached while ${standing.openCriteria.length} criteria are open`;
|
|
203
|
+
}
|
|
204
|
+
if (standing.criteria.length === 0) {
|
|
205
|
+
return 'the floor is reported as reached over an EMPTY criteria set';
|
|
206
|
+
}
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Resolve the section. Exported (with an injectable deps seam) so tests drive
|
|
211
|
+
* it without registering a module mock.
|
|
212
|
+
*/
|
|
213
|
+
export async function resolveFocusCriteriaStanding(context, deps = defaultDeps) {
|
|
214
|
+
let standing;
|
|
215
|
+
try {
|
|
216
|
+
standing = await deps.getStanding(context.focusId);
|
|
217
|
+
}
|
|
218
|
+
catch (err) {
|
|
219
|
+
const message = err.message;
|
|
220
|
+
log.warn(`focus.criteria_standing: read failed: ${message}`);
|
|
221
|
+
return renderFocusCriteriaStandingFailure(`the criteria-standing read failed (${message})`);
|
|
222
|
+
}
|
|
223
|
+
const contradiction = describeContradiction(standing);
|
|
224
|
+
if (contradiction !== null) {
|
|
225
|
+
log.warn(`focus.criteria_standing: inconsistent standing: ${contradiction}`);
|
|
226
|
+
return renderFocusCriteriaStandingFailure(`the read contradicted itself (${contradiction}), so no floor can be stated from it`);
|
|
227
|
+
}
|
|
228
|
+
return renderFocusCriteriaStanding(standing);
|
|
229
|
+
}
|
|
230
|
+
/** Register this module's resolver(s). Called from initResolvers() -- not an import side effect. */
|
|
231
|
+
export function registerFocusCriteriaStandingResolver() {
|
|
232
|
+
registerSourceResolver('focus.criteria_standing', async (context) => resolveFocusCriteriaStanding(context));
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=focus-criteria-standing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus-criteria-standing.js","sourceRoot":"","sources":["../../src/resolvers/focus-criteria-standing.ts"],"names":[],"mappings":"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"}
|