@gate-forge/pack-playwright 0.7.1 → 0.8.0

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 (202) hide show
  1. package/README.md +31 -0
  2. package/dist/constants.d.ts +13 -140
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +13 -148
  5. package/dist/constants.js.map +1 -1
  6. package/dist/cypress/plugin.d.ts +53 -0
  7. package/dist/cypress/plugin.d.ts.map +1 -0
  8. package/dist/cypress/plugin.js +369 -0
  9. package/dist/cypress/plugin.js.map +1 -0
  10. package/dist/cypress/spec-scan.d.ts +39 -0
  11. package/dist/cypress/spec-scan.d.ts.map +1 -0
  12. package/dist/cypress/spec-scan.js +301 -0
  13. package/dist/cypress/spec-scan.js.map +1 -0
  14. package/dist/diagnosis.d.ts +39 -0
  15. package/dist/diagnosis.d.ts.map +1 -0
  16. package/dist/diagnosis.js +63 -0
  17. package/dist/diagnosis.js.map +1 -0
  18. package/dist/discovery/adapter-projection.d.ts +13 -0
  19. package/dist/discovery/adapter-projection.d.ts.map +1 -0
  20. package/dist/discovery/adapter-projection.js +84 -0
  21. package/dist/discovery/adapter-projection.js.map +1 -0
  22. package/dist/discovery/config-locations.d.ts +5 -0
  23. package/dist/discovery/config-locations.d.ts.map +1 -0
  24. package/dist/discovery/config-locations.js +19 -0
  25. package/dist/discovery/config-locations.js.map +1 -0
  26. package/dist/discovery/cypress-runner-adapter.d.ts +112 -0
  27. package/dist/discovery/cypress-runner-adapter.d.ts.map +1 -0
  28. package/dist/discovery/cypress-runner-adapter.js +501 -0
  29. package/dist/discovery/cypress-runner-adapter.js.map +1 -0
  30. package/dist/discovery/discover.d.ts +53 -1
  31. package/dist/discovery/discover.d.ts.map +1 -1
  32. package/dist/discovery/discover.js +100 -3
  33. package/dist/discovery/discover.js.map +1 -1
  34. package/dist/discovery/git-ignore.d.ts +13 -0
  35. package/dist/discovery/git-ignore.d.ts.map +1 -0
  36. package/dist/discovery/git-ignore.js +62 -0
  37. package/dist/discovery/git-ignore.js.map +1 -0
  38. package/dist/discovery/index.d.ts +9 -0
  39. package/dist/discovery/index.d.ts.map +1 -1
  40. package/dist/discovery/index.js +9 -0
  41. package/dist/discovery/index.js.map +1 -1
  42. package/dist/discovery/playwright-runner-adapter.d.ts +108 -0
  43. package/dist/discovery/playwright-runner-adapter.d.ts.map +1 -0
  44. package/dist/discovery/playwright-runner-adapter.js +185 -0
  45. package/dist/discovery/playwright-runner-adapter.js.map +1 -0
  46. package/dist/discovery/prepare-barrier.d.ts +522 -0
  47. package/dist/discovery/prepare-barrier.d.ts.map +1 -0
  48. package/dist/discovery/prepare-barrier.js +739 -0
  49. package/dist/discovery/prepare-barrier.js.map +1 -0
  50. package/dist/discovery/pytest-adapter.d.ts.map +1 -1
  51. package/dist/discovery/pytest-adapter.js +6 -2
  52. package/dist/discovery/pytest-adapter.js.map +1 -1
  53. package/dist/discovery/pytest-runner-adapter.d.ts +124 -0
  54. package/dist/discovery/pytest-runner-adapter.d.ts.map +1 -0
  55. package/dist/discovery/pytest-runner-adapter.js +454 -0
  56. package/dist/discovery/pytest-runner-adapter.js.map +1 -0
  57. package/dist/discovery/reconcile.d.ts +80 -11
  58. package/dist/discovery/reconcile.d.ts.map +1 -1
  59. package/dist/discovery/reconcile.js +395 -78
  60. package/dist/discovery/reconcile.js.map +1 -1
  61. package/dist/discovery/runner-env.d.ts +88 -2
  62. package/dist/discovery/runner-env.d.ts.map +1 -1
  63. package/dist/discovery/runner-env.js +142 -4
  64. package/dist/discovery/runner-env.js.map +1 -1
  65. package/dist/discovery/static-discovery.d.ts +38 -3
  66. package/dist/discovery/static-discovery.d.ts.map +1 -1
  67. package/dist/discovery/static-discovery.js +454 -15
  68. package/dist/discovery/static-discovery.js.map +1 -1
  69. package/dist/discovery/supervised-run.d.ts +199 -10
  70. package/dist/discovery/supervised-run.d.ts.map +1 -1
  71. package/dist/discovery/supervised-run.js +350 -39
  72. package/dist/discovery/supervised-run.js.map +1 -1
  73. package/dist/discovery/trusted-config.d.ts +180 -6
  74. package/dist/discovery/trusted-config.d.ts.map +1 -1
  75. package/dist/discovery/trusted-config.js +279 -10
  76. package/dist/discovery/trusted-config.js.map +1 -1
  77. package/dist/discovery/vitest-runner-adapter.d.ts +172 -0
  78. package/dist/discovery/vitest-runner-adapter.d.ts.map +1 -0
  79. package/dist/discovery/vitest-runner-adapter.js +607 -0
  80. package/dist/discovery/vitest-runner-adapter.js.map +1 -0
  81. package/dist/fixture/consumer-runner.d.ts +4 -0
  82. package/dist/fixture/consumer-runner.d.ts.map +1 -0
  83. package/dist/fixture/consumer-runner.js +38 -0
  84. package/dist/fixture/consumer-runner.js.map +1 -0
  85. package/dist/fixture/evidence.d.ts +27 -0
  86. package/dist/fixture/evidence.d.ts.map +1 -1
  87. package/dist/fixture/evidence.js +12 -0
  88. package/dist/fixture/evidence.js.map +1 -1
  89. package/dist/fixture/fixture.d.ts +2 -1
  90. package/dist/fixture/fixture.d.ts.map +1 -1
  91. package/dist/fixture/fixture.js +1 -17
  92. package/dist/fixture/fixture.js.map +1 -1
  93. package/dist/fixture/witness-client.d.ts +6 -174
  94. package/dist/fixture/witness-client.d.ts.map +1 -1
  95. package/dist/fixture/witness-client.js +6 -267
  96. package/dist/fixture/witness-client.js.map +1 -1
  97. package/dist/index.d.ts +9 -6
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +5 -4
  100. package/dist/index.js.map +1 -1
  101. package/dist/json.d.ts +6 -12
  102. package/dist/json.d.ts.map +1 -1
  103. package/dist/json.js +6 -17
  104. package/dist/json.js.map +1 -1
  105. package/dist/reporter/project-graph-reporter.d.ts +92 -0
  106. package/dist/reporter/project-graph-reporter.d.ts.map +1 -0
  107. package/dist/reporter/project-graph-reporter.js +92 -0
  108. package/dist/reporter/project-graph-reporter.js.map +1 -0
  109. package/dist/reporter/reporter.cjs.map +1 -1
  110. package/dist/reporter/reporter.d.ts +93 -4
  111. package/dist/reporter/reporter.d.ts.map +1 -1
  112. package/dist/reporter/reporter.js +174 -18
  113. package/dist/reporter/reporter.js.map +1 -1
  114. package/dist/runner-claims.d.ts +13 -0
  115. package/dist/runner-claims.d.ts.map +1 -0
  116. package/dist/runner-claims.js +46 -0
  117. package/dist/runner-claims.js.map +1 -0
  118. package/dist/runner-resolution.d.ts +3 -0
  119. package/dist/runner-resolution.d.ts.map +1 -0
  120. package/dist/runner-resolution.js +14 -0
  121. package/dist/runner-resolution.js.map +1 -0
  122. package/dist/supervisor/client.d.ts +23 -1
  123. package/dist/supervisor/client.d.ts.map +1 -1
  124. package/dist/supervisor/client.js +49 -0
  125. package/dist/supervisor/client.js.map +1 -1
  126. package/dist/supervisor/drain.d.ts +65 -0
  127. package/dist/supervisor/drain.d.ts.map +1 -1
  128. package/dist/supervisor/drain.js +353 -9
  129. package/dist/supervisor/drain.js.map +1 -1
  130. package/dist/supervisor/index.d.ts +7 -3
  131. package/dist/supervisor/index.d.ts.map +1 -1
  132. package/dist/supervisor/index.js +7 -3
  133. package/dist/supervisor/index.js.map +1 -1
  134. package/dist/supervisor/spool.d.ts +65 -2
  135. package/dist/supervisor/spool.d.ts.map +1 -1
  136. package/dist/supervisor/spool.js +47 -0
  137. package/dist/supervisor/spool.js.map +1 -1
  138. package/dist/surface.d.ts +6 -207
  139. package/dist/surface.d.ts.map +1 -1
  140. package/dist/surface.js +6 -264
  141. package/dist/surface.js.map +1 -1
  142. package/dist/vitest/index.d.ts +23 -0
  143. package/dist/vitest/index.d.ts.map +1 -0
  144. package/dist/vitest/index.js +356 -0
  145. package/dist/vitest/index.js.map +1 -0
  146. package/dist/vitest/reporter.d.ts +83 -0
  147. package/dist/vitest/reporter.d.ts.map +1 -0
  148. package/dist/vitest/reporter.js +211 -0
  149. package/dist/vitest/reporter.js.map +1 -0
  150. package/dist/vitest/worker-slot.d.ts +36 -0
  151. package/dist/vitest/worker-slot.d.ts.map +1 -0
  152. package/dist/vitest/worker-slot.js +51 -0
  153. package/dist/vitest/worker-slot.js.map +1 -0
  154. package/dist/witness/adapter-registry.d.ts +6 -50
  155. package/dist/witness/adapter-registry.d.ts.map +1 -1
  156. package/dist/witness/adapter-registry.js +6 -257
  157. package/dist/witness/adapter-registry.js.map +1 -1
  158. package/dist/witness/behavior-request.d.ts +6 -76
  159. package/dist/witness/behavior-request.d.ts.map +1 -1
  160. package/dist/witness/behavior-request.js +6 -273
  161. package/dist/witness/behavior-request.js.map +1 -1
  162. package/dist/witness/behavior.d.ts +6 -48
  163. package/dist/witness/behavior.d.ts.map +1 -1
  164. package/dist/witness/behavior.js +6 -114
  165. package/dist/witness/behavior.js.map +1 -1
  166. package/dist/witness/bin.d.ts +6 -17
  167. package/dist/witness/bin.d.ts.map +1 -1
  168. package/dist/witness/bin.js +6 -168
  169. package/dist/witness/bin.js.map +1 -1
  170. package/dist/witness/browser.d.ts +14 -206
  171. package/dist/witness/browser.d.ts.map +1 -1
  172. package/dist/witness/browser.js +15 -654
  173. package/dist/witness/browser.js.map +1 -1
  174. package/dist/witness/classifications.d.ts +6 -38
  175. package/dist/witness/classifications.d.ts.map +1 -1
  176. package/dist/witness/classifications.js +6 -83
  177. package/dist/witness/classifications.js.map +1 -1
  178. package/dist/witness/env-attestation.d.ts +6 -94
  179. package/dist/witness/env-attestation.d.ts.map +1 -1
  180. package/dist/witness/env-attestation.js +6 -198
  181. package/dist/witness/env-attestation.js.map +1 -1
  182. package/dist/witness/fixture-provider.d.ts +6 -82
  183. package/dist/witness/fixture-provider.d.ts.map +1 -1
  184. package/dist/witness/fixture-provider.js +6 -105
  185. package/dist/witness/fixture-provider.js.map +1 -1
  186. package/dist/witness/loopback-pins.d.ts +6 -75
  187. package/dist/witness/loopback-pins.d.ts.map +1 -1
  188. package/dist/witness/loopback-pins.js +6 -240
  189. package/dist/witness/loopback-pins.js.map +1 -1
  190. package/dist/witness/server.d.ts +8 -26
  191. package/dist/witness/server.d.ts.map +1 -1
  192. package/dist/witness/server.js +24 -3761
  193. package/dist/witness/server.js.map +1 -1
  194. package/dist/witness/types.d.ts +6 -882
  195. package/dist/witness/types.d.ts.map +1 -1
  196. package/dist/witness/types.js +9 -1
  197. package/dist/witness/types.js.map +1 -1
  198. package/examples/overlay-proof.spec.js +75 -0
  199. package/package.json +8 -2
  200. package/python/__pycache__/gateforge_persistence_intents.cpython-312.pyc +0 -0
  201. package/python/__pycache__/gateforge_persistence_intents.cpython-314.pyc +0 -0
  202. package/python/gateforge_pytest_plugin.py +462 -0
