@telora/daemon 0.24.8 → 0.24.11

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 (129) hide show
  1. package/build-info.json +5 -3
  2. package/dist/ci/candidate-ref.js +1 -1
  3. package/dist/ci/candidate-ref.js.map +1 -1
  4. package/dist/ci/gate-ref.d.ts +150 -0
  5. package/dist/ci/gate-ref.d.ts.map +1 -0
  6. package/dist/ci/gate-ref.js +348 -0
  7. package/dist/ci/gate-ref.js.map +1 -0
  8. package/dist/composition/runtime-delivery-advance-context.d.ts.map +1 -1
  9. package/dist/composition/runtime-delivery-advance-context.js +22 -0
  10. package/dist/composition/runtime-delivery-advance-context.js.map +1 -1
  11. package/dist/composition/verification-context.d.ts.map +1 -1
  12. package/dist/composition/verification-context.js +79 -9
  13. package/dist/composition/verification-context.js.map +1 -1
  14. package/dist/focus/focus-poller-auto-advance.d.ts +7 -0
  15. package/dist/focus/focus-poller-auto-advance.d.ts.map +1 -1
  16. package/dist/focus/focus-poller-auto-advance.js +9 -33
  17. package/dist/focus/focus-poller-auto-advance.js.map +1 -1
  18. package/dist/focus/unarmed-advance-hold.d.ts +61 -0
  19. package/dist/focus/unarmed-advance-hold.d.ts.map +1 -0
  20. package/dist/focus/unarmed-advance-hold.js +73 -0
  21. package/dist/focus/unarmed-advance-hold.js.map +1 -0
  22. package/dist/nexus/file-escalation.d.ts.map +1 -1
  23. package/dist/nexus/file-escalation.js +1 -0
  24. package/dist/nexus/file-escalation.js.map +1 -1
  25. package/dist/nexus/intake.d.ts +14 -2
  26. package/dist/nexus/intake.d.ts.map +1 -1
  27. package/dist/nexus/intake.js +11 -2
  28. package/dist/nexus/intake.js.map +1 -1
  29. package/dist/nexus/pending-returns.d.ts +1 -1
  30. package/dist/nexus/pending-returns.d.ts.map +1 -1
  31. package/dist/prompt-sections/persona-sections.d.ts +8 -4
  32. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  33. package/dist/prompt-sections/persona-sections.js +13 -7
  34. package/dist/prompt-sections/persona-sections.js.map +1 -1
  35. package/dist/queries/deliveries/issues.d.ts.map +1 -1
  36. package/dist/queries/deliveries/issues.js +1 -0
  37. package/dist/queries/deliveries/issues.js.map +1 -1
  38. package/dist/queries/focuses/focus-discovery.d.ts.map +1 -1
  39. package/dist/queries/focuses/focus-discovery.js +1 -0
  40. package/dist/queries/focuses/focus-discovery.js.map +1 -1
  41. package/dist/queries/focuses/focuses.d.ts.map +1 -1
  42. package/dist/queries/focuses/focuses.js +1 -0
  43. package/dist/queries/focuses/focuses.js.map +1 -1
  44. package/dist/queries/verification/verification.js +1 -1
  45. package/dist/queries/workflow-transitions/workflows.d.ts.map +1 -1
  46. package/dist/queries/workflow-transitions/workflows.js +1 -0
  47. package/dist/queries/workflow-transitions/workflows.js.map +1 -1
  48. package/dist/testing/fixtures/index.js +1 -1
  49. package/dist/testing/fixtures/shortfall-rework-hold-deps.d.ts.map +1 -1
  50. package/dist/testing/fixtures/shortfall-rework-hold-deps.js +1 -0
  51. package/dist/testing/fixtures/shortfall-rework-hold-deps.js.map +1 -1
  52. package/dist/testing/fixtures/verification-deps.d.ts +8 -67
  53. package/dist/testing/fixtures/verification-deps.d.ts.map +1 -1
  54. package/dist/testing/fixtures/verification-deps.js +97 -2
  55. package/dist/testing/fixtures/verification-deps.js.map +1 -1
  56. package/dist/testing/fixtures/vitest-failure-log.d.ts.map +1 -1
  57. package/dist/testing/fixtures/vitest-failure-log.js +1 -0
  58. package/dist/testing/fixtures/vitest-failure-log.js.map +1 -1
  59. package/dist/types/index.js +1 -1
  60. package/dist/verify/ci-gate/ci-gate-dispatch.d.ts +93 -0
  61. package/dist/verify/ci-gate/ci-gate-dispatch.d.ts.map +1 -0
  62. package/dist/verify/ci-gate/ci-gate-dispatch.js +304 -0
  63. package/dist/verify/ci-gate/ci-gate-dispatch.js.map +1 -0
  64. package/dist/verify/ci-gate/ci-gate-reruns.d.ts +51 -0
  65. package/dist/verify/ci-gate/ci-gate-reruns.d.ts.map +1 -0
  66. package/dist/verify/ci-gate/ci-gate-reruns.js +189 -0
  67. package/dist/verify/ci-gate/ci-gate-reruns.js.map +1 -0
  68. package/dist/verify/ci-gate/ci-gate-wait-record.d.ts +33 -0
  69. package/dist/verify/ci-gate/ci-gate-wait-record.d.ts.map +1 -0
  70. package/dist/verify/ci-gate/ci-gate-wait-record.js +89 -0
  71. package/dist/verify/ci-gate/ci-gate-wait-record.js.map +1 -0
  72. package/dist/verify/deterministic-gate/verification-deterministic.d.ts +6 -0
  73. package/dist/verify/deterministic-gate/verification-deterministic.d.ts.map +1 -1
  74. package/dist/verify/deterministic-gate/verification-deterministic.js +1 -20
  75. package/dist/verify/deterministic-gate/verification-deterministic.js.map +1 -1
  76. package/dist/verify/deterministic-gate/verification-gate-stages.d.ts.map +1 -1
  77. package/dist/verify/deterministic-gate/verification-gate-stages.js +1 -0
  78. package/dist/verify/deterministic-gate/verification-gate-stages.js.map +1 -1
  79. package/dist/verify/engine/verification-commit-sharing.d.ts +24 -0
  80. package/dist/verify/engine/verification-commit-sharing.d.ts.map +1 -1
  81. package/dist/verify/engine/verification-commit-sharing.js +93 -1
  82. package/dist/verify/engine/verification-commit-sharing.js.map +1 -1
  83. package/dist/verify/engine/verification-deps.d.ts +16 -0
  84. package/dist/verify/engine/verification-deps.d.ts.map +1 -1
  85. package/dist/verify/engine/verification-deps.js +1 -1
  86. package/dist/verify/engine/verification-engine.d.ts.map +1 -1
  87. package/dist/verify/engine/verification-engine.js +22 -6
  88. package/dist/verify/engine/verification-engine.js.map +1 -1
  89. package/dist/verify/failing-test-rerun/failing-test-retry.d.ts.map +1 -1
  90. package/dist/verify/failing-test-rerun/failing-test-retry.js +2 -1
  91. package/dist/verify/failing-test-rerun/failing-test-retry.js.map +1 -1
  92. package/dist/verify/gate-config/judged-commit-gate.d.ts +11 -3
  93. package/dist/verify/gate-config/judged-commit-gate.d.ts.map +1 -1
  94. package/dist/verify/gate-config/judged-commit-gate.js +16 -5
  95. package/dist/verify/gate-config/judged-commit-gate.js.map +1 -1
  96. package/dist/verify/gate-config/verification-config.js +1 -1
  97. package/dist/verify/gate-config/verification-manifest.d.ts +18 -1
  98. package/dist/verify/gate-config/verification-manifest.d.ts.map +1 -1
  99. package/dist/verify/gate-config/verification-manifest.js +21 -21
  100. package/dist/verify/gate-config/verification-manifest.js.map +1 -1
  101. package/dist/verify/gate-verdicts/commit-verdict-record.d.ts +2 -0
  102. package/dist/verify/gate-verdicts/commit-verdict-record.d.ts.map +1 -1
  103. package/dist/verify/gate-verdicts/commit-verdict-record.js +11 -4
  104. package/dist/verify/gate-verdicts/commit-verdict-record.js.map +1 -1
  105. package/dist/verify/gate-verdicts/gate-run-registry.js +1 -1
  106. package/dist/verify/outcome-routing/failing-output-excerpt.d.ts +8 -0
  107. package/dist/verify/outcome-routing/failing-output-excerpt.d.ts.map +1 -0
  108. package/dist/verify/outcome-routing/failing-output-excerpt.js +41 -0
  109. package/dist/verify/outcome-routing/failing-output-excerpt.js.map +1 -0
  110. package/dist/verify/outcome-routing/verification-feedback.d.ts +2 -0
  111. package/dist/verify/outcome-routing/verification-feedback.d.ts.map +1 -1
  112. package/dist/verify/outcome-routing/verification-feedback.js +3 -0
  113. package/dist/verify/outcome-routing/verification-feedback.js.map +1 -1
  114. package/dist/verify/outcome-routing/verification-rework-issue.d.ts +7 -0
  115. package/dist/verify/outcome-routing/verification-rework-issue.d.ts.map +1 -1
  116. package/dist/verify/outcome-routing/verification-rework-issue.js +30 -2
  117. package/dist/verify/outcome-routing/verification-rework-issue.js.map +1 -1
  118. package/dist/verify/run-selection/default-on-guards.js +1 -1
  119. package/dist/verify/run-selection/explicit-rearm.d.ts.map +1 -1
  120. package/dist/verify/run-selection/explicit-rearm.js +1 -0
  121. package/dist/verify/run-selection/explicit-rearm.js.map +1 -1
  122. package/dist/verify/run-selection/unarmed-unattributed.d.ts +89 -0
  123. package/dist/verify/run-selection/unarmed-unattributed.d.ts.map +1 -0
  124. package/dist/verify/run-selection/unarmed-unattributed.js +95 -0
  125. package/dist/verify/run-selection/unarmed-unattributed.js.map +1 -0
  126. package/dist/verify/run-selection/verification-default-on.d.ts.map +1 -1
  127. package/dist/verify/run-selection/verification-default-on.js +1 -0
  128. package/dist/verify/run-selection/verification-default-on.js.map +1 -1
  129. package/package.json +2 -2
