@forgezero/runtime 0.1.21 → 0.1.22
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 +13 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -972,6 +972,19 @@ scheduler.pause(); // stop scheduling, let in-flight finish
|
|
|
972
972
|
await scheduler.runNow('rotate-provider-credentials');
|
|
973
973
|
```
|
|
974
974
|
|
|
975
|
+
## Deployment handoff is typed state, not copied RAM
|
|
976
|
+
|
|
977
|
+
The portable lifecycle for native and containerd services is deliberately smaller than a process snapshot. First report not-ready and close new HTTP and job intake. Existing requests, streams and queue handlers drain within one deadline. Durable jobs stay in the application store with an idempotency key, expiring lease and monotonic fence, so the candidate may reclaim unfinished work without allowing the old generation to commit. An optional handoff value may carry a bounded, versioned cursor or connection coordinate after schema validation. Closures, arbitrary heap objects, sockets and Vault plaintext never cross generations; the candidate resolves the same named Vault references through its own authorized runtime boundary. This is the lifecycle ForgeZero itself must use before it is offered to tenants.
|
|
978
|
+
|
|
979
|
+
```text
|
|
980
|
+
old: ready=false -> close intake -> drain HTTP/streams -> drain or release fenced jobs
|
|
981
|
+
new: private health -> validate handoff -> resolve named Vault refs -> accept claims
|
|
982
|
+
switch: route new HTTP -> observe old deadline -> stop old or roll back
|
|
983
|
+
|
|
984
|
+
durable job = payload + idempotencyKey + leaseUntil + fence
|
|
985
|
+
handoff value = versioned + schema-validated + size-bounded + non-secret
|
|
986
|
+
```
|
|
987
|
+
|
|
975
988
|
## Status somebody can read during an incident
|
|
976
989
|
|
|
977
990
|
Last run, duration, result, error and consecutive failures per job. Without it a job that has been failing for a week looks exactly like a job that has been succeeding.
|