@@ -10,6 +10,25 @@
10
10
  * force-closes any session the runner left open (a crashed worker can
11
11
  * never leave the witness holding an open session past the run).
12
12
  *
13
+ * WORKER-SIDE END (the serial-project race): a runner's MAIN process
14
+ * can report test N's end long after the worker already started test
15
+ * N+1 of the same file, so a drain that waits for that end leaves the
16
+ * next test's begin queued behind a cross-process event the worker
17
+ * does not control (a loaded machine made the next test's session
18
+ * resolve time out). A worker therefore also spools the end of the
19
+ * test IT just finished — same process, same order as its own begin,
20
+ * and with no outcome (only the runner's reporter knows that). The
21
+ * drain RELEASES the worker slot on that end: the session stops
22
+ * accepting submissions and its proxy dies at once, so nothing can be
23
+ * attributed to a finished test, and the next begin opens
24
+ * immediately. The runner's own `testEnd` still seals that session
25
+ * moments later, with the observed outcome; an outcome that never
26
+ * arrives leaves the session outcome-less, which grades not-passed
27
+ * exactly like a seal without an outcome. Nothing is credited early
28
+ * and nothing is dropped: a release carries no verdict, and the
29
+ * lifecycle still fails closed on an outcome with no begin, a begin
30
+ * with no end at run end, and two different outcomes for one test.
31
+ *
13
32
  * SERVER-WITNESSED persistence channel: the drain also polls the
14
33
  * persistence-intents spool (`persistence-intents.jsonl` — claim INTENTS
15
34
  * the supervised suite may only WRITE) and forwards each one to the
@@ -36,6 +55,7 @@
36
55
  import { CAUSE_NEXT_ACTIONS } from '@gate-forge/core';
37
56
  import { WitnessRequestError } from '../fixture/witness-client.js';
38
57
  import { SupervisorClient } from './client.js';
58
+ import { readFreezeRequest } from '../discovery/prepare-barrier.js';
39
59
  import { persistenceIntentsPathFor, readPersistenceIntents, readSpoolEvents, spoolPathFor, } from './spool.js';
40
60
  /** Default cadence between spool polls (the fixture's resolve waits 5s). */
41
61
  export const DEFAULT_DRAIN_POLL_MS = 50;
@@ -59,28 +79,100 @@ export function startSupervisorSpoolDrain(options) {
59
79
  const intentsFile = persistenceIntentsPathFor(options.stateDir, options.runId);
60
80
  const pollMs = options.pollMs ?? DEFAULT_DRAIN_POLL_MS;
61
81
  const openByWorker = new Map();
82
+ // Begins that arrived while their worker slot was still busy with an
83
+ // EARLIER test. A runner announces the next test's begin from the
84
+ // worker (prompt) while the previous test's end travels through the
85
+ // runner's main process (late), so the two lifecycles overlap by a
86
+ // few hundred milliseconds in every genuinely serial project. The
87
+ // witness mints one session per worker slot, so the queued begin
88
+ // opens the moment its slot frees — nothing is dropped, nothing is
89
+ // credited early, and a forged lifecycle still has to survive the
90
+ // same per-test pairing.
91
+ const pendingByWorker = new Map();
62
92
  const endedTests = new Set();
93
+ // Every test whose BEGIN the drain saw. A runner still announces a
94
+ // lifecycle for the tests its own filters left unexecuted (a named run
95
+ // registers only the selected tests, so the witness refuses those
96
+ // opens, or they queue behind a busy worker slot and are dropped when
97
+ // it frees): their matching end has no session to close, so it is not
98
+ // a lifecycle conflict. An end whose begin never arrived still fails
99
+ // the run closed exactly as before.
100
+ const begunTests = new Set();
101
+ // Sessions whose WORKER SLOT was released on the worker's own
102
+ // lifecycle end, keyed by test id: the test is over for the worker
103
+ // (its session accepts nothing and its proxy is dead), but the
104
+ // runner's reporter still owes the OUTCOME that confirms the seal.
105
+ // `outcome` is the one the supervisor already sealed, so a second,
106
+ // different outcome for the same test is a conflict, not a re-seal.
107
+ const awaitingOutcome = new Map();
63
108
  const conflicts = [];
64
109
  const intentFailures = [];
65
110
  const observeNotes = [];
111
+ // Forward progress of the persistence channel, and the waiters a
112
+ // caller parks on it. Counted AFTER the witness answers, so the count
113
+ // is the drain's own fact and never something the runner child can
114
+ // assert for itself.
115
+ let answeredIntents = 0;
116
+ const forwardWaiters = [];
66
117
  let offset = 0;
67
118
  let intentsOffset = 0;
68
119
  let running = true;
120
+ // The accepted preparation-freeze marker line, remembered so the final
121
+ // audit can require the spool to hold exactly that line and every body
122
+ let freezeMarker = null;
123
+ let freezeRequestSeen = false;
124
+ // The freeze handler is deliberately NOT chained onto `settling`. It
125
+ // waits for the supervisor to seal the prerequisite sessions, and those
126
+ // seals are produced by THIS drain: chaining the wait in front of them
127
+ // would put it ahead of the very lifecycle ends it waits for, and the
128
+ // run could then only leave by timing out. Off-chain, the drain keeps
129
+ // opening and sealing while the handler polls. `stop` awaits the settled
130
+ // promise so a late refusal still lands in the conflicts.
131
+ let freezeSettled = Promise.resolve();
69
132
  let settling = Promise.resolve();
133
+ /**
134
+ * Releases exactly the waiters whose count the witness has now reached,
135
+ * leaving the rest parked. A waiter for a larger count must NOT ride
136
+ * out on an earlier answer: the caller is waiting for the probe of its
137
+ * OWN nth intent, and resolving early would let it mutate the target
138
+ * before that probe ran.
139
+ */
140
+ const releaseReachedWaiters = () => {
141
+ const stillWaiting = [];
142
+ for (const waiter of forwardWaiters) {
143
+ if (answeredIntents >= waiter.count)
144
+ waiter.release();
145
+ else
146
+ stillWaiting.push(waiter);
147
+ }
148
+ forwardWaiters.length = 0;
149
+ for (const waiter of stillWaiting)
150
+ forwardWaiters.push(waiter);
151
+ };
70
152
  const slotKey = (workerIndex, testId) => `${String(workerIndex)}\u0000${testId}`;
71
153
  const openSessionFor = async (event) => {
72
154
  const workerIndex = event.workerIndex;
155
+ begunTests.add(event.testId);
156
+ // The runner's own `testBegin` for a test whose WORKER-side end
157
+ // already released the slot: the same lifecycle, arriving over the
158
+ // slower channel. Re-opening it would be a second lifecycle for one
159
+ // test, and queueing it would resurrect a finished test — both wrong.
160
+ // Once the outcome is recorded the check below applies again, so a
161
+ // genuine re-begin after a sealed outcome still conflicts.
162
+ if (awaitingOutcome.has(event.testId))
163
+ return;
73
164
  const existing = openByWorker.get(workerIndex);
74
165
  if (existing !== undefined && existing.testId === event.testId)
75
166
  return; // idempotent re-begin
76
167
  if (existing !== undefined) {
77
- // A second begin over an open worker slot: genuine serial reporter
78
- // events never do this (one test per worker at a time). The FIRST
79
- // session stands (a forgery must not displace it); the collision is
80
- // recorded and fails the run closed downstream.
81
- conflicts.push(`lifecycle conflict: worker ${String(workerIndex)} began '${event.testId}' while ` +
82
- `'${existing.testId}' was still open — a duplicate begin never occurs in a genuine ` +
83
- 'serial run (forged or confused lifecycle events fail closed)');
168
+ // A second begin over a busy worker slot: the previous test's
169
+ // end simply has not travelled back yet. The queued begin opens
170
+ // when the slot frees, so a serial project whose reporter lags
171
+ // its worker is no longer failed closed for its own ordering.
172
+ const queued = pendingByWorker.get(workerIndex) ?? [];
173
+ if (!queued.some((pending) => pending.testId === event.testId))
174
+ queued.push(event);
175
+ pendingByWorker.set(workerIndex, queued);
84
176
  return;
85
177
  }
86
178
  if (endedTests.has(slotKey(workerIndex, event.testId))) {
@@ -99,6 +191,35 @@ export function startSupervisorSpoolDrain(options) {
99
191
  });
100
192
  openByWorker.set(workerIndex, { sessionId: opened.sessionId, testId: event.testId });
101
193
  };
194
+ /**
195
+ * Opens the earliest begin that waited for a worker slot, in arrival
196
+ * order. A queued begin whose test already ended (a late replay) is
197
+ * dropped rather than reopened.
198
+ *
199
+ * Args:
200
+ * workerIndex: the freed slot.
201
+ *
202
+ * Returns:
203
+ * Promise<void>: resolves once the slot holds its next test (or is
204
+ * empty again).
205
+ */
206
+ const openNextPending = async (workerIndex) => {
207
+ const queued = pendingByWorker.get(workerIndex);
208
+ if (queued === undefined || queued.length === 0)
209
+ return;
210
+ for (let index = 0; index < queued.length;) {
211
+ const next = queued[index];
212
+ if (openByWorker.has(workerIndex) || endedTests.has(slotKey(workerIndex, next.testId))) {
213
+ queued.splice(index, 1);
214
+ continue;
215
+ }
216
+ queued.splice(index, 1);
217
+ await openSessionFor(next);
218
+ return;
219
+ }
220
+ if (queued.length === 0)
221
+ pendingByWorker.delete(workerIndex);
222
+ };
102
223
  const sealQuietly = async (slot, outcome) => {
103
224
  try {
104
225
  await client.closeSession({ sessionId: slot.sessionId, ...(outcome !== undefined ? { outcome } : {}) });
@@ -142,7 +263,42 @@ export function startSupervisorSpoolDrain(options) {
142
263
  console.warn(`[gateforge] ${message}`);
143
264
  }
144
265
  };
266
+ /**
267
+ * Releases one session's worker slot on the worker's own end (see the
268
+ * module doc). The witness unbinds the worker and kills the session
269
+ * proxy; the test's outcome stays owed and is sealed by the runner's
270
+ * own end. A refused release is a conflict, not a silent pass: the
271
+ * session then keeps its slot and the next begin stays queued.
272
+ */
273
+ const releaseQuietly = async (slot) => {
274
+ try {
275
+ await client.releaseSession({ sessionId: slot.sessionId });
276
+ awaitingOutcome.set(slot.testId, { sessionId: slot.sessionId, outcome: null });
277
+ }
278
+ catch (error) {
279
+ const message = `supervisor session release failed for test '${slot.testId}': ` +
280
+ `${error instanceof Error ? error.message : String(error)}`;
281
+ conflicts.push(message);
282
+ console.warn(`[gateforge] ${message}`);
283
+ }
284
+ };
145
285
  const handleEvent = async (event) => {
286
+ // The observer sees EVERY drained event, including the ones the
287
+ // lifecycle rules below ignore (a repeated worker end, an end whose
288
+ // begin never opened): the progress stream counts runner outcomes,
289
+ // not witness sessions, and must not lose a line to a drain detail.
290
+ try {
291
+ options.onTestEvent?.(event);
292
+ }
293
+ catch (error) {
294
+ console.warn(`[gateforge] test event observer failed: ${error.message}`);
295
+ }
296
+ // The accepted-freeze marker is the trusted CLI's own line in this
297
+ // append-only file. It is ORDERING evidence, never a lifecycle: it
298
+ // opens nothing, seals nothing, and the audit at stop reads it
299
+ // against the exact line the CLI appended.
300
+ if (event.kind === 'freezeRelease')
301
+ return;
146
302
  if (event.kind === 'testBegin') {
147
303
  await openSessionFor(event);
148
304
  return;
@@ -152,15 +308,55 @@ export function startSupervisorSpoolDrain(options) {
152
308
  if (slot !== undefined && slot.testId === event.testId) {
153
309
  openByWorker.delete(event.workerIndex);
154
310
  endedTests.add(slotKey(event.workerIndex, event.testId));
155
- // Observe finalize BEFORE seal (finalize requires an open
311
+ if (event.outcome === undefined) {
312
+ // The WORKER's own end: the test is over, but the runner's
313
+ // reporter still owes its outcome. Release the slot (the
314
+ // session stops accepting submissions and its proxy dies)
315
+ // instead of sealing a verdict nobody observed, then open
316
+ // whatever begin waited for it.
317
+ await releaseQuietly(slot);
318
+ await openNextPending(event.workerIndex);
319
+ return;
320
+ }
321
+ // Observe finalize BEFORE seal (finalize requires an unsealed
156
322
  // session), and only for passed tests — failed/crashed work
157
323
  // gets no evidence, and its claim stays blocking.
158
324
  if (event.outcome === 'passed') {
159
325
  await finalizeObserveQuietly(slot);
160
326
  }
161
327
  await sealQuietly(slot, event.outcome);
328
+ // The slot is free again: open whatever begin waited for it.
329
+ await openNextPending(event.workerIndex);
162
330
  return;
163
331
  }
332
+ // The runner's own end for a test whose WORKER SLOT was already
333
+ // released: the seal that confirms the release, and the only
334
+ // source of that test's outcome. A repeated end carrying the SAME
335
+ // outcome is re-delivery; a DIFFERENT one is a confused lifecycle
336
+ // and fails the run closed (the witness refuses it too).
337
+ const released = awaitingOutcome.get(event.testId);
338
+ if (released !== undefined) {
339
+ if (event.outcome === undefined)
340
+ return; // a repeated worker end
341
+ if (released.outcome !== null && released.outcome !== event.outcome) {
342
+ conflicts.push(`lifecycle conflict: test '${event.testId}' ended twice with different outcomes ` +
343
+ `('${released.outcome}' then '${event.outcome}') — one test has one outcome`);
344
+ return;
345
+ }
346
+ released.outcome = event.outcome;
347
+ if (event.outcome === 'passed') {
348
+ await finalizeObserveQuietly({ sessionId: released.sessionId, testId: event.testId });
349
+ }
350
+ await sealQuietly({ sessionId: released.sessionId, testId: event.testId }, event.outcome);
351
+ return;
352
+ }
353
+ // The end of a test whose begin the drain saw but never opened a
354
+ // session for (the witness refused it as outside the registered
355
+ // expected set, or it queued behind a busy slot and was dropped):
356
+ // there is nothing to close and nothing to seal, so it is not a
357
+ // conflict. An end with NO begin at all still is.
358
+ if (begunTests.has(event.testId))
359
+ return;
164
360
  // An end with no matching open begin: genuine reporter events are
165
361
  // always begin/end paired. A lone end is forgery or confusion —
166
362
  // record it and fail the run closed downstream (never open or seal
@@ -210,6 +406,49 @@ export function startSupervisorSpoolDrain(options) {
210
406
  intentFailures.push(message);
211
407
  console.warn(`[gateforge] ${message}`);
212
408
  }
409
+ // The witness has now answered this intent either way, so the
410
+ // forward-progress count advances past refusals too.
411
+ answeredIntents += 1;
412
+ releaseReachedWaiters();
413
+ };
414
+ /**
415
+ * Waits until the witness has answered `count` drained intents.
416
+ *
417
+ * Args:
418
+ * count: how many drained intents must have been answered.
419
+ * timeoutMs: bound on the wait.
420
+ *
421
+ * Returns:
422
+ * Promise<void>: resolves once the count is reached, rejects when
423
+ * the bound elapses first.
424
+ */
425
+ const whenIntentsForwarded = async (count, timeoutMs = 10_000) => {
426
+ if (answeredIntents >= count)
427
+ return;
428
+ await new Promise((resolveReady, rejectTimeout) => {
429
+ const waiter = {
430
+ count,
431
+ release: () => {
432
+ clearTimeout(timer);
433
+ resolveReady();
434
+ },
435
+ fail: (error) => {
436
+ clearTimeout(timer);
437
+ rejectTimeout(error);
438
+ },
439
+ };
440
+ const timer = setTimeout(() => {
441
+ const index = forwardWaiters.indexOf(waiter);
442
+ if (index >= 0)
443
+ forwardWaiters.splice(index, 1);
444
+ waiter.fail(new Error(`the supervisor drain forwarded only ${String(answeredIntents)} of ${String(count)} ` +
445
+ 'persistence intents before the wait elapsed — the witness never answered them'));
446
+ }, timeoutMs);
447
+ forwardWaiters.push(waiter);
448
+ // An answer that landed while this waiter was being registered
449
+ // still resolves it — the count is re-checked, never assumed.
450
+ releaseReachedWaiters();
451
+ });
213
452
  };
214
453
  const drainOnce = async () => {
215
454
  const { events, nextOffset } = readSpoolEvents(spoolFile, offset);
@@ -226,6 +465,32 @@ export function startSupervisorSpoolDrain(options) {
226
465
  `'${event.testId}': ${error.message}`);
227
466
  });
228
467
  }
468
+ // The preparation-freeze request (global snapshot barrier): the
469
+ // controller worker writes it once it has finished every prerequisite
470
+ // and is about to ask for the snapshot. The trusted handler validates
471
+ // the identities, the prerequisite sessions and the workspace diff,
472
+ // then signs the release; a refusal is recorded as a run conflict and
473
+ // the controller's own bounded wait fails it from there.
474
+ //
475
+ // The request is served EXACTLY ONCE. The document stays on disk for
476
+ // the rest of the run, so without this latch every later poll would
477
+ // re-serve it and append a second accepted-freeze marker — which the
478
+ // final audit is right to treat as a duplicated line. A malformed or
479
+ // partially written document is likewise not re-read: `readFreezeRequest`
480
+ // answers null for both, and a missing answer is caught by the audit,
481
+ // which fails the run closed because no accepted release exists.
482
+ if (options.freeze !== undefined && !freezeRequestSeen) {
483
+ const request = readFreezeRequest(options.freeze.requestPath);
484
+ if (request !== null) {
485
+ freezeRequestSeen = true;
486
+ freezeSettled = options.freeze.onRequest(request).catch((error) => {
487
+ const message = `preparation freeze refused: ${error.message} — no body project may run ` +
488
+ 'against an unprepared candidate';
489
+ conflicts.push(message);
490
+ console.warn(`[gateforge] ${message}`);
491
+ });
492
+ }
493
+ }
229
494
  // Persistence claim intents (server-witnessed channel): forwarded in
230
495
  // file order under the same serialization as the lifecycle events,
231
496
  // so per-claim sequences are enforced in order.
@@ -279,8 +544,25 @@ export function startSupervisorSpoolDrain(options) {
279
544
  });
280
545
  }
281
546
  const loop = (async () => {
547
+ // The PRE-RUN registrations (`settling`) land BEFORE the first poll:
548
+ // the witness refuses a session open whose observe declarations are
549
+ // not bound yet, and a runner child waiting on that session would see
550
+ // a bare "no open session" timeout instead of the real cause. A
551
+ // registration refusal is already recorded in `conflicts`.
552
+ await settling.catch(() => undefined);
282
553
  while (running) {
283
- await drainOnce();
554
+ try {
555
+ await drainOnce();
556
+ }
557
+ catch (error) {
558
+ // A single refused poll (a witness restart, a transient refusal)
559
+ // must NOT end supervision for the whole run: the refusal is
560
+ // recorded as a conflict — the run still fails closed downstream
561
+ // — and the next poll retries.
562
+ const message = `supervisor drain poll failed: ${error.message}`;
563
+ if (!conflicts.includes(message))
564
+ conflicts.push(message);
565
+ }
284
566
  await new Promise((resolveSleep) => setTimeout(resolveSleep, pollMs));
285
567
  }
286
568
  })();
@@ -290,14 +572,76 @@ export function startSupervisorSpoolDrain(options) {
290
572
  await loop.catch(() => undefined);
291
573
  await drainOnce();
292
574
  await settling;
575
+ // A freeze handler still polling when the runner exits is given its
576
+ // own bound before grading, so a late refusal lands as a recorded
577
+ // conflict instead of a silently dropped promise.
578
+ await freezeSettled.catch(() => undefined);
293
579
  // Force-close anything the runner left open (crash, lost contact):
294
580
  // sealed with NO outcome — the trace grades it not-passed. No
295
581
  // observe finalize here: unfinished work gets no evidence.
296
582
  const leftover = [...openByWorker.values()];
297
583
  openByWorker.clear();
298
584
  await Promise.all(leftover.map((slot) => sealQuietly(slot, undefined)));
585
+ // The preparation-freeze ORDERING audit, read from the file rather
586
+ // than from processed counts: the whole spool is re-read in file
587
+ // order and the accepted marker must appear exactly once, with every
588
+ // body project's begin AFTER it. A body begin that reached the file
589
+ // earlier — even when it was only processed now, behind a busy worker
590
+ // slot — started before the candidate was prepared.
591
+ if (options.freeze !== undefined) {
592
+ const { events: wholeSpool } = readSpoolEvents(spoolFile, 0);
593
+ const bodies = new Set(options.freeze.bodyProjects);
594
+ // ONE ordered pass over the whole spool: every line's position
595
+ // relative to the accepted marker is decided by the order the
596
+ // lines are IN, never by when the drain got round to processing
597
+ // them. A body begin physically before the marker started before
598
+ // the candidate was prepared, however late it was processed.
599
+ const markers = [];
600
+ let markerIndex = -1;
601
+ const earlyBodies = [];
602
+ for (let index = 0; index < wholeSpool.length; index += 1) {
603
+ const event = wholeSpool[index];
604
+ if (event.kind === 'freezeRelease') {
605
+ markers.push(event);
606
+ if (markerIndex < 0)
607
+ markerIndex = index;
608
+ continue;
609
+ }
610
+ if (event.kind !== 'testBegin')
611
+ continue;
612
+ const project = event.project ?? '';
613
+ if (!bodies.has(project))
614
+ continue;
615
+ if (markerIndex < 0 || index < markerIndex) {
616
+ earlyBodies.push(`${project}#${event.testId}`);
617
+ }
618
+ }
619
+ // A run that armed the barrier must carry EXACTLY ONE marker, and
620
+ // it must be the release this run itself signed (same prepared
621
+ // tree, same pinned spec digest) for THIS run's own controller
622
+ // project. A line the suite appended into the same spool can
623
+ // therefore never stand in for the real one.
624
+ if (markers.length !== 1 ||
625
+ markers[0]?.preparedTreeId !== freezeMarker?.preparedTreeId ||
626
+ markers[0]?.specDigest !== freezeMarker?.specDigest ||
627
+ markers[0]?.project !== options.freeze.controllerProject) {
628
+ conflicts.push(freezeMarker === null
629
+ ? 'preparation freeze: this run accepted no prepared-candidate release, so no body project was ' +
630
+ 'allowed to start against a frozen candidate (fail closed)'
631
+ : `preparation freeze: the lifecycle spool carries ${String(markers.length)} accepted-freeze marker(s) ` +
632
+ 'and none of them is the release this run signed — a forged or duplicated marker never orders a run');
633
+ }
634
+ for (const body of earlyBodies) {
635
+ conflicts.push(`preparation freeze: body '${body}' began BEFORE the accepted prepared-candidate release was appended — ` +
636
+ 'a body project may never run against an unprepared candidate');
637
+ }
638
+ }
299
639
  return { conflicts: [...conflicts], intentFailures: [...intentFailures], observeNotes: [...observeNotes] };
300
640
  },
641
+ whenIntentsForwarded,
642
+ markFreezeRelease: (marker) => {
643
+ freezeMarker = marker;
644
+ },
301
645
  };