@@ -1,10 +1,82 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: 34 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/testing/fixtures/verification-deps.ts
2
+ // Pinned by: 35 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/testing/fixtures/verification-deps.ts
3
3
  // PINNED-BY-END
4
+ /**
5
+ * Test fixture: a COMPLETE VerificationDeps of inert stubs for the verification
6
+ * engine (verify/engine/verification-engine.ts runVerificationTick /
7
+ * runVerificationForDelivery and the helpers they feed).
8
+ *
9
+ * VerificationDeps has no optional member and the engine reads each one without
10
+ * a fallback, so a test cannot silently exercise a real implementation by
11
+ * omitting a collaborator: it gets the stub below, or it supplies its own. A test
12
+ * that deliberately wants a production collaborator says so -- it spreads
13
+ * composition/verification-context.ts buildVerificationDeps(config), or passes the
14
+ * specific real function.
15
+ *
16
+ * Every stub is INERT: no API call, no git, no process spawn, no filesystem
17
+ * write. Each reproduces what the member's former ABSENCE meant, where absence
18
+ * had a meaning:
19
+ * - readShortfallRulings REJECTS (logged by its callers): exactly as an absent
20
+ * reader did, no ruling is applied, no park is re-armed and no rulings
21
+ * fingerprint is known -- a stub answering "no rulings" would carry a
22
+ * fingerprint and change what a park records and when it is released;
23
+ * - readers answer "nothing recorded / unknown": no gate record, no
24
+ * commit set, no commit verdict, no carried verdict, no focus worktree, no
25
+ * focus HEAD, no judged-commit manifest, no attribution failure, no
26
+ * instrument fault, no baseline (attributeFailures -> null), zero commits
27
+ * ahead, no recorded commits or pre-merge boundary; the focus worktree
28
+ * reads provisioned (readWorktreeProvisioning -> ready);
29
+ * - writers and feedback routes are no-ops (recordOutcome, verifyInjection,
30
+ * the three feedback re-entries, the model-unavailable hold, the explicit
31
+ * verdict writers, persistRecordedTargets, recordCommitVerdict, the drift
32
+ * emitters, fileEscalation, retryOwedReworkIssue);
33
+ * - the ancestor walk (listAncestors) and the held-verdict pull's run
34
+ * registries (commitVerdictPull) are the REAL ones: git over a repository the
35
+ * test built, and the in-process run marks the dispatch reads;
36
+ * - the install probe sees no active focus (installProbe);
37
+ * - invalidateExplicitGateOutcome answers true (every candidate starts);
38
+ * - noVerdicts records nothing and never holds a commit;
39
+ * - ciGate hands nothing to CI (inertCiGate): no judged commit names CI unless
40
+ * the test supplies one, and then its push must be stubbed;
41
+ * - resolveRulingEvidence resolves no reference, so no review met is honored;
42
+ * - reworkRecheck holds no record (no rework re-check runs) and drops writes;
43
+ * - createJudgeWorkspace answers a stub checkout (no git) whose citations all
44
+ * resolve, so a stubbed judge's verdict stands as it did before judges cited;
45
+ * - authorTargetRestatements reconciles nothing (no restatement, no shortfall),
46
+ * and listJudgedTargets lists no target (so ai_inspection always runs);
47
+ * - the security gate finds no linked finding;
48
+ * - readHeldCommitVerdictState reads 'unconfigured' (neither 'passed' nor
49
+ * 'pending'), so a commit-verdict pull never declines and a pull is spent once
50
+ * per (delivery, sha) -- what an absent reader meant;
51
+ * - resolveDefaultVerification answers a DISABLED gate (no command), so the
52
+ * default-on scan arms nothing unless the test supplies a resolver;
53
+ * - resolveAiInspectionInputs answers null, and readPinnedChange reads no change;
54
+ * - judgedCommitGate is the REAL gate derivation over the read it is handed
55
+ * (process.env and the real repoPath manifest reader, as before it was a
56
+ * member);
57
+ * - resolveVerificationCwd reads the context's own resolveCwd -- the one in
58
+ * `overrides` when given. A test that spreads the RESULT into a new object and
59
+ * replaces resolveCwd there must replace resolveVerificationCwd too.
60
+ * Members whose behaviour a test must choose -- running the gate
61
+ * (runDeterministic), the ai inspection (runAiInspection), the stage
62
+ * continuation, the failing-test re-run and its flaky-test filing, the detached checkout (createVerifyCheckout) and its run config
63
+ * (resolveRunVerificationConfig) -- THROW "not stubbed" until the test supplies
64
+ * them, so a path the test did not expect to reach fails loudly.
65
+ *
66
+ * Beside it: realExplicitRunLedger (the real run ledger as the explicit-verdict
67
+ * writers' run seams) and productionBaselineSeams / productionAttributionSeams
68
+ * (the composition root's base-checkout and attribution bindings), for a test
69
+ * that drives those leaves over a repository or rows it built.
70
+ *
71
+ * @module testing/fixtures/verification-deps
72
+ */
73
+ import { tmpdir } from 'node:os';
74
+ import { join } from 'node:path';
4
75
  import { DEFAULT_VERIFY_MAX_CONCURRENT, DEFAULT_VERIFY_TIMEOUT_MS, } from '../../verify/gate-config/verification-config.js';
