@orkestrel/scaffold 0.0.39 → 0.0.40

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.
@@ -688,6 +688,29 @@ and propagates as files rather than as a cascade.
688
688
  target. Scope a fleet-wide refactor to the files each target owns, and record the vendored
689
689
  exclusion in the brief rather than letting each unit rediscover it.
690
690
 
691
+ ### The release wave
692
+
693
+ Close a fleet-wide "everything on latest" goal as a release wave in layer order: visit every repo
694
+ once per round with one procedure, publish each layer in one window, and only then prepare the next.
695
+
696
+ - The visit, in order: re-pin the target's `@orkestrel/scaffold` devDependency and install, so the
697
+ overwrite runs the current vendored host; `scaffold overwrite`; force-verify every `@orkestrel`
698
+ range against a registry sweep taken after the previous layer published; full install; mutating
699
+ `format` to converge generated writes; the five gates; the material-dist comparison against the
700
+ published tarball.
701
+ - Bump on either trigger: the rebuilt dist differs materially from the published tarball, or the
702
+ final runtime dependency set differs from the published packument. Test the final set against the
703
+ packument, never "did my step move a pin" — overwrite's `declare` re-pins before any later check,
704
+ so the step-local reading reports nothing moved while the manifest surface did. A re-pinned
705
+ runtime range is published surface: without the bump a consumer installs two copies of the moved
706
+ dependency.
707
+ - A dist built before the version bump is the release artifact; the bump edits no emitted byte.
708
+ - Refresh the registry evidence between layers and derive each round's pins from it. A pin can only
709
+ name a version the registry already serves, so a dependency shipping in the same window keeps the
710
+ resolvable previous pin and takes its dev-only re-pin after the window closes.
711
+ - Run visits in parallel slices of disjoint repos, each slice strictly serial inside itself,
712
+ reporting per-target. Refuse a failed target, name it, repair, and re-run it alone.
713
+
691
714
  ### Preparing
692
715
 
693
716
  1. **Bump from what the registry serves, not from the local manifest.** A repository's `version`
@@ -745,8 +768,16 @@ flag is what stops the gate chain running a second time inside the five minutes.
745
768
 
746
769
  ### Spending the window
747
770
 
748
- - The window opens when the user approves, not when the first publish starts. Chain every remaining
749
- publish inside the same process as the gate package, so no human turn sits inside it.
771
+ - The window opens when the user approves, not when the first publish starts. Open each layer with
772
+ one package: publish it alone, surface its approval URL the moment the journal shows it, and
773
+ confirm the upload from the registry before starting the rest. Then chase the remaining uploads
774
+ back-to-back in one process with no gap — an upload started within seconds of an approval
775
+ frequently rides that approval, and each one that does not mints its own URL. Relay every new URL
776
+ to the user the moment it appears, through a journal watcher, and never pause the chain to wait
777
+ for a click: a poll outlives the relay.
778
+ - A click on a superseded URL poisons the live attempt — the current poll fails
779
+ `403 Forbidden - GET /-/v1/done` mid-flight. Tell the user to click only the newest URL. After
780
+ any such 403, confirm no publish process is live, then mint one fresh attempt.
750
781
  - Publish serially. Concurrent publishes collide on the auth handshake and fail each other.
751
782
  - **Never retry a publish that is still waiting for its authorization.** Each `npm publish` attempt
752
783
  mints a new `authId` and invalidates the previous one, so a retry loop makes the URL a moving
@@ -305,7 +305,7 @@ var DEFAULT_ENGINES = `>=${MINIMUM_NODE_VERSION}`;
305
305
  /** The tooling versions scaffold and every generated workspace share. */
306
306
  var BASE_DEV_DEPENDENCIES = Object.freeze({
307
307
  "@orkestrel/guide": "^0.0.12",
308
- "@orkestrel/scaffold": "^0.0.39",
308
+ "@orkestrel/scaffold": "^0.0.40",
309
309
  "@orkestrel/test": "^0.0.6",
310
310
  "@types/node": "^26.2.0",
311
311
  oxfmt: "^0.62.0",