rampway 0.5.19 → 0.5.21
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.
- package/README.md +52 -10
- package/build/src/config/validate-config.d.ts.map +1 -1
- package/build/src/config/validate-config.js +3 -1
- package/build/src/config/validate-config.js.map +1 -1
- package/build/src/core/deploy-runner.d.ts.map +1 -1
- package/build/src/core/deploy-runner.js +15 -6
- package/build/src/core/deploy-runner.js.map +1 -1
- package/build/src/core/release-manager.d.ts.map +1 -1
- package/build/src/core/release-manager.js +3 -1
- package/build/src/core/release-manager.js.map +1 -1
- package/build/src/core/runtime-state.d.ts +3 -2
- package/build/src/core/runtime-state.d.ts.map +1 -1
- package/build/src/core/runtime-state.js +12 -4
- package/build/src/core/runtime-state.js.map +1 -1
- package/build/src/runtimes/rollbridge-runtime.d.ts +26 -9
- package/build/src/runtimes/rollbridge-runtime.d.ts.map +1 -1
- package/build/src/runtimes/rollbridge-runtime.js +140 -43
- package/build/src/runtimes/rollbridge-runtime.js.map +1 -1
- package/build/src/types.d.ts +2 -0
- package/build/src/types.d.ts.map +1 -1
- package/docs/config-reference.md +48 -9
- package/package.json +1 -1
package/docs/config-reference.md
CHANGED
|
@@ -500,7 +500,7 @@ Rollbridge runtime adapter. Handles `deploy`, `validate`, `status`, `logs`, and
|
|
|
500
500
|
| `socketPath` | string | no | Path to the Rollbridge Unix socket. |
|
|
501
501
|
| `versionPath` | string | no | Path to a version file used for stale-daemon detection. |
|
|
502
502
|
| `env` | object | no | String environment values passed to Rollbridge. Secret-like values are transported and redacted separately. |
|
|
503
|
-
| `externalOwner` | object | no | Opt in to a persistent external foreground owner with `{type: "foreground"}`. Requires `config` and Rollbridge 0.1.
|
|
503
|
+
| `externalOwner` | object | no | Opt in to a persistent external foreground owner with `{type: "foreground"}`. Requires `config`, `socketPath`, and Rollbridge 0.1.21 or newer; upgrading a retained owner running an older Rollbridge fails closed (see below). |
|
|
504
504
|
|
|
505
505
|
```js
|
|
506
506
|
runtime: {
|
|
@@ -521,17 +521,51 @@ runtime: {
|
|
|
521
521
|
```
|
|
522
522
|
|
|
523
523
|
`externalOwner.handoffTimeoutMs` and `pollIntervalMs` are optional positive
|
|
524
|
-
integer millisecond bounds (defaults: 30000 and 250).
|
|
524
|
+
integer millisecond bounds (defaults: 30000 and 250). `handoffTimeoutMs` is
|
|
525
|
+
one deadline that bounds the authenticated `retire-owner` socket round trip
|
|
526
|
+
and the subsequent replacement polling after initial owner identity
|
|
527
|
+
verification; a stalled, truncated, malformed, or non-success
|
|
528
|
+
retirement response fails the handoff deterministically without retrying
|
|
529
|
+
retirement or taking over the owner. Every accepted deploy or
|
|
525
530
|
rollback must establish the new boot digest, including first adoption and a
|
|
526
531
|
same-contract release change. Rampway waits for health, `current` publication,
|
|
527
532
|
and atomic boot-state persistence, then writes a request bound to the exact
|
|
528
533
|
deploy lock and accepted boot digest. An owner already reporting the exact
|
|
529
534
|
accepted release, runtime, and bootstrap attestation remains untouched.
|
|
530
|
-
Otherwise Rampway
|
|
531
|
-
release and runtime identity, then waits
|
|
532
|
-
the
|
|
535
|
+
Otherwise Rampway sends one authenticated `retire-owner` request only to a daemon
|
|
536
|
+
whose status first proves the accepted release and runtime identity, then waits
|
|
537
|
+
for the replacement foreground owner with the exact boot attestation. Retirement
|
|
538
|
+
must release ownership and return without waiting for retained generations or
|
|
539
|
+
connections to drain. Success removes the request; timeout preserves the
|
|
533
540
|
accepted boot state and request for recovery.
|
|
534
541
|
|
|
542
|
+
Deploy success and deploy-lock release follow healthy activation and replacement
|
|
543
|
+
owner readiness. They must not wait for retired jobs generations, workers, jobs,
|
|
544
|
+
HTTP/WebSocket connections, or other retained services to finish. Rollbridge
|
|
545
|
+
durably supervises those drains after the command returns and reports every
|
|
546
|
+
release directory still referenced by a retained process. Rampway owns the
|
|
547
|
+
corresponding retention metadata and must exclude those pinned releases from
|
|
548
|
+
cleanup until all references have ended. HTTP/WebSocket drain completion or
|
|
549
|
+
timeout does not release a jobs-generation pin.
|
|
550
|
+
Rampway atomically records the verified owner's referenced-release set before
|
|
551
|
+
asynchronous retirement and replaces it from later owner status, so cleanup pins
|
|
552
|
+
survive separate deploy invocations and end when Rollbridge drops the reference.
|
|
553
|
+
|
|
554
|
+
Deploying over a retained external owner running Rollbridge older than 0.1.21
|
|
555
|
+
fails closed before any shutdown or deploy: those versions have no
|
|
556
|
+
authenticated `retire-owner` contract, so replacing them requires a full
|
|
557
|
+
shutdown that interrupts service while long-running workers drain. Stage the
|
|
558
|
+
migration through an intermediate 0.1.21+ release with `runtime.externalOwner`
|
|
559
|
+
disabled in an explicitly planned maintenance restart, scheduled only after
|
|
560
|
+
accepted long-running workers have drained, then re-enable it.
|
|
561
|
+
|
|
562
|
+
Rolling back to a retained release whose runtime snapshot predates the
|
|
563
|
+
`runtime.socketPath` requirement also fails closed, before any runtime
|
|
564
|
+
activation: redeploy that release once with the current Rampway so its
|
|
565
|
+
snapshot records the control socket path, then roll back. `runtime.socketPath`
|
|
566
|
+
itself must be a non-empty string without NUL bytes and is validated at config
|
|
567
|
+
load.
|
|
568
|
+
|
|
535
569
|
Configure the service manager to run `rampway <stage> runtime-boot --config
|
|
536
570
|
<absolute-path>` with `Restart=always` and a bounded restart delay. Early
|
|
537
571
|
attempts may collide with the temporary daemon and exit; retries converge after
|
|
@@ -643,11 +677,16 @@ migration, publication, cleanup, or fallback selection. Rollbridge support
|
|
|
643
677
|
requires an explicit `runtime.config` and Rollbridge 0.1.17 or newer; a
|
|
644
678
|
successful deploy without stable config remains supported but cannot seed
|
|
645
679
|
runtime boot state. The optional external-owner handoff requires Rollbridge
|
|
646
|
-
0.1.
|
|
680
|
+
0.1.21 or newer and passes the accepted boot-state digest as
|
|
647
681
|
`--boot-attestation` on an ordinary foreground daemon boot. A matching owner is
|
|
648
|
-
a no-op; a stale or absent bootstrap on the exact accepted release/runtime
|
|
649
|
-
|
|
650
|
-
|
|
682
|
+
a no-op; a stale or absent bootstrap on the exact accepted release/runtime
|
|
683
|
+
receives one authenticated `retire-owner` control command through the
|
|
684
|
+
configured `runtime.socketPath`, which quiesces the old owner and releases its
|
|
685
|
+
proxy/control listeners promptly — without waiting for long-draining workers —
|
|
686
|
+
so a serial outer supervisor can start the replacement. The retirement socket
|
|
687
|
+
round trip and the replacement wait share one `handoffTimeoutMs` deadline; a
|
|
688
|
+
stalled, truncated, malformed, or non-success response fails closed. Status/read identity
|
|
689
|
+
mismatches fail closed without shutdown.
|
|
651
690
|
|
|
652
691
|
## Health checks
|
|
653
692
|
|