@substrat-run/control-plane-api 0.148.0 → 0.150.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 (67) hide show
  1. package/dist/api.d.ts +19 -11
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +321 -93
  4. package/dist/api.js.map +1 -1
  5. package/dist/attachment-sweep.d.ts +30 -0
  6. package/dist/attachment-sweep.d.ts.map +1 -0
  7. package/dist/attachment-sweep.js +80 -0
  8. package/dist/attachment-sweep.js.map +1 -0
  9. package/dist/browser.d.ts +3 -1
  10. package/dist/browser.d.ts.map +1 -1
  11. package/dist/browser.js +3 -0
  12. package/dist/browser.js.map +1 -1
  13. package/dist/cf-observability.d.ts.map +1 -1
  14. package/dist/cf-observability.js +3 -1
  15. package/dist/cf-observability.js.map +1 -1
  16. package/dist/deploy.d.ts +25 -11
  17. package/dist/deploy.d.ts.map +1 -1
  18. package/dist/deploy.js +32 -17
  19. package/dist/deploy.js.map +1 -1
  20. package/dist/index.d.ts +9 -7
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +6 -4
  23. package/dist/index.js.map +1 -1
  24. package/dist/observability.d.ts +28 -0
  25. package/dist/observability.d.ts.map +1 -1
  26. package/dist/observability.js +35 -0
  27. package/dist/observability.js.map +1 -1
  28. package/dist/platform-entry.generated.d.ts +1 -1
  29. package/dist/platform-entry.generated.d.ts.map +1 -1
  30. package/dist/platform-entry.generated.js +2 -2
  31. package/dist/platform-entry.generated.js.map +1 -1
  32. package/dist/platform-scope-stores.d.ts +12 -12
  33. package/dist/platform-scope-stores.d.ts.map +1 -1
  34. package/dist/platform-scope-stores.js +21 -21
  35. package/dist/platform-scope-stores.js.map +1 -1
  36. package/dist/scope-copy-cleanup.d.ts +1 -1
  37. package/dist/scope-copy-cleanup.d.ts.map +1 -1
  38. package/dist/scope-copy-cleanup.js.map +1 -1
  39. package/dist/staff-client.d.ts +10 -2
  40. package/dist/staff-client.d.ts.map +1 -1
  41. package/dist/staff-client.js +6 -1
  42. package/dist/staff-client.js.map +1 -1
  43. package/dist/store-entry.d.ts +19 -19
  44. package/dist/store-entry.d.ts.map +1 -1
  45. package/dist/store-entry.generated.d.ts +16 -16
  46. package/dist/store-entry.generated.d.ts.map +1 -1
  47. package/dist/store-entry.generated.js +19 -19
  48. package/dist/store-entry.generated.js.map +1 -1
  49. package/dist/store-entry.js +43 -43
  50. package/dist/store-entry.js.map +1 -1
  51. package/dist/store-rebuild.d.ts +142 -0
  52. package/dist/store-rebuild.d.ts.map +1 -0
  53. package/dist/store-rebuild.js +223 -0
  54. package/dist/store-rebuild.js.map +1 -0
  55. package/dist/store-releases.d.ts +60 -49
  56. package/dist/store-releases.d.ts.map +1 -1
  57. package/dist/store-releases.js +134 -100
  58. package/dist/store-releases.js.map +1 -1
  59. package/dist/store-script.d.ts +37 -19
  60. package/dist/store-script.d.ts.map +1 -1
  61. package/dist/store-script.js +38 -23
  62. package/dist/store-script.js.map +1 -1
  63. package/dist/vertical-client.d.ts +29 -2
  64. package/dist/vertical-client.d.ts.map +1 -1
  65. package/dist/vertical-client.js +54 -2
  66. package/dist/vertical-client.js.map +1 -1
  67. package/package.json +6 -6
