@telora/daemon 0.22.91 → 0.22.104
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 +6 -3
- package/dist/cli/verify-setup-config.d.ts +4 -3
- package/dist/cli/verify-setup-config.d.ts.map +1 -1
- package/dist/cli/verify-setup-config.js.map +1 -1
- package/dist/completion/event-phases.js +5 -5
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/event.d.ts +7 -0
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +2 -1
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/delivery/external-hold.js +1 -1
- package/dist/delivery/external-hold.js.map +1 -1
- package/dist/delivery/operator-hold.d.ts +14 -0
- package/dist/delivery/operator-hold.d.ts.map +1 -1
- package/dist/delivery/operator-hold.js +31 -1
- package/dist/delivery/operator-hold.js.map +1 -1
- package/dist/directive/directive-dispatch.js +2 -2
- package/dist/directive/directive-dispatch.js.map +1 -1
- package/dist/directive/directive-executor.d.ts.map +1 -1
- package/dist/directive/directive-executor.js +2 -1
- package/dist/directive/directive-executor.js.map +1 -1
- package/dist/directive/directive-verify-hold-gate.d.ts +32 -8
- package/dist/directive/directive-verify-hold-gate.d.ts.map +1 -1
- package/dist/directive/directive-verify-hold-gate.js +20 -21
- package/dist/directive/directive-verify-hold-gate.js.map +1 -1
- package/dist/focus/focus-engine.d.ts.map +1 -1
- package/dist/focus/focus-engine.js +6 -9
- package/dist/focus/focus-engine.js.map +1 -1
- package/dist/focus/listener-spawn.d.ts +31 -0
- package/dist/focus/listener-spawn.d.ts.map +1 -1
- package/dist/focus/listener-spawn.js +44 -22
- package/dist/focus/listener-spawn.js.map +1 -1
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +4 -0
- package/dist/focus/listener.js.map +1 -1
- package/dist/focus/team-actionable-work.d.ts +76 -20
- package/dist/focus/team-actionable-work.d.ts.map +1 -1
- package/dist/focus/team-actionable-work.js +85 -20
- package/dist/focus/team-actionable-work.js.map +1 -1
- package/dist/git/exec.d.ts.map +1 -1
- package/dist/git/exec.js +2 -1
- package/dist/git/exec.js.map +1 -1
- package/dist/nexus/incoming.js +1 -1
- package/dist/nexus/incoming.js.map +1 -1
- package/dist/nexus/pending-returns.d.ts +124 -0
- package/dist/nexus/pending-returns.d.ts.map +1 -0
- package/dist/nexus/pending-returns.js +194 -0
- package/dist/nexus/pending-returns.js.map +1 -0
- package/dist/nexus/return-routing.d.ts +89 -0
- package/dist/nexus/return-routing.d.ts.map +1 -0
- package/dist/nexus/return-routing.js +148 -0
- package/dist/nexus/return-routing.js.map +1 -0
- package/dist/nexus/return.d.ts +66 -89
- package/dist/nexus/return.d.ts.map +1 -1
- package/dist/nexus/return.js +116 -279
- package/dist/nexus/return.js.map +1 -1
- package/dist/prompt/focus-prompt-builder.d.ts.map +1 -1
- package/dist/prompt/focus-prompt-builder.js +1 -0
- package/dist/prompt/focus-prompt-builder.js.map +1 -1
- package/dist/queries/delivery-gate-state.d.ts +31 -0
- package/dist/queries/delivery-gate-state.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state.js +31 -4
- package/dist/queries/delivery-gate-state.js.map +1 -1
- package/dist/queries/focus-discovery.d.ts +7 -1
- package/dist/queries/focus-discovery.d.ts.map +1 -1
- package/dist/queries/focus-discovery.js +9 -3
- package/dist/queries/focus-discovery.js.map +1 -1
- package/dist/queries/requests.d.ts +51 -3
- package/dist/queries/requests.d.ts.map +1 -1
- package/dist/queries/requests.js +63 -10
- package/dist/queries/requests.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/queries/verification.d.ts +15 -0
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js +2 -0
- package/dist/queries/verification.js.map +1 -1
- package/dist/shell/config.d.ts.map +1 -1
- package/dist/shell/config.js +10 -9
- package/dist/shell/config.js.map +1 -1
- package/dist/shell/unified-shell-status.d.ts +6 -0
- package/dist/shell/unified-shell-status.d.ts.map +1 -1
- package/dist/shell/unified-shell-status.js +9 -2
- package/dist/shell/unified-shell-status.js.map +1 -1
- package/dist/spawn/prompt-assembly.js +1 -1
- package/dist/spawn/prompt-assembly.js.map +1 -1
- package/dist/spawn/respawn-cycle-escalation.d.ts.map +1 -1
- package/dist/spawn/respawn-cycle-escalation.js +11 -3
- package/dist/spawn/respawn-cycle-escalation.js.map +1 -1
- package/dist/spawn/review-hold-park.d.ts +31 -0
- package/dist/spawn/review-hold-park.d.ts.map +1 -0
- package/dist/spawn/review-hold-park.js +120 -0
- package/dist/spawn/review-hold-park.js.map +1 -0
- package/dist/spawn/spawn-cooldown.d.ts +27 -4
- package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
- package/dist/spawn/spawn-cooldown.js +88 -3
- package/dist/spawn/spawn-cooldown.js.map +1 -1
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +6 -0
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/types/config.d.ts +9 -6
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/update/auto-update-idle.d.ts.map +1 -1
- package/dist/update/auto-update-idle.js +2 -1
- package/dist/update/auto-update-idle.js.map +1 -1
- package/dist/verify/failure-signature.d.ts.map +1 -1
- package/dist/verify/failure-signature.js +1 -0
- package/dist/verify/failure-signature.js.map +1 -1
- package/dist/verify/verification-baseline.d.ts +63 -16
- package/dist/verify/verification-baseline.d.ts.map +1 -1
- package/dist/verify/verification-baseline.js +74 -34
- package/dist/verify/verification-baseline.js.map +1 -1
- package/dist/verify/verification-checkout.d.ts +71 -0
- package/dist/verify/verification-checkout.d.ts.map +1 -0
- package/dist/verify/verification-checkout.js +353 -0
- package/dist/verify/verification-checkout.js.map +1 -0
- package/dist/verify/verification-config.d.ts +76 -0
- package/dist/verify/verification-config.d.ts.map +1 -1
- package/dist/verify/verification-config.js +100 -12
- package/dist/verify/verification-config.js.map +1 -1
- package/dist/verify/verification-default-on.d.ts +102 -11
- package/dist/verify/verification-default-on.d.ts.map +1 -1
- package/dist/verify/verification-default-on.js +252 -16
- package/dist/verify/verification-default-on.js.map +1 -1
- package/dist/verify/verification-deps-default.js +1 -1
- package/dist/verify/verification-deps-default.js.map +1 -1
- package/dist/verify/verification-deps.d.ts +28 -3
- package/dist/verify/verification-deps.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.d.ts +63 -1
- package/dist/verify/verification-deterministic.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.js +38 -29
- package/dist/verify/verification-deterministic.js.map +1 -1
- package/dist/verify/verification-engine.d.ts.map +1 -1
- package/dist/verify/verification-engine.js +20 -20
- package/dist/verify/verification-engine.js.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.js +6 -1
- package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
- package/dist/verify/verification-feedback.d.ts +3 -0
- package/dist/verify/verification-feedback.d.ts.map +1 -1
- package/dist/verify/verification-feedback.js +5 -2
- package/dist/verify/verification-feedback.js.map +1 -1
- package/dist/verify/verification-manifest.d.ts.map +1 -1
- package/dist/verify/verification-manifest.js +1 -0
- package/dist/verify/verification-manifest.js.map +1 -1
- package/dist/verify/verification-timeout-fault.d.ts +147 -0
- package/dist/verify/verification-timeout-fault.d.ts.map +1 -0
- package/dist/verify/verification-timeout-fault.js +211 -0
- package/dist/verify/verification-timeout-fault.js.map +1 -0
- package/dist/verify/verify-gate-stall.d.ts +5 -1
- package/dist/verify/verify-gate-stall.d.ts.map +1 -1
- package/dist/verify/verify-gate-stall.js +10 -1
- package/dist/verify/verify-gate-stall.js.map +1 -1
- package/dist/worktree/verify-interlock.d.ts +9 -1
- package/dist/worktree/verify-interlock.d.ts.map +1 -1
- package/dist/worktree/verify-interlock.js +40 -3
- package/dist/worktree/verify-interlock.js.map +1 -1
- package/package.json +2 -2
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
// packages/daemon/src/verify/verification-default-on.test.ts,
|
|
5
5
|
// packages/daemon/src/verify/verification-manifest.test.ts,
|
|
6
6
|
// packages/daemon/src/verify/verification-posture.test.ts,
|
|
7
|
+
// packages/daemon/src/verify/verification-run-config-source.test.ts,
|
|
7
8
|
// packages/daemon/src/verify/verification-tick-product-scoping.test.ts
|
|
8
9
|
// PINNED-BY-END
|
|
9
10
|
import { loadEnvConfig } from '@telora/daemon-core';
|
|
10
|
-
import { readVerifyManifest } from './verification-manifest.js';
|
|
11
|
+
import { readVerifyManifest, resolveVerifyManifestPath, VERIFY_MANIFEST_FILENAME, } from './verification-manifest.js';
|
|
11
12
|
/** Default timeout for the default-on deterministic run: 30 min (full build+test sweep). */
|
|
12
13
|
export const DEFAULT_VERIFY_TIMEOUT_MS = 30 * 60 * 1000;
|
|
13
14
|
/** Default max concurrent daemon-side verification runs. */
|
|
@@ -18,6 +19,37 @@ export const VERIFY_ENV = {
|
|
|
18
19
|
TIMEOUT_MS: 'TELORA_DEFAULT_VERIFY_TIMEOUT_MS',
|
|
19
20
|
MAX_CONCURRENT: 'TELORA_DEFAULT_VERIFY_MAX_CONCURRENT',
|
|
20
21
|
};
|
|
22
|
+
/**
|
|
23
|
+
* A source as one human-readable label, the form every surface prints (gate
|
|
24
|
+
* state, escalations, `telora-daemon status`), so the same layer reads the same
|
|
25
|
+
* everywhere. A manifest names its absolute path, which also answers WHICH
|
|
26
|
+
* checkout's manifest applied. The `default` label names the typed timeout
|
|
27
|
+
* default: a defaulted command is '' (verification disabled), never printed.
|
|
28
|
+
*/
|
|
29
|
+
export function formatVerifyConfigSource(src) {
|
|
30
|
+
switch (src.layer) {
|
|
31
|
+
case 'env':
|
|
32
|
+
return `env ${src.envVar}`;
|
|
33
|
+
case 'daemon.json':
|
|
34
|
+
return 'daemon.json defaultVerification';
|
|
35
|
+
case 'manifest':
|
|
36
|
+
return src.path;
|
|
37
|
+
case 'manifest_fallback':
|
|
38
|
+
return `${src.path} (fallback: the verified commit ships no telora.verify.json)`;
|
|
39
|
+
case 'default':
|
|
40
|
+
return `default (${DEFAULT_VERIFY_TIMEOUT_MS}ms)`;
|
|
41
|
+
case 'delivery':
|
|
42
|
+
return 'delivery verification config';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** The first layer that supplies a value, else the fallback -- precedence and provenance in one read. */
|
|
46
|
+
function pickLayer(layers, fallback) {
|
|
47
|
+
for (const layer of layers) {
|
|
48
|
+
if (layer.value !== undefined)
|
|
49
|
+
return { value: layer.value, source: layer.source };
|
|
50
|
+
}
|
|
51
|
+
return fallback;
|
|
52
|
+
}
|
|
21
53
|
/**
|
|
22
54
|
* Resolve the default-on verification config from
|
|
23
55
|
* env > operator file > repo manifest > typed default.
|
|
@@ -53,23 +85,78 @@ export function resolveDefaultVerification(config, env = process.env, readManife
|
|
|
53
85
|
: undefined;
|
|
54
86
|
// An explicit operator decline outranks the repo manifest (see docstring).
|
|
55
87
|
const manifestCommand = file?.declined === true ? undefined : manifest?.command;
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
88
|
+
const daemonJson = { layer: 'daemon.json' };
|
|
89
|
+
const manifestSource = {
|
|
90
|
+
layer: 'manifest',
|
|
91
|
+
path: config.repoPath !== undefined ? resolveVerifyManifestPath(config.repoPath) : VERIFY_MANIFEST_FILENAME,
|
|
92
|
+
};
|
|
93
|
+
const command = pickLayer([
|
|
94
|
+
{ value: envCommand !== undefined && envCommand.trim() !== '' ? envCommand : undefined, source: { layer: 'env', envVar: VERIFY_ENV.COMMAND } },
|
|
95
|
+
{ value: fileCommand, source: daemonJson },
|
|
96
|
+
{ value: manifestCommand, source: manifestSource },
|
|
97
|
+
], { value: '', source: { layer: 'default' } });
|
|
98
|
+
const timeoutMs = pickLayer([
|
|
99
|
+
{ value: envCfg.TELORA_DEFAULT_VERIFY_TIMEOUT_MS, source: { layer: 'env', envVar: VERIFY_ENV.TIMEOUT_MS } },
|
|
100
|
+
{ value: typeof file?.timeoutMs === 'number' && file.timeoutMs > 0 ? file.timeoutMs : undefined, source: daemonJson },
|
|
101
|
+
{ value: manifest?.timeoutMs, source: manifestSource },
|
|
102
|
+
], { value: DEFAULT_VERIFY_TIMEOUT_MS, source: { layer: 'default' } });
|
|
64
103
|
const maxConcurrent = envCfg.TELORA_DEFAULT_VERIFY_MAX_CONCURRENT
|
|
65
104
|
?? (typeof file?.maxConcurrent === 'number' && file.maxConcurrent > 0 ? file.maxConcurrent : undefined)
|
|
66
105
|
?? manifest?.maxConcurrent
|
|
67
106
|
?? DEFAULT_VERIFY_MAX_CONCURRENT;
|
|
68
107
|
return {
|
|
69
|
-
command,
|
|
70
|
-
timeoutMs,
|
|
108
|
+
command: command.value,
|
|
109
|
+
timeoutMs: timeoutMs.value,
|
|
71
110
|
maxConcurrent,
|
|
72
|
-
enabled: command.trim().length > 0,
|
|
111
|
+
enabled: command.value.trim().length > 0,
|
|
112
|
+
sources: { command: command.source, timeoutMs: timeoutMs.source },
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Resolve the command + timeout a deterministic run APPLIES, from the code it
|
|
117
|
+
* runs in: env > operator block > the manifest at `runPath` > the manifest at
|
|
118
|
+
* `source.repoPath` (recorded fallback) > typed default.
|
|
119
|
+
*
|
|
120
|
+
* The fallback is taken ONLY when the code at `runPath` ships no manifest, and
|
|
121
|
+
* it is recorded on the result (`manifestFallback`; `manifestPath` names the
|
|
122
|
+
* repoPath manifest, `verifiedManifestPath` where the verified code was read), so
|
|
123
|
+
* a value from another checkout is never applied silently. A MALFORMED manifest
|
|
124
|
+
* at `runPath` throws (readVerifyManifest names the file) and never falls back:
|
|
125
|
+
* the branch declared something unreadable, and substituting the operator
|
|
126
|
+
* checkout's value is exactly the silent swap this resolution removes.
|
|
127
|
+
*/
|
|
128
|
+
export function resolveAppliedVerificationConfig(source, runPath, env = process.env, readManifest = readVerifyManifest) {
|
|
129
|
+
const verifiedManifestPath = resolveVerifyManifestPath(runPath);
|
|
130
|
+
const read = { fallback: false };
|
|
131
|
+
const readVerifiedThenFallback = (path) => {
|
|
132
|
+
const own = readManifest(path);
|
|
133
|
+
if (own !== undefined) {
|
|
134
|
+
read.manifestPath = verifiedManifestPath;
|
|
135
|
+
return own;
|
|
136
|
+
}
|
|
137
|
+
if (!source.repoPath || resolveVerifyManifestPath(source.repoPath) === verifiedManifestPath)
|
|
138
|
+
return undefined;
|
|
139
|
+
const fallback = readManifest(source.repoPath);
|
|
140
|
+
if (fallback !== undefined) {
|
|
141
|
+
read.manifestPath = resolveVerifyManifestPath(source.repoPath);
|
|
142
|
+
read.fallback = true;
|
|
143
|
+
}
|
|
144
|
+
return fallback;
|
|
145
|
+
};
|
|
146
|
+
const resolved = resolveDefaultVerification({ defaultVerification: source.defaultVerification, repoPath: runPath }, env, readVerifiedThenFallback);
|
|
147
|
+
// The resolver named the manifest it was ASKED for (the verified checkout's);
|
|
148
|
+
// when the fallback answered instead, the label must name the repoPath manifest
|
|
149
|
+
// that actually supplied the timeout.
|
|
150
|
+
const timeoutSource = resolved.sources.timeoutMs.layer === 'manifest' && read.fallback && read.manifestPath !== undefined
|
|
151
|
+
? { layer: 'manifest_fallback', path: read.manifestPath, verifiedPath: verifiedManifestPath }
|
|
152
|
+
: resolved.sources.timeoutMs;
|
|
153
|
+
return {
|
|
154
|
+
command: resolved.command,
|
|
155
|
+
timeoutMs: resolved.timeoutMs,
|
|
156
|
+
timeoutSource: formatVerifyConfigSource(timeoutSource),
|
|
157
|
+
verifiedManifestPath,
|
|
158
|
+
...(read.manifestPath !== undefined ? { manifestPath: read.manifestPath } : {}),
|
|
159
|
+
...(read.fallback ? { manifestFallback: true } : {}),
|
|
73
160
|
};
|
|
74
161
|
}
|
|
75
162
|
/**
|
|
@@ -116,6 +203,7 @@ export function buildProductPostureMap(products, globalBlock, env = process.env,
|
|
|
116
203
|
posture: deriveVerificationPosture(scoped, env, readManifest),
|
|
117
204
|
command: resolved.command,
|
|
118
205
|
timeoutMs: resolved.timeoutMs,
|
|
206
|
+
timeoutSource: formatVerifyConfigSource(resolved.sources.timeoutMs),
|
|
119
207
|
};
|
|
120
208
|
}
|
|
121
209
|
return map;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-config.js","sourceRoot":"","sources":["../../src/verify/verification-config.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+EAA+E;AAC/E,wEAAwE;AACxE,gEAAgE;AAChE,8DAA8D;AAC9D,6DAA6D;AAC7D,yEAAyE;AACzE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"verification-config.js","sourceRoot":"","sources":["../../src/verify/verification-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ import { type ProductEntry } from '@telora/daemon-core';
|
|
|
18
18
|
import type { DaemonConfig } from '../types/index.js';
|
|
19
19
|
import type { PendingVerification } from '../queries/verification.js';
|
|
20
20
|
import { type ResolvedDefaultVerification } from './verification-config.js';
|
|
21
|
+
import { type VerifyManifest, type VerifyManifestReader } from './verification-manifest.js';
|
|
21
22
|
import type { getActiveFocuses } from '../queries/focus-discovery.js';
|
|
22
23
|
import type { getFocusDeliveries } from '../queries/focuses.js';
|
|
23
24
|
/**
|
|
@@ -28,6 +29,19 @@ import type { getFocusDeliveries } from '../queries/focuses.js';
|
|
|
28
29
|
export interface DefaultOnScanDeps {
|
|
29
30
|
getActiveFocuses: typeof getActiveFocuses;
|
|
30
31
|
getFocusDeliveries: typeof getFocusDeliveries;
|
|
32
|
+
/**
|
|
33
|
+
* The focus worktree's current HEAD sha, read to keep a delivery whose verify
|
|
34
|
+
* FAILED from re-running on the same unchanged commit. A null read keeps a
|
|
35
|
+
* recorded failure suppressed: only a KNOWN different commit re-arms it.
|
|
36
|
+
*/
|
|
37
|
+
resolveFocusHeadSha?: (focusId: string) => string | null;
|
|
38
|
+
/**
|
|
39
|
+
* The telora.verify.json the focus's judged commit (its worktree HEAD) ships,
|
|
40
|
+
* read when the product repoPath resolves no command; null when the focus has
|
|
41
|
+
* no worktree, `unreadable` when git could not answer. Defaults to a git read
|
|
42
|
+
* of that commit.
|
|
43
|
+
*/
|
|
44
|
+
readJudgedCommitManifest?: (focusId: string) => JudgedCommitRead | null;
|
|
31
45
|
}
|
|
32
46
|
/**
|
|
33
47
|
* Counting semaphore capping concurrent daemon-side verification runs.
|
|
@@ -74,11 +88,17 @@ export interface ProductVerificationScope {
|
|
|
74
88
|
productConfig: DaemonConfig;
|
|
75
89
|
/**
|
|
76
90
|
* The resolved default-on config, or `undefined` when resolution FAILED (a
|
|
77
|
-
* malformed repo manifest). Undefined means "
|
|
78
|
-
*
|
|
79
|
-
*
|
|
91
|
+
* malformed repo manifest). Undefined means "the repoPath gate is off this
|
|
92
|
+
* tick" -- never "verification is disabled here", which is what a silent
|
|
93
|
+
* degrade to '' would have said.
|
|
80
94
|
*/
|
|
81
95
|
resolved: ResolvedDefaultVerification | undefined;
|
|
96
|
+
/**
|
|
97
|
+
* Present only beside an undefined `resolved`: what the default-on scan runs
|
|
98
|
+
* with instead -- no command, so each delivery is armed by its judged commit
|
|
99
|
+
* alone. Absent when even that resolution failed.
|
|
100
|
+
*/
|
|
101
|
+
judgedCommitOnly?: ResolvedDefaultVerification;
|
|
82
102
|
}
|
|
83
103
|
/**
|
|
84
104
|
* Resolve the default-on verification config for every product, from each
|
|
@@ -100,12 +120,21 @@ export interface ProductVerificationScope {
|
|
|
100
120
|
* product including healthy ones, so it is contained HERE: logged at ERROR
|
|
101
121
|
* naming the product and the manifest path (every tick -- a persistent,
|
|
102
122
|
* operator-visible state, never a debug line), and that product's `resolved`
|
|
103
|
-
* comes back `undefined
|
|
104
|
-
*
|
|
123
|
+
* comes back `undefined`: it contributes no cap while other products keep
|
|
124
|
+
* gating. The product's EXPLICIT-method deliveries still verify: they carry
|
|
105
125
|
* their own command on the delivery row, so a repo-root manifest typo has no
|
|
106
126
|
* bearing on them and must not disarm them.
|
|
127
|
+
*
|
|
128
|
+
* Nor does the typo disarm a branch that ships a working gate. repoPath is the
|
|
129
|
+
* operator's checkout, which may lag the code under verification, so the product
|
|
130
|
+
* is resolved again with that manifest set aside (`judgedCommitOnly`) and its
|
|
131
|
+
* scan still arms each delivery from the manifest its judged commit ships. That
|
|
132
|
+
* resolution carries no command even when env or daemon.json declare one: a
|
|
133
|
+
* delivery whose commit ships no manifest would fall back at dispatch to the
|
|
134
|
+
* broken repoPath file and fail on it, so until the file is fixed only
|
|
135
|
+
* branch-declared gates arm.
|
|
107
136
|
*/
|
|
108
|
-
export declare function resolveProductVerificationScopes(config: DaemonConfig, resolve: (c: DaemonConfig) => ResolvedDefaultVerification): ProductVerificationScope[];
|
|
137
|
+
export declare function resolveProductVerificationScopes(config: DaemonConfig, resolve: (c: DaemonConfig, readManifest?: VerifyManifestReader) => ResolvedDefaultVerification): ProductVerificationScope[];
|
|
109
138
|
/**
|
|
110
139
|
* Resolve the ONE daemon-wide concurrency cap for the shared semaphore.
|
|
111
140
|
*
|
|
@@ -135,7 +164,7 @@ export declare function resolveProductVerificationScopes(config: DaemonConfig, r
|
|
|
135
164
|
* conservative floor, not a stale limit from a previous tick.
|
|
136
165
|
*/
|
|
137
166
|
export declare function resolveDaemonWideVerifyCap(scopes: readonly ProductVerificationScope[]): number;
|
|
138
|
-
/** Test-only: reset the default-on re-run
|
|
167
|
+
/** Test-only: reset the default-on re-run guards (status- and HEAD-keyed). */
|
|
139
168
|
export declare function __resetDefaultOnGuardForTests(): void;
|
|
140
169
|
/** Test-only: snapshot of the default-on re-run guard. */
|
|
141
170
|
export declare function __getDefaultOnGuardForTests(): ReadonlySet<string>;
|
|
@@ -143,18 +172,80 @@ export declare function __getDefaultOnGuardForTests(): ReadonlySet<string>;
|
|
|
143
172
|
export declare function markDefaultOnRan(deliveryId: string): void;
|
|
144
173
|
/** Test-only alias for markDefaultOnRan. */
|
|
145
174
|
export declare function __markDefaultOnRanForTests(deliveryId: string): void;
|
|
175
|
+
/** The slice of a verification result {@link noteDefaultOnResult} reads. */
|
|
176
|
+
export interface DefaultOnResultFacts {
|
|
177
|
+
outcome: string;
|
|
178
|
+
exitCode?: number | null;
|
|
179
|
+
timedOut?: boolean;
|
|
180
|
+
verifiedSha?: string;
|
|
181
|
+
checkoutUnavailable?: boolean;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Dispatch-result bookkeeping for a default-on run:
|
|
185
|
+
* - no checkout could be made -> un-mark, so the next tick retries (the run
|
|
186
|
+
* never happened; no verdict exists to guard);
|
|
187
|
+
* - the gate command FAILED at a known sha (non-zero exit, not a timeout, final
|
|
188
|
+
* outcome failed) -> record the sha so that commit is not re-verified;
|
|
189
|
+
* - a pass -> forget any recorded failure.
|
|
190
|
+
*/
|
|
191
|
+
export declare function noteDefaultOnResult(deliveryId: string, result: DefaultOnResultFacts): void;
|
|
192
|
+
/**
|
|
193
|
+
* What the commit a delivery is judged on declares in telora.verify.json, read
|
|
194
|
+
* from git AT that sha -- never the worktree's files, which may hold edits the
|
|
195
|
+
* verify never sees. No `manifest` and no `malformed` means the commit ships none.
|
|
196
|
+
*/
|
|
197
|
+
export interface JudgedCommitManifest {
|
|
198
|
+
sha: string;
|
|
199
|
+
/** Where the manifest sits in the focus worktree (the path a source label names). */
|
|
200
|
+
manifestPath: string;
|
|
201
|
+
manifest?: VerifyManifest;
|
|
202
|
+
/** The reader's error when the committed file exists but cannot be used. */
|
|
203
|
+
malformed?: string;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Git could not say what the judged commit ships (a failed rev-parse, ls-tree or
|
|
207
|
+
* show). That is neither "ships none" nor malformed -- it is no answer -- so it
|
|
208
|
+
* is never remembered: the next tick asks again.
|
|
209
|
+
*/
|
|
210
|
+
export interface JudgedCommitUnreadable {
|
|
211
|
+
unreadable: string;
|
|
212
|
+
}
|
|
213
|
+
export type JudgedCommitRead = JudgedCommitManifest | JudgedCommitUnreadable;
|
|
214
|
+
type GitRun = (args: string[], cwd: string) => {
|
|
215
|
+
success: boolean;
|
|
216
|
+
output: string;
|
|
217
|
+
error?: string;
|
|
218
|
+
};
|
|
219
|
+
/**
|
|
220
|
+
* Build the judged-commit manifest reader over a focus -> worktree lookup. A file
|
|
221
|
+
* is immutable at a sha, so each worktree's last read is reused while its HEAD
|
|
222
|
+
* is unchanged rather than re-running git every tick. Only reads git answered
|
|
223
|
+
* are kept; an unreadable one is retried on the next call.
|
|
224
|
+
*/
|
|
225
|
+
export declare function buildJudgedCommitManifestReader(resolveWorktreePath?: (focusId: string) => string | null, runGit?: GitRun): (focusId: string) => JudgedCommitRead | null;
|
|
146
226
|
/**
|
|
147
227
|
* Discover deliveries that should receive a DEFAULT-ON deterministic run: in
|
|
148
228
|
* `verify` status, anchored to an injection, with no explicit verification
|
|
149
229
|
* method (so not already returned by getPendingVerifications), not in a
|
|
150
|
-
* read-only audit focus (those are discovery-only and never run a suite),
|
|
151
|
-
*
|
|
230
|
+
* read-only audit focus (those are discovery-only and never run a suite), not
|
|
231
|
+
* already run this verify-entry (steady-state guard), and not failed on the
|
|
232
|
+
* focus's unchanged HEAD (HEAD-keyed guard).
|
|
152
233
|
*
|
|
153
234
|
* Synthesizes a `deterministic` PendingVerification carrying the resolved
|
|
154
|
-
* config-default command + timeout
|
|
155
|
-
*
|
|
235
|
+
* config-default command + timeout and a `defaultOnSource` marker. Those values
|
|
236
|
+
* are PROVISIONAL -- resolved against the product repoPath, which may lag the
|
|
237
|
+
* branch -- and a run on a detached checkout re-resolves both from the verified
|
|
238
|
+
* code (verify/verification-checkout.ts).
|
|
239
|
+
*
|
|
240
|
+
* Arming does not wait on repoPath either. When no command resolves there, each
|
|
241
|
+
* delivery is armed from the telora.verify.json its judged commit ships
|
|
242
|
+
* (armFromJudgedCommit), so a branch that introduces the gate is verified on its
|
|
243
|
+
* next run. An operator's `declined` marker is the exception: it suppresses the
|
|
244
|
+
* repo manifest, and no branch overturns it. With no command anywhere the
|
|
245
|
+
* feature stays inert.
|
|
156
246
|
*
|
|
157
247
|
* `config` must be product-scoped (config.productId identifies the product).
|
|
158
248
|
*/
|
|
159
249
|
export declare function collectDefaultOnVerifications(config: DaemonConfig, resolved: ResolvedDefaultVerification, explicitDeliveryIds: ReadonlySet<string>, deps: DefaultOnScanDeps): Promise<PendingVerification[]>;
|
|
250
|
+
export {};
|
|
160
251
|
//# sourceMappingURL=verification-default-on.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-default-on.d.ts","sourceRoot":"","sources":["../../src/verify/verification-default-on.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verification-default-on.d.ts","sourceRoot":"","sources":["../../src/verify/verification-default-on.ts"],"names":[],"mappings":"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"}
|