@telora/daemon 0.22.87 → 0.22.97

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/build-info.json +6 -3
  2. package/dist/backends/index.d.ts +1 -1
  3. package/dist/backends/index.d.ts.map +1 -1
  4. package/dist/backends/index.js +1 -1
  5. package/dist/backends/index.js.map +1 -1
  6. package/dist/backends/resolve.d.ts +37 -8
  7. package/dist/backends/resolve.d.ts.map +1 -1
  8. package/dist/backends/resolve.js +62 -28
  9. package/dist/backends/resolve.js.map +1 -1
  10. package/dist/cli/connect/config-write.d.ts +7 -4
  11. package/dist/cli/connect/config-write.d.ts.map +1 -1
  12. package/dist/cli/connect/config-write.js +13 -7
  13. package/dist/cli/connect/config-write.js.map +1 -1
  14. package/dist/cli/connect.d.ts.map +1 -1
  15. package/dist/cli/connect.js +11 -1
  16. package/dist/cli/connect.js.map +1 -1
  17. package/dist/cli/update-commands.d.ts.map +1 -1
  18. package/dist/cli/update-commands.js +2 -1
  19. package/dist/cli/update-commands.js.map +1 -1
  20. package/dist/completion/event-phases.js +5 -5
  21. package/dist/completion/event-phases.js.map +1 -1
  22. package/dist/completion/event.d.ts +7 -0
  23. package/dist/completion/event.d.ts.map +1 -1
  24. package/dist/completion/event.js.map +1 -1
  25. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  26. package/dist/completion/review-exit-phase.js +2 -1
  27. package/dist/completion/review-exit-phase.js.map +1 -1
  28. package/dist/delivery/external-hold.js +1 -1
  29. package/dist/delivery/external-hold.js.map +1 -1
  30. package/dist/delivery/operator-hold.d.ts +14 -0
  31. package/dist/delivery/operator-hold.d.ts.map +1 -1
  32. package/dist/delivery/operator-hold.js +31 -1
  33. package/dist/delivery/operator-hold.js.map +1 -1
  34. package/dist/directive/directive-dispatch.js +2 -2
  35. package/dist/directive/directive-dispatch.js.map +1 -1
  36. package/dist/directive/directive-executor.d.ts.map +1 -1
  37. package/dist/directive/directive-executor.js +2 -1
  38. package/dist/directive/directive-executor.js.map +1 -1
  39. package/dist/directive/directive-verify-hold-gate.d.ts +32 -8
  40. package/dist/directive/directive-verify-hold-gate.d.ts.map +1 -1
  41. package/dist/directive/directive-verify-hold-gate.js +20 -21
  42. package/dist/directive/directive-verify-hold-gate.js.map +1 -1
  43. package/dist/drift/staleness-sensor.d.ts +6 -0
  44. package/dist/drift/staleness-sensor.d.ts.map +1 -1
  45. package/dist/drift/staleness-sensor.js +24 -20
  46. package/dist/drift/staleness-sensor.js.map +1 -1
  47. package/dist/drift/staleness.d.ts +18 -5
  48. package/dist/drift/staleness.d.ts.map +1 -1
  49. package/dist/drift/staleness.js +28 -15
  50. package/dist/drift/staleness.js.map +1 -1
  51. package/dist/focus/focus-engine.d.ts.map +1 -1
  52. package/dist/focus/focus-engine.js +6 -9
  53. package/dist/focus/focus-engine.js.map +1 -1
  54. package/dist/focus/focus-executor.js +2 -2
  55. package/dist/focus/focus-executor.js.map +1 -1
  56. package/dist/focus/listener-spawn.d.ts +31 -0
  57. package/dist/focus/listener-spawn.d.ts.map +1 -1
  58. package/dist/focus/listener-spawn.js +44 -22
  59. package/dist/focus/listener-spawn.js.map +1 -1
  60. package/dist/focus/listener.d.ts.map +1 -1
  61. package/dist/focus/listener.js +4 -0
  62. package/dist/focus/listener.js.map +1 -1
  63. package/dist/focus/team-actionable-work.d.ts +76 -20
  64. package/dist/focus/team-actionable-work.d.ts.map +1 -1
  65. package/dist/focus/team-actionable-work.js +85 -20
  66. package/dist/focus/team-actionable-work.js.map +1 -1
  67. package/dist/nexus/incoming.js +1 -1
  68. package/dist/nexus/incoming.js.map +1 -1
  69. package/dist/nexus/pending-returns.d.ts +124 -0
  70. package/dist/nexus/pending-returns.d.ts.map +1 -0
  71. package/dist/nexus/pending-returns.js +194 -0
  72. package/dist/nexus/pending-returns.js.map +1 -0
  73. package/dist/nexus/return-routing.d.ts +89 -0
  74. package/dist/nexus/return-routing.d.ts.map +1 -0
  75. package/dist/nexus/return-routing.js +148 -0
  76. package/dist/nexus/return-routing.js.map +1 -0
  77. package/dist/nexus/return.d.ts +66 -89
  78. package/dist/nexus/return.d.ts.map +1 -1
  79. package/dist/nexus/return.js +116 -279
  80. package/dist/nexus/return.js.map +1 -1
  81. package/dist/prompt/focus-prompt-builder.d.ts.map +1 -1
  82. package/dist/prompt/focus-prompt-builder.js +1 -0
  83. package/dist/prompt/focus-prompt-builder.js.map +1 -1
  84. package/dist/queries/delivery-gate-state.d.ts +23 -0
  85. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  86. package/dist/queries/delivery-gate-state.js +31 -4
  87. package/dist/queries/delivery-gate-state.js.map +1 -1
  88. package/dist/queries/focus-discovery.d.ts +7 -1
  89. package/dist/queries/focus-discovery.d.ts.map +1 -1
  90. package/dist/queries/focus-discovery.js +9 -3
  91. package/dist/queries/focus-discovery.js.map +1 -1
  92. package/dist/queries/requests.d.ts +51 -3
  93. package/dist/queries/requests.d.ts.map +1 -1
  94. package/dist/queries/requests.js +63 -10
  95. package/dist/queries/requests.js.map +1 -1
  96. package/dist/queries/shared.js +1 -1
  97. package/dist/queries/verification.d.ts.map +1 -1
  98. package/dist/queries/verification.js +1 -0
  99. package/dist/queries/verification.js.map +1 -1
  100. package/dist/shell/heartbeat-metadata.d.ts +18 -0
  101. package/dist/shell/heartbeat-metadata.d.ts.map +1 -1
  102. package/dist/shell/heartbeat-metadata.js +24 -0
  103. package/dist/shell/heartbeat-metadata.js.map +1 -1
  104. package/dist/shell/heartbeat.d.ts.map +1 -1
  105. package/dist/shell/heartbeat.js +6 -17
  106. package/dist/shell/heartbeat.js.map +1 -1
  107. package/dist/shell/model-resolution.d.ts +9 -4
  108. package/dist/shell/model-resolution.d.ts.map +1 -1
  109. package/dist/shell/model-resolution.js +46 -7
  110. package/dist/shell/model-resolution.js.map +1 -1
  111. package/dist/shell/unified-init.d.ts +24 -0
  112. package/dist/shell/unified-init.d.ts.map +1 -1
  113. package/dist/shell/unified-init.js +22 -17
  114. package/dist/shell/unified-init.js.map +1 -1
  115. package/dist/spawn/model-id-guards.d.ts +50 -0
  116. package/dist/spawn/model-id-guards.d.ts.map +1 -0
  117. package/dist/spawn/model-id-guards.js +110 -0
  118. package/dist/spawn/model-id-guards.js.map +1 -0
  119. package/dist/spawn/model-routing.d.ts +1 -43
  120. package/dist/spawn/model-routing.d.ts.map +1 -1
  121. package/dist/spawn/model-routing.js +3 -94
  122. package/dist/spawn/model-routing.js.map +1 -1
  123. package/dist/spawn/prompt-assembly.js +1 -1
  124. package/dist/spawn/prompt-assembly.js.map +1 -1
  125. package/dist/spawn/respawn-cycle-escalation.d.ts.map +1 -1
  126. package/dist/spawn/respawn-cycle-escalation.js +11 -3
  127. package/dist/spawn/respawn-cycle-escalation.js.map +1 -1
  128. package/dist/spawn/review-hold-park.d.ts +31 -0
  129. package/dist/spawn/review-hold-park.d.ts.map +1 -0
  130. package/dist/spawn/review-hold-park.js +120 -0
  131. package/dist/spawn/review-hold-park.js.map +1 -0
  132. package/dist/spawn/shared.d.ts +1 -1
  133. package/dist/spawn/shared.d.ts.map +1 -1
  134. package/dist/spawn/spawn-cooldown.d.ts +27 -4
  135. package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
  136. package/dist/spawn/spawn-cooldown.js +88 -3
  137. package/dist/spawn/spawn-cooldown.js.map +1 -1
  138. package/dist/spawn/spawn-decision.d.ts +1 -0
  139. package/dist/spawn/spawn-decision.d.ts.map +1 -1
  140. package/dist/spawn/spawn-decision.js +7 -0
  141. package/dist/spawn/spawn-decision.js.map +1 -1
  142. package/dist/spawn/worktree-session.d.ts +4 -0
  143. package/dist/spawn/worktree-session.d.ts.map +1 -1
  144. package/dist/spawn/worktree-session.js +19 -15
  145. package/dist/spawn/worktree-session.js.map +1 -1
  146. package/dist/types/index.js +1 -1
  147. package/dist/update/auto-update-idle.d.ts.map +1 -1
  148. package/dist/update/auto-update-idle.js +2 -1
  149. package/dist/update/auto-update-idle.js.map +1 -1
  150. package/dist/update/auto-update.d.ts +20 -3
  151. package/dist/update/auto-update.d.ts.map +1 -1
  152. package/dist/update/auto-update.js +8 -24
  153. package/dist/update/auto-update.js.map +1 -1
  154. package/dist/update/self-update.d.ts +43 -4
  155. package/dist/update/self-update.d.ts.map +1 -1
  156. package/dist/update/self-update.js +61 -38
  157. package/dist/update/self-update.js.map +1 -1
  158. package/dist/update/version-check.d.ts +29 -45
  159. package/dist/update/version-check.d.ts.map +1 -1
  160. package/dist/update/version-check.js +48 -79
  161. package/dist/update/version-check.js.map +1 -1
  162. package/dist/verify/failure-signature.d.ts.map +1 -1
  163. package/dist/verify/failure-signature.js +1 -0
  164. package/dist/verify/failure-signature.js.map +1 -1
  165. package/dist/verify/verification-checkout.d.ts +58 -0
  166. package/dist/verify/verification-checkout.d.ts.map +1 -0
  167. package/dist/verify/verification-checkout.js +266 -0
  168. package/dist/verify/verification-checkout.js.map +1 -0
  169. package/dist/verify/verification-default-on.d.ts +27 -3
  170. package/dist/verify/verification-default-on.d.ts.map +1 -1
  171. package/dist/verify/verification-default-on.js +98 -5
  172. package/dist/verify/verification-default-on.js.map +1 -1
  173. package/dist/verify/verification-deps.d.ts +11 -0
  174. package/dist/verify/verification-deps.d.ts.map +1 -1
  175. package/dist/verify/verification-deterministic.d.ts +22 -1
  176. package/dist/verify/verification-deterministic.d.ts.map +1 -1
  177. package/dist/verify/verification-deterministic.js +6 -7
  178. package/dist/verify/verification-deterministic.js.map +1 -1
  179. package/dist/verify/verification-engine.d.ts.map +1 -1
  180. package/dist/verify/verification-engine.js +10 -8
  181. package/dist/verify/verification-engine.js.map +1 -1
  182. package/dist/verify/verification-feedback.d.ts +3 -0
  183. package/dist/verify/verification-feedback.d.ts.map +1 -1
  184. package/dist/verify/verification-feedback.js +5 -2
  185. package/dist/verify/verification-feedback.js.map +1 -1
  186. package/dist/worktree/verify-interlock.d.ts +9 -1
  187. package/dist/worktree/verify-interlock.d.ts.map +1 -1
  188. package/dist/worktree/verify-interlock.js +40 -3
  189. package/dist/worktree/verify-interlock.js.map +1 -1
  190. package/package.json +3 -3