302
646
  }
303
647
  //# sourceMappingURL=drain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"drain.js","sourceRoot":"","sources":["../../src/supervisor/drain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drain.js","sourceRoot":"","sources":["../../src/supervisor/drain.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,18 @@
1
1
  /**
2
2
  * Supervisor surface of the Playwright evidence pack (enforcement-
3
- * review fixes 2a/3): the pieces the TRUSTED CLI process uses to hold
3
+ * review fixes 2/3): the pieces the TRUSTED CLI process uses to hold
4
4
  * the session-lifecycle authority the runner child must never have.
5
5
  * The persistence-intents spool + forwarding add the server-witnessed
6
6
  * persistence channel: the suite may only WRITE intents; the witness
7
7
  * (verifier-key surface) probes and stamps.
8
+ *
9
+ * `appendFreezeReleaseEvent` is the accepted-prepared-candidate marker
10
+ * the trusted CLI appends to the SAME append-ordered spool file, so the
11
+ * global preparation freeze and the runner's own lifecycle events share
12
+ * one ordering (see `discovery/prepare-barrier.ts`).
8
13
  */
9
- export { appendSpoolEvent, readSpoolEvents, spoolPathFor } from './spool.js';
14
+ export { appendFreezeReleaseEvent, appendPersistenceIntent, appendSpoolEvent, persistenceIntentsPathFor, readPersistenceIntents, readSpoolEvents, spoolPathFor, } from './spool.js';
10
15
  export type { SpoolEvent, SpoolEventKind } from './spool.js';