5
76
  import { commitVerdictPullRegistry } from '../../composition/verification-context.js';
6
77
  import { buildAttributionSeams, buildBaselineCheckoutSeams, buildVerifyCheckoutDeps, } from '../../composition/verify-checkout-context.js';
7
- import { judgedCommitGate } from '../../verify/gate-config/judged-commit-gate.js';
78
+ import { judgedCommitAppliedConfig, judgedCommitGate } from '../../verify/gate-config/judged-commit-gate.js';
79
+ import { memoryCiGateWaitStore } from '../../verify/ci-gate/ci-gate-wait-record.js';
8
80
  import { readVerifyManifest } from '../../verify/gate-config/verification-manifest.js';
9
81
  import { beginExplicitRun, isCurrentExplicitRun } from '../../verify/gate-verdicts/explicit-run-ledger.js';
10
82
  import { listAncestorsWithGit } from '../../verify/gate-verdicts/judged-ancestor.js';
@@ -24,6 +96,26 @@ export const DISABLED_DEFAULT_VERIFICATION = {
24
96
  enabled: false,
25
97
  sources: { command: { layer: 'default' }, timeoutMs: { layer: 'default' } },
26
98
  };
99
+ /**
100
+ * CI-run gate seams that hand nothing over: the REAL applied-config derivation
101
+ * (so a test that supplies a judged commit naming `"gateRunner": "ci"` takes the
102
+ * CI path), a verdict reader that reads none, an in-memory wait record, and a
103
+ * push a test must stub to exercise.
104
+ */
105
+ export function inertCiGate() {
106
+ return {
107
+ appliedConfigAt: (source, read) => judgedCommitAppliedConfig(source, read, process.env, readVerifyManifest),
108
+ readVerdict: () => ({ status: 'unknown', decidedBy: null }),
109
+ listStatus: () => [],
110
+ readLog: () => null,
111
+ pushRun: notStubbed('ciGate.pushRun'),
112
+ waits: memoryCiGateWaitStore(),
113
+ logDir: () => join(tmpdir(), 'telora-test-ci-gate-logs'),
114
+ now: () => Date.now(),
115
+ sleep: async () => { },
116
+ pollIntervalMs: 0,
117
+ };
118
+ }
27
119
  /** A no-verdict store that records nothing durable and never holds a commit. */
