@evident-ai/runner-synchroniser 3.4.1-dev.9d58811 → 3.4.1-dev.b2ce99d
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 +24 -11
- package/dist/cli.js +33909 -34826
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -56,7 +56,7 @@ build time.
|
|
|
56
56
|
| `env` | resolved config as shell-eval'able vars | `0` = ran; non-zero = tool broken |
|
|
57
57
|
| `litestream-config` | the generated `litestream.yml` | `0` = ran; non-zero = tool broken |
|
|
58
58
|
| `restore <claude\|opencode>` | — | `0` = ran; non-zero = tool broken |
|
|
59
|
-
| `sync-once <claude\|opencode>` | — | `0` =
|
|
59
|
+
| `sync-once <claude\|opencode>` | — | `0` = uploaded/unchanged/absent/disabled; `40` = not persisted; other = tool broken |
|
|
60
60
|
| `model-auth-ready` | — | `0` = ready, `10` = not ready; other = tool broken |
|
|
61
61
|
| `self-stop` | — | `0` = stopped, `20` = keep the task; other = tool broken |
|
|
62
62
|
| `session-db-classify <litestream-restore-exit-code> <attempt> [--on-unusable-replica=<prune\|leave\|clear\|crash>] [--recovery-occurred] [--fresh-db-fallback]` | — | `0` = restored/no-replica/disabled, `32` = re-run and ask again, `31` = unusable (booted fresh, replicates into the existing prefix), `30` = fatal; other = usage/tool broken |
|
|
@@ -86,6 +86,13 @@ a warning `restore_retried` record before the retry's result is known. Writing i
|
|
|
86
86
|
and never changes this command's exit code. The CLI reader owns this record contract: add a new
|
|
87
87
|
`v` rather than repurposing a field.
|
|
88
88
|
|
|
89
|
+
MicroVM boot-shell give-ups use that same JSONL contract and path. The hook truncates the
|
|
90
|
+
report at the start of each `/run`, so a later startup decision supersedes an earlier one;
|
|
91
|
+
`/resume` preserves the current report. Their `replication_suspended` field is `true`, meaning
|
|
92
|
+
that start is not backing up its new session history. The normal mapper defaults the field to
|
|
93
|
+
`false`; the MicroVM `--fresh-db-fallback` outcome is also `true` because it cannot safely
|
|
94
|
+
replicate that boot.
|
|
95
|
+
|
|
89
96
|
#### Positionals
|
|
90
97
|
|
|
91
98
|
| Positional | Meaning |
|
|
@@ -119,6 +126,9 @@ marks a runtime that intentionally has no retry budget and will therefore boot f
|
|
|
119
126
|
otherwise-transient failure. Each flag may appear once, does not change the command's exit code,
|
|
120
127
|
and is rejected when repeated.
|
|
121
128
|
|
|
129
|
+
On the MicroVM's one-attempt path, `--fresh-db-fallback` also means the fresh database does not
|
|
130
|
+
replicate during that boot.
|
|
131
|
+
|
|
122
132
|
#### Outcome → exit code
|
|
123
133
|
|
|
124
134
|
| Outcome | Code | When |
|
|
@@ -138,6 +148,9 @@ and is rejected when repeated.
|
|
|
138
148
|
| `fatal(misconfig)` | `30` | no object store while persistence is enabled, or the probe failed on attempt 2 |
|
|
139
149
|
| `fatal(deliberate)` | `30` | attempt 2, `crash` |
|
|
140
150
|
|
|
151
|
+
Fatal exit codes 30 and 34 are reported directly to `POST /v1/runners/self/startup-failure`
|
|
152
|
+
before the CLI starts. Reporting is best-effort and never changes the exit code.
|
|
153
|
+
|
|
141
154
|
`31` also guarantees local debris (`opencode.db`, `-wal`, `-shm`) is discarded, one `try` per path, at the classifier's single return point. Note `32` isn't purely "transient" — `recovered` shares it with `retryTransient` even though a `recovered` outcome already mutated S3.
|
|
142
155
|
|
|
143
156
|
The probe is a `list`, not a `get`: S3 answers a wrong bucket name with `NoSuchBucket`, also a 404, so a `get`-based probe would read a misconfigured bucket as healthy and unlock recovery against it.
|
|
@@ -237,8 +250,7 @@ and it can never repair corruption at a higher compaction level.
|
|
|
237
250
|
|
|
238
251
|
`EVIDENT_ON_UNUSABLE_REPLICA` is a `runner/docker-images/fargate` (entrypoint) variable translated into the flag above at boot — this CLI never reads it, so it has no row in this README's Configuration table below; see [the Fargate image README](../docker-images/fargate/README.md#when-the-replica-is-unusable-evident_on_unusable_replica). An unrecognised value (including wrong casing, e.g. `Prune`) exits `2`, outside `entrypoint.sh`'s `0|10|20|30|31|32|33` allow-list — a typo **crash-loops the task on attempt 1** rather than falling back to `prune`, and also logs the misleading "credential persistence is DEGRADED" ERROR.
|
|
239
252
|
|
|
240
|
-
|
|
241
|
-
the behavioural anchor (31 comes online, 30 does not).
|
|
253
|
+
The behavioural anchor is explicit: **31 comes online, 30 does not**.
|
|
242
254
|
|
|
243
255
|
### `session-db-verify`
|
|
244
256
|
|
|
@@ -314,15 +326,16 @@ same way it already reuses `SESSION-DB-REPLICA-UNUSABLE` for `session-db-classif
|
|
|
314
326
|
|
|
315
327
|
### Why the contract is asymmetric
|
|
316
328
|
|
|
317
|
-
`restore` and
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
329
|
+
`restore` logs domain outcomes and still exits `0`: a missing remote object or a
|
|
330
|
+
restore failure should not abort a boot, because a runner with no credentials yet
|
|
331
|
+
is a runner a human can still log into. `sync-once` returns `40` when the current
|
|
332
|
+
credential file is not persisted (`failed`, `hashFailed`, or `localInvalid`), while
|
|
333
|
+
`absent` and `disabled` remain legitimate `0` outcomes.
|
|
321
334
|
|
|
322
|
-
The consequence is the point: **any non-zero status from `restore
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
335
|
+
The consequence is the point: **any non-zero status from `restore` means the tool itself
|
|
336
|
+
broke** — and `sync-once` uses `40` for its typed persistence answer; other non-zero
|
|
337
|
+
statuses still mean bad arguments (`2`), an uncaught throw (`1`), or a bundle that would
|
|
338
|
+
not run at all. The shell keeps that distinction in one helper.
|
|
326
339
|
|
|
327
340
|
The **two predicates** — `model-auth-ready` and `self-stop` — each need to distinguish
|
|
328
341
|
"the answer is no" from "the tool is broken", so each answers no with its own dedicated
|