@git.zone/cli 6.0.1 → 6.1.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.
@@ -1,6 +1,7 @@
1
1
  import * as plugins from "./mod.plugins.js";
2
- import { ReleaseJournalStore, type IReleaseJournal } from "./classes.releasejournal.js";
2
+ import { ReleaseJournalStore, type TReleaseJournal } from "./classes.releasejournal.js";
3
3
  import { type INpmArtifactProbeOptions } from "./helpers.npmartifact.js";
4
+ import { type ITsdockerReleaseClient } from "./helpers.tsdockerprotocol.js";
4
5
  export interface IBuildReleaseGitPushArgsOptions {
5
6
  destination: string;
6
7
  newVersion: string;
@@ -15,10 +16,11 @@ export interface IReleasePublicationOptions {
15
16
  smartshell: plugins.smartshell.Smartshell;
16
17
  cwd: string;
17
18
  store: ReleaseJournalStore;
18
- journal: IReleaseJournal;
19
+ journal: TReleaseJournal;
19
20
  pushUrl?: string;
20
21
  recoveryAttemptId?: string;
21
22
  npmProbeOptions?: INpmArtifactProbeOptions;
23
+ tsdocker?: ITsdockerReleaseClient;
22
24
  ensurePublicationState: (expectedRemoteMainOidArg?: string) => Promise<void>;
23
25
  }
24
- export declare const executeReleasePublication: (optionsArg: IReleasePublicationOptions) => Promise<IReleaseJournal>;
26
+ export declare const executeReleasePublication: (optionsArg: IReleasePublicationOptions) => Promise<TReleaseJournal>;
@@ -1,7 +1,8 @@
1
1
  import * as plugins from "./mod.plugins.js";
2
- import { ReleaseJournalStore, createReleaseAttempt, finalizeJournalCompletion, } from "./classes.releasejournal.js";
2
+ import { ReleaseJournalStore, createReleaseAttempt, createReleaseDockerPromotions, finalizeJournalCompletion, getReleaseDockerPromotionContext, } from "./classes.releasejournal.js";
3
3
  import { probeAnonymousNpmArtifact, publishNpmArtifact, verifyStoredNpmArtifact, waitForAnonymousNpmArtifact, } from "./helpers.npmartifact.js";
4
4
  import { releaseGitEnv } from "./helpers.releasebranch.js";
5
+ import { TsdockerReleaseCommandError, TsdockerReleaseRequestCleanupError, assertReleaseCleanupResult, assertReleaseProbeResult, assertReleasePromotionResult, assertReleaseQualificationResult, classifyReleasePromotionEvidence, } from "./helpers.tsdockerprotocol.js";
5
6
  const gitProbeTimeoutMs = 60_000;
6
7
  const gitPushTimeoutMs = 5 * 60_000;
7
8
  export function buildReleaseGitPushArgs(optionsArg) {
@@ -26,6 +27,28 @@ const getTargetStatus = (journalArg, selectorArg) => {
26
27
  if (selectorArg.kind === "git") {
27
28
  return journalArg.git;
28
29
  }
30
+ if (selectorArg.kind === "docker-qualification") {
31
+ if (journalArg.schemaVersion !== 2) {
32
+ throw new Error("Release journal does not contain Docker qualification.");
33
+ }
34
+ return journalArg.docker.qualification;
35
+ }
36
+ if (selectorArg.kind === "docker-cleanup") {
37
+ if (journalArg.schemaVersion !== 2) {
38
+ throw new Error("Release journal does not contain Docker cleanup.");
39
+ }
40
+ return journalArg.docker.cleanup;
41
+ }
42
+ if (selectorArg.kind === "docker-promotion") {
43
+ if (journalArg.schemaVersion !== 2) {
44
+ throw new Error("Release journal does not contain Docker promotions.");
45
+ }
46
+ const promotion = journalArg.docker.promotions.find((promotionArg) => promotionArg.promotionId === selectorArg.promotionId);
47
+ if (!promotion) {
48
+ throw new Error(`Release journal does not contain Docker promotion ${selectorArg.promotionId}.`);
49
+ }
50
+ return promotion;
51
+ }
29
52
  const registry = journalArg.npm.registries.find((registryArg) => registryArg.registry === selectorArg.registry);
30
53
  if (!registry) {
31
54
  throw new Error(`Release journal does not contain npm registry ${selectorArg.registry}.`);
@@ -80,13 +103,7 @@ const recoverPublishingTarget = async (storeArg, journalArg, selectorArg, recove
80
103
  };
81
104
  const inspectRemoteRelease = async (smartshellArg, cwdArg, destinationArg, journalArg) => {
82
105
  const tagRef = `refs/tags/${journalArg.release.tag}`;
83
- const result = await smartshellArg.execSpawn("git", [
84
- "ls-remote",
85
- destinationArg,
86
- "refs/heads/main",
87
- tagRef,
88
- `${tagRef}^{}`,
89
- ], {
106
+ const result = await smartshellArg.execSpawn("git", ["ls-remote", destinationArg, "refs/heads/main", tagRef, `${tagRef}^{}`], {
90
107
  cwd: cwdArg,
91
108
  env: releaseGitEnv,
92
109
  silent: true,
@@ -197,9 +214,7 @@ const executeGitTarget = async (optionsArg, journalArg) => {
197
214
  await finishPublishingTarget(optionsArg.store, journal, selector, "conflict", "destination-conflict");
198
215
  throw new Error("Git publication produced conflicting remote refs.");
199
216
  }
200
- await finishPublishingTarget(optionsArg.store, journal, selector, "failed", pushResult.exitCode === 0
201
- ? "verification-inconclusive"
202
- : "command-failed");
217
+ await finishPublishingTarget(optionsArg.store, journal, selector, "failed", pushResult.exitCode === 0 ? "verification-inconclusive" : "command-failed");
203
218
  throw new Error("Git publication did not produce verifiable remote refs.");
204
219
  };
205
220
  const probeNpm = async (journalArg, registryArg, optionsArg, waitArg = false) => {
@@ -215,7 +230,10 @@ const markNpmProbeFailure = async (optionsArg, journalArg, selectorArg, expected
215
230
  return markUnclaimedTarget(optionsArg.store, journalArg, selectorArg, expectedStatesArg, conflict ? "conflict" : "failed", conflict ? "artifact-conflict" : "verification-inconclusive");
216
231
  };
217
232
  const executeNpmRegistry = async (optionsArg, journalArg, registryArg) => {
218
- const selector = { kind: "npm", registry: registryArg };
233
+ const selector = {
234
+ kind: "npm",
235
+ registry: registryArg,
236
+ };
219
237
  let journal = journalArg;
220
238
  let status = getTargetStatus(journal, selector);
221
239
  let probe = await probeNpm(journal, registryArg, optionsArg);
@@ -278,8 +296,356 @@ const executeNpmRegistry = async (optionsArg, journalArg, registryArg) => {
278
296
  : "command-failed");
279
297
  throw new Error(`npm publication could not be verified: ${registryArg}`);
280
298
  };
299
+ const requireTsdocker = (optionsArg) => {
300
+ if (!optionsArg.tsdocker) {
301
+ throw new Error("Docker release journal requires the verified project-local tSDocker protocol client.");
302
+ }
303
+ return optionsArg.tsdocker;
304
+ };
305
+ const getDockerRequestDirectory = (optionsArg, journalArg) => optionsArg.store.getReleaseDirectory(journalArg.release.version);
306
+ const assertDockerRecoveryAttempt = (statusArg, recoveryAttemptIdArg) => {
307
+ const attemptId = statusArg.attempt?.id;
308
+ if (!attemptId || recoveryAttemptIdArg !== attemptId) {
309
+ throw new Error(`Release target has unresolved publication attempt ${attemptId || "unknown"}. ` +
310
+ `After proving its publisher stopped, retry with --recover-attempt=${attemptId || "<attempt-id>"}.`);
311
+ }
312
+ return attemptId;
313
+ };
314
+ const reclaimDockerRequestOwnership = async (optionsArg, journalArg, statusArg) => {
315
+ const attemptId = assertDockerRecoveryAttempt(statusArg, optionsArg.recoveryAttemptId);
316
+ await requireTsdocker(optionsArg).reclaimRequestFiles(getDockerRequestDirectory(optionsArg, journalArg), [attemptId]);
317
+ return attemptId;
318
+ };
319
+ const recoverRequestCleanupOutcome = async (optionsArg, journalArg, ownerIdArg, errorArg, assertResultArg) => {
320
+ if (!(errorArg instanceof TsdockerReleaseRequestCleanupError)) {
321
+ throw errorArg;
322
+ }
323
+ try {
324
+ await requireTsdocker(optionsArg).reclaimRequestFiles(getDockerRequestDirectory(optionsArg, journalArg), [ownerIdArg]);
325
+ }
326
+ catch (reclamationError) {
327
+ errorArg.reclamationError = reclamationError;
328
+ throw errorArg;
329
+ }
330
+ if (errorArg.result !== undefined) {
331
+ return assertResultArg(errorArg.result);
332
+ }
333
+ if (errorArg.commandError !== undefined) {
334
+ throw errorArg.commandError;
335
+ }
336
+ throw errorArg;
337
+ };
338
+ const finishDockerQualification = async (optionsArg, journalArg, resultArg, stateArg, errorArg) => {
339
+ const attemptId = journalArg.docker.qualification.attempt?.id;
340
+ if (!attemptId) {
341
+ throw new Error("Docker qualification has no active publication attempt.");
342
+ }
343
+ return (await optionsArg.store.transact(journalArg.release.version, journalArg.revision, (currentArg) => {
344
+ if (currentArg.schemaVersion !== 2) {
345
+ throw new Error("Docker qualification requires journal schema 2.");
346
+ }
347
+ const qualification = currentArg.docker.qualification;
348
+ if (qualification.state !== "publishing" ||
349
+ qualification.attempt?.id !== attemptId) {
350
+ throw new Error("Docker qualification ownership changed concurrently.");
351
+ }
352
+ qualification.state = stateArg;
353
+ qualification.attempt = null;
354
+ qualification.error = errorArg;
355
+ qualification.result = resultArg;
356
+ if (resultArg) {
357
+ currentArg.docker.promotions = createReleaseDockerPromotions(resultArg);
358
+ }
359
+ return finalizeJournalCompletion(currentArg);
360
+ }));
361
+ };
362
+ const finishDockerCleanup = async (optionsArg, journalArg, resultArg) => {
363
+ const attemptId = journalArg.docker.cleanup.attempt?.id;
364
+ if (!attemptId) {
365
+ throw new Error("Docker cleanup has no active publication attempt.");
366
+ }
367
+ return (await optionsArg.store.transact(journalArg.release.version, journalArg.revision, (currentArg) => {
368
+ if (currentArg.schemaVersion !== 2) {
369
+ throw new Error("Docker cleanup requires journal schema 2.");
370
+ }
371
+ const cleanup = currentArg.docker.cleanup;
372
+ if (cleanup.state !== "publishing" || cleanup.attempt?.id !== attemptId) {
373
+ throw new Error("Docker cleanup ownership changed concurrently.");
374
+ }
375
+ cleanup.state = "verified";
376
+ cleanup.attempt = null;
377
+ cleanup.error = null;
378
+ cleanup.result = resultArg;
379
+ return finalizeJournalCompletion(currentArg);
380
+ }));
381
+ };
382
+ const runClaimedDockerCleanup = async (optionsArg, journalArg) => {
383
+ const client = requireTsdocker(optionsArg);
384
+ const ownerId = journalArg.docker.cleanup.attempt?.id;
385
+ if (!ownerId) {
386
+ throw new Error("Docker cleanup has no active publication attempt.");
387
+ }
388
+ let result;
389
+ try {
390
+ result = await client.cleanup(journalArg.docker.request, getDockerRequestDirectory(optionsArg, journalArg), ownerId);
391
+ }
392
+ catch (error) {
393
+ result = await recoverRequestCleanupOutcome(optionsArg, journalArg, ownerId, error, (valueArg) => assertReleaseCleanupResult(valueArg, journalArg.docker.request));
394
+ }
395
+ return finishDockerCleanup(optionsArg, journalArg, result);
396
+ };
397
+ const executeDockerCleanup = async (optionsArg, journalArg) => {
398
+ let journal = journalArg;
399
+ if (journal.docker.cleanup.state === "verified")
400
+ return journal;
401
+ const qualificationConflict = journal.docker.qualification.state === "conflict" &&
402
+ journal.docker.qualification.error === "destination-conflict" &&
403
+ journal.docker.promotions.length === 0;
404
+ const promotionsVerified = journal.docker.promotions.length > 0 &&
405
+ journal.docker.promotions.every((promotionArg) => promotionArg.state === "verified");
406
+ if (!qualificationConflict && !promotionsVerified) {
407
+ throw new Error("Docker candidate cleanup requires verified promotions or a terminal qualification conflict.");
408
+ }
409
+ if (journal.docker.cleanup.state === "publishing") {
410
+ await reclaimDockerRequestOwnership(optionsArg, journal, journal.docker.cleanup);
411
+ journal = (await finishPublishingTarget(optionsArg.store, journal, { kind: "docker-cleanup" }, "failed", "attempt-recovery-required"));
412
+ }
413
+ if (journal.docker.cleanup.state === "conflict") {
414
+ throw new Error("Docker cleanup is in conflict.");
415
+ }
416
+ if (!qualificationConflict) {
417
+ await optionsArg.ensurePublicationState(journal.release.mainOid);
418
+ }
419
+ journal = (await claimTarget(optionsArg.store, journal, {
420
+ kind: "docker-cleanup",
421
+ }));
422
+ return runClaimedDockerCleanup(optionsArg, journal);
423
+ };
424
+ const cleanupIncompleteQualificationPreparation = async (optionsArg, journalArg) => {
425
+ const ownerId = journalArg.docker.qualification.attempt?.id;
426
+ if (!ownerId) {
427
+ throw new Error("Docker qualification has no active publication attempt.");
428
+ }
429
+ const client = requireTsdocker(optionsArg);
430
+ try {
431
+ await client.cleanup(journalArg.docker.request, getDockerRequestDirectory(optionsArg, journalArg), ownerId);
432
+ }
433
+ catch (error) {
434
+ await recoverRequestCleanupOutcome(optionsArg, journalArg, ownerId, error, (valueArg) => assertReleaseCleanupResult(valueArg, journalArg.docker.request));
435
+ }
436
+ };
437
+ const runClaimedDockerQualification = async (optionsArg, journalArg, incompletePreparationCleanupAvailableArg) => {
438
+ const client = requireTsdocker(optionsArg);
439
+ const ownerId = journalArg.docker.qualification.attempt?.id;
440
+ if (!ownerId) {
441
+ throw new Error("Docker qualification has no active publication attempt.");
442
+ }
443
+ let result;
444
+ try {
445
+ result = await client.qualify(journalArg.docker.request, getDockerRequestDirectory(optionsArg, journalArg), ownerId);
446
+ }
447
+ catch (error) {
448
+ try {
449
+ result = await recoverRequestCleanupOutcome(optionsArg, journalArg, ownerId, error, (valueArg) => assertReleaseQualificationResult(valueArg, journalArg.docker.request));
450
+ }
451
+ catch (commandError) {
452
+ if (commandError instanceof TsdockerReleaseCommandError &&
453
+ commandError.code === "DESTINATION_DIGEST_CONFLICT") {
454
+ return finishDockerQualification(optionsArg, journalArg, null, "conflict", "destination-conflict");
455
+ }
456
+ if (incompletePreparationCleanupAvailableArg &&
457
+ commandError instanceof TsdockerReleaseCommandError &&
458
+ commandError.code === "RECOVERY_REQUIRED") {
459
+ await cleanupIncompleteQualificationPreparation(optionsArg, journalArg);
460
+ let journal = (await finishPublishingTarget(optionsArg.store, journalArg, { kind: "docker-qualification" }, "failed", "attempt-recovery-required"));
461
+ journal = (await claimTarget(optionsArg.store, journal, {
462
+ kind: "docker-qualification",
463
+ }));
464
+ return runClaimedDockerQualification(optionsArg, journal, false);
465
+ }
466
+ throw commandError;
467
+ }
468
+ }
469
+ return finishDockerQualification(optionsArg, journalArg, result, "verified", null);
470
+ };
471
+ const executeDockerQualification = async (optionsArg, journalArg) => {
472
+ let journal = journalArg;
473
+ if (journal.docker.qualification.state === "verified") {
474
+ return journal;
475
+ }
476
+ if (journal.docker.qualification.state === "conflict") {
477
+ await executeDockerCleanup(optionsArg, journal);
478
+ throw new Error("Docker qualification destination conflict is terminal; the candidate was cleaned and Git/npm publication was not attempted.");
479
+ }
480
+ if (journal.docker.qualification.state === "publishing") {
481
+ await reclaimDockerRequestOwnership(optionsArg, journal, journal.docker.qualification);
482
+ journal = (await finishPublishingTarget(optionsArg.store, journal, { kind: "docker-qualification" }, "failed", "attempt-recovery-required"));
483
+ }
484
+ await optionsArg.ensurePublicationState(journal.git.expectedRemoteMainOid || undefined);
485
+ journal = (await claimTarget(optionsArg.store, journal, {
486
+ kind: "docker-qualification",
487
+ }));
488
+ journal = await runClaimedDockerQualification(optionsArg, journal, true);
489
+ if (journal.docker.qualification.state === "conflict") {
490
+ await executeDockerCleanup(optionsArg, journal);
491
+ throw new Error("Docker qualification destination conflict is terminal; the candidate was cleaned and Git/npm publication was not attempted.");
492
+ }
493
+ return journal;
494
+ };
495
+ const recordDockerPromotion = async (optionsArg, journalArg, promotionIdArg, expectedStatesArg, expectedAttemptIdArg, stateArg, errorArg, evidenceArg) => (await optionsArg.store.transact(journalArg.release.version, journalArg.revision, (currentArg) => {
496
+ if (currentArg.schemaVersion !== 2) {
497
+ throw new Error("Docker promotion requires journal schema 2.");
498
+ }
499
+ const promotion = currentArg.docker.promotions.find((promotionArg) => promotionArg.promotionId === promotionIdArg);
500
+ if (!promotion ||
501
+ !expectedStatesArg.includes(promotion.state) ||
502
+ (promotion.attempt?.id || null) !== expectedAttemptIdArg) {
503
+ throw new Error("Docker promotion ownership changed concurrently.");
504
+ }
505
+ promotion.state = stateArg;
506
+ promotion.attempt = null;
507
+ promotion.error = errorArg;
508
+ if (evidenceArg)
509
+ promotion.evidence.push(evidenceArg);
510
+ return finalizeJournalCompletion(currentArg);
511
+ }));
512
+ const probeDockerPromotion = async (optionsArg, journalArg, promotionIdArg, ownerIdArg) => {
513
+ const context = getReleaseDockerPromotionContext(journalArg, promotionIdArg);
514
+ try {
515
+ return await requireTsdocker(optionsArg).probe(journalArg.docker.request, context, ownerIdArg
516
+ ? getDockerRequestDirectory(optionsArg, journalArg)
517
+ : undefined, ownerIdArg);
518
+ }
519
+ catch (error) {
520
+ if (!ownerIdArg)
521
+ throw error;
522
+ return recoverRequestCleanupOutcome(optionsArg, journalArg, ownerIdArg, error, (valueArg) => assertReleaseProbeResult(valueArg, journalArg.docker.request, context));
523
+ }
524
+ };
525
+ const executeDockerPromotion = async (optionsArg, journalArg, promotionIdArg) => {
526
+ let journal = journalArg;
527
+ let promotion = journal.docker.promotions.find((promotionArg) => promotionArg.promotionId === promotionIdArg);
528
+ if (!promotion) {
529
+ throw new Error(`Docker promotion ${promotionIdArg} is not journaled.`);
530
+ }
531
+ if (promotion.state === "conflict") {
532
+ throw new Error(`Docker promotion ${promotionIdArg} is in conflict.`);
533
+ }
534
+ if (promotion.state === "verified") {
535
+ const probe = await probeDockerPromotion(optionsArg, journal, promotionIdArg);
536
+ const classification = classifyReleasePromotionEvidence(probe);
537
+ if (classification === "exact")
538
+ return journal;
539
+ if (classification === "inconclusive") {
540
+ throw new Error(`Previously verified Docker promotion cannot currently be verified: ${promotionIdArg}`);
541
+ }
542
+ await recordDockerPromotion(optionsArg, journal, promotionIdArg, ["verified"], null, "conflict", "destination-conflict", probe);
543
+ throw new Error(`Previously verified Docker promotion drifted: ${promotionIdArg}`);
544
+ }
545
+ let recoveredPublishingAttempt = false;
546
+ if (promotion.state === "publishing") {
547
+ await reclaimDockerRequestOwnership(optionsArg, journal, promotion);
548
+ recoveredPublishingAttempt = true;
549
+ }
550
+ else {
551
+ await optionsArg.ensurePublicationState(journal.release.mainOid);
552
+ journal = (await claimTarget(optionsArg.store, journal, {
553
+ kind: "docker-promotion",
554
+ promotionId: promotionIdArg,
555
+ }));
556
+ promotion = journal.docker.promotions.find((promotionArg) => promotionArg.promotionId === promotionIdArg);
557
+ }
558
+ let attemptId = promotion.attempt?.id;
559
+ if (!attemptId) {
560
+ throw new Error("Docker promotion has no active publication attempt.");
561
+ }
562
+ let probe;
563
+ try {
564
+ probe = await probeDockerPromotion(optionsArg, journal, promotionIdArg, attemptId);
565
+ }
566
+ catch (error) {
567
+ throw error;
568
+ }
569
+ let classification = classifyReleasePromotionEvidence(probe);
570
+ if (classification === "exact") {
571
+ return recordDockerPromotion(optionsArg, journal, promotionIdArg, ["publishing"], attemptId, "verified", null, probe);
572
+ }
573
+ if (classification === "conflict") {
574
+ await recordDockerPromotion(optionsArg, journal, promotionIdArg, ["publishing"], attemptId, "conflict", "destination-conflict", probe);
575
+ throw new Error(`Docker promotion conflicted: ${promotionIdArg}`);
576
+ }
577
+ if (classification === "inconclusive") {
578
+ if (!recoveredPublishingAttempt) {
579
+ await recordDockerPromotion(optionsArg, journal, promotionIdArg, ["publishing"], attemptId, "failed", "verification-inconclusive");
580
+ }
581
+ throw new Error(`Docker promotion probe is inconclusive: ${promotionIdArg}`);
582
+ }
583
+ if (recoveredPublishingAttempt) {
584
+ journal = (await finishPublishingTarget(optionsArg.store, journal, { kind: "docker-promotion", promotionId: promotionIdArg }, "failed", "attempt-recovery-required"));
585
+ promotion = journal.docker.promotions.find((promotionArg) => promotionArg.promotionId === promotionIdArg);
586
+ await optionsArg.ensurePublicationState(journal.release.mainOid);
587
+ journal = (await claimTarget(optionsArg.store, journal, {
588
+ kind: "docker-promotion",
589
+ promotionId: promotionIdArg,
590
+ }));
591
+ promotion = journal.docker.promotions.find((promotionArg) => promotionArg.promotionId === promotionIdArg);
592
+ attemptId = promotion.attempt.id;
593
+ }
594
+ const context = getReleaseDockerPromotionContext(journal, promotionIdArg);
595
+ let result;
596
+ try {
597
+ result = await requireTsdocker(optionsArg).promote(journal.docker.request, context, getDockerRequestDirectory(optionsArg, journal), attemptId);
598
+ }
599
+ catch (error) {
600
+ let commandError = error;
601
+ if (error instanceof TsdockerReleaseRequestCleanupError) {
602
+ try {
603
+ result = await recoverRequestCleanupOutcome(optionsArg, journal, attemptId, error, (valueArg) => assertReleasePromotionResult(valueArg, journal.docker.request, context));
604
+ commandError = undefined;
605
+ }
606
+ catch (recoveredError) {
607
+ commandError = recoveredError;
608
+ }
609
+ }
610
+ if (commandError instanceof TsdockerReleaseRequestCleanupError &&
611
+ commandError.reclamationError !== undefined) {
612
+ throw commandError;
613
+ }
614
+ if (commandError === undefined) {
615
+ classification = classifyReleasePromotionEvidence(result);
616
+ }
617
+ else {
618
+ try {
619
+ const reconciliation = await probeDockerPromotion(optionsArg, journal, promotionIdArg, attemptId);
620
+ const reconciled = classifyReleasePromotionEvidence(reconciliation);
621
+ if (reconciled === "exact") {
622
+ return recordDockerPromotion(optionsArg, journal, promotionIdArg, ["publishing"], attemptId, "verified", null, reconciliation);
623
+ }
624
+ if (reconciled === "conflict") {
625
+ await recordDockerPromotion(optionsArg, journal, promotionIdArg, ["publishing"], attemptId, "conflict", "destination-conflict", reconciliation);
626
+ }
627
+ }
628
+ catch {
629
+ // Preserve publishing ownership when post-command reconciliation is unavailable.
630
+ }
631
+ throw commandError;
632
+ }
633
+ }
634
+ classification = classifyReleasePromotionEvidence(result);
635
+ if (classification === "exact") {
636
+ return recordDockerPromotion(optionsArg, journal, promotionIdArg, ["publishing"], attemptId, "verified", null, result);
637
+ }
638
+ if (classification === "conflict") {
639
+ await recordDockerPromotion(optionsArg, journal, promotionIdArg, ["publishing"], attemptId, "conflict", "destination-conflict", result);
640
+ throw new Error(`Docker promotion conflicted: ${promotionIdArg}`);
641
+ }
642
+ throw new Error(`Docker promotion outcome is inconclusive: ${promotionIdArg}`);
643
+ };
281
644
  export const executeReleasePublication = async (optionsArg) => {
282
645
  let journal = optionsArg.journal;
646
+ if (journal.schemaVersion === 2) {
647
+ journal = await executeDockerQualification(optionsArg, journal);
648
+ }
283
649
  journal = await executeGitTarget(optionsArg, journal);
284
650
  const expectedRemoteMainOid = journal.git.state === "verified"
285
651
  ? journal.release.mainOid
@@ -288,6 +654,13 @@ export const executeReleasePublication = async (optionsArg) => {
288
654
  await optionsArg.ensurePublicationState(expectedRemoteMainOid);
289
655
  journal = await executeNpmRegistry(optionsArg, journal, registry.registry);
290
656
  }
657
+ if (journal.schemaVersion === 2 &&
658
+ journal.docker.cleanup.state !== "verified") {
659
+ for (const promotion of journal.docker.promotions) {
660
+ journal = await executeDockerPromotion(optionsArg, journal, promotion.promotionId);
661
+ }
662
+ journal = await executeDockerCleanup(optionsArg, journal);
663
+ }
291
664
  return journal;
292
665
  };
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5yZWxlYXNlcHVibGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9tb2RfcmVsZWFzZS9oZWxwZXJzLnJlbGVhc2VwdWJsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLHlCQUF5QixHQUsxQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QiwyQkFBMkIsR0FHNUIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUM7QUFDakMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBWXBDLE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsVUFBMkM7SUFFM0MsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO0lBQzlCLElBQUksVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QixRQUFRLENBQUMsSUFBSSxDQUNYLEdBQUcsVUFBVSxDQUFDLE1BQU0sZUFBZSxVQUFVLENBQUMsVUFBVSxFQUFFLENBQzNELENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUMxQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxV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
666
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5yZWxlYXNlcHVibGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9tb2RfcmVsZWFzZS9oZWxwZXJzLnJlbGVhc2VwdWJsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLDZCQUE2QixFQUM3Qix5QkFBeUIsRUFDekIsZ0NBQWdDLEdBTWpDLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLDJCQUEyQixHQUc1QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQywwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLDRCQUE0QixFQUM1QixnQ0FBZ0MsRUFDaEMsZ0NBQWdDLEdBSWpDLE1BQU0sK0JBQStCLENBQUM7QUFFdkMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUM7QUFDakMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBWXBDLE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsVUFBMkM7SUFFM0MsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO0lBQzlCLElBQUksVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QixRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sZUFBZSxVQUFVLENBQUMsVUFBVSxF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