28
120
  export function inertNoVerdictStore() {
29
121
  return {
@@ -80,6 +172,8 @@ export function makeVerificationDeps(overrides = {}) {
80
172
  resolveDefaultVerification: () => DISABLED_DEFAULT_VERIFICATION,
81
173
  getActiveFocuses: async () => [],
82
174
  getFocusDeliveries: async () => [],
175
+ // Every delivery reads as having its own commits, so an un-armed fixture focus is judged as before.
176
+ readAttributedCommit: async () => 'found',
83
177
  deliverFailureFeedback: async () => { },
84
178
  deliverShortfallFeedback: async () => { },
85
179
  requeueEvidenceUnavailableAsRework: async () => { },
@@ -128,6 +222,7 @@ export function makeVerificationDeps(overrides = {}) {
128
222
  recordCommitVerdict: () => { },
129
223
  readCommitVerdict: () => null,
130
224
  noVerdicts: inertNoVerdictStore(),
225
+ ciGate: inertCiGate(),
131
226
  resolveCarriedVerdict: async () => null,
132
227
  persistExplicitGateOutcome: async () => undefined,
133
228
  persistRecordedTargets: async () => { },
@@ -1 +1 @@
1
- {"version":3,"file":"verification-deps.js","sourceRoot":"","sources":["../../../src/testing/fixtures/verification-deps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verification-deps.js","sourceRoot":"","sources":["../../../src/testing/fixtures/verification-deps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vitest-failure-log.d.ts","sourceRoot":"","sources":["../../../src/testing/fixtures/vitest-failure-log.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AAEH,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAU/D"}
1
+ {"version":3,"file":"vitest-failure-log.d.ts","sourceRoot":"","sources":["../../../src/testing/fixtures/vitest-failure-log.ts"],"names":[],"mappings":"AAQA;;;;;;GAMG;AAEH,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAU/D"}
@@ -1,5 +1,6 @@
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/verify/attribution/verification-baseline-files.test.ts,
3
+ // packages/daemon/src/verify/ci-gate/ci-gate-dispatch.test.ts,
3
4
  // packages/daemon/src/verify/failing-test-rerun/failing-test-retry.test.ts,
4
5
  // packages/daemon/src/verify/failing-test-rerun/rerun-command.test.ts,
5
6
  // packages/daemon/src/verify/failing-test-rerun/rework-recheck.test.ts
@@ -1 +1 @@
1
- {"version":3,"file":"vitest-failure-log.js","sourceRoot":"","sources":["../../../src/testing/fixtures/vitest-failure-log.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,yFAAyF;AACzF,8EAA8E;AAC9E,yEAAyE;AACzE,yEAAyE;AACzE,gBAAgB;AAEhB;;;;;;GAMG;AAEH,4FAA4F;AAC5F,MAAM,UAAU,gBAAgB,CAAC,GAAsB;IACrD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,wDAAwD,CAAC;IACtF,OAAO;QACL,wBAAwB,GAAG,CAAC,MAAM,UAAU;QAC5C,EAAE;QACF,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,2CAA2C,EAAE,EAAE,CAAC,CAAC;QACzF,2BAA2B;QAC3B,gBAAgB,GAAG,CAAC,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG;QACnD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"vitest-failure-log.js","sourceRoot":"","sources":["../../../src/testing/fixtures/vitest-failure-log.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,yFAAyF;AACzF,iEAAiE;AACjE,8EAA8E;AAC9E,yEAAyE;AACzE,yEAAyE;AACzE,gBAAgB;AAEhB;;;;;;GAMG;AAEH,4FAA4F;AAC5F,MAAM,UAAU,gBAAgB,CAAC,GAAsB;IACrD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,wDAAwD,CAAC;IACtF,OAAO;QACL,wBAAwB,GAAG,CAAC,MAAM,UAAU;QAC5C,EAAE;QACF,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,2CAA2C,EAAE,EAAE,CAAC,CAAC;QACzF,2BAA2B;QAC3B,gBAAgB,GAAG,CAAC,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG;QACnD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1,5 +1,5 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: 280 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/types/index.ts
2
+ // Pinned by: 281 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/types/index.ts
3
3
  // PINNED-BY-END
4
4
  /**
5
5
  * Domain-specific type re-exports.
@@ -0,0 +1,93 @@
1
+ import { type GateRunSpec, type GateRunVerdict, type PublishedGateLog, type PublishedGateStatus } from '../../ci/gate-ref.js';
2
+ import type { PendingVerification } from '../../queries/verification/verification.js';
3
+ import type { StrategyResult } from '../deterministic-gate/verification-deterministic.js';
4
+ import { type VerifyBoundaryEnvDeps } from '../deterministic-gate/verification-boundary-env.js';
5
+ import type { AppliedVerificationConfig, VerificationConfigScope } from '../gate-config/verification-config.js';
6
+ import type { JudgedCommitManifest, JudgedCommitRead } from '../run-selection/verification-default-on.js';
7
+ import type { FileEscalationInput } from '../../nexus/file-escalation.js';
8
+ import type { CiGateWaitStore } from './ci-gate-wait-record.js';
9
+ /** Past the gate's own timeout, how long a handed-over run may sit with no verdict before it is re-pushed (once). */
10
+ export declare const CI_GATE_QUEUE_MARGIN_MS: number;
11
+ /** A visible CI-run registration no dispatch has touched for this long is ended. */
12
+ export declare const CI_GATE_REGISTRATION_STALE_MS: number;
13
+ /** The machine kind of the one filing a held CI gate run makes. */
14
+ export declare const CI_GATE_NO_VERDICT_KIND = "verify_ci_gate_no_verdict";
15
+ /** The CI-run gate's own seams; production binds the git IO of ci/gate-ref.ts and the durable wait record. */
16
+ export interface CiGateDeps {
17
+ /** The config a default-on run applies at the judged commit (verify/gate-config/judged-commit-gate.ts), or null. */
18
+ appliedConfigAt: (source: VerificationConfigScope, read: JudgedCommitManifest) => AppliedVerificationConfig | null;
19
+ /** The verdict CI published for (sha, key) on the product's origin; fail-closed. */
20
+ readVerdict: (repoPath: string, sha: string, key: string) => GateRunVerdict;
21
+ /** Every status CI published for (sha, key), each run on its own ([] when unreadable). */
22
+ listStatus: (repoPath: string, sha: string, key: string) => PublishedGateStatus[];
23
+ /** The log and exit facts a published run points at; null when unreadable. */
24
+ readLog: (repoPath: string, published: PublishedGateStatus) => PublishedGateLog | null;
25
+ /**
26
+ * Hand a run to CI (spec + gate branch, one push); false on any git failure.
27
+ * `harnessFrom`: for a run at another commit than the judged HEAD, the commit
28
+ * whose gate job and script ride along (ci/gate-ref.ts buildHarnessCommit).
29
+ */
30
+ pushRun: (repoPath: string, spec: GateRunSpec, harnessFrom?: string) => boolean;
31
+ waits: CiGateWaitStore;
32
+ /** Where a fetched CI log is kept, so the log readers find it by path. */
33
+ logDir: () => string;
34
+ now: () => number;
35
+ /** Resolve after `ms`: the wait between reads of an awaited re-run's status (verify/ci-gate/ci-gate-reruns.ts). */
36
+ sleep: (ms: number) => Promise<void>;
37
+ /** How long an awaited re-run waits between reads of its published status. */
38
+ pollIntervalMs: number;
39
+ }
40
+ /** What {@link stepCiGate} reads beyond its own seams. */
41
+ export type CiGateStepDeps = VerifyBoundaryEnvDeps & {
42
+ ciGate: CiGateDeps;
43
+ /** The product's repo path, for a candidate that carries none (an explicit row). */
44
+ resolveCwd: (productId: string | null) => string;
45
+ readJudgedCommitManifest: (focusId: string) => JudgedCommitRead | null;
46
+ fileEscalation: (input: FileEscalationInput) => Promise<void>;
47
+ organizationId: string;
48
+ };
49
+ /** A candidate whose gate runs on CI: what it applies at the judged commit, and where it pushes from. */
50
+ export interface CiGateRun {
51
+ productId: string;
52
+ focusId: string;
53
+ repoPath: string;
54
+ sha: string;
55
+ applied: AppliedVerificationConfig;
56
+ key: string;
57
+ }
58
+ /**
59
+ * The CI-run gate a candidate takes, or null when its gate runs on the host: a
60
+ * deterministic candidate -- default-on, or an explicit-method row -- on a focus
61
+ * whose judged commit's manifest names CI as the gate runner. The runner is the
62
+ * PRODUCT's declaration, so it binds every deterministic gate judged at that
63
+ * commit: a default-on candidate applies the config resolved at the judged commit,
64
+ * an explicit row its own command and timeout (the gate its verdict is keyed by).
65
+ * Pure over `deps`.
66
+ */
67
+ export declare function ciGateRunOf(v: PendingVerification, deps: Pick<CiGateStepDeps, 'ciGate' | 'readJudgedCommitManifest' | 'resolveCwd'>): CiGateRun | null;
68
+ /** One step's outcome: a verdict CI rendered (to judge and record), or a wait (nothing to route). */
69
+ export type CiGateStep = {
70
+ kind: 'verdict';
71
+ result: StrategyResult;
72
+ } | {
73
+ kind: 'waiting';
74
+ why: string;
75
+ };
76
+ /** The bounded wait for one run: the gate's own timeout plus the queue margin. */
77
+ export declare function ciGateWaitWindowMs(applied: Pick<AppliedVerificationConfig, 'timeoutMs'>): number;
78
+ /** Test seam: forget every visible run. */
79
+ export declare function __resetCiGateRunsForTests(): void;
80
+ /**
81
+ * The StrategyResult a published run renders: its outcome and exit, the commit it
82
+ * judged, the config it applied, and its log -- kept on disk (logPath) and its
83
+ * tail inline -- so every log reader treats it as a local run's. A red whose log
84
+ * cannot be fetched still renders red: the readers then find only the rationale,
85
+ * and the gate's own blindness rules (a failure naming nothing) apply to it.
86
+ */
87
+ export declare function resultFromPublished(run: CiGateRun, status: 'green' | 'red', published: PublishedGateStatus, fetched: PublishedGateLog | null, logPath: string | null): StrategyResult;
88
+ /**
89
+ * Take one step of the CI-run gate for `run` (module doc). Never throws for a
90
+ * normal miss: anything unreadable is a wait.
91
+ */
92
+ export declare function stepCiGate(v: PendingVerification, run: CiGateRun, deps: CiGateStepDeps): Promise<CiGateStep>;
93
+ //# sourceMappingURL=ci-gate-dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-gate-dispatch.d.ts","sourceRoot":"","sources":["../../../src/verify/ci-gate/ci-gate-dispatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,304 @@
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/ci-gate/ci-gate-dispatch.test.ts,
3
+ // packages/daemon/src/verify/ci-gate/ci-gate-reruns.test.ts
4
+ // PINNED-BY-END
5
+ /**
6
+ * The per-HEAD gate, run on CI instead of the daemon host.
7
+ *
8
+ * A product whose telora.verify.json AT THE JUDGED COMMIT says
9
+ * `"gateRunner": "ci"` gets no gate process on the host: no checkout, no
10
+ * verification-semaphore slot, no command. In their place, each dispatch of a
11
+ * default-on candidate takes ONE step of a small state machine
12
+ * ({@link stepCiGate}), keyed by the judged commit and the gate the run would
13
+ * apply there (its command + timeout -- the same key the per-commit verdict
14
+ * record uses):
15
+ *
16
+ * verdict published -> CI's verdict for (sha, gate) is read back
17
+ * (ci/gate-ref.ts); a red's log is fetched and kept
18
+ * where the log readers find it. The result is judged
19
+ * and recorded into the SAME per-(focus, sha, gate)
20
+ * verdict record a local run writes
21
+ * (verify/engine/verification-commit-sharing.ts), so the
22
+ * review request, re-work routing, the gate-verdict
23
+ * prompt section and the dashboard read it unchanged.
24
+ * nothing handed yet -> push the commit to the focus's gate branch with the
25
+ * run's spec (command, timeout, the verify boundary env),
26
+ * and stamp the wait durably (ci-gate-wait-record.ts).
27
+ * waiting -> nothing, until the bounded window has passed with no
28
+ * verdict; then the run is RE-PUSHED once (so CI sees a
29
+ * fresh push), and after a second window the delivery
30
+ * simply holds and the hold is SURFACED once (one
31
+ * agent_resolvable filing). A missing verdict is CI's
32
+ * fault, never the focus's re-work; and it never reads as
33
+ * passed: no verdict is recorded, so every reader of the
34
+ * commit's verdict still finds none.
35
+ *
36
+ * A run CI ended by its timeout, whose log rendered no verdict either
37
+ * (verify/deterministic-gate/timed-out-rendered-verdict.ts), is no verdict too:
38
+ * it is re-pushed once at once, and a second such run holds.
39
+ *
40
+ * VISIBLE WHILE IT WAITS. A handed-over run is registered on the gate-run
41
+ * registry as RUNNING at its commit, for as long as the dispatch keeps finding it
42
+ * waiting (verify/gate-verdicts/gate-run-registry.ts) -- the gate is running, on
43
+ * a runner -- so the heartbeat publishes it as a running gate, and the review
44
+ * exit and the done route wait for its verdict exactly as for a local run. The
45
+ * registration ends when the verdict is read, when the focus's next run replaces
46
+ * it, or by itself once no dispatch has touched it for
47
+ * {@link CI_GATE_REGISTRATION_STALE_MS} (the delivery left verify, or the focus
48
+ * stopped awaiting its gate) -- a timer, so an abandoned wait never holds a
49
+ * delivery's routing for the life of the process.
50
+ *
51
+ * A red is then handled as a local red is -- the same-commit flake retry and
52
+ * attribution against the focus base -- with every run that asks for sent to CI
53
+ * as well (verify/ci-gate/ci-gate-reruns.ts), from the log CI published.
54
+ *
55
+ * Why: docs/runbook-verify-gate-in-ci.md.
56
+ *
57
+ * @module verify/ci-gate/ci-gate-dispatch
58
+ */
59
+ import { mkdirSync, writeFileSync } from 'node:fs';
60
+ import { resolve } from 'node:path';
61
+ import { ESCALATION_DISPOSITIONS, ESCALATION_REASONS } from '@telora/daemon-core';
62
+ import { buildGateRunSpec, gateBranchForFocus, gateRunKey, } from '../../ci/gate-ref.js';
63
+ import { judgeTimedOutRun } from '../deterministic-gate/timed-out-rendered-verdict.js';
64
+ import { resolveVerifyBoundaryEnv } from '../deterministic-gate/verification-boundary-env.js';
65
+ import { gateRunsOnCi } from '../gate-config/verification-manifest.js';
66
+ import { registerGateRun } from '../gate-verdicts/gate-run-registry.js';
67
+ import { commitVerdictGateOf } from '../gate-verdicts/commit-verdict-record.js';
68
+ import { createLogger } from '../../log/daemon-log.js';
69
+ const log = createLogger({ module: 'verification' });
70
+ /** Past the gate's own timeout, how long a handed-over run may sit with no verdict before it is re-pushed (once). */
71
+ export const CI_GATE_QUEUE_MARGIN_MS = 60 * 60 * 1000;
72
+ /** A visible CI-run registration no dispatch has touched for this long is ended. */
73
+ export const CI_GATE_REGISTRATION_STALE_MS = 10 * 60 * 1000;
74
+ /** The machine kind of the one filing a held CI gate run makes. */
75
+ export const CI_GATE_NO_VERDICT_KIND = 'verify_ci_gate_no_verdict';
76
+ /** Chars of the CI log kept inline on the result (the whole log is in the file logPath names). */
77
+ const LOG_TAIL_CHARS = 4000;
78
+ /**
79
+ * The CI-run gate a candidate takes, or null when its gate runs on the host: a
80
+ * deterministic candidate -- default-on, or an explicit-method row -- on a focus
81
+ * whose judged commit's manifest names CI as the gate runner. The runner is the
82
+ * PRODUCT's declaration, so it binds every deterministic gate judged at that
83
+ * commit: a default-on candidate applies the config resolved at the judged commit,
84
+ * an explicit row its own command and timeout (the gate its verdict is keyed by).
85
+ * Pure over `deps`.
86
+ */
87
+ export function ciGateRunOf(v, deps) {
88
+ if (v.verificationMethod !== 'deterministic' || !v.focusId || !v.productId)
89
+ return null;
90
+ const read = deps.readJudgedCommitManifest(v.focusId);
91
+ if (read === null || 'unreadable' in read || !gateRunsOnCi(read.manifest))
92
+ return null;
93
+ const applied = v.defaultOnSource ? deps.ciGate.appliedConfigAt(v.defaultOnSource, read) : explicitRowConfig(v);
94
+ if (applied === null)
95
+ return null;
96
+ const repoPath = v.defaultOnSource?.repoPath ?? deps.resolveCwd(v.productId);
97
+ if (!repoPath) {
98
+ log.warn(`[verification] ci-gate: delivery ${v.deliveryId} names CI as its gate runner but its product has no repoPath to push from; it holds`);
99
+ }
100
+ return { productId: v.productId, focusId: v.focusId, repoPath: repoPath ?? '', sha: read.sha, applied, key: gateRunKey(applied) };
101
+ }
102
+ /** An explicit row's own gate as a run applies it (its command; its timeout, else the strategy default); null with no command. */
103
+ function explicitRowConfig(v) {
104
+ const gate = commitVerdictGateOf(v);
105
+ return gate ? { ...gate, timeoutSource: 'the delivery\'s own verification config' } : null;
106
+ }
107
+ /** The bounded wait for one run: the gate's own timeout plus the queue margin. */
108
+ export function ciGateWaitWindowMs(applied) {
109
+ return applied.timeoutMs + CI_GATE_QUEUE_MARGIN_MS;
110
+ }
111
+ const visibleRuns = new Map();
112
+ /** (Re)arm the run's expiry: it ends itself unless a dispatch touches it again in time. Never keeps the process alive. */
113
+ function armExpiry(focusId) {
114
+ const timer = setTimeout(() => endVisible(focusId), CI_GATE_REGISTRATION_STALE_MS);
115
+ timer.unref();
116
+ return timer;
117
+ }
118
+ /** Keep the focus's handed-over run registered as running at its commit (module doc). */
119
+ function showWaiting(run, deliveryId) {
120
+ const current = visibleRuns.get(run.focusId);
121
+ if (current && current.sha === run.sha && current.key === run.key) {
122
+ clearTimeout(current.expiry);
123
+ current.expiry = armExpiry(run.focusId);
124
+ return;
125
+ }
126
+ if (current)
127
+ endVisible(run.focusId);
128
+ const registration = registerGateRun({ deliveryId, focusId: run.focusId, explicit: false });
129
+ registration.start({ sha: run.sha, timeoutMs: ciGateWaitWindowMs(run.applied) });
130
+ visibleRuns.set(run.focusId, { sha: run.sha, key: run.key, registration, expiry: armExpiry(run.focusId) });
131
+ }
132
+ /** The focus's handed-over run rendered its verdict, was replaced, or went untouched: it is no longer running. */
133
+ function endVisible(focusId) {
134
+ const run = visibleRuns.get(focusId);
135
+ if (!run)
136
+ return;
137
+ clearTimeout(run.expiry);
138
+ run.registration.end();
139
+ visibleRuns.delete(focusId);
140
+ }
141
+ /** Test seam: forget every visible run. */
142
+ export function __resetCiGateRunsForTests() {
143
+ for (const focusId of [...visibleRuns.keys()])
144
+ endVisible(focusId);
145
+ }
146
+ // ---------------------------------------------------------------------------
147
+ // The step
148
+ // ---------------------------------------------------------------------------
149
+ /** Keep a fetched CI log on disk, where readVerificationLogText and the stage readers find it; null when it cannot be written. */
150
+ function keepLog(run, published, text, deps) {
151
+ try {
152
+ const dir = deps.logDir();
153
+ mkdirSync(dir, { recursive: true });
154
+ const path = resolve(dir, `ci-gate-${run.focusId}-${run.sha.slice(0, 12)}-${run.key}-run${published.runNumber}.log`);
155
+ writeFileSync(path, text, { mode: 0o600 });
156
+ return path;
157
+ }
158
+ catch (err) {
159
+ log.warn(`[verification] ci-gate: could not keep the CI log of ${published.ref}:`, err.message);
160
+ return null;
161
+ }
162
+ }
163
+ /**
164
+ * The StrategyResult a published run renders: its outcome and exit, the commit it
165
+ * judged, the config it applied, and its log -- kept on disk (logPath) and its
166
+ * tail inline -- so every log reader treats it as a local run's. A red whose log
167
+ * cannot be fetched still renders red: the readers then find only the rationale,
168
+ * and the gate's own blindness rules (a failure naming nothing) apply to it.
169
+ */
170
+ export function resultFromPublished(run, status, published, fetched, logPath) {
171
+ const passed = status === 'green';
172
+ const exitCode = fetched?.result?.exitCode ?? (passed ? 0 : 1);
173
+ const tail = fetched ? fetched.log.slice(-LOG_TAIL_CHARS) : undefined;
174
+ return {
175
+ outcome: passed ? 'passed' : 'failed',
176
+ rationale: `CI gate run #${published.runNumber} of ${run.sha.slice(0, 8)} ${passed ? 'passed (exit 0)' : `failed (exit ${exitCode})`} `
177
+ + `-- published as ${published.ref}`,
178
+ exitCode,
179
+ verifiedSha: run.sha,
180
+ appliedConfig: run.applied,
181
+ ...(fetched?.result?.timedOut ? { timedOut: true } : {}),
182
+ ...(tail !== undefined ? { stdoutTail: tail } : {}),
183
+ ...(logPath !== null ? { logPath } : {}),
184
+ publishedLogRef: published.ref,
185
+ };
186
+ }
187
+ /** Read the verdict CI published for the run; a 'verdict' step, or null when there is none to take. */
188
+ function readPublished(run, deps) {
189
+ const verdict = deps.readVerdict(run.repoPath, run.sha, run.key);
190
+ if ((verdict.status !== 'green' && verdict.status !== 'red') || verdict.decidedBy === null)
191
+ return null;
192
+ const published = verdict.decidedBy;
193
+ const fetched = verdict.status === 'red' ? deps.readLog(run.repoPath, published) : null;
194
+ if (verdict.status === 'red' && fetched === null) {
195
+ log.warn(`[verification] ci-gate: the log of ${published.ref} could not be fetched; the red routes on its exit alone`);
196
+ }
197
+ const logPath = fetched ? keepLog(run, published, fetched.log, deps) : null;
198
+ const raw = resultFromPublished(run, verdict.status, published, fetched, logPath);
199
+ if (raw.timedOut !== true)
200
+ return { result: raw, timedOutUnrendered: false };
201
+ // CI ended the run at its timeout: a completed pass or named failing tests in its log are still a verdict.
202
+ const judged = judgeTimedOutRun(raw, run.applied.command, fetched?.log ?? '');
203
+ return { result: judged, timedOutUnrendered: judged.timedOut === true };
204
+ }
205
+ /** Hand the run to CI: its spec, carrying the verify boundary the local run would have handed the command. */
206
+ async function handOver(v, run, deps) {
207
+ const env = await resolveVerifyBoundaryEnv(deps, v);
208
+ const spec = buildGateRunSpec({
209
+ purpose: 'gate', focusId: run.focusId, sha: run.sha, command: run.applied.command, timeoutMs: run.applied.timeoutMs, env,
210
+ });
211
+ return run.repoPath !== '' && deps.ciGate.pushRun(run.repoPath, spec);
212
+ }
213
+ function filingFor(run, wait, organizationId) {
214
+ return {
215
+ organizationId,
216
+ focusId: run.focusId,
217
+ productId: run.productId,
218
+ reason: `The per-HEAD gate of focus commit ${run.sha} runs on CI (telora.verify.json "gateRunner": "ci"), and CI has published `
219
+ + `no verdict for it under gate key ${run.key} (\`${run.applied.command}\`), even after one re-push of ${gateBranchForFocus(run.focusId)}. `
220
+ + 'The delivery holds in verify: no verdict is ever assumed. Check that the product\'s CI runs the gate job for that branch '
221
+ + `(docs/runbook-verify-gate-in-ci.md) and that its runners are up; diagnose with \`ci-logs\`.`,
222
+ reasonType: ESCALATION_REASONS.ERROR_ENCOUNTERED,
223
+ disposition: ESCALATION_DISPOSITIONS.AGENT_RESOLVABLE,
224
+ kind: CI_GATE_NO_VERDICT_KIND,
225
+ details: { sha: run.sha, key: run.key, command: run.applied.command, pushedAt: new Date(wait.pushedAt).toISOString(), repushedAt: wait.repushedAt ? new Date(wait.repushedAt).toISOString() : null },
226
+ };
227
+ }
228
+ /** A handed-over run with no verdict yet: re-push it once past its window, then hold and surface once (module doc). */
229
+ async function waitForVerdict(v, run, wait, deps, repushNow) {
230
+ const now = deps.ciGate.now();
231
+ const since = wait.repushedAt ?? wait.pushedAt;
232
+ const window = ciGateWaitWindowMs(run.applied);
233
+ if (!repushNow && now - since < window)
234
+ return { kind: 'waiting', why: `CI gate run of ${run.sha.slice(0, 8)} handed over ${Math.round((now - wait.pushedAt) / 60000)} min ago; no verdict yet` };
235
+ if (wait.repushedAt === undefined) {
236
+ const pushed = await handOver(v, run, deps);
237
+ if (pushed)
238
+ deps.ciGate.waits.write({ ...wait, repushedAt: now });
239
+ log.warn(`[verification] ci-gate: focus ${run.focusId} commit ${run.sha.slice(0, 8)}: CI published no verdict `
240
+ + `${repushNow ? '(its run timed out without rendering one)' : `within ${Math.round(window / 60000)} min`} -- `
241
+ + `${pushed ? 're-pushed once so CI sees a fresh push' : 'the re-push failed; retried next tick'}`);
242
+ return { kind: 'waiting', why: pushed ? 're-pushed once for a missing verdict' : 're-push failed' };
243
+ }
244
+ if (wait.surfacedAt === undefined) {
245
+ try {
246
+ await deps.fileEscalation(filingFor(run, wait, deps.organizationId));
247
+ deps.ciGate.waits.write({ ...wait, surfacedAt: now });
248
+ }
249
+ catch (err) {
250
+ log.warn(`[verification] ci-gate: failed to surface the held CI gate run of ${run.focusId}@${run.sha.slice(0, 8)}:`, err.message);
251
+ }
252
+ }
253
+ return { kind: 'waiting', why: 'held: CI published no verdict even after a re-push (surfaced)' };
254
+ }
255
+ /**
256
+ * Whether another gate of the same commit holds the focus's one gate branch: a
257
+ * handed-over run under another key (an explicit row's own command beside the
258
+ * default-on gate) with no verdict yet and inside its windows. Pushing now would
259
+ * supersede it -- its job would publish nothing -- and the two would take turns
260
+ * replacing each other forever; so this one waits its turn. A run of an older
261
+ * commit never holds a newer one.
262
+ */
263
+ function sharesBranchWithOtherGate(run, wait, deps, now) {
264
+ if (wait === null || wait.sha !== run.sha || wait.key === run.key)
265
+ return false;
266
+ const other = deps.readVerdict(run.repoPath, wait.sha, wait.key);
267
+ if (other.status === 'green' || other.status === 'red')
268
+ return false;
269
+ return now - (wait.repushedAt ?? wait.pushedAt) < 2 * ciGateWaitWindowMs(run.applied);
270
+ }
271
+ /**
272
+ * Take one step of the CI-run gate for `run` (module doc). Never throws for a
273
+ * normal miss: anything unreadable is a wait.
274
+ */
275
+ export async function stepCiGate(v, run, deps) {
276
+ const now = deps.ciGate.now();
277
+ const published = readPublished(run, deps.ciGate);
278
+ const wait = deps.ciGate.waits.read(run.productId, run.focusId);
279
+ const current = wait !== null && wait.sha === run.sha && wait.key === run.key ? wait : null;
280
+ if (published !== null && !published.timedOutUnrendered) {
281
+ endVisible(run.focusId);
282
+ log.info(`[verification] ci-gate: delivery "${v.deliveryName}" (${v.deliveryId}) -- CI's '${published.result.outcome}' verdict for `
283
+ + `${run.sha.slice(0, 8)} is read back; it is judged and recorded as the commit's gate verdict (no gate process on this host)`);
284
+ return { kind: 'verdict', result: published.result };
285
+ }
286
+ if (current === null && sharesBranchWithOtherGate(run, wait, deps.ciGate, now)) {
287
+ return { kind: 'waiting', why: `another gate of ${run.sha.slice(0, 8)} is on CI on this focus's gate branch` };
288
+ }
289
+ if (current === null) {
290
+ const pushed = await handOver(v, run, deps);
291
+ if (!pushed) {
292
+ log.warn(`[verification] ci-gate: could not push ${run.sha.slice(0, 8)} to ${gateBranchForFocus(run.focusId)} for delivery ${v.deliveryId}; retried next tick`);
293
+ return { kind: 'waiting', why: 'the push to the gate branch failed' };
294
+ }
295
+ deps.ciGate.waits.write({ productId: run.productId, focusId: run.focusId, sha: run.sha, key: run.key, deliveryId: v.deliveryId, pushedAt: now });
296
+ showWaiting(run, v.deliveryId);
297
+ log.info(`[verification] ci-gate: delivery "${v.deliveryName}" (${v.deliveryId}) -- handed focus commit ${run.sha.slice(0, 8)} to CI on `
298
+ + `${gateBranchForFocus(run.focusId)} (gate key ${run.key}); the delivery waits on the CI gate`);
299
+ return { kind: 'waiting', why: 'handed to CI' };
300
+ }
301
+ showWaiting(run, v.deliveryId);
302
+ return waitForVerdict(v, run, current, deps, published?.timedOutUnrendered === true && current.repushedAt === undefined);
303
+ }
304
+ //# sourceMappingURL=ci-gate-dispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-gate-dispatch.js","sourceRoot":"","sources":["../../../src/verify/ci-gate/ci-gate-dispatch.ts"],"names":[],"mappings":"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"}