11
- export { appendPersistenceIntent, readPersistenceIntents, persistenceIntentsPathFor, } from './spool.js';
12
16
  export type { PersistenceIntent, PersistenceIntentOperation, PersistenceIntentPhase, PersistenceIntentExpectation, } from './spool.js';
13
17
  export { SupervisorClient } from './client.js';
14
18
  export { startSupervisorSpoolDrain, DEFAULT_DRAIN_POLL_MS } from './drain.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/supervisor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7E,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,iBAAiB,EACjB,0BAA0B,EAC1B,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC9E,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/supervisor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC7D,YAAY,EACV,iBAAiB,EACjB,0BAA0B,EAC1B,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC9E,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -1,13 +1,17 @@
1
1
  /**
2
2
  * Supervisor surface of the Playwright evidence pack (enforcement-
3
- * review fixes 2a/3): the pieces the TRUSTED CLI process uses to hold
3
+ * review fixes 2/3): the pieces the TRUSTED CLI process uses to hold
4
4
  * the session-lifecycle authority the runner child must never have.
5
5
  * The persistence-intents spool + forwarding add the server-witnessed
6
6
  * persistence channel: the suite may only WRITE intents; the witness
7
7
  * (verifier-key surface) probes and stamps.
8
+ *
9
+ * `appendFreezeReleaseEvent` is the accepted-prepared-candidate marker
10
+ * the trusted CLI appends to the SAME append-ordered spool file, so the
11
+ * global preparation freeze and the runner's own lifecycle events share
12
+ * one ordering (see `discovery/prepare-barrier.ts`).
8
13
  */
9
- export { appendSpoolEvent, readSpoolEvents, spoolPathFor } from './spool.js';
10
- export { appendPersistenceIntent, readPersistenceIntents, persistenceIntentsPathFor, } from './spool.js';
14
+ export { appendFreezeReleaseEvent, appendPersistenceIntent, appendSpoolEvent, persistenceIntentsPathFor, readPersistenceIntents, readSpoolEvents, spoolPathFor, } from './spool.js';
11
15
  export { SupervisorClient } from './client.js';
12
16
  export { startSupervisorSpoolDrain, DEFAULT_DRAIN_POLL_MS } from './drain.js';
13
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/supervisor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAOpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/supervisor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,YAAY,GACb,MAAM,YAAY,CAAC;AAQpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}