@@ -1,34 +1,34 @@
1
1
  /**
2
- * A store kind's releases: stored, canaried, rolled out and rolled back (D-63, #2300).
2
+ * A store driver's releases: stored, canaried, rolled out and rolled back (D-63, #2300).
3
3
  *
4
- * The bytes live outside the directory, content-addressed under `<kind>/<sha256>`, where the
5
- * sha256 is `storeKindReleaseDigest` of the bundle, computed here when it arrives and again by
4
+ * The bytes live outside the directory, content-addressed under `<driver>/<sha256>`, where the
5
+ * sha256 is `storeDriverReleaseDigest` of the bundle, computed here when it arrives and again by
6
6
  * the ensurer before every upload of it, restore and rollback included. The directory holds who
7
7
  * uploaded which release from which commit, every rollout, and the current good release
8
- * (`store-kind-releases.ts` in the kernel).
8
+ * (`store-driver-releases.ts` in the kernel).
9
9
  *
10
- * A rollout is one request across a fleet. It holds the kind exclusively for its whole length,
10
+ * A rollout is one request across a fleet. It holds the driver exclusively for its whole length,
11
11
  * renewing the hold before every upload, so no push or serve rebuilds a script between the
12
12
  * rollout's read and its upload, and two rollouts never interleave. It canaries the release on the
13
13
  * platform's own object first, and no vertical's script moves unless every reserved operation
14
- * answered there. Then it moves each vertical that ever declared the kind, at most
15
- * {@link ROLLOUT_VERTICALS_PER_REQUEST} uploads per request. A bigger fleet ends the request
16
- * `paused`, and posting the same rollout (or rollback) again continues it, walking past the scripts
17
- * already there. A request that stops on a failure ends `failed` or `diverged`. One request walks at
18
- * most {@link ROLLOUT_FLEET_MAX} verticals, a rollback included, until #2312.
14
+ * answered there. Then it moves each vertical that ever declared the driver, at most
15
+ * {@link ROLLOUT_VERTICALS_PER_REQUEST} uploads and {@link ROLLOUT_WALKS_PER_REQUEST} verticals
16
+ * walked per request. A bigger fleet ends the request `paused`, and posting the same rollout (or
17
+ * rollback) again continues it from the attempt's walk ledger (#2312), so a fleet of any size
18
+ * converges, a rollback included. A request that stops on a failure ends `failed` or `diverged`.
19
19
  */
20
- import { STORE_RELEASE_MAX_BYTES, scopeStoreCanaryObjectName, storeKindReleaseDigest, storeKindReleaseUpload, } from '@substrat-run/contracts';
20
+ import { STORE_RELEASE_MAX_BYTES, scopeStoreCanaryObjectName, storeDriverReleaseDigest, storeDriverReleaseUpload, } from '@substrat-run/contracts';
21
21
  import { ControlPlaneError } from '@substrat-run/control-plane-client';
22
- import { createUlid, ulid } from '@substrat-run/kernel';
23
- import { assertPythonKindModules } from './store-entry.js';
22
+ import { createUlid, ulid, } from '@substrat-run/kernel';
23
+ import { assertPythonDriverModules } from './store-entry.js';
24
24
  /** The key a release's bytes are stored under. */
25
- export const storeReleaseKey = (kind, sha256) => `${kind}/${sha256}`;
25
+ export const storeReleaseKey = (driver, sha256) => `${driver}/${sha256}`;
26
26
  /** How long a rollout's exclusive hold lives between renewals. */
27
27
  export const ROLLOUT_HOLD_TTL_MS = 10 * 60_000;
28
28
  /**
29
- * How long a push's or a serve's shared hold lives. It is renewed before each kind's upload; one
30
- * kind's upload (a settings read and at most one upload per script) must fit inside it, or a
31
- * rollout could take the kind before that upload lands. The same lease as a rollout's.
29
+ * How long a push's or a serve's shared hold lives. It is renewed before each driver's upload; one
30
+ * driver's upload (a settings read and at most one upload per script) must fit inside it, or a
31
+ * rollout could take the driver before that upload lands. The same lease as a rollout's.
32
32
  */
33
33
  export const PUSH_HOLD_TTL_MS = 10 * 60_000;
34
34
  /**
@@ -38,12 +38,13 @@ export const PUSH_HOLD_TTL_MS = 10 * 60_000;
38
38
  */
39
39
  export const ROLLOUT_VERTICALS_PER_REQUEST = 100;
40
40
  /**
41
- * The most verticals one rollout walks. Every one costs a settings read and a hold renewal even
42
- * when it is already at the release, so a bigger fleet would outrun one invocation; it is refused
43
- * (409) rather than left unable to converge, and that blocks a rollback too. Raising it needs a
44
- * cursor on the rollout row: #2312.
41
+ * The verticals one rollout request walks. Every one costs a settings read and a hold renewal even
42
+ * when it is already at the release, so a request that reaches this many ends `paused` and the
43
+ * next continues from the walk ledger (#2312). It also bounds what a failure returns: an attempt
44
+ * that reached more ends `diverged` without returning any, and a rollback, paged the same way,
45
+ * converges them.
45
46
  */
