@ouro.bot/cli 0.1.0-alpha.871 → 0.1.0-alpha.873
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,18 @@
|
|
|
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.873",
|
|
6
|
+
"changes": [
|
|
7
|
+
"A new butler:ship command (npm run butler:ship -- <version>) ships a Butler release through the replay gate in one step: it waits for the release's coverage-gate and the image on the host, stages that release's upgrade and gate scripts, runs preflight, starts the detached gated upgrade, follows the case lines until the upgrade process has exited, and verifies, then prints one JSON result (kept, rolled_back, refused or failed); it stops early with a clear message when no push-triggered coverage-gate run exists for the merge commit, because the image would never be published."
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"version": "0.1.0-alpha.872",
|
|
12
|
+
"changes": [
|
|
13
|
+
"The replay gate's books-up case accepts a live service probe as well as the container list, so a correct live answer no longer fails the upgrade."
|
|
14
|
+
]
|
|
15
|
+
},
|
|
4
16
|
{
|
|
5
17
|
"version": "0.1.0-alpha.871",
|
|
6
18
|
"changes": [
|
package/deploy/unraid/README.txt
CHANGED
|
@@ -2981,3 +2981,13 @@ Audit and safety verification:
|
|
|
2981
2981
|
key can be adopted after process death. Raw recovery proof is durably deleted
|
|
2982
2982
|
only after the exact authentication rejection and its redacted replayable
|
|
2983
2983
|
receipt are fsynced. Never substitute names for IDs when revoking keys.
|
|
2984
|
+
|
|
2985
|
+
Shipping a Butler release (one command)
|
|
2986
|
+
|
|
2987
|
+
From the Mac, after the release PR has merged to main:
|
|
2988
|
+
|
|
2989
|
+
npm run butler:ship -- <version> [--host sanctuary] [--no-gate] [--plant <case>] [--dry-run]
|
|
2990
|
+
|
|
2991
|
+
It resolves the release merge commit, waits for that commit's coverage-gate and for the GHCR image to resolve on the host, backs up the host's /tmp/butler-upgrade.mjs and /tmp/sanctuary-replay-gate.mjs to .bak-<previous>, stages the release's own copies, runs preflight, starts the gated upgrade detached with its log at /var/log/ouro-upgrade-<version>.log, follows the case lines to a terminal line and runs verify. The last stdout line is one JSON result: {version, result: kept|rolled_back|refused|failed, running_image, cases, verify, log}. Exit 0 only when the result is kept and verify is green. --dry-run runs only the read-only steps. BUTLER_HOST overrides the default host alias.
|
|
2992
|
+
|
|
2993
|
+
Manual fallback (the script automates exactly these): wait for coverage-gate and `docker manifest inspect ghcr.io/ourostack/ouroboros-butler:<version>` on the host; copy deploy/unraid/sanctuary-butler-upgrade.mjs to /tmp/butler-upgrade.mjs and deploy/unraid/sanctuary-replay-gate.mjs to /tmp/sanctuary-replay-gate.mjs; run `node /tmp/butler-upgrade.mjs preflight <version>`; start `setsid nohup /usr/local/bin/node /tmp/butler-upgrade.mjs upgrade <version> > /var/log/ouro-upgrade-<version>.log 2>&1 < /dev/null &`; read the log for GATE PASS, GATE FAIL (rolled back), UPGRADE done, REFUSING or FAILED; then run `node /tmp/butler-upgrade.mjs verify`. Check for a live upgrade with pgrep -f "[b]utler-upgrade.mjs upgrade" so the check does not match its own shell.
|
|
@@ -151,7 +151,8 @@ export const CASES = [
|
|
|
151
151
|
const claim = upDownClaim(reply)
|
|
152
152
|
const actual = after.containers["calibre-web"] ? "up" : "down"
|
|
153
153
|
return [
|
|
154
|
-
check
|
|
154
|
+
// Either live check counts: the container list, or the service probe of the Books URL. An answer from memory does not.
|
|
155
|
+
check("a live status tool was used", callsNamed(trace, /^unraid_(list_containers|check_services)$/).length > 0),
|
|
155
156
|
check("the reply's up/down claim matches docker ps", claim === actual, `claimed ${claim}, docker says ${actual}`),
|
|
156
157
|
]
|
|
157
158
|
},
|
|
@@ -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.873</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.873",
|
|
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.873",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@anthropic-ai/sdk": "^0.78.0",
|
|
12
12
|
"@azure/identity": "^4.13.0",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ouro.bot/cli",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.873",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": ">=22"
|
|
6
6
|
},
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"lint": "eslint src/",
|
|
47
47
|
"package:verify-assets": "node scripts/package-assets.cjs",
|
|
48
48
|
"prepack": "npm run build && npm run package:verify-assets",
|
|
49
|
+
"butler:ship": "node scripts/butler-ship.mjs",
|
|
49
50
|
"release:bump": "node scripts/release-bump.cjs",
|
|
50
51
|
"release:preflight": "node scripts/release-preflight.cjs",
|
|
51
52
|
"release:trust:check": "node scripts/npm-trusted-publishers.cjs check",
|