@@ -1,106 +1,74 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
2
  // Pinned by: packages/daemon/src/drift/staleness-signal.test.ts,
3
- // packages/daemon/src/update/version-check.test.ts
3
+ // packages/daemon/src/shell/heartbeat-version-lag.test.ts, packages/daemon/src/update/version-check.test.ts
4
4
  // PINNED-BY-END
5
5
  /**
6
- * Non-blocking npm registry version check.
6
+ * Non-blocking npm registry version check, and the daemon's declared update
7
+ * channel.
7
8
  *
8
- * Checks if a newer version of @telora/daemon is available on the public
9
- * registry the package is actually installed from. Fails open on any error --
10
- * a registry outage never prevents startup or normal operation -- but logs a
11
- * warn line so a broken update path produces a signal instead of silent rot.
9
+ * The daemon updates from ONE channel: the public npmjs registry infra
10
+ * publishes releases to, overridable only by TELORA_REGISTRY_URL. The version
11
+ * check reads that channel, every install pins the @telora scope to it, and the
12
+ * staleness sensor / heartbeat attribute readings to it -- the host's ~/.npmrc
13
+ * (Gitea-scoped on the daemon hosts, for development tooling) never decides where
14
+ * @telora/daemon comes from.
15
+ *
16
+ * The check fails open on any error -- a registry outage never prevents startup
17
+ * or normal operation -- but logs a warn line so a broken update path produces a
18
+ * signal instead of silent rot.
12
19
  */
