@ouro.bot/cli 0.1.0-alpha.803 → 0.1.0-alpha.804
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/changelog.json
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_note": "This changelog is maintained as part of the PR/version-bump workflow. Agent-curated, not auto-generated. Agents read this file directly via read_file to understand what changed between versions.",
|
|
3
3
|
"versions": [
|
|
4
|
+
{
|
|
5
|
+
"version": "0.1.0-alpha.804",
|
|
6
|
+
"changes": [
|
|
7
|
+
"Complete safe Sanctuary rollback work before reporting container cleanup failure."
|
|
8
|
+
]
|
|
9
|
+
},
|
|
4
10
|
{
|
|
5
11
|
"version": "0.1.0-alpha.803",
|
|
6
12
|
"changes": [
|
package/deploy/unraid/README.txt
CHANGED
|
@@ -2285,6 +2285,8 @@ ouro-butler-rollback
|
|
|
2285
2285
|
:
|
|
2286
2286
|
else
|
|
2287
2287
|
PRODUCTION_PREPARATION_STATUS=$?
|
|
2288
|
+
PRODUCTION_PREPARATION_CLEANUP_STATUS=0
|
|
2289
|
+
PRODUCTION_PREPARATION_RECOVERY_SAFE=true
|
|
2288
2290
|
/usr/local/bin/node "$STAGED_DOCKERMAN_TRANSACTION" verify-jellyfin >/dev/null
|
|
2289
2291
|
if docker container inspect ouro-butler >/dev/null 2>&1; then
|
|
2290
2292
|
if docker container inspect ouro-butler-rollback >/dev/null 2>&1; then
|
|
@@ -2293,13 +2295,20 @@ ouro-butler-rollback
|
|
|
2293
2295
|
test "$CURRENT_ROLLBACK_IMAGE_ID" = "$ROLLBACK_IMAGE_ID"
|
|
2294
2296
|
docker rm --force ouro-butler-rollback >/dev/null 2>&1 || true
|
|
2295
2297
|
fi
|
|
2296
|
-
|
|
2298
|
+
if docker container inspect ouro-butler-rollback >/dev/null 2>&1; then
|
|
2299
|
+
PRODUCTION_PREPARATION_CLEANUP_STATUS=1
|
|
2300
|
+
if test "$(docker inspect --format '{{.State.Running}}' ouro-butler-rollback)" != false; then
|
|
2301
|
+
PRODUCTION_PREPARATION_RECOVERY_SAFE=false
|
|
2302
|
+
fi
|
|
2303
|
+
fi
|
|
2297
2304
|
rollback_sanctuary_bundle_if_pending "$IMAGE_ID"
|
|
2298
|
-
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2305
|
+
if test "$PRODUCTION_PREPARATION_RECOVERY_SAFE" = true; then
|
|
2306
|
+
assert_update_source "$ROLLBACK_IMAGE_ID" "$AUDIT_RUNNER_IMAGE_ID"
|
|
2307
|
+
start_only_butler_for_recovery
|
|
2308
|
+
wait_butler_ready ouro-butler
|
|
2309
|
+
enable_butler_autostart
|
|
2310
|
+
finalize_sanctuary_bundle_rollback_if_retained "$IMAGE_ID"
|
|
2311
|
+
fi
|
|
2303
2312
|
elif docker container inspect ouro-butler-rollback >/dev/null 2>&1; then
|
|
2304
2313
|
docker stop ouro-butler-rollback >/dev/null 2>&1 || true
|
|
2305
2314
|
test "$(docker inspect --format '{{.Image}}' ouro-butler-rollback)" = "$ROLLBACK_IMAGE_ID"
|
|
@@ -2312,14 +2321,17 @@ ouro-butler-rollback
|
|
|
2312
2321
|
finalize_sanctuary_bundle_rollback_if_retained "$IMAGE_ID"
|
|
2313
2322
|
fi
|
|
2314
2323
|
/usr/local/bin/node "$STAGED_DOCKERMAN_TRANSACTION" rollback >/dev/null
|
|
2324
|
+
if test "$PRODUCTION_PREPARATION_CLEANUP_STATUS" -ne 0; then
|
|
2325
|
+
exit "$PRODUCTION_PREPARATION_CLEANUP_STATUS"
|
|
2326
|
+
fi
|
|
2315
2327
|
(exit "$PRODUCTION_PREPARATION_STATUS")
|
|
2316
2328
|
fi
|
|
2317
|
-
Preparation failure therefore either restores the still-named exact production after
|
|
2329
|
+
Preparation failure therefore either restores the still-named exact production after attempting to remove any stale rollback, or renames the exact stopped rollback back. Both safe paths revalidate and start the old container, wait within the fixed bound, restore production-only autostart atomically, and return the original failure. If stale rollback removal fails, restore production only when the leftover is proven stopped; otherwise leave both containers untouched, roll back the journals, and return the cleanup failure for repair.
|
|
2318
2330
|
If neither exact container can be found, the failure returns with Butler autostart disabled.
|
|
2319
2331
|
Do not start a target-image daemon between the production rename and final production activation. The exact-image static audit, download-queue readiness, and vault-backed Telegram identity check have already passed before autostart or live-container changes.
|
|
2320
2332
|
Provider and complete daemon readiness are exercised only by the transactional production activation below. Its failure arm restores and revalidates the exact prior production, so a disposable daemon cannot reconcile or claim live external-event state before cutover.
|
|
2321
2333
|
Create and activate production from the same exact image ID and exact authority in one explicit conditional so `set -eu` cannot exit before rollback. Only a successful create, effective audit, start, stopped-rollback assertion, and bounded readiness wait may enable production autostart.
|
|
2322
|
-
On failure, capture the activation status, remove only a partially created new production container, restore and audit the stopped rollback against its exact old image ID, prove it ready, restore production-only autostart atomically, and return the original failure:
|
|
2334
|
+
On failure, capture the activation status, remove only a partially created new production container, restore and audit the stopped rollback against its exact old image ID, prove it ready, restore production-only autostart atomically, and return the original failure. If the partial target cannot be removed, preserve its matching target bundle and retained migration receipt, roll back the DockerMan journal without attempting the colliding rename, then return the cleanup failure:
|
|
2323
2335
|
if test "$(inspect_registry_manifest_digest "$VERSION_IMAGE")" = "$MANIFEST_DIGEST" \
|
|
2324
2336
|
&& test "$(docker image inspect --format '{{.Id}}' "$VERSION_IMAGE")" = "$IMAGE_ID" \
|
|
2325
2337
|
&& docker create --pull=never --name ouro-butler --network host --restart unless-stopped --user 10001:10001 \
|
|
@@ -2341,6 +2353,7 @@ ouro-butler-rollback
|
|
|
2341
2353
|
:
|
|
2342
2354
|
else
|
|
2343
2355
|
PRODUCTION_ACTIVATION_STATUS=$?
|
|
2356
|
+
PRODUCTION_ACTIVATION_CLEANUP_STATUS=0
|
|
2344
2357
|
/usr/local/bin/node "$STAGED_DOCKERMAN_TRANSACTION" verify-jellyfin >/dev/null
|
|
2345
2358
|
if docker container inspect ouro-butler >/dev/null 2>&1; then
|
|
2346
2359
|
docker stop ouro-butler >/dev/null 2>&1 || true
|
|
@@ -2348,17 +2361,24 @@ ouro-butler-rollback
|
|
|
2348
2361
|
test "$PARTIAL_PRODUCTION_IMAGE_ID" = "$IMAGE_ID"
|
|
2349
2362
|
docker rm --force ouro-butler >/dev/null 2>&1 || true
|
|
2350
2363
|
fi
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2364
|
+
if docker container inspect ouro-butler >/dev/null 2>&1; then
|
|
2365
|
+
PRODUCTION_ACTIVATION_CLEANUP_STATUS=1
|
|
2366
|
+
fi
|
|
2367
|
+
if test "$PRODUCTION_ACTIVATION_CLEANUP_STATUS" -eq 0; then
|
|
2368
|
+
CURRENT_ROLLBACK_IMAGE_ID=$(docker inspect --format '{{.Image}}' ouro-butler-rollback)
|
|
2369
|
+
test "$CURRENT_ROLLBACK_IMAGE_ID" = "$ROLLBACK_IMAGE_ID"
|
|
2370
|
+
migrate_sanctuary_package_managed_bundle "$IMAGE_ID" rollback
|
|
2371
|
+
docker rename ouro-butler-rollback ouro-butler
|
|
2372
|
+
assert_update_source "$ROLLBACK_IMAGE_ID" "$AUDIT_RUNNER_IMAGE_ID"
|
|
2373
|
+
start_only_butler_for_recovery
|
|
2374
|
+
wait_butler_ready ouro-butler
|
|
2375
|
+
enable_butler_autostart
|
|
2376
|
+
migrate_sanctuary_package_managed_bundle "$IMAGE_ID" finalize-rollback
|
|
2377
|
+
fi
|
|
2361
2378
|
/usr/local/bin/node "$STAGED_DOCKERMAN_TRANSACTION" rollback >/dev/null
|
|
2379
|
+
if test "$PRODUCTION_ACTIVATION_CLEANUP_STATUS" -ne 0; then
|
|
2380
|
+
exit "$PRODUCTION_ACTIVATION_CLEANUP_STATUS"
|
|
2381
|
+
fi
|
|
2362
2382
|
(exit "$PRODUCTION_ACTIVATION_STATUS")
|
|
2363
2383
|
fi
|
|
2364
2384
|
migrate_sanctuary_package_managed_bundle "$IMAGE_ID" commit
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<?xml version="1.0"?>
|
|
2
2
|
<Container version="2">
|
|
3
3
|
<Name>ouro-butler</Name>
|
|
4
|
-
<Repository>ghcr.io/ourostack/ouroboros-butler:0.1.0-alpha.
|
|
4
|
+
<Repository>ghcr.io/ourostack/ouroboros-butler:0.1.0-alpha.804</Repository>
|
|
5
5
|
<Registry>https://github.com/ourostack/ouroboros/pkgs/container/ouroboros-butler</Registry>
|
|
6
6
|
<Network>host</Network>
|
|
7
7
|
<Shell>sh</Shell>
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ouro.bot/cli",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.804",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@ouro.bot/cli",
|
|
9
|
-
"version": "0.1.0-alpha.
|
|
9
|
+
"version": "0.1.0-alpha.804",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@anthropic-ai/sdk": "^0.78.0",
|
|
12
12
|
"@azure/identity": "^4.13.0",
|