@telora/daemon 0.20.9 → 0.20.21
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 +9 -3
- 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/completion/review-exit-phase.d.ts +2 -0
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +59 -5
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/review-exit-shortfall.d.ts +62 -0
- package/dist/completion/review-exit-shortfall.d.ts.map +1 -0
- package/dist/completion/review-exit-shortfall.js +84 -0
- package/dist/completion/review-exit-shortfall.js.map +1 -0
- package/dist/drift-ratify-loop.d.ts +68 -0
- package/dist/drift-ratify-loop.d.ts.map +1 -0
- package/dist/drift-ratify-loop.js +161 -0
- package/dist/drift-ratify-loop.js.map +1 -0
- package/dist/drift-ratify-policy.d.ts +101 -0
- package/dist/drift-ratify-policy.d.ts.map +1 -0
- package/dist/drift-ratify-policy.js +178 -0
- package/dist/drift-ratify-policy.js.map +1 -0
- package/dist/focus-loop-registry.d.ts.map +1 -1
- package/dist/focus-loop-registry.js +49 -0
- package/dist/focus-loop-registry.js.map +1 -1
- package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
- package/dist/prompt-sections/persona-sections.js +41 -4
- package/dist/prompt-sections/persona-sections.js.map +1 -1
- package/dist/queries/deliveries.d.ts +22 -0
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +6 -0
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/focuses.d.ts +9 -0
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +14 -0
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/reality-tree.d.ts +22 -0
- package/dist/queries/reality-tree.d.ts.map +1 -1
- package/dist/queries/reality-tree.js +32 -0
- package/dist/queries/reality-tree.js.map +1 -1
- package/dist/queries/schemas.d.ts +2 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +5 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/resolvers/drift-shortfall-proposals.d.ts +27 -0
- package/dist/resolvers/drift-shortfall-proposals.d.ts.map +1 -0
- package/dist/resolvers/drift-shortfall-proposals.js +90 -0
- package/dist/resolvers/drift-shortfall-proposals.js.map +1 -0
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +2 -0
- package/dist/resolvers/index.js.map +1 -1
- package/dist/shortfall-disposition-config.d.ts +34 -0
- package/dist/shortfall-disposition-config.d.ts.map +1 -0
- package/dist/shortfall-disposition-config.js +46 -0
- package/dist/shortfall-disposition-config.js.map +1 -0
- package/dist/shortfall-disposition-loop.d.ts +86 -0
- package/dist/shortfall-disposition-loop.d.ts.map +1 -0
- package/dist/shortfall-disposition-loop.js +309 -0
- package/dist/shortfall-disposition-loop.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 +1 -1
- package/dist/verification-engine.d.ts.map +1 -1
- package/dist/verification-engine.js +26 -15
- package/dist/verification-engine.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/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified-shell-status.d.ts","sourceRoot":"","sources":["../src/unified-shell-status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAU5F;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,aAAa,EACrB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"unified-shell-status.d.ts","sourceRoot":"","sources":["../src/unified-shell-status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAU5F;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,aAAa,EACrB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,EAAE,CAuBV;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CA8DnG;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CA6BrE"}
|
|
@@ -23,7 +23,11 @@ export function formatVerificationPostureLines(config, env = process.env) {
|
|
|
23
23
|
const { defaultVerification, products } = resolveVerificationCarriage(config.rawFileConfig, config.base.products ?? []);
|
|
24
24
|
return products.map((p) => {
|
|
25
25
|
// Per-product override wins; else the global block (mirrors configForProduct).
|
|
26
|
-
|
|
26
|
+
// repoPath carries the repo-committed telora.verify.json layer below both.
|
|
27
|
+
const scoped = {
|
|
28
|
+
defaultVerification: p.defaultVerification ?? defaultVerification,
|
|
29
|
+
repoPath: p.repoPath,
|
|
30
|
+
};
|
|
27
31
|
const posture = deriveVerificationPosture(scoped, env);
|
|
28
32
|
const label = productLabel(p);
|
|
29
33
|
if (posture === 'configured') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified-shell-status.js","sourceRoot":"","sources":["../src/unified-shell-status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAG7D;;;;;;;;;GASG;AACH,MAAM,UAAU,8BAA8B,CAC5C,MAAqB,EACrB,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,GAAG,2BAA2B,CACnE,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAC3B,CAAC;IACF,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACxB,+EAA+E;QAC/E,MAAM,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"unified-shell-status.js","sourceRoot":"","sources":["../src/unified-shell-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,21 @@
|
|
|
6
6
|
* it the DEFAULT for every delivery entering verify, using a config-default
|
|
7
7
|
* command run daemon-side at the coding->verify edge.
|
|
8
8
|
*
|
|
9
|
-
* Resolution precedence (env > file > typed default),
|
|
10
|
-
* resolveTelemetryConfig / resolveLacunaConfig work in the daemon:
|
|
11
|
-
* - command: TELORA_DEFAULT_VERIFY_COMMAND > config.defaultVerification.command > '' (disabled)
|
|
12
|
-
* - timeoutMs: TELORA_DEFAULT_VERIFY_TIMEOUT_MS > config.defaultVerification.timeoutMs > 30 min
|
|
13
|
-
* - maxConcurrent:TELORA_DEFAULT_VERIFY_MAX_CONCURRENT > config.defaultVerification.maxConcurrent > 1
|
|
9
|
+
* Resolution precedence (env > operator file > repo manifest > typed default),
|
|
10
|
+
* mirroring how resolveTelemetryConfig / resolveLacunaConfig work in the daemon:
|
|
11
|
+
* - command: TELORA_DEFAULT_VERIFY_COMMAND > config.defaultVerification.command > telora.verify.json > '' (disabled)
|
|
12
|
+
* - timeoutMs: TELORA_DEFAULT_VERIFY_TIMEOUT_MS > config.defaultVerification.timeoutMs > telora.verify.json > 30 min
|
|
13
|
+
* - maxConcurrent:TELORA_DEFAULT_VERIFY_MAX_CONCURRENT > config.defaultVerification.maxConcurrent > telora.verify.json > 1
|
|
14
|
+
*
|
|
15
|
+
* The repo-manifest layer (`telora.verify.json`, see verification-manifest.ts)
|
|
16
|
+
* is what lets a REPO declare its own gate: the two layers above it are both
|
|
17
|
+
* per-workstation and untracked (`.gitignore:72` ignores `.telora/` wholesale;
|
|
18
|
+
* cli/verify-setup.ts:218 writes to ~/.telora/daemon.json), so without it no PR
|
|
19
|
+
* could arm the gate and a fresh clone was ungated by construction.
|
|
20
|
+
*
|
|
21
|
+
* The seam stays OPT-IN: a repo shipping no manifest still resolves to ''
|
|
22
|
+
* (disabled). No default command is ever hard-coded here -- the daemon manages
|
|
23
|
+
* products that have no whole-repo verification command at all.
|
|
14
24
|
*
|
|
15
25
|
* The env knobs are read directly from `process.env` here rather than through
|
|
16
26
|
* daemon-core's env-config Zod index: daemon-core is a registry-installed
|
|
@@ -21,6 +31,7 @@
|
|
|
21
31
|
* @module verification-config
|
|
22
32
|
*/
|
|
23
33
|
import type { DaemonConfig, DefaultVerificationConfig } from './types.js';
|
|
34
|
+
import { type VerifyManifestReader } from './verification-manifest.js';
|
|
24
35
|
/** Default timeout for the default-on deterministic run: 30 min (full build+test sweep). */
|
|
25
36
|
export declare const DEFAULT_VERIFY_TIMEOUT_MS: number;
|
|
26
37
|
/** Default max concurrent daemon-side verification runs. */
|
|
@@ -43,17 +54,52 @@ export interface ResolvedDefaultVerification {
|
|
|
43
54
|
enabled: boolean;
|
|
44
55
|
}
|
|
45
56
|
/**
|
|
46
|
-
*
|
|
57
|
+
* The config slice these resolvers need: the (already per-product-selected)
|
|
58
|
+
* verification block, plus the product's repo root so the repo-manifest layer
|
|
59
|
+
* can be read.
|
|
60
|
+
*
|
|
61
|
+
* `repoPath` is OPTIONAL rather than picked from DaemonConfig (where it is
|
|
62
|
+
* required) so that callers holding only a scoped `{ defaultVerification }`
|
|
63
|
+
* still typecheck; a missing repoPath simply means "no repo manifest layer".
|
|
64
|
+
* A product-scoped config always carries it -- `configForProduct`
|
|
65
|
+
* (config.ts:351) sets `repoPath` per product -- so the real daemon paths get
|
|
66
|
+
* the manifest layer for free.
|
|
67
|
+
*/
|
|
68
|
+
export type VerificationConfigScope = Pick<DaemonConfig, 'defaultVerification'> & {
|
|
69
|
+
/** Product repo root; the manifest is read from `<repoPath>/telora.verify.json`. */
|
|
70
|
+
repoPath?: string;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Resolve the default-on verification config from
|
|
74
|
+
* env > operator file > repo manifest > typed default.
|
|
75
|
+
*
|
|
76
|
+
* Pure w.r.t. its inputs: env is injectable, and the repo-manifest read is
|
|
77
|
+
* injected via `readManifest` rather than touching fs inside this resolver, so
|
|
78
|
+
* the whole precedence chain is assertable without a real repo.
|
|
79
|
+
*
|
|
80
|
+
* Env values are parsed by daemon-core's loadEnvConfig, so an invalid numeric
|
|
81
|
+
* value fails loudly at daemon startup (naming the var) instead of silently
|
|
82
|
+
* degrading mid-tick. A malformed repo manifest fails the same way (naming the
|
|
83
|
+
* file) -- see verification-manifest.ts for why that is never degraded to
|
|
84
|
+
* "disabled".
|
|
85
|
+
*
|
|
86
|
+
* The manifest is read whenever a repoPath is present, regardless of which
|
|
87
|
+
* layer ultimately wins, so a broken repo declaration surfaces even on a
|
|
88
|
+
* workstation whose env/operator file happens to override it.
|
|
47
89
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
90
|
+
* One asymmetry worth naming: an operator's explicit `declined: true` marker
|
|
91
|
+
* SUPPRESSES the repo-manifest command. The marker is a recorded operator
|
|
92
|
+
* decision to gate on AI review only, and the operator file outranks the repo
|
|
93
|
+
* manifest -- so a repo declaring a command cannot silently overturn it. Env
|
|
94
|
+
* still wins over both (an explicit env command beats a stale decline marker,
|
|
95
|
+
* unchanged).
|
|
51
96
|
*/
|
|
52
|
-
export declare function resolveDefaultVerification(config:
|
|
97
|
+
export declare function resolveDefaultVerification(config: VerificationConfigScope, env?: NodeJS.ProcessEnv, readManifest?: VerifyManifestReader): ResolvedDefaultVerification;
|
|
53
98
|
/**
|
|
54
99
|
* Declarative verification posture, derived at read time from config (never a
|
|
55
100
|
* filed event, so it cannot spam and self-clears once configured):
|
|
56
|
-
* - `configured` -- a non-empty verification command resolves (env
|
|
101
|
+
* - `configured` -- a non-empty verification command resolves (env, operator
|
|
102
|
+
* file, or the repo's committed `telora.verify.json`).
|
|
57
103
|
* - `declined` -- no command resolves AND an explicit review-only decline
|
|
58
104
|
* marker is recorded. Deliveries gate on AI review only,
|
|
59
105
|
* by deliberate decision (not a gap).
|
|
@@ -68,13 +114,15 @@ export type VerificationPosture = 'configured' | 'declined' | 'unconfigured';
|
|
|
68
114
|
* escalation/side-effect path -- posture is declarative state, surfaced on
|
|
69
115
|
* ambient read surfaces, never a filed escalation. Callers pass a product-scoped
|
|
70
116
|
* config (from `configForProduct`) so `config.defaultVerification` is already the
|
|
71
|
-
* selected per-product-or-global block
|
|
117
|
+
* selected per-product-or-global block and `repoPath` points at that product's
|
|
118
|
+
* repo -- which is what lets a repo-manifest-only command read `configured`.
|
|
72
119
|
*
|
|
73
120
|
* An explicitly resolved command wins over the decline marker: an operator who
|
|
74
121
|
* sets a command (via env or file) has configured verification regardless of a
|
|
75
|
-
* stale `declined` flag.
|
|
122
|
+
* stale `declined` flag. The marker still suppresses the repo manifest (the
|
|
123
|
+
* operator file outranks it), so `declined: true` keeps reading `declined`.
|
|
76
124
|
*/
|
|
77
|
-
export declare function deriveVerificationPosture(config:
|
|
125
|
+
export declare function deriveVerificationPosture(config: VerificationConfigScope, env?: NodeJS.ProcessEnv, readManifest?: VerifyManifestReader): VerificationPosture;
|
|
78
126
|
/** Structured posture for one product, published for app consumption. */
|
|
79
127
|
export interface ProductVerificationPosture {
|
|
80
128
|
posture: VerificationPosture;
|
|
@@ -92,6 +140,7 @@ export interface ProductVerificationPosture {
|
|
|
92
140
|
*/
|
|
93
141
|
export declare function buildProductPostureMap(products: ReadonlyArray<{
|
|
94
142
|
id: string;
|
|
143
|
+
repoPath?: string;
|
|
95
144
|
defaultVerification?: DefaultVerificationConfig;
|
|
96
|
-
}>, globalBlock: DefaultVerificationConfig | undefined, env?: NodeJS.ProcessEnv): Record<string, ProductVerificationPosture>;
|
|
145
|
+
}>, globalBlock: DefaultVerificationConfig | undefined, env?: NodeJS.ProcessEnv, readManifest?: VerifyManifestReader): Record<string, ProductVerificationPosture>;
|
|
97
146
|
//# sourceMappingURL=verification-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-config.d.ts","sourceRoot":"","sources":["../src/verification-config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"verification-config.d.ts","sourceRoot":"","sources":["../src/verification-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAE3F,4FAA4F;AAC5F,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AAExD,4DAA4D;AAC5D,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,2DAA2D;AAC3D,eAAO,MAAM,UAAU;;;;CAIb,CAAC;AAEX;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,GAAG;IAChF,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,uBAAuB,EAC/B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,YAAY,GAAE,oBAAyC,GACtD,2BAA2B,CAmC7B;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,UAAU,GAAG,cAAc,CAAC;AAE7E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,uBAAuB,EAC/B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,YAAY,GAAE,oBAAyC,GACtD,mBAAmB,CAKrB;AAED,yEAAyE;AACzE,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,yBAAyB,CAAA;CAAE,CAAC,EAC3G,WAAW,EAAE,yBAAyB,GAAG,SAAS,EAClD,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,YAAY,GAAE,oBAAyC,GACtD,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAiB5C"}
|
|
@@ -6,11 +6,21 @@
|
|
|
6
6
|
* it the DEFAULT for every delivery entering verify, using a config-default
|
|
7
7
|
* command run daemon-side at the coding->verify edge.
|
|
8
8
|
*
|
|
9
|
-
* Resolution precedence (env > file > typed default),
|
|
10
|
-
* resolveTelemetryConfig / resolveLacunaConfig work in the daemon:
|
|
11
|
-
* - command: TELORA_DEFAULT_VERIFY_COMMAND > config.defaultVerification.command > '' (disabled)
|
|
12
|
-
* - timeoutMs: TELORA_DEFAULT_VERIFY_TIMEOUT_MS > config.defaultVerification.timeoutMs > 30 min
|
|
13
|
-
* - maxConcurrent:TELORA_DEFAULT_VERIFY_MAX_CONCURRENT > config.defaultVerification.maxConcurrent > 1
|
|
9
|
+
* Resolution precedence (env > operator file > repo manifest > typed default),
|
|
10
|
+
* mirroring how resolveTelemetryConfig / resolveLacunaConfig work in the daemon:
|
|
11
|
+
* - command: TELORA_DEFAULT_VERIFY_COMMAND > config.defaultVerification.command > telora.verify.json > '' (disabled)
|
|
12
|
+
* - timeoutMs: TELORA_DEFAULT_VERIFY_TIMEOUT_MS > config.defaultVerification.timeoutMs > telora.verify.json > 30 min
|
|
13
|
+
* - maxConcurrent:TELORA_DEFAULT_VERIFY_MAX_CONCURRENT > config.defaultVerification.maxConcurrent > telora.verify.json > 1
|
|
14
|
+
*
|
|
15
|
+
* The repo-manifest layer (`telora.verify.json`, see verification-manifest.ts)
|
|
16
|
+
* is what lets a REPO declare its own gate: the two layers above it are both
|
|
17
|
+
* per-workstation and untracked (`.gitignore:72` ignores `.telora/` wholesale;
|
|
18
|
+
* cli/verify-setup.ts:218 writes to ~/.telora/daemon.json), so without it no PR
|
|
19
|
+
* could arm the gate and a fresh clone was ungated by construction.
|
|
20
|
+
*
|
|
21
|
+
* The seam stays OPT-IN: a repo shipping no manifest still resolves to ''
|
|
22
|
+
* (disabled). No default command is ever hard-coded here -- the daemon manages
|
|
23
|
+
* products that have no whole-repo verification command at all.
|
|
14
24
|
*
|
|
15
25
|
* The env knobs are read directly from `process.env` here rather than through
|
|
16
26
|
* daemon-core's env-config Zod index: daemon-core is a registry-installed
|
|
@@ -21,6 +31,7 @@
|
|
|
21
31
|
* @module verification-config
|
|
22
32
|
*/
|
|
23
33
|
import { loadEnvConfig } from '@telora/daemon-core';
|
|
34
|
+
import { readVerifyManifest } from './verification-manifest.js';
|
|
24
35
|
/** Default timeout for the default-on deterministic run: 30 min (full build+test sweep). */
|
|
25
36
|
export const DEFAULT_VERIFY_TIMEOUT_MS = 30 * 60 * 1000;
|
|
26
37
|
/** Default max concurrent daemon-side verification runs. */
|
|
@@ -32,24 +43,51 @@ export const VERIFY_ENV = {
|
|
|
32
43
|
MAX_CONCURRENT: 'TELORA_DEFAULT_VERIFY_MAX_CONCURRENT',
|
|
33
44
|
};
|
|
34
45
|
/**
|
|
35
|
-
* Resolve the default-on verification config from
|
|
46
|
+
* Resolve the default-on verification config from
|
|
47
|
+
* env > operator file > repo manifest > typed default.
|
|
48
|
+
*
|
|
49
|
+
* Pure w.r.t. its inputs: env is injectable, and the repo-manifest read is
|
|
50
|
+
* injected via `readManifest` rather than touching fs inside this resolver, so
|
|
51
|
+
* the whole precedence chain is assertable without a real repo.
|
|
36
52
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
53
|
+
* Env values are parsed by daemon-core's loadEnvConfig, so an invalid numeric
|
|
54
|
+
* value fails loudly at daemon startup (naming the var) instead of silently
|
|
55
|
+
* degrading mid-tick. A malformed repo manifest fails the same way (naming the
|
|
56
|
+
* file) -- see verification-manifest.ts for why that is never degraded to
|
|
57
|
+
* "disabled".
|
|
58
|
+
*
|
|
59
|
+
* The manifest is read whenever a repoPath is present, regardless of which
|
|
60
|
+
* layer ultimately wins, so a broken repo declaration surfaces even on a
|
|
61
|
+
* workstation whose env/operator file happens to override it.
|
|
62
|
+
*
|
|
63
|
+
* One asymmetry worth naming: an operator's explicit `declined: true` marker
|
|
64
|
+
* SUPPRESSES the repo-manifest command. The marker is a recorded operator
|
|
65
|
+
* decision to gate on AI review only, and the operator file outranks the repo
|
|
66
|
+
* manifest -- so a repo declaring a command cannot silently overturn it. Env
|
|
67
|
+
* still wins over both (an explicit env command beats a stale decline marker,
|
|
68
|
+
* unchanged).
|
|
40
69
|
*/
|
|
41
|
-
export function resolveDefaultVerification(config, env = process.env) {
|
|
70
|
+
export function resolveDefaultVerification(config, env = process.env, readManifest = readVerifyManifest) {
|
|
42
71
|
const file = config.defaultVerification;
|
|
43
72
|
const envCfg = loadEnvConfig(env);
|
|
73
|
+
const manifest = readManifest(config.repoPath);
|
|
44
74
|
const envCommand = envCfg.TELORA_DEFAULT_VERIFY_COMMAND;
|
|
45
|
-
const
|
|
46
|
-
?
|
|
47
|
-
:
|
|
75
|
+
const fileCommand = typeof file?.command === 'string' && file.command.trim() !== ''
|
|
76
|
+
? file.command
|
|
77
|
+
: undefined;
|
|
78
|
+
// An explicit operator decline outranks the repo manifest (see docstring).
|
|
79
|
+
const manifestCommand = file?.declined === true ? undefined : manifest?.command;
|
|
80
|
+
const command = (envCommand !== undefined && envCommand.trim() !== '' ? envCommand : undefined)
|
|
81
|
+
?? fileCommand
|
|
82
|
+
?? manifestCommand
|
|
83
|
+
?? '';
|
|
48
84
|
const timeoutMs = envCfg.TELORA_DEFAULT_VERIFY_TIMEOUT_MS
|
|
49
85
|
?? (typeof file?.timeoutMs === 'number' && file.timeoutMs > 0 ? file.timeoutMs : undefined)
|
|
86
|
+
?? manifest?.timeoutMs
|
|
50
87
|
?? DEFAULT_VERIFY_TIMEOUT_MS;
|
|
51
88
|
const maxConcurrent = envCfg.TELORA_DEFAULT_VERIFY_MAX_CONCURRENT
|
|
52
89
|
?? (typeof file?.maxConcurrent === 'number' && file.maxConcurrent > 0 ? file.maxConcurrent : undefined)
|
|
90
|
+
?? manifest?.maxConcurrent
|
|
53
91
|
?? DEFAULT_VERIFY_MAX_CONCURRENT;
|
|
54
92
|
return {
|
|
55
93
|
command,
|
|
@@ -65,14 +103,16 @@ export function resolveDefaultVerification(config, env = process.env) {
|
|
|
65
103
|
* escalation/side-effect path -- posture is declarative state, surfaced on
|
|
66
104
|
* ambient read surfaces, never a filed escalation. Callers pass a product-scoped
|
|
67
105
|
* config (from `configForProduct`) so `config.defaultVerification` is already the
|
|
68
|
-
* selected per-product-or-global block
|
|
106
|
+
* selected per-product-or-global block and `repoPath` points at that product's
|
|
107
|
+
* repo -- which is what lets a repo-manifest-only command read `configured`.
|
|
69
108
|
*
|
|
70
109
|
* An explicitly resolved command wins over the decline marker: an operator who
|
|
71
110
|
* sets a command (via env or file) has configured verification regardless of a
|
|
72
|
-
* stale `declined` flag.
|
|
111
|
+
* stale `declined` flag. The marker still suppresses the repo manifest (the
|
|
112
|
+
* operator file outranks it), so `declined: true` keeps reading `declined`.
|
|
73
113
|
*/
|
|
74
|
-
export function deriveVerificationPosture(config, env = process.env) {
|
|
75
|
-
const resolved = resolveDefaultVerification(config, env);
|
|
114
|
+
export function deriveVerificationPosture(config, env = process.env, readManifest = readVerifyManifest) {
|
|
115
|
+
const resolved = resolveDefaultVerification(config, env, readManifest);
|
|
76
116
|
if (resolved.enabled)
|
|
77
117
|
return 'configured';
|
|
78
118
|
if (config.defaultVerification?.declined === true)
|
|
@@ -86,13 +126,18 @@ export function deriveVerificationPosture(config, env = process.env) {
|
|
|
86
126
|
* formatVerificationPostureLines, used to PUBLISH posture (e.g. in the daemon
|
|
87
127
|
* heartbeat metadata) for the web app to read. Never files an escalation.
|
|
88
128
|
*/
|
|
89
|
-
export function buildProductPostureMap(products, globalBlock, env = process.env) {
|
|
129
|
+
export function buildProductPostureMap(products, globalBlock, env = process.env, readManifest = readVerifyManifest) {
|
|
90
130
|
const map = {};
|
|
91
131
|
for (const p of products) {
|
|
92
|
-
|
|
93
|
-
|
|
132
|
+
// repoPath is carried through so each product's own committed manifest is
|
|
133
|
+
// the layer below its operator block (mirrors configForProduct).
|
|
134
|
+
const scoped = {
|
|
135
|
+
defaultVerification: p.defaultVerification ?? globalBlock,
|
|
136
|
+
...(p.repoPath !== undefined ? { repoPath: p.repoPath } : {}),
|
|
137
|
+
};
|
|
138
|
+
const resolved = resolveDefaultVerification(scoped, env, readManifest);
|
|
94
139
|
map[p.id] = {
|
|
95
|
-
posture: deriveVerificationPosture(scoped, env),
|
|
140
|
+
posture: deriveVerificationPosture(scoped, env, readManifest),
|
|
96
141
|
command: resolved.command,
|
|
97
142
|
timeoutMs: resolved.timeoutMs,
|
|
98
143
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-config.js","sourceRoot":"","sources":["../src/verification-config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"verification-config.js","sourceRoot":"","sources":["../src/verification-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|
|
@@ -32,7 +32,7 @@ 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';
|
|
@@ -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,EAEtB,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAA2C,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGrG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"verification-engine.d.ts","sourceRoot":"","sources":["../src/verification-engine.ts"],"names":[],"mappings":"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"}
|