@telora/daemon 0.20.19 → 0.20.28
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 +4 -3
- package/dist/audit-phase.d.ts +43 -6
- package/dist/audit-phase.d.ts.map +1 -1
- package/dist/audit-phase.js +124 -23
- package/dist/audit-phase.js.map +1 -1
- package/dist/cascade-restatement.d.ts +13 -147
- package/dist/cascade-restatement.d.ts.map +1 -1
- package/dist/cascade-restatement.js +13 -429
- package/dist/cascade-restatement.js.map +1 -1
- package/dist/cli/session-state.d.ts.map +1 -1
- package/dist/cli/session-state.js +6 -1
- package/dist/cli/session-state.js.map +1 -1
- package/dist/focus-engine.d.ts.map +1 -1
- package/dist/focus-engine.js +15 -0
- package/dist/focus-engine.js.map +1 -1
- package/dist/focus-loop-registry.d.ts.map +1 -1
- package/dist/focus-loop-registry.js +16 -90
- package/dist/focus-loop-registry.js.map +1 -1
- package/dist/focus-loop.d.ts +0 -2
- package/dist/focus-loop.d.ts.map +1 -1
- package/dist/focus-loop.js +33 -25
- package/dist/focus-loop.js.map +1 -1
- package/dist/focus-phase.d.ts +26 -0
- package/dist/focus-phase.d.ts.map +1 -1
- package/dist/focus-phase.js +38 -0
- package/dist/focus-phase.js.map +1 -1
- package/dist/listener.d.ts.map +1 -1
- package/dist/listener.js +40 -9
- package/dist/listener.js.map +1 -1
- package/dist/loops/llm-client.d.ts.map +1 -1
- package/dist/loops/llm-client.js +17 -4
- package/dist/loops/llm-client.js.map +1 -1
- package/dist/queries/audit-runs.d.ts +56 -2
- package/dist/queries/audit-runs.d.ts.map +1 -1
- package/dist/queries/audit-runs.js +40 -0
- package/dist/queries/audit-runs.js.map +1 -1
- package/dist/queries/deliveries.d.ts +27 -0
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js.map +1 -1
- 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/resolvers/index.d.ts +1 -1
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +1 -1
- package/dist/resolvers/index.js.map +1 -1
- package/dist/resolvers/shared/audit.d.ts +5 -0
- package/dist/resolvers/shared/audit.d.ts.map +1 -1
- package/dist/resolvers/shared/audit.js +8 -3
- package/dist/resolvers/shared/audit.js.map +1 -1
- package/dist/resolvers/shared/git-diff.d.ts +13 -0
- package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
- package/dist/resolvers/shared/git-diff.js +30 -0
- package/dist/resolvers/shared/git-diff.js.map +1 -1
- package/dist/spawn/review-role-fallback.d.ts +74 -0
- package/dist/spawn/review-role-fallback.d.ts.map +1 -0
- package/dist/spawn/review-role-fallback.js +62 -0
- package/dist/spawn/review-role-fallback.js.map +1 -0
- package/dist/unified-shell-status.d.ts.map +1 -1
- package/dist/unified-shell-status.js +5 -1
- package/dist/unified-shell-status.js.map +1 -1
- package/dist/verification-config.d.ts +64 -15
- package/dist/verification-config.d.ts.map +1 -1
- package/dist/verification-config.js +66 -21
- package/dist/verification-config.js.map +1 -1
- package/dist/verification-default-on.d.ts +73 -1
- package/dist/verification-default-on.d.ts.map +1 -1
- package/dist/verification-default-on.js +79 -0
- package/dist/verification-default-on.js.map +1 -1
- package/dist/verification-engine.d.ts +16 -2
- package/dist/verification-engine.d.ts.map +1 -1
- package/dist/verification-engine.js +168 -84
- package/dist/verification-engine.js.map +1 -1
- package/dist/verification-feedback.d.ts +26 -1
- package/dist/verification-feedback.d.ts.map +1 -1
- package/dist/verification-feedback.js +82 -0
- package/dist/verification-feedback.js.map +1 -1
- package/dist/verification-manifest.d.ts +110 -0
- package/dist/verification-manifest.d.ts.map +1 -0
- package/dist/verification-manifest.js +150 -0
- package/dist/verification-manifest.js.map +1 -0
- package/dist/verify-reconciliation.d.ts +16 -1
- package/dist/verify-reconciliation.d.ts.map +1 -1
- package/dist/verify-reconciliation.js +18 -2
- package/dist/verify-reconciliation.js.map +1 -1
- package/dist/verify-restatement.d.ts +7 -0
- package/dist/verify-restatement.d.ts.map +1 -1
- package/dist/verify-restatement.js +1 -0
- package/dist/verify-restatement.js.map +1 -1
- package/package.json +2 -2
- package/dist/drift-ratify-loop.d.ts +0 -68
- package/dist/drift-ratify-loop.d.ts.map +0 -1
- package/dist/drift-ratify-loop.js +0 -161
- package/dist/drift-ratify-loop.js.map +0 -1
- package/dist/negative-branch.d.ts +0 -136
- package/dist/negative-branch.d.ts.map +0 -1
- package/dist/negative-branch.js +0 -241
- package/dist/negative-branch.js.map +0 -1
- package/dist/shortfall-disposition-config.d.ts +0 -34
- package/dist/shortfall-disposition-config.d.ts.map +0 -1
- package/dist/shortfall-disposition-config.js +0 -46
- package/dist/shortfall-disposition-config.js.map +0 -1
- package/dist/shortfall-disposition-loop.d.ts +0 -86
- package/dist/shortfall-disposition-loop.d.ts.map +0 -1
- package/dist/shortfall-disposition-loop.js +0 -309
- package/dist/shortfall-disposition-loop.js.map +0 -1
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
*
|
|
15
15
|
* @module verification-default-on
|
|
16
16
|
*/
|
|
17
|
+
import { type ProductEntry } from '@telora/daemon-core';
|
|
17
18
|
import type { DaemonConfig } from './types.js';
|
|
18
19
|
import type { PendingVerification } from './queries/verification.js';
|
|
19
|
-
import type
|
|
20
|
+
import { type ResolvedDefaultVerification } from './verification-config.js';
|
|
20
21
|
import type { getActiveFocuses, getFocusDeliveries } from './supabase.js';
|
|
21
22
|
/**
|
|
22
23
|
* The subset of verification dependencies the default-on scan needs. Kept as a
|
|
@@ -62,6 +63,77 @@ export declare function __getVerificationSemaphoreForTests(): {
|
|
|
62
63
|
availablePermits(): number;
|
|
63
64
|
setLimit(n: number): void;
|
|
64
65
|
};
|
|
66
|
+
/**
|
|
67
|
+
* One product's verification scope for a tick: its product-scoped config and
|
|
68
|
+
* the default-on config resolved FROM that scoped config.
|
|
69
|
+
*/
|
|
70
|
+
export interface ProductVerificationScope {
|
|
71
|
+
product: ProductEntry;
|
|
72
|
+
/** Product-scoped config (`configForProduct`): productId + repoPath are this product's. */
|
|
73
|
+
productConfig: DaemonConfig;
|
|
74
|
+
/**
|
|
75
|
+
* The resolved default-on config, or `undefined` when resolution FAILED (a
|
|
76
|
+
* malformed repo manifest). Undefined means "this product's default-on gate is
|
|
77
|
+
* off this tick" -- never "verification is disabled here", which is what a
|
|
78
|
+
* silent degrade to '' would have said.
|
|
79
|
+
*/
|
|
80
|
+
resolved: ResolvedDefaultVerification | undefined;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Resolve the default-on verification config for every product, from each
|
|
84
|
+
* product's OWN scoped config.
|
|
85
|
+
*
|
|
86
|
+
* WHY per-product (this is the whole point): the repo-manifest layer is read
|
|
87
|
+
* from `config.repoPath`, so resolution is only meaningful on a product-scoped
|
|
88
|
+
* config. A multi-product `daemon.json` (products[] each with their own
|
|
89
|
+
* repoPath) carries no meaningful TOP-LEVEL repoPath -- `config.ts:158` falls
|
|
90
|
+
* back to `process.cwd()`, the daemon's LAUNCH DIRECTORY. Resolving once from
|
|
91
|
+
* the un-scoped config therefore made every product's gate a function of where
|
|
92
|
+
* the daemon happened to be started: launched outside a repo -> no manifest ->
|
|
93
|
+
* silently inert; launched inside one product's repo -> that repo's command
|
|
94
|
+
* applied to every OTHER product's deliveries. Neither is a gate.
|
|
95
|
+
*
|
|
96
|
+
* Error containment: `resolveDefaultVerification` THROWS on a malformed
|
|
97
|
+
* manifest by design (verification-manifest.ts -- a typo must never silently
|
|
98
|
+
* un-arm the gate). Per-product, an uncaught throw would kill the tick for every
|
|
99
|
+
* product including healthy ones, so it is contained HERE: logged at ERROR
|
|
100
|
+
* naming the product and the manifest path (every tick -- a persistent,
|
|
101
|
+
* operator-visible state, never a debug line), and that product's `resolved`
|
|
102
|
+
* comes back `undefined` so its default-on scan stays off while other products
|
|
103
|
+
* keep gating. The product's EXPLICIT-method deliveries still verify: they carry
|
|
104
|
+
* their own command on the delivery row, so a repo-root manifest typo has no
|
|
105
|
+
* bearing on them and must not disarm them.
|
|
106
|
+
*/
|
|
107
|
+
export declare function resolveProductVerificationScopes(config: DaemonConfig, resolve: (c: DaemonConfig) => ResolvedDefaultVerification): ProductVerificationScope[];
|
|
108
|
+
/**
|
|
109
|
+
* Resolve the ONE daemon-wide concurrency cap for the shared semaphore.
|
|
110
|
+
*
|
|
111
|
+
* The cap is DAEMON-WIDE, not per-product, and deliberately so: the semaphore is
|
|
112
|
+
* a module-level singleton and the resource it protects is the daemon's HOST
|
|
113
|
+
* (CPU/RAM/disk for a minutes-long build+test sweep), which every product shares.
|
|
114
|
+
* Three products each declaring `maxConcurrent: 3` must not mean 9 concurrent
|
|
115
|
+
* suites on one box. So a single value must be chosen -- and simply calling
|
|
116
|
+
* `setLimit` inside the per-product loop would be incoherent: the LAST product
|
|
117
|
+
* iterated would silently win for the rest of the tick.
|
|
118
|
+
*
|
|
119
|
+
* RULE: the minimum across the products that resolved one. Chosen because:
|
|
120
|
+
* - it is order-independent (min is commutative), so no "last product wins";
|
|
121
|
+
* - it is fail-safe -- the cap never exceeds any declaration, and over-capping
|
|
122
|
+
* only slows a tick where under-capping can thrash the host;
|
|
123
|
+
* - it keeps every layer's declaration live rather than silently dropping the
|
|
124
|
+
* manifest's `maxConcurrent`. Each product still resolves through the full
|
|
125
|
+
* env > operator file > manifest chain, so an operator setting the env var or
|
|
126
|
+
* the global block pins EVERY product's value and therefore the min: the
|
|
127
|
+
* operator, who alone knows the box, always has the last word. A repo can
|
|
128
|
+
* only make the daemon more conservative than the operator's setting, never
|
|
129
|
+
* less.
|
|
130
|
+
* Stated plainly: the daemon runs at most as many concurrent suites as the most
|
|
131
|
+
* conservative managed repo allows.
|
|
132
|
+
*
|
|
133
|
+
* No resolved values at all (every product's manifest malformed) => the
|
|
134
|
+
* conservative floor, not a stale limit from a previous tick.
|
|
135
|
+
*/
|
|
136
|
+
export declare function resolveDaemonWideVerifyCap(scopes: readonly ProductVerificationScope[]): number;
|
|
65
137
|
/** Test-only: reset the default-on re-run guard. */
|
|
66
138
|
export declare function __resetDefaultOnGuardForTests(): void;
|
|
67
139
|
/** Test-only: snapshot of the default-on re-run guard. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-default-on.d.ts","sourceRoot":"","sources":["../src/verification-default-on.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"verification-default-on.d.ts","sourceRoot":"","sources":["../src/verification-default-on.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAiC,KAAK,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAG3G,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAM1E;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;CAC/C;AAMD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,KAAK,EAAE,MAAM;IAKzB,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAavB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B,OAAO,IAAI,IAAI;IASf,2DAA2D;IAC3D,gBAAgB,IAAI,MAAM;CAG3B;AAED,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,uBAA+B,CAAC;AAElE,oDAAoD;AACpD,wBAAgB,kCAAkC,IAAI;IAAE,gBAAgB,IAAI,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAE9G;AAMD;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,2FAA2F;IAC3F,aAAa,EAAE,YAAY,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,EAAE,2BAA2B,GAAG,SAAS,CAAC;CACnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,2BAA2B,GACxD,wBAAwB,EAAE,CAe5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,wBAAwB,EAAE,GAC1C,MAAM,CAMR;AAmBD,oDAAoD;AACpD,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAED,0DAA0D;AAC1D,wBAAgB,2BAA2B,IAAI,WAAW,CAAC,MAAM,CAAC,CAEjE;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED,4CAA4C;AAC5C,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAEnE;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,2BAA2B,EACrC,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAAC,EACxC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAuDhC"}
|
|
@@ -15,6 +15,9 @@
|
|
|
15
15
|
* @module verification-default-on
|
|
16
16
|
*/
|
|
17
17
|
import { DELIVERY_STATUS } from '@telora/daemon-core';
|
|
18
|
+
import { DEFAULT_VERIFY_MAX_CONCURRENT } from './verification-config.js';
|
|
19
|
+
import { resolveVerifyManifestPath } from './verification-manifest.js';
|
|
20
|
+
import { configForProduct } from './config.js';
|
|
18
21
|
import { createLogger } from './log.js';
|
|
19
22
|
const log = createLogger({ module: 'verification' });
|
|
20
23
|
// ---------------------------------------------------------------------------
|
|
@@ -85,6 +88,82 @@ export const verificationSemaphore = new VerificationSemaphore(1);
|
|
|
85
88
|
export function __getVerificationSemaphoreForTests() {
|
|
86
89
|
return verificationSemaphore;
|
|
87
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Resolve the default-on verification config for every product, from each
|
|
93
|
+
* product's OWN scoped config.
|
|
94
|
+
*
|
|
95
|
+
* WHY per-product (this is the whole point): the repo-manifest layer is read
|
|
96
|
+
* from `config.repoPath`, so resolution is only meaningful on a product-scoped
|
|
97
|
+
* config. A multi-product `daemon.json` (products[] each with their own
|
|
98
|
+
* repoPath) carries no meaningful TOP-LEVEL repoPath -- `config.ts:158` falls
|
|
99
|
+
* back to `process.cwd()`, the daemon's LAUNCH DIRECTORY. Resolving once from
|
|
100
|
+
* the un-scoped config therefore made every product's gate a function of where
|
|
101
|
+
* the daemon happened to be started: launched outside a repo -> no manifest ->
|
|
102
|
+
* silently inert; launched inside one product's repo -> that repo's command
|
|
103
|
+
* applied to every OTHER product's deliveries. Neither is a gate.
|
|
104
|
+
*
|
|
105
|
+
* Error containment: `resolveDefaultVerification` THROWS on a malformed
|
|
106
|
+
* manifest by design (verification-manifest.ts -- a typo must never silently
|
|
107
|
+
* un-arm the gate). Per-product, an uncaught throw would kill the tick for every
|
|
108
|
+
* product including healthy ones, so it is contained HERE: logged at ERROR
|
|
109
|
+
* naming the product and the manifest path (every tick -- a persistent,
|
|
110
|
+
* operator-visible state, never a debug line), and that product's `resolved`
|
|
111
|
+
* comes back `undefined` so its default-on scan stays off while other products
|
|
112
|
+
* keep gating. The product's EXPLICIT-method deliveries still verify: they carry
|
|
113
|
+
* their own command on the delivery row, so a repo-root manifest typo has no
|
|
114
|
+
* bearing on them and must not disarm them.
|
|
115
|
+
*/
|
|
116
|
+
export function resolveProductVerificationScopes(config, resolve) {
|
|
117
|
+
return config.products.map((product) => {
|
|
118
|
+
const productConfig = configForProduct(config, product);
|
|
119
|
+
try {
|
|
120
|
+
return { product, productConfig, resolved: resolve(productConfig) };
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
log.error(`[verification] default-on config unresolvable for product ${product.id} `
|
|
124
|
+
+ `(manifest: ${resolveVerifyManifestPath(productConfig.repoPath)}): `
|
|
125
|
+
+ `${err.message} -- this product's default-on gate is OFF until it is fixed; `
|
|
126
|
+
+ `its explicit-method deliveries and all other products are unaffected.`);
|
|
127
|
+
return { product, productConfig, resolved: undefined };
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Resolve the ONE daemon-wide concurrency cap for the shared semaphore.
|
|
133
|
+
*
|
|
134
|
+
* The cap is DAEMON-WIDE, not per-product, and deliberately so: the semaphore is
|
|
135
|
+
* a module-level singleton and the resource it protects is the daemon's HOST
|
|
136
|
+
* (CPU/RAM/disk for a minutes-long build+test sweep), which every product shares.
|
|
137
|
+
* Three products each declaring `maxConcurrent: 3` must not mean 9 concurrent
|
|
138
|
+
* suites on one box. So a single value must be chosen -- and simply calling
|
|
139
|
+
* `setLimit` inside the per-product loop would be incoherent: the LAST product
|
|
140
|
+
* iterated would silently win for the rest of the tick.
|
|
141
|
+
*
|
|
142
|
+
* RULE: the minimum across the products that resolved one. Chosen because:
|
|
143
|
+
* - it is order-independent (min is commutative), so no "last product wins";
|
|
144
|
+
* - it is fail-safe -- the cap never exceeds any declaration, and over-capping
|
|
145
|
+
* only slows a tick where under-capping can thrash the host;
|
|
146
|
+
* - it keeps every layer's declaration live rather than silently dropping the
|
|
147
|
+
* manifest's `maxConcurrent`. Each product still resolves through the full
|
|
148
|
+
* env > operator file > manifest chain, so an operator setting the env var or
|
|
149
|
+
* the global block pins EVERY product's value and therefore the min: the
|
|
150
|
+
* operator, who alone knows the box, always has the last word. A repo can
|
|
151
|
+
* only make the daemon more conservative than the operator's setting, never
|
|
152
|
+
* less.
|
|
153
|
+
* Stated plainly: the daemon runs at most as many concurrent suites as the most
|
|
154
|
+
* conservative managed repo allows.
|
|
155
|
+
*
|
|
156
|
+
* No resolved values at all (every product's manifest malformed) => the
|
|
157
|
+
* conservative floor, not a stale limit from a previous tick.
|
|
158
|
+
*/
|
|
159
|
+
export function resolveDaemonWideVerifyCap(scopes) {
|
|
160
|
+
const declared = scopes
|
|
161
|
+
.map((s) => s.resolved?.maxConcurrent)
|
|
162
|
+
.filter((n) => typeof n === 'number');
|
|
163
|
+
if (declared.length === 0)
|
|
164
|
+
return DEFAULT_VERIFY_MAX_CONCURRENT;
|
|
165
|
+
return Math.min(...declared);
|
|
166
|
+
}
|
|
88
167
|
// ---------------------------------------------------------------------------
|
|
89
168
|
// Steady-state re-run guard
|
|
90
169
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-default-on.js","sourceRoot":"","sources":["../src/verification-default-on.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"verification-default-on.js","sourceRoot":"","sources":["../src/verification-default-on.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,13 +26,13 @@ import { runDeterministicStrategy, type StrategyResult } from './verification-de
|
|
|
26
26
|
export { runDeterministicStrategy, type DeterministicLogContext } from './verification-deterministic.js';
|
|
27
27
|
import { getPendingVerifications, type PendingVerification, type VerificationOutcome } from './queries/verification.js';
|
|
28
28
|
import type { NodeWriteback } from './reality-writeback.js';
|
|
29
|
-
import { type ReconcileTargetsResult, type TargetRestatement, type VerifyEvidence } from './verify-restatement.js';
|
|
29
|
+
import { type ReconcileTargetsResult, type TargetRestatement, type TargetShortfall, type VerifyEvidence } from './verify-restatement.js';
|
|
30
30
|
import { type FileEscalationInput } from './escalations.js';
|
|
31
31
|
import type { DaemonConfig } from './types.js';
|
|
32
32
|
import { type ResolvedDefaultVerification } from './verification-config.js';
|
|
33
33
|
import { getActiveFocuses, getFocusDeliveries } from './supabase.js';
|
|
34
34
|
import { type FailureClassification } from './verification-baseline.js';
|
|
35
|
-
export { collectDefaultOnVerifications, verificationSemaphore, VerificationSemaphore, __getVerificationSemaphoreForTests, __resetDefaultOnGuardForTests, __getDefaultOnGuardForTests, __markDefaultOnRanForTests, } from './verification-default-on.js';
|
|
35
|
+
export { collectDefaultOnVerifications, resolveDaemonWideVerifyCap, resolveProductVerificationScopes, verificationSemaphore, VerificationSemaphore, __getVerificationSemaphoreForTests, __resetDefaultOnGuardForTests, __getDefaultOnGuardForTests, __markDefaultOnRanForTests, } from './verification-default-on.js';
|
|
36
36
|
import { type AiInspectionInputs } from './ai-inspection-context.js';
|
|
37
37
|
import { runAiInspection as defaultRunAiInspection, type InspectionResult } from './ai-inspection-runner.js';
|
|
38
38
|
import { type SecurityFindingGateDeps } from './security-finding-gate.js';
|
|
@@ -125,8 +125,22 @@ export interface VerificationDeps {
|
|
|
125
125
|
getFocusDeliveries: typeof getFocusDeliveries;
|
|
126
126
|
/** Failed-run feedback (gate_state + live inject). Optional; defaultDeps provides it. */
|
|
127
127
|
deliverFailureFeedback?: (v: PendingVerification, result: StrategyResult) => Promise<void>;
|
|
128
|
+
/**
|
|
129
|
+
* Shortfall-origin gate-hold feedback (gate_state under the shortfall guard +
|
|
130
|
+
* live inject describing the declared-vs-achieved gap). Distinct from
|
|
131
|
+
* deliverFailureFeedback so a shortfall hold never reports under the
|
|
132
|
+
* deterministic guard. Optional; defaultDeps provides it.
|
|
133
|
+
*/
|
|
134
|
+
deliverShortfallFeedback?: (v: PendingVerification, shortfalls: readonly TargetShortfall[]) => Promise<void>;
|
|
128
135
|
/** cwd for the HEAD run -- the focus worktree. Optional; dispatch falls back to resolveCwd. */
|
|
129
136
|
resolveVerificationCwd?: (v: PendingVerification) => string;
|
|
137
|
+
/**
|
|
138
|
+
* Count of commits the delivery branch is ahead of the integration base.
|
|
139
|
+
* Used by the evidence-integrity guard to tell a broken diff MEASUREMENT
|
|
140
|
+
* (commits present but diff empty -> hold) from genuine inaction (no commits
|
|
141
|
+
* -> a real shortfall). Optional; defaultDeps resolves it in the focus worktree.
|
|
142
|
+
*/
|
|
143
|
+
resolveCommitsAhead?: (v: PendingVerification) => number;
|
|
130
144
|
/** Baseline-diff attribution; null => no baseline resolvable (gate all). Optional. */
|
|
131
145
|
attributeFailures?: (v: PendingVerification, result: StrategyResult) => Promise<FailureClassification | null>;
|
|
132
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-engine.d.ts","sourceRoot":"","sources":["../src/verification-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,wBAAwB,EAAE,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAChG,OAAO,EAAE,wBAAwB,EAAE,KAAK,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AACzG,OAAO,EACL,uBAAuB,EAIvB,KAAK,mBAAmB,EAExB,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"verification-engine.d.ts","sourceRoot":"","sources":["../src/verification-engine.ts"],"names":[],"mappings":"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"}
|