13
- import { execFileSync } from 'node:child_process';
20
+ import { loadEnvConfig } from '@telora/daemon-core';
14
21
  import { createLogger } from '../shell/log.js';
15
22
  const log = createLogger({ module: 'auto-update' });
16
23
  const CHECK_TIMEOUT_MS = 5000;
17
- const SCOPE_REGISTRY_KEY = '@telora:registry';
18
- const DEFAULT_REGISTRY_KEY = 'registry';
19
- const NPMJS_FALLBACK = 'https://registry.npmjs.org/';
20
- /**
21
- * Read a single npm config value via `npm config get <key>`.
22
- *
23
- * Returns a trimmed http(s) URL, or null when npm is unavailable, the key is
24
- * unset (npm prints an empty line or the literal "undefined"/"null"), or the
25
- * value is not an http(s) URL. Fails soft so a host without `npm` on PATH still
26
- * resolves through the fallback chain rather than throwing.
27
- */
28
- export function readNpmConfigValue(key) {
29
- try {
30
- const out = execFileSync('npm', ['config', 'get', key], {
31
- encoding: 'utf-8',
32
- timeout: 5000,
33
- stdio: ['ignore', 'pipe', 'ignore'],
34
- }).trim();
35
- if (!out || out === 'undefined' || out === 'null')
36
- return null;
37
- if (!/^https?:\/\//i.test(out))
38
- return null;
39
- return out;
40
- }
41
- catch {
42
- return null;
43
- }
44
- }
24
+ /** The public npmjs registry: the release channel infra publishes @telora/daemon to. */
25
+ export const NPMJS_RELEASE_REGISTRY = 'https://registry.npmjs.org/';
45
26
  /**
46
- * Resolve the registry URL the update check should target, so the CHECK asks npm
47
- * the same question the INSTALL resolves. `self-update.ts` runs
48
- * `npm install -g @telora/daemon@latest`, which resolves the @telora scope from
49
- * npm config (~/.npmrc -> Gitea on the daemon hosts); a check that targeted a
50
- * different registry would be blind to a Gitea-only publish -- the exact failure
51
- * this focus exists to close.
27
+ * Resolve the daemon's update channel: TELORA_REGISTRY_URL when set (trimmed; a
28
+ * blank value is unset), otherwise the npmjs release registry.
52
29
  *
53
- * Resolution order:
54
- * 1. TELORA_REGISTRY_URL when EXPLICITLY set in the environment -> override.
55
- * Read straight from `env` (NOT through loadEnvConfig, whose typed default
56
- * would make an unset var indistinguishable from an explicit npmjs choice).
57
- * 2. `npm config get @telora:registry` -> the scope registry the installer uses.
58
- * 3. `npm config get registry` -> npm's configured default registry.
59
- * 4. the public npmjs registry -> last-resort fallback (npm absent / unset).
30
+ * npm config is deliberately NOT consulted. The daemon hosts scope @telora to the
31
+ * Gitea development registry in ~/.npmrc, and inheriting that made running
32
+ * daemons track unreleased development builds. Check and install must still
33
+ * agree on ONE registry (a check=npmjs / install=Gitea split once made
34
+ * Gitea-only publishes invisible), so both resolve through this function: the
35
+ * check fetches from it and every install pins `--@telora:registry=` to it
36
+ * ({@link scopedInstallArgs}).
60
37
  *
61
- * Pure over injected deps; {@link getRegistryUrl} binds the real env + npm reader.
38
+ * Read on every call (not memoized): the env can change between calls in tests,
39
+ * and resolution is a cheap parse with no shell-out.
62
40
  */
63
- export function resolveRegistryUrl(deps) {
64
- const override = deps.env.TELORA_REGISTRY_URL;
65
- if (typeof override === 'string' && override.trim().length > 0) {
66
- return override.trim();
67
- }
68
- return (deps.npmConfigGet(SCOPE_REGISTRY_KEY) ??
69
- deps.npmConfigGet(DEFAULT_REGISTRY_KEY) ??
70
- NPMJS_FALLBACK);
41
+ export function resolveUpdateChannelUrl(env = process.env) {
42
+ const configured = loadEnvConfig(env).TELORA_REGISTRY_URL.trim();
43
+ return configured.length > 0 ? configured : NPMJS_RELEASE_REGISTRY;
71
44
  }
72
45
  /**
73
- * The registry `npm install -g @telora/daemon@latest` ACTUALLY resolves: npm
74
- * config (@telora scope, then default), ignoring the TELORA_REGISTRY_URL CHECK
75
- * override -- the installer reads ~/.npmrc, never that env var. This is the
76
- * registry a version reading must be ATTRIBUTABLE to for its agreement to count:
77
- * an operator who points the check elsewhere (override) has not changed where
78
- * an install lands, so a reading from the override registry cannot certify the
79
- * installed version is current.
46
+ * The npm argv that installs `target` from `channel`, pinning ONLY the @telora
47
+ * scope (`--@telora:registry=<channel>`). Never a global `--registry`: that would
48
+ * send every non-@telora dependency to the channel host too, and against a wrong
49
+ * host/port npm hangs in SYN-SENT with no output.
80
50
  */
81
- export function resolveInstallRegistryUrl(npmConfigGet = readNpmConfigValue) {
82
- return resolveRegistryUrl({ env: {}, npmConfigGet });
51
+ export function scopedInstallArgs(target, channel) {
52
+ return ['install', '-g', `--@telora:registry=${channel}`, target];
53
+ }
54
+ /** The same install as {@link scopedInstallArgs}, rendered as a command a human can run. */
55
+ export function scopedInstallCommand(target, channel) {
56
+ return ['npm', ...scopedInstallArgs(target, channel)].join(' ');
83
57
  }
84
58
  function normalizeRegistry(url) {
85
59
  return url.trim().replace(/\/+$/, '').toLowerCase();
86
60
  }
87
61
  /**
88
62
  * True when a reading taken from `readingRegistry` can be ATTRIBUTED to the
89
- * registry npm resolves for an install (`installRegistry`) -- only then does the
90
- * agreement/lag it reports count. A null/absent reading registry (legacy cache,
91
- * unstamped) is unattributable, and so is a reading from a different registry
92
- * than the installer resolves. Trailing-slash / case insensitive.
63
+ * update channel (`channelRegistry`) -- only then does the agreement/lag it
64
+ * reports count. A null/absent reading registry (legacy cache, unstamped) is
65
+ * unattributable, and so is a reading from any other registry (e.g. a cache
66
+ * stamped with the Gitea URL). Trailing-slash / case insensitive.
93
67
  */
94
- export function isReadingAttributable(readingRegistry, installRegistry) {
68
+ export function isReadingAttributable(readingRegistry, channelRegistry) {
95
69
  if (!readingRegistry)
96
70
  return false;
97
- return normalizeRegistry(readingRegistry) === normalizeRegistry(installRegistry);
98
- }
99
- function getRegistryUrl() {
100
- // Read the LIVE environment + npm config on every call (the update check can
101
- // run long after startup, and tests mutate the env between calls) rather than
102
- // a memoized startup snapshot.
103
- return resolveRegistryUrl({ env: process.env, npmConfigGet: readNpmConfigValue });
71
+ return normalizeRegistry(readingRegistry) === normalizeRegistry(channelRegistry);
104
72
  }
105
73
  /**
106
74
  * Parse a semver string's numeric major.minor.patch core, ignoring any
@@ -166,8 +134,9 @@ export function versionDistance(running, newest) {
166
134
  * resolved registry URL so a broken update path is observable in the daemon log.
167
135
  */
168
136
  export async function checkForUpdates(currentVersion, packageName = '@telora/daemon') {
169
- const registryUrl = getRegistryUrl();
137
+ let registryUrl = '(unresolved update channel)';
170
138
  try {
139
+ registryUrl = resolveUpdateChannelUrl();
171
140
  const base = registryUrl.endsWith('/') ? registryUrl : registryUrl + '/';
172
141
  // Scoped package names use URL-encoded slash in the npm protocol
173
142
  const encodedName = packageName.replace('/', '%2F');
@@ -1 +1 @@
1
- {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/update/version-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/update/version-check.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"failure-signature.d.ts","sourceRoot":"","sources":["../../src/verify/failure-signature.ts"],"names":[],"mappings":"AAoDA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,mCAAmC,CAAC;AAK3C,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAyBnD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAavF;AAED,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,GAAG,IAAI,CAoBhF;AAED,MAAM,WAAW,qBAAqB;IACpC,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAC;IAChB,kGAAkG;IAClG,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAkBlF;AAMD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAAG,IAAI,EACtC,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,wBAAwB,CAO1B;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,OAAO,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAS9G;AAMD,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAS7E;AAED,8FAA8F;AAC9F,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,MAAM,CAAC;CACxD;AAED,eAAO,MAAM,2BAA2B,QAAO,oBAE7C,CAAC;AAEH;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,qBAAqB,EAC7B,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,cAAc,EAAE,OAAO,EACvB,IAAI,EAAE,oBAAoB,GACzB;IAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,wBAAwB,CAAA;CAAE,CAS7E"}
1
+ {"version":3,"file":"failure-signature.d.ts","sourceRoot":"","sources":["../../src/verify/failure-signature.ts"],"names":[],"mappings":"AAqDA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,mCAAmC,CAAC;AAK3C,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAyBnD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAavF;AAED,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,GAAG,IAAI,CAoBhF;AAED,MAAM,WAAW,qBAAqB;IACpC,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAC;IAChB,kGAAkG;IAClG,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAkBlF;AAMD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAAG,IAAI,EACtC,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,wBAAwB,CAO1B;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,OAAO,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAS9G;AAMD,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAS7E;AAED,8FAA8F;AAC9F,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,MAAM,CAAC;CACxD;AAED,eAAO,MAAM,2BAA2B,QAAO,oBAE7C,CAAC;AAEH;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,qBAAqB,EAC7B,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,cAAc,EAAE,OAAO,EACvB,IAAI,EAAE,oBAAoB,GACzB;IAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,wBAAwB,CAAA;CAAE,CAS7E"}
@@ -1,6 +1,7 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
2
  // Pinned by: packages/daemon/src/integration/verification-history-round-trip.test.ts,
3
3
  // packages/daemon/src/verify/failure-signature.test.ts, packages/daemon/src/verify/stall-detectors.test.ts,
4
+ // packages/daemon/src/verify/verification-default-on.test.ts,
4
5
  // packages/daemon/src/verify/verification-feedback.test.ts
5
6
  // PINNED-BY-END
6
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"failure-signature.js","sourceRoot":"","sources":["../../src/verify/failure-signature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"failure-signature.js","sourceRoot":"","sources":["../../src/verify/failure-signature.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { PendingVerification } from '../queries/verification.js';
2
+ import type { StrategyResult } from './verification-deterministic.js';
3
+ import type { VerificationDeps } from './verification-deps.js';
4
+ /** A detached checkout of one commit, owned by the verify that made it. */
5
+ export interface VerifyCheckout {
6
+ /** Absolute checkout path the verify command runs in. */
7
+ path: string;
8
+ /** The commit the checkout holds -- the sha the verdict is about. */
9
+ sha: string;
10
+ /** True when an install moved the linked dependency trees since the checkout was made. */
11
+ dependenciesMoved: () => boolean;
12
+ /** Remove the checkout (links unlinked, never followed) and its git registration. Idempotent. */
13
+ dispose: () => void;
14
+ }
15
+ /** Git result slice the checkout reads (structural over runGitSync). */
16
+ type GitRun = (args: string[], cwd: string) => {
17
+ success: boolean;
18
+ output: string;
19
+ error?: string;
20
+ };
21
+ /** Injectable seams (tests point the root at a temp dir). */
22
+ export interface VerifyCheckoutDeps {
23
+ runGit?: GitRun;
24
+ /** Parent directory checkouts are created under. */
25
+ checkoutRoot?: () => string;
26
+ }
27
+ /**
28
+ * Repo-relative ignored node_modules dirs of the focus worktree (never one nested
29
+ * inside another node_modules). `--directory` keeps git from walking into a
30
+ * wholly-ignored tree. Build output is deliberately not listed (module doc).
31
+ */
32
+ export declare function listMirroredDirs(focusWorktreePath: string, runGit?: GitRun): string[];
33
+ /**
34
+ * Create a detached checkout of the focus worktree's HEAD for one verify run.
35
+ * `checkoutKey` names the checkout directory (the delivery id -- a delivery
36
+ * never verifies twice at once, so concurrent verifies never share a path). A
37
+ * leftover from a crashed run at the same path is removed first. Returns null
38
+ * when HEAD cannot be read or the checkout cannot be created.
39
+ */
40
+ export declare function createVerifyCheckout(focusWorktreePath: string, checkoutKey: string, deps?: VerifyCheckoutDeps): VerifyCheckout | null;
41
+ /** The deps slice {@link runDeterministicAtFixedCommit} reads. */
42
+ export type FixedCommitVerifyDeps = Pick<VerificationDeps, 'runDeterministic' | 'resolveCwd' | 'resolveVerificationCwd' | 'resolveRecordedPreMergeRef' | 'resolveRecordedCommitShas'> & {
43
+ /** The focus worktree a delivery's verify judges; null when the focus has none. */
44
+ resolveFocusWorktreePath?: (v: PendingVerification) => string | null;
45
+ createVerifyCheckout?: (focusWorktreePath: string, checkoutKey: string) => VerifyCheckout | null;
46
+ };
47
+ /**
48
+ * The deterministic strategy: resolve the verify boundary env, then run the
49
+ * configured command against a detached checkout of the focus HEAD (holding the
50
+ * FOCUS worktree's interlock for the judged delivery), stamping the verdict with
51
+ * the sha it judged. A verdict rendered while an install moved the linked
52
+ * dependencies is discarded (pending, retried). A delivery with no focus worktree
53
+ * runs in place, as before: no team works in the product repo path the fallback
54
+ * cwd names.
55
+ */
56
+ export declare function runDeterministicAtFixedCommit(deps: FixedCommitVerifyDeps, v: PendingVerification): Promise<StrategyResult>;
57
+ export {};
58
+ //# sourceMappingURL=verification-checkout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-checkout.d.ts","sourceRoot":"","sources":["../../src/verify/verification-checkout.ts"],"names":[],"mappings":"AAoDA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAM/D,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;IACZ,0FAA0F;IAC1F,iBAAiB,EAAE,MAAM,OAAO,CAAC;IACjC,iGAAiG;IACjG,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wEAAwE;AACxE,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpG,6DAA6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAOD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAE,MAAmB,GAAG,MAAM,EAAE,CASjG;AAgGD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,iBAAiB,EAAE,MAAM,EACzB,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,kBAAuB,GAC5B,cAAc,GAAG,IAAI,CAsCvB;AAED,kEAAkE;AAClE,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,gBAAgB,EAChB,kBAAkB,GAAG,YAAY,GAAG,wBAAwB,GAAG,4BAA4B,GAAG,2BAA2B,CAC1H,GAAG;IACF,mFAAmF;IACnF,wBAAwB,CAAC,EAAE,CAAC,CAAC,EAAE,mBAAmB,KAAK,MAAM,GAAG,IAAI,CAAC;IACrE,oBAAoB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,cAAc,GAAG,IAAI,CAAC;CAClG,CAAC;AAKF;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,qBAAqB,EAC3B,CAAC,EAAE,mBAAmB,GACrB,OAAO,CAAC,cAAc,CAAC,CAwCzB"}
@@ -0,0 +1,266 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/verify/verification-checkout.test.ts
3
+ // PINNED-BY-END
4
+ /**
5
+ * A deterministic verify judges a FIXED commit, never the live focus worktree.
6
+ *
7
+ * Every delivery of a focus shares one worktree, and the verify hold now
8
+ * withholds only the delivery under verify (focus/team-actionable-work.ts) -- so
9
+ * a coding team can be alive in that worktree, editing and committing a sibling
10
+ * delivery's fix, while a verify runs (f1, 2026-09-13). A verify run IN that
11
+ * worktree would judge a tree the team moved mid-run: a verdict about no commit
12
+ * at all. So the run happens in a detached checkout of the focus HEAD sha taken
13
+ * at dispatch, under the daemon state dir (the same shape as the baseline runner
14
+ * in verification-baseline.ts), and the verdict carries that sha.
15
+ *
16
+ * The verify interlock hold is still acquired on the FOCUS worktree (with the
17
+ * judged delivery id): daemon-authored commits and the coding->verify advance keep
18
+ * deferring exactly as before, so a team alive during a verify tears neither.
19
+ *
20
+ * Environment parity WITHOUT shared mutable state. A fresh checkout has no
21
+ * installed dependencies; the focus worktree resolves them from its own ignored
22
+ * node_modules dirs and by Node's walk-up to ancestor node_modules (the main
23
+ * checkout's, for a worktree nested under it -- often its ONLY real package tree).
24
+ * The checkout rebuilds that resolution as REAL node_modules directories whose
25
+ * package entries are symlinks: the root one merges the worktree's root
26
+ * node_modules with every ancestor node_modules in walk-up order (the first
27
+ * source naming a package wins, as resolution does), and `.bin` / `@scope` dirs
28
+ * merge one level down. Two things are deliberately NOT carried:
29
+ * - dot-entries other than `.bin` (`.vite`, `.cache`, ...): tool caches both
30
+ * sides write, which the verify recreates inside its own directories;
31
+ * - build output (`dist`): it is whatever tree the team last built, not the
32
+ * judged commit, so the gate builds what it needs inside the checkout.
33
+ * So no team write to caches or build output reaches the verify, and no verify
34
+ * write reaches the team. The linked package trees are read, never written; the
35
+ * one way they move is a dependency install, which the checkout DETECTS: a
36
+ * fingerprint of each source's package set and npm's hidden lockfile is taken at
37
+ * setup and re-read after the run, and a verdict rendered while the dependencies
38
+ * moved is discarded as `pending` (re-run next tick). The checkout is removed by
39
+ * lstat-based removal, which unlinks a link and never follows it into its target.
40
+ *
41
+ * Fail-closed: when no checkout can be made the run is NOT performed in the live
42
+ * worktree; it reports `pending` with checkoutUnavailable so the tick retries.
43
+ *
44
+ * @module verify/verification-checkout
45
+ */
46
+ import { existsSync, mkdirSync, readdirSync, rmSync, statSync, symlinkSync } from 'node:fs';
47
+ import { basename, dirname, join, resolve } from 'node:path';
48
+ import { resolveGlobalStateDir } from '../shell/daemon-process.js';
49
+ import { runGitSync } from '../git/exec.js';
50
+ import { getFocusWorktree } from '../focus/focus-worktree-state.js';
51
+ import { resolveVerifyBoundaryEnv } from './verification-boundary-env.js';
52
+ import { createLogger } from '../shell/log.js';
53
+ const log = createLogger({ module: 'verification' });
54
+ /** The ignored directory name a checkout rebuilds from the focus worktree. */
55
+ const DEPENDENCY_DIR = 'node_modules';
56
+ const defaultCheckoutRoot = () => resolve(resolveGlobalStateDir(), 'verification-checkout');
57
+ /**
58
+ * Repo-relative ignored node_modules dirs of the focus worktree (never one nested
59
+ * inside another node_modules). `--directory` keeps git from walking into a
60
+ * wholly-ignored tree. Build output is deliberately not listed (module doc).
61
+ */
62
+ export function listMirroredDirs(focusWorktreePath, runGit = runGitSync) {
63
+ const listed = runGit(['ls-files', '--others', '--ignored', '--exclude-standard', '--directory'], focusWorktreePath);
64
+ if (!listed.success)
65
+ return [];
66
+ return listed.output
67
+ .split('\n')
68
+ .map((line) => line.trim().replace(/\/$/, ''))
69
+ .filter((rel) => rel.length > 0
70
+ && basename(rel) === DEPENDENCY_DIR
71
+ && !rel.split('/').slice(0, -1).includes(DEPENDENCY_DIR));
72
+ }
73
+ /** Every node_modules Node's walk-up reaches from `dir` upward, nearest first. */
74
+ function ancestorNodeModules(dir) {
75
+ const found = [];
76
+ let current = resolve(dir);
77
+ for (;;) {
78
+ const candidate = join(current, DEPENDENCY_DIR);
79
+ if (existsSync(candidate))
80
+ found.push(candidate);
81
+ const parent = dirname(current);
82
+ if (parent === current)
83
+ return found;
84
+ current = parent;
85
+ }
86
+ }
87
+ /** A directory's entry names, or [] when it cannot be read. */
88
+ function entriesOf(dir) {
89
+ try {
90
+ return readdirSync(dir);
91
+ }
92
+ catch {
93
+ return [];
94
+ }
95
+ }
96
+ /**
97
+ * Build `at` as a REAL directory whose entries link into `sources` (nearest
98
+ * first; the first source naming an entry wins). At the top level a `.bin` or
99
+ * `@scope` entry is merged one level down the same way, and every other
100
+ * dot-entry (a tool cache) is skipped.
101
+ */
102
+ function buildMergedModulesDir(sources, at, depth = 0) {
103
+ mkdirSync(at, { recursive: true });
104
+ const seen = new Set();
105
+ for (const source of sources) {
106
+ for (const name of entriesOf(source)) {
107
+ if (seen.has(name))
108
+ continue;
109
+ const merged = depth === 0 && (name === '.bin' || name.startsWith('@'));
110
+ if (depth === 0 && name.startsWith('.') && !merged)
111
+ continue;
112
+ seen.add(name);
113
+ if (merged) {
114
+ buildMergedModulesDir(sources.map((s) => join(s, name)), join(at, name), depth + 1);
115
+ }
116
+ else {
117
+ symlinkSync(join(source, name), join(at, name));
118
+ }
119
+ }
120
+ }
121
+ }
122
+ /**
123
+ * A fingerprint of the dependency trees a checkout links into: each source's
124
+ * package set (top-level and `@scope` entry names; tool caches excluded) and
125
+ * npm's hidden lockfile (`.package-lock.json`, rewritten by every install). Equal
126
+ * before and after a run => no install moved the linked packages mid-run.
127
+ */
128
+ function dependencyFingerprint(sources) {
129
+ return JSON.stringify(sources.map((source) => {
130
+ const names = entriesOf(source).filter((name) => !name.startsWith('.')).sort();
131
+ const scoped = names.filter((name) => name.startsWith('@')).map((name) => [name, entriesOf(join(source, name)).sort()]);
132
+ let lockfile = 'none';
133
+ try {
134
+ const stat = statSync(join(source, '.package-lock.json'));
135
+ lockfile = `${stat.mtimeMs}:${stat.size}`;
136
+ }
137
+ catch { /* no hidden lockfile */ }
138
+ return [source, names, scoped, lockfile];
139
+ }));
140
+ }
141
+ /**
142
+ * Rebuild the focus worktree's dependency resolution inside the checkout (module
143
+ * doc). Returns every source node_modules the checkout links into.
144
+ */
145
+ function mirrorDependencyDirs(focusWorktreePath, checkoutPath, runGit) {
146
+ const plans = listMirroredDirs(focusWorktreePath, runGit)
147
+ .filter((rel) => rel !== DEPENDENCY_DIR)
148
+ .map((rel) => ({ rel, sources: [join(focusWorktreePath, rel)] }));
149
+ const ownRoot = join(focusWorktreePath, DEPENDENCY_DIR);
150
+ const rootSources = [...(existsSync(ownRoot) ? [ownRoot] : []), ...ancestorNodeModules(dirname(focusWorktreePath))];
151
+ if (rootSources.length > 0)
152
+ plans.push({ rel: DEPENDENCY_DIR, sources: rootSources });
153
+ for (const plan of plans)
154
+ buildMergedModulesDir(plan.sources, join(checkoutPath, plan.rel));
155
+ return plans.flatMap((plan) => plan.sources);
156
+ }
157
+ /**
158
+ * Remove a checkout directory and its registration. rmSync removes by lstat, so
159
+ * a linked package entry is unlinked, never followed into its target; `git
160
+ * worktree prune` then drops the registration of the now-missing directory.
161
+ */
162
+ function removeCheckout(checkoutPath, focusWorktreePath, runGit) {
163
+ try {
164
+ rmSync(checkoutPath, { recursive: true, force: true });
165
+ }
166
+ catch (err) {
167
+ log.warn(`verify checkout removal failed at ${checkoutPath}: ${err.message}`);
168
+ }
169
+ runGit(['worktree', 'prune'], focusWorktreePath);
170
+ }
171
+ /**
172
+ * Create a detached checkout of the focus worktree's HEAD for one verify run.
173
+ * `checkoutKey` names the checkout directory (the delivery id -- a delivery
174
+ * never verifies twice at once, so concurrent verifies never share a path). A
175
+ * leftover from a crashed run at the same path is removed first. Returns null
176
+ * when HEAD cannot be read or the checkout cannot be created.
177
+ */
178
+ export function createVerifyCheckout(focusWorktreePath, checkoutKey, deps = {}) {
179
+ const runGit = deps.runGit ?? runGitSync;
180
+ const head = runGit(['rev-parse', 'HEAD'], focusWorktreePath);
181
+ const sha = head.success ? head.output.trim() : '';
182
+ if (sha.length === 0) {
183
+ log.warn(`verify checkout: cannot read HEAD of ${focusWorktreePath}: ${head.error ?? 'empty output'}`);
184
+ return null;
185
+ }
186
+ const root = (deps.checkoutRoot ?? defaultCheckoutRoot)();
187
+ const checkoutPath = resolve(root, checkoutKey.replace(/[^a-zA-Z0-9._-]/g, '_'));
188
+ let sources;
189
+ try {
190
+ mkdirSync(root, { recursive: true });
191
+ if (existsSync(checkoutPath))
192
+ removeCheckout(checkoutPath, focusWorktreePath, runGit);
193
+ const added = runGit(['worktree', 'add', '--detach', checkoutPath, sha], focusWorktreePath);
194
+ if (!added.success) {
195
+ log.warn(`verify checkout: worktree add at ${sha.slice(0, 8)} failed: ${added.error ?? added.output}`);
196
+ removeCheckout(checkoutPath, focusWorktreePath, runGit);
197
+ return null;
198
+ }
199
+ sources = mirrorDependencyDirs(focusWorktreePath, checkoutPath, runGit);
200
+ }
201
+ catch (err) {
202
+ log.warn(`verify checkout: setup failed at ${checkoutPath}: ${err.message}`);
203
+ removeCheckout(checkoutPath, focusWorktreePath, runGit);
204
+ return null;
205
+ }
206
+ const fingerprint = dependencyFingerprint(sources);
207
+ let disposed = false;
208
+ return {
209
+ path: checkoutPath,
210
+ sha,
211
+ dependenciesMoved: () => dependencyFingerprint(sources) !== fingerprint,
212
+ dispose: () => {
213
+ if (disposed)
214
+ return;
215
+ disposed = true;
216
+ removeCheckout(checkoutPath, focusWorktreePath, runGit);
217
+ },
218
+ };
219
+ }
220
+ const defaultResolveFocusWorktreePath = (v) => (v.focusId ? getFocusWorktree(v.focusId)?.worktreePath ?? null : null);
221
+ /**
222
+ * The deterministic strategy: resolve the verify boundary env, then run the
223
+ * configured command against a detached checkout of the focus HEAD (holding the
224
+ * FOCUS worktree's interlock for the judged delivery), stamping the verdict with
225
+ * the sha it judged. A verdict rendered while an install moved the linked
226
+ * dependencies is discarded (pending, retried). A delivery with no focus worktree
227
+ * runs in place, as before: no team works in the product repo path the fallback
228
+ * cwd names.
229
+ */
230
+ export async function runDeterministicAtFixedCommit(deps, v) {
231
+ // Hoist the boundary resolution BEFORE the run so the command's targeted-test
232
+ // selector diffs against the delivery's recorded pre-merge boundary.
233
+ const extraEnv = await resolveVerifyBoundaryEnv(deps, v);
234
+ const logContext = { deliveryId: v.deliveryId, startedAtMs: Date.now() };
235
+ const focusWorktreePath = (deps.resolveFocusWorktreePath ?? defaultResolveFocusWorktreePath)(v);
236
+ if (focusWorktreePath === null) {
237
+ const cwd = (deps.resolveVerificationCwd ?? ((pv) => deps.resolveCwd(pv.productId)))(v);
238
+ return deps.runDeterministic(v.verificationConfig, cwd, logContext, extraEnv);
239
+ }
240
+ const checkout = (deps.createVerifyCheckout ?? createVerifyCheckout)(focusWorktreePath, v.deliveryId);
241
+ if (!checkout) {
242
+ return {
243
+ outcome: 'pending',
244
+ rationale: 'verify checkout unavailable: no detached checkout of the focus HEAD could be made; '
245
+ + 'the verify is not run in the live focus worktree (a team may be moving it) -- retried next tick',
246
+ checkoutUnavailable: true,
247
+ };
248
+ }
249
+ try {
250
+ const result = await deps.runDeterministic(v.verificationConfig, checkout.path, logContext, extraEnv, { worktreePath: focusWorktreePath, deliveryId: v.deliveryId });
251
+ if (checkout.dependenciesMoved()) {
252
+ log.warn(`verify checkout: dependencies moved during the run for delivery ${v.deliveryId}; verdict discarded`);
253
+ return {
254
+ outcome: 'pending',
255
+ rationale: 'verify discarded: a dependency install moved the node_modules trees the checkout links into '
256
+ + 'while the run was in flight, so the verdict judged no fixed environment -- retried next tick',
257
+ checkoutUnavailable: true,
258
+ };
259
+ }
260
+ return { ...result, verifiedSha: checkout.sha };
261
+ }
262
+ finally {
263
+ checkout.dispose();
264
+ }
265
+ }
266
+ //# sourceMappingURL=verification-checkout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-checkout.js","sourceRoot":"","sources":["../../src/verify/verification-checkout.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,sEAAsE;AACtE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAIpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;AAwBrD,8EAA8E;AAC9E,MAAM,cAAc,GAAG,cAAc,CAAC;AAEtC,MAAM,mBAAmB,GAAG,GAAW,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,uBAAuB,CAAC,CAAC;AAEpG;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,iBAAyB,EAAE,SAAiB,UAAU;IACrF,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACrH,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAC/B,OAAO,MAAM,CAAC,MAAM;SACjB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SAC7C,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;WAC1B,QAAQ,CAAC,GAAG,CAAC,KAAK,cAAc;WAChC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,kFAAkF;AAClF,SAAS,mBAAmB,CAAC,GAAW;IACtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,SAAS,CAAC;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAChD,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC;QACrC,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,OAA0B,EAAE,EAAU,EAAE,KAAK,GAAG,CAAC;IAC9E,SAAS,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC7B,MAAM,MAAM,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACxE,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;gBAAE,SAAS;YAC7D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,MAAM,EAAE,CAAC;gBACX,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,OAA0B;IACvD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxH,IAAI,QAAQ,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;YAC1D,QAAQ,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC;QACpC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,iBAAyB,EAAE,YAAoB,EAAE,MAAc;IAC3F,MAAM,KAAK,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,CAAC;SACtD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,cAAc,CAAC;SACvC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACpH,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IACtF,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5F,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,YAAoB,EAAE,iBAAyB,EAAE,MAAc;IACrF,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,qCAAqC,YAAY,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,iBAAyB,EACzB,WAAmB,EACnB,OAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,wCAAwC,iBAAiB,KAAK,IAAI,CAAC,KAAK,IAAI,cAAc,EAAE,CAAC,CAAC;QACvG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,mBAAmB,CAAC,EAAE,CAAC;IAC1D,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC;IACjF,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,IAAI,UAAU,CAAC,YAAY,CAAC;YAAE,cAAc,CAAC,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACtF,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAC5F,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,oCAAoC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACvG,cAAc,CAAC,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,oBAAoB,CAAC,iBAAiB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,oCAAoC,YAAY,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACxF,cAAc,CAAC,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,GAAG;QACH,iBAAiB,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,WAAW;QACvE,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,cAAc,CAAC,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC;AACJ,CAAC;AAYD,MAAM,+BAA+B,GAAG,CAAC,CAAsB,EAAiB,EAAE,CAChF,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,IAA2B,EAC3B,CAAsB;IAEtB,8EAA8E;IAC9E,qEAAqE;IACrE,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,IAAwB,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACzE,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,wBAAwB,IAAI,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACtG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,qFAAqF;kBAC5F,iGAAiG;YACrG,mBAAmB,EAAE,IAAI;SAC1B,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CACxC,CAAC,CAAC,kBAAkB,EACpB,QAAQ,CAAC,IAAI,EACb,UAAU,EACV,QAAQ,EACR,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAC9D,CAAC;QACF,IAAI,QAAQ,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC,UAAU,qBAAqB,CAAC,CAAC;YAC/G,OAAO;gBACL,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,8FAA8F;sBACrG,8FAA8F;gBAClG,mBAAmB,EAAE,IAAI;aAC1B,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;IAClD,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}