46
- export const ROLLOUT_FLEET_MAX = 300;
47
+ export const ROLLOUT_WALKS_PER_REQUEST = 300;
47
48
  const decodeBase64 = (text) => {
48
49
  let binary;
49
50
  try {
@@ -56,25 +57,25 @@ const decodeBase64 = (text) => {
56
57
  };
57
58
  /**
58
59
  * A release bundle as uploaded or as stored, decoded and judged: the upload body's shape, the
59
- * decoded size cap, and the Python kind's module rule. Refusals are 422 (413 for the size).
60
+ * decoded size cap, and the Python driver's module rule. Refusals are 422 (413 for the size).
60
61
  */
61
- export function decodeStoreKindRelease(raw) {
62
- const parsed = storeKindReleaseUpload.safeParse(raw);
62
+ export function decodeStoreDriverRelease(raw) {
63
+ const parsed = storeDriverReleaseUpload.safeParse(raw);
63
64
  if (!parsed.success) {
64
- throw new ControlPlaneError(422, `not a store kind release: ${parsed.error.issues.map((i) => i.message).join('; ')}`);
65
+ throw new ControlPlaneError(422, `not a store driver release: ${parsed.error.issues.map((i) => i.message).join('; ')}`);
65
66
  }
66
67
  let total = 0;
67
68
  const modules = parsed.data.modules.map((module) => {
68
69
  const content = decodeBase64(module.contentBase64);
69
70
  total += content.byteLength;
70
71
  if (total > STORE_RELEASE_MAX_BYTES) {
71
- throw new ControlPlaneError(413, `a store kind release carries at most ${STORE_RELEASE_MAX_BYTES} module bytes`);
72
+ throw new ControlPlaneError(413, `a store driver release carries at most ${STORE_RELEASE_MAX_BYTES} module bytes`);
72
73
  }
73
74
  return { name: module.name, content };
74
75
  });
75
76
  const release = { sourceCommit: parsed.data.sourceCommit, entry: parsed.data.entry, modules };
76
77
  try {
77
- assertPythonKindModules(release);
78
+ assertPythonDriverModules(release);
78
79
  }
79
80
  catch (e) {
80
81
  throw new ControlPlaneError(422, e instanceof Error ? e.message : String(e));
@@ -82,7 +83,7 @@ export function decodeStoreKindRelease(raw) {
82
83
  return release;
83
84
  }
84
85
  /** The stored form: the upload body again, so one decoder reads both. */
85
- function encodeStoreKindRelease(release) {
86
+ function encodeStoreDriverRelease(release) {
86
87
  const base64 = (bytes) => {
87
88
  let text = '';
88
89
  for (let i = 0; i < bytes.length; i += 0x8000)
@@ -100,29 +101,29 @@ function encodeStoreKindRelease(release) {
100
101
  * The bytes go first, so a recorded release always has bytes; a retry of the same bundle writes
101
102
  * the same key and records nothing new.
102
103
  */
103
- export async function storeKindRelease(input) {
104
- const release = decodeStoreKindRelease(input.body);
105
- const sha256 = await storeKindReleaseDigest(release).catch((e) => {
104
+ export async function storeDriverRelease(input) {
105
+ const release = decodeStoreDriverRelease(input.body);
106
+ const sha256 = await storeDriverReleaseDigest(release).catch((e) => {
106
107
  throw new ControlPlaneError(422, e instanceof Error ? e.message : String(e));
107
108
  });
108
- const held = await input.admin.getStoreKindRelease(input.actor, input.kind, sha256);
109
+ const held = await input.admin.getStoreDriverRelease(input.actor, input.driver, sha256);
109
110
  if (held && held.sourceCommit !== release.sourceCommit) {
110
- throw new ControlPlaneError(409, `release ${sha256} of '${input.kind}' is stored as built from ${held.sourceCommit}`);
111
+ throw new ControlPlaneError(409, `release ${sha256} of '${input.driver}' is stored as built from ${held.sourceCommit}`);
111
112
  }
112
113
  if (!held)
113
- await input.bytes.put(storeReleaseKey(input.kind, sha256), encodeStoreKindRelease(release));
114
- return input.admin.recordStoreKindRelease(input.actor, { kind: input.kind, sha256, sourceCommit: release.sourceCommit });
114
+ await input.bytes.put(storeReleaseKey(input.driver, sha256), encodeStoreDriverRelease(release));
115
+ return input.admin.recordStoreDriverRelease(input.actor, { driver: input.driver, sha256, sourceCommit: release.sourceCommit });
115
116
  }
116
117
  /**
117
- * The ensurer's loader over the stored bytes: a named release, or the kind's current good one.
118
+ * The ensurer's loader over the stored bytes: a named release, or the driver's current good one.
118
119
  * Each answer carries the sha256 it was read as, which the ensurer holds the bytes to.
119
120
  */
120
121
  export function storedReleaseLoader(input) {
121
- return async ({ kind, sha256 }) => {
122
- const wanted = sha256 ?? (await input.admin.storeKindState(input.actor, kind)).current?.sha256;
122
+ return async ({ driver, sha256 }) => {
123
+ const wanted = sha256 ?? (await input.admin.storeDriverState(input.actor, driver)).current?.sha256;
123
124
  if (!wanted)
124
125
  return undefined;
125
- const raw = await input.bytes.get(storeReleaseKey(kind, wanted));
126
+ const raw = await input.bytes.get(storeReleaseKey(driver, wanted));
126
127
  if (!raw)
127
128
  return undefined;
128
129
  let json;
@@ -130,9 +131,9 @@ export function storedReleaseLoader(input) {
130
131
  json = JSON.parse(new TextDecoder().decode(raw));
131
132
  }
132
133
  catch {
133
- throw new ControlPlaneError(422, `kind '${kind}' release ${wanted} is stored as something other than a release`);
134
+ throw new ControlPlaneError(422, `driver '${driver}' release ${wanted} is stored as something other than a release`);
134
135
  }
135
- return { ...decodeStoreKindRelease(json), sha256: wanted };
136
+ return { ...decodeStoreDriverRelease(json), sha256: wanted };
136
137
  };
137
138
  }
138
139
  /**
@@ -176,123 +177,156 @@ const message = (e) => (e instanceof Error ? e.message : String(e));
176
177
  const schemaOf = (registration, sha256) => sha256 === null ? undefined : registration.releases.find((pin) => pin.sha256 === sha256)?.schema;
177
178
  /** The hold lapsed, or another holder ended the rollout: nothing more may be moved under it. */
178
179
  class HoldLost extends ControlPlaneError {
179
- constructor(kind) {
180
- super(409, `the hold on kind '${kind}' lapsed or its rollout was ended by another; post the rollout again to converge it`);
180
+ constructor(driver) {
181
+ super(409, `the hold on driver '${driver}' lapsed or its rollout was ended by another; post the rollout again to converge it`);
181
182
  }
182
183
  }
183
184
  /**
184
- * Move every script of a kind to a stored, pinned release (D-63): hold, canary, then each
185
- * vertical. A failure after a vertical moved returns every vertical it reached to the release
186
- * the rollout started from, rehashing those bytes as it uploads them, and ends `failed`. It ends
187
- * `diverged` instead, naming what is where, when there is nothing to return to (a kind's first
188
- * rollout), when returning would lower the stored schema, or when a return fails: the next
189
- * rollout or rollback converges every script. The hold is renewed before every upload, the
190
- * returns included, and a hold that cannot be renewed stops everything at once: another holder
191
- * may be moving the same scripts, so nothing is returned either. The hold is released however it
192
- * ends.
185
+ * Move every script of a driver to a stored, pinned release (D-63): hold, canary, then each
186
+ * vertical. A failure after a vertical moved returns every vertical the attempt reached to the
187
+ * release the rollout started from, rehashing those bytes as it uploads them, and ends `failed`.
188
+ * It ends `diverged` instead, naming what is where, when there is nothing to return to (a driver's
189
+ * first rollout), when returning would lower the stored schema, when the attempt reached more
190
+ * verticals than one request returns, or when a return fails: the next rollout or rollback
191
+ * converges every script. The hold is renewed before every upload, the returns included, and a
192
+ * hold that cannot be renewed stops everything at once: another holder may be moving the same
193
+ * scripts, so nothing is returned either. The hold is released however it ends.
193
194
  *
194
- * Each request uploads at most `perRequest` scripts. A vertical already at the release is
195
- * walked past without counting, so posting the same rollout again continues where the last
196
- * request stopped, and a fleet of any size within {@link ROLLOUT_FLEET_MAX} converges.
195
+ * A fleet bigger than one request is paged (#2312). Each request walks at most
196
+ * {@link ROLLOUT_WALKS_PER_REQUEST} verticals and uploads at most `perRequest` scripts; one that runs out
197
+ * ends `paused`, and its end records what it walked in the attempt's ledger. Posting the same
198
+ * rollout (or rollback) again continues the attempt and walks only declarations the ledger does
199
+ * not hold, in (vertical, binding) order: a vertical declared between two requests, wherever it
200
+ * sorts, is walked by the next one, and one walked is never walked again. A request ends `good`
201
+ * only when the pending list it read under its exclusive hold was the whole of it and it walked
202
+ * every vertical on it: no push can create a script while the hold is held, so nothing declared
203
+ * can be left on another release.
197
204
  */
198
- export async function runStoreKindRollout(deps) {
205
+ export async function runStoreDriverRollout(deps) {
199
206
  const { admin, actor, registration, sha256 } = deps;
200
- const kind = registration.kind;
207
+ const driver = registration.driver;
201
208
  const holder = ulid();
202
- if (!(await admin.holdStoreKind(actor, { kind, holder, mode: 'exclusive', ttlMs: ROLLOUT_HOLD_TTL_MS }))) {
203
- throw new ControlPlaneError(409, `kind '${kind}' is being rolled out or a vertical declaring it is being pushed; try again shortly`);
209
+ if (!(await admin.holdStoreDriver(actor, { driver, holder, mode: 'exclusive', ttlMs: ROLLOUT_HOLD_TTL_MS }))) {
210
+ throw new ControlPlaneError(409, `driver '${driver}' is being rolled out or a vertical declaring it is being pushed; try again shortly`);
204
211
  }
205
212
  try {
206
- const declared = await admin.storeKindDeclarations(actor, kind);
207
- if (declared.unreadable.length > 0) {
208
- throw new ControlPlaneError(409, `kind '${kind}' cannot be rolled out: ${declared.unreadable.join(', ')} ha${declared.unreadable.length === 1 ? 's a version' : 've versions'} whose stores cannot be named`);
213
+ const walkMax = deps.perRequestWalks ?? ROLLOUT_WALKS_PER_REQUEST;
214
+ const page = await admin.storeDriverRolloutPending(actor, { driver, sha256, action: deps.action, limit: walkMax });
215
+ if (page.unreadable.length > 0) {
216
+ throw new ControlPlaneError(409, `driver '${driver}' cannot be rolled out: ${page.unreadable.join(', ')} ha${page.unreadable.length === 1 ? 's a version' : 've versions'} whose stores cannot be named`);
209
217
  }
210
- if (declared.verticals.length > ROLLOUT_FLEET_MAX) {
211
- throw new ControlPlaneError(409, `kind '${kind}' is declared by ${declared.verticals.length} verticals; a ${deps.action} walks at most ${ROLLOUT_FLEET_MAX}, so neither a rollout nor a rollback can run until rollouts page with a cursor (#2312)`);
212
- }
213
- const row = await admin.beginStoreKindRollout(actor, { kind, sha256, action: deps.action, holder });
214
- const end = (state, detail) => admin.finishStoreKindRollout(actor, { kind, seq: row.seq, holder, state, detail });
218
+ const row = await admin.beginStoreDriverRollout(actor, { driver, sha256, action: deps.action, holder });
219
+ const end = (state, detail) => admin.finishStoreDriverRollout(actor, { driver, seq: row.seq, holder, state, detail });
215
220
  const renew = async () => {
216
- const held = await admin.holdStoreKind(actor, { kind, holder, mode: 'exclusive', ttlMs: ROLLOUT_HOLD_TTL_MS, renew: true, rolloutSeq: row.seq });
221
+ const held = await admin.holdStoreDriver(actor, { driver, holder, mode: 'exclusive', ttlMs: ROLLOUT_HOLD_TTL_MS, renew: true, rolloutSeq: row.seq });
217
222
  if (!held)
218
- throw new HoldLost(kind);
223
+ throw new HoldLost(driver);
219
224
  };
220
225
  try {
221
226
  await deps.ensureCanary(sha256).then(({ scriptName }) => canaryStoreRelease({ call: deps.callCanary, scriptName }));
222
227
  }
223
228
  catch (e) {
224
- // No vertical's script moved; the current release stays. A row the end cannot write (the
225
- // hold lapsed) reads as diverged, which is what it then is.
229
+ // No vertical's script moved in this request; the current release stays. A row the end
230
+ // cannot write (the hold lapsed) reads as diverged, which is what it then is.
226
231
  await end('failed', message(e)).catch(() => undefined);
227
232
  throw e;
228
233
  }
229
- const targets = declared.verticals.map((v) => ({ vertical: v.vertical, stores: v.stores.map((s) => ({ binding: s.binding, kind })) }));
230
234
  const budget = deps.perRequest ?? ROLLOUT_VERTICALS_PER_REQUEST;
231
- // Every vertical walked: the ones moved now, and the ones an earlier request moved.
232
- const reached = [];
233
235
  const moved = [];
234
- for (const target of targets) {
235
- if (moved.length >= budget) {
236
- const rest = targets.length - reached.length;
237
- const rollout = await end('paused', `this request moved ${moved.length}; ${rest} vertical(s) not walked yet: post the same ${deps.action} again`);
238
- return { rollout, moved, complete: false };
239
- }
236
+ // Every vertical this request reached. A request that pauses failed at none of them, so its
237
+ // paused end records exactly the verticals whose ensure answered.
238
+ const reached = [];
239
+ for (const target of page.verticals) {
240
+ if (moved.length >= budget)
241
+ break;
240
242
  try {
241
243
  await renew();
242
- reached.push(target.vertical);
243
- if (await deps.ensure({ vertical: target.vertical, stores: target.stores, to: sha256 }))
244
+ reached.push(target);
245
+ const stores = target.stores.map((s) => ({ binding: s.binding, driver }));
246
+ if (await deps.ensure({ vertical: target.vertical, stores, to: sha256 }))
244
247
  moved.push(target.vertical);
245
248
  }
246
249
  catch (e) {
247
250
  const detail = e instanceof HoldLost
248
- ? { state: 'diverged', text: `Nothing was returned: ${reached.join(', ') || 'no vertical'} may run ${sha256}.` }
249
- : await restore(deps, row.fromSha256, reached, targets, renew);
251
+ ? { state: 'diverged', text: `Nothing was returned: ${reachedText(page.walked, reached)} may run ${sha256}.` }
252
+ : await restore(deps, row, page.walked, reached, renew);
250
253
  await end(detail.state, `${target.vertical}: ${message(e)}. ${detail.text}`).catch(() => undefined);
251
- throw new ControlPlaneError(e instanceof ControlPlaneError ? e.status : 502, `rollout of '${kind}' to ${sha256} stopped at ${target.vertical} (${message(e)}). ${detail.text}`);
254
+ throw new ControlPlaneError(e instanceof ControlPlaneError ? e.status : 502, `${deps.action} of '${driver}' to ${sha256} stopped at ${target.vertical} (${message(e)}). ${detail.text}`);
252
255
  }
253
256
  }
254
- return { rollout: await end('good', null), moved, complete: true };
257
+ const remaining = page.pending - reached.length;
258
+ if (remaining > 0) {
259
+ const rollout = await admin.finishStoreDriverRollout(actor, {
260
+ driver,
261
+ seq: row.seq,
262
+ holder,
263
+ state: 'paused',
264
+ detail: `this request walked ${reached.length} and moved ${moved.length}; ${remaining} vertical(s) not walked yet: post the same ${deps.action} again`,
265
+ walked: reached,
266
+ });
267
+ return { rollout, moved, complete: false, remaining };
268
+ }
269
+ return { rollout: await end('good', null), moved, complete: true, remaining: 0 };
255
270
  }
256
271
  finally {
257
- await admin.releaseStoreKindHold(actor, { kind, holder }).catch(() => undefined);
272
+ await admin.releaseStoreDriverHold(actor, { driver, holder }).catch(() => undefined);
258
273
  }
259
274
  }
275
+ /** The verticals an attempt reached, for a refusal: earlier requests' count, then this one's names. */
276
+ const reachedText = (before, reached) => {
277
+ const names = reached.map((t) => t.vertical).join(', ');
278
+ if (before === 0)
279
+ return names || 'no vertical';
280
+ return `${before} vertical(s) earlier requests of this attempt walked${names ? ` and ${names}` : ''}`;
281
+ };
260
282
  /**
261
- * Return every vertical a failed rollout reached to the release it started from, where that is
262
- * allowed, renewing the hold before each upload. A hold that cannot be renewed stops the return.
283
+ * Return every vertical a failed attempt reached to the release it started from, where that is
284
+ * allowed, renewing the hold before each upload: the ones its earlier requests walked (the
285
+ * ledger), then the ones this request reached. A hold that cannot be renewed stops the return.
286
+ * More than one request returns ({@link ROLLOUT_WALKS_PER_REQUEST}) returns nothing and ends diverged.
263
287
  */
264
- async function restore(deps, from, reached, verticals, renew) {
265
- if (reached.length === 0)
288
+ async function restore(deps, row, before, reached, renew) {
289
+ const from = row.fromSha256;
290
+ const all = reachedText(before, reached);
291
+ if (before + reached.length === 0)
266
292
  return { state: 'failed', text: 'No vertical moved.' };
267
293
  if (from === null) {
268
- return { state: 'diverged', text: `There is no earlier release to return to; ${reached.join(', ')} may run ${deps.sha256}.` };
294
+ return { state: 'diverged', text: `There is no earlier release to return to; ${all} may run ${deps.sha256}.` };
269
295
  }
270
296
  const leaving = schemaOf(deps.registration, deps.sha256);
271
297
  const returning = schemaOf(deps.registration, from);
272
298
  if (leaving === undefined || returning === undefined || returning < leaving) {
273
299
  return {
274
300
  state: 'diverged',
275
- text: `Returning to ${from} would lower the stored schema (${leaving} to ${returning}), so ${reached.join(', ')} may run ${deps.sha256}.`,
301
+ text: `Returning to ${from} would lower the stored schema (${leaving} to ${returning}), so ${all} may run ${deps.sha256}.`,
302
+ };
303
+ }
304
+ const max = deps.perRequestWalks ?? ROLLOUT_WALKS_PER_REQUEST;
305
+ if (before + reached.length > max) {
306
+ return {
307
+ state: 'diverged',
308
+ text: `The attempt reached ${before + reached.length} verticals, more than one request returns (${max}), so none was returned and they may run ${deps.sha256}: post a rollback, which converges every script on ${from} over as many requests as it takes.`,
276
309
  };
277
310
  }
311
+ const earlier = before === 0 ? [] : (await deps.admin.storeDriverRolloutWalked(deps.actor, { driver: row.driver, seq: row.seq, limit: max })).verticals;
312
+ const back = [...earlier, ...reached];
278
313
  const stuck = [];
279
- for (const [i, vertical] of reached.entries()) {
314
+ for (const [i, target] of back.entries()) {
280
315
  try {
281
316
  await renew();
282
317
  }
283
318
  catch {
284
- return { state: 'diverged', text: `The hold was lost while returning; ${reached.slice(i).join(', ')} may run ${deps.sha256}.` };
319
+ return { state: 'diverged', text: `The hold was lost while returning; ${back.slice(i).map((t) => t.vertical).join(', ')} may run ${deps.sha256}.` };
285
320
  }
286
- const target = verticals.find((v) => v.vertical === vertical);
287
321
  try {
288
- await deps.ensure({ vertical, stores: target.stores, to: from });
322
+ await deps.ensure({ vertical: target.vertical, stores: target.stores.map((s) => ({ binding: s.binding, driver: deps.registration.driver })), to: from });
289
323
  }
290
324
  catch (e) {
291
- stuck.push(`${vertical} (${message(e)})`);
325
+ stuck.push(`${target.vertical} (${message(e)})`);
292
326
  }
293
327
  }
294
328
  return stuck.length === 0
295
- ? { state: 'failed', text: `${reached.join(', ')} returned to ${from}.` }
329
+ ? { state: 'failed', text: `${back.map((t) => t.vertical).join(', ')} returned to ${from}.` }
296
330
  : { state: 'diverged', text: `Could not return ${stuck.join(', ')} to ${from}.` };
297
331
  }
298
332
  //# sourceMappingURL=store-releases.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store-releases.js","sourceRoot":"","sources":["../src/store-releases.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store-releases.js","sourceRoot":"","sources":["../src/store-releases.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { type ScopeStoreNeed, type StoreKindRegistration } from '@substrat-run/contracts';
2
- import { type PythonStoreKindRelease } from './store-entry.js';
1
+ import { type ScopeStoreNeed, type StoreDriverRegistration } from '@substrat-run/contracts';
2
+ import { type PythonStoreDriverRelease } from './store-entry.js';
3
3
  /**
4
4
  * The binding that records which pinned release a store script runs: the release bundle's
5
- * sha256 (D-63). In the entry's reserved prefix, so the kind's env never carries it.
5
+ * sha256 (D-63). In the entry's reserved prefix, so the driver's env never carries it.
6
6
  */
7
7
  export declare const STORE_RELEASE_VAR = "SUBSTRAT_STORE_RELEASE";
8
8
  /**
@@ -10,8 +10,8 @@ export declare const STORE_RELEASE_VAR = "SUBSTRAT_STORE_RELEASE";
10
10
  * upload sent and its configuration. A changed entry, verifier, key list or flag changes it.
11
11
  */
12
12
  export declare const STORE_BUILD_VAR = "SUBSTRAT_STORE_BUILD";
13
- /** One release of a kind's code, as the publish flow stores it (#2297). */
14
- export interface StoreKindReleaseArtifact extends PythonStoreKindRelease {
13
+ /** One release of a driver's code, as the publish flow stores it (#2297). */
14
+ export interface StoreDriverReleaseArtifact extends PythonStoreDriverRelease {
15
15
  /** The commit the bundle was built from. A reviewer reads it; the upload checks the sha256. */
16
16
  readonly sourceCommit: string;
17
17
  /**
@@ -28,24 +28,32 @@ export interface ScopeStoreEnsurerOptions {
28
28
  callerPublicKeys: readonly string[];
29
29
  /** The `platform` audience's public keys, in the same form. Never one of the caller's. */
30
30
  platformPublicKeys: readonly string[];
31
- kinds?: readonly StoreKindRegistration[];
31
+ drivers?: readonly StoreDriverRegistration[];
32
32
  /**
33
33
  * A release's bytes. With `sha256`, that release: the one the script runs, or the one a
34
- * rollout moves it to. Without it, the kind's current good release (#2300). Undefined when
34
+ * rollout moves it to. Without it, the driver's current good release (#2300). Undefined when
35
35
  * there is none.
36
36
  */
37
37
  loadRelease: (input: {
38
- readonly kind: string;
38
+ readonly driver: string;
39
39
  readonly vertical: string;
40
40
  readonly sha256?: string;
41
- }) => Promise<StoreKindReleaseArtifact | undefined>;
41
+ }) => Promise<StoreDriverReleaseArtifact | undefined>;
42
42
  }
43
43
  /**
44
- * Put every (kind, vertical) store script a vertical's stores need in place, before the
44
+ * What the platform builds every store script from, as one digest (#2309): the entry, its
45
+ * verifier, the compatibility date and flags, and both key lists. It is the build digest of one
46
+ * fixed probe release, so it changes exactly when the platform's half of every script's build
47
+ * changes (a key added, dropped or revoked, an entry or verifier fix) and never when a driver's
48
+ * release does. The fleet rebuild converges every script on it.
49
+ */
50
+ export declare function storePlatformFingerprint(keys: Pick<ScopeStoreEnsurerOptions, 'callerPublicKeys' | 'platformPublicKeys'>): Promise<string>;
51
+ /**
52
+ * Put every (driver, vertical) store script a vertical's stores need in place, before the
45
53
  * vertical's own upload (#2210, D-63). A push or a serve never moves a script to another
46
54
  * release: only a rollout or a rollback does (#2300), and it says so with `to`.
47
55
  *
48
- * - No `to`, no script yet: it is uploaded at the kind's current good release.
56
+ * - No `to`, no script yet: it is uploaded at the driver's current good release.
49
57
  * - No `to`, a script: it is rebuilt at the release it already runs, and uploaded again only when
50
58
  * what it was built from changed (the platform's entry, the verifier, a key list, a flag), so a
51
59
  * fix or a key rotation reaches it without a release moving.
@@ -53,7 +61,7 @@ export interface ScopeStoreEnsurerOptions {
53
61
  * same way. Re-running a rollout therefore converges and uploads nothing twice.
54
62
  *
55
63
  * Every upload hashes the module bytes it is about to send and refuses (422) bytes whose
56
- * sha256 the kind's registration does not pin, or that are not the release asked for. A kind
64
+ * sha256 the driver's registration does not pin, or that are not the release asked for. A driver
57
65
  * with no release to run is refused (409). A script is never moved to a release whose pinned
58
66
  * `schema` is lower than that of the release it runs (409): its objects may have migrated. The
59
67
  * runtime's own failures are 502. Answers how many scripts were uploaded.
@@ -62,19 +70,29 @@ export declare function createScopeStoreEnsurer(opts: ScopeStoreEnsurerOptions):
62
70
  vertical: string;
63
71
  stores: readonly ScopeStoreNeed[];
64
72
  to?: string;
73
+ /** The fleet rebuild (#2309): a script that does not exist is left alone, never uploaded. */
74
+ existingOnly?: boolean;
65
75
  }) => Promise<{
66
76
  uploaded: number;
67
77
  }>;
68
78
  /**
69
- * Put a kind's release in the platform's canary script (D-63, #2300), where it is canaried
70
- * before any vertical's script moves: `scopeStoreCanaryScriptName(kind)`, built and checked as a
79
+ * Put a driver's release in the platform's canary script (D-63, #2300), where it is canaried
80
+ * before any vertical's script moves: `scopeStoreCanaryScriptName(driver)`, built and checked as a
71
81
  * vertical's script is, except that it may move to a lower `schema`: every canary object is fresh
72
- * and wiped, so none holds migrated data. Answers the script's name.
82
+ * and wiped, so none holds migrated data. With `existingOnly` instead of `to`, the fleet rebuild
83
+ * (#2309): the canary script is rebuilt at the release it runs, and left alone when there is none.
84
+ * Answers the script's name and whether it was uploaded.
73
85
  */
74
- export declare function createStoreCanaryEnsurer(opts: ScopeStoreEnsurerOptions): (input: {
75
- kind: string;
76
- to: string;
77
- }) => Promise<{
86
+ export declare function createStoreCanaryEnsurer(opts: ScopeStoreEnsurerOptions): (input: StoreCanaryTarget) => Promise<{
78
87
  scriptName: string;
88
+ uploaded: boolean;
79
89
  }>;
90
+ /** Where the canary script goes: to a release (a rollout), or rebuilt where it is (the fleet rebuild). */
91
+ export type StoreCanaryTarget = {
92
+ driver: string;
93
+ to: string;
94
+ } | {
95
+ driver: string;
96
+ existingOnly: true;
97
+ };
80
98
  //# sourceMappingURL=store-script.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store-script.d.ts","sourceRoot":"","sources":["../src/store-script.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAE3B,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAwB,KAAK,sBAAsB,EAA0B,MAAM,kBAAkB,CAAC;AAE7G;;;GAGG;AACH,eAAO,MAAM,iBAAiB,2BAA6C,CAAC;AAE5E;;;GAGG;AACH,eAAO,MAAM,eAAe,yBAA2C,CAAC;AAExE,2EAA2E;AAC3E,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;IACtE,+FAA+F;IAC/F,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gGAAgG;IAChG,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,0FAA0F;IAC1F,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACzC;;;;OAIG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE;QACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;KAC1B,KAAK,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAAC;CACrD;AAYD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,wBAAwB,WAE/C;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAM1H;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,wBAAwB,WAEhD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAWpF"}
1
+ {"version":3,"file":"store-script.d.ts","sourceRoot":"","sources":["../src/store-script.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAE7B,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAwB,KAAK,wBAAwB,EAA0B,MAAM,kBAAkB,CAAC;AAE/G;;;GAGG;AACH,eAAO,MAAM,iBAAiB,2BAA6C,CAAC;AAE5E;;;GAGG;AACH,eAAO,MAAM,eAAe,yBAA2C,CAAC;AAExE,6EAA6E;AAC7E,MAAM,WAAW,0BAA2B,SAAQ,wBAAwB;IAC1E,+FAA+F;IAC/F,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gGAAgG;IAChG,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,0FAA0F;IAC1F,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,OAAO,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC7C;;;;OAIG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE;QACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;KAC1B,KAAK,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;CACvD;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,wBAAwB,EAAE,kBAAkB,GAAG,oBAAoB,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ/I;AAYD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,wBAAwB,WAE/C;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6FAA6F;IAC7F,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,KAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAMlC;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,wBAAwB,WAEhD,iBAAiB,KAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAW5F;AAED,0GAA0G;AAC1G,MAAM,MAAM,iBAAiB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,IAAI,CAAA;CAAE,CAAC"}