OverviewFilesCommitsIssuesDocsReleasesPeers

P2P-Hiverelay commits / 935b0e4

fix(release): make the fleet update path actually installable — v0.25.0-rc.6
rc.5 cannot be installed by any box. Two bugs in the update path, found by utah failing to take rc.5. 1. patch-package was a devDependency while package.json's postinstall invoked it. fleet/updater.sh installs with `npm ci --omit=dev`, so the binary was absent and postinstall exited 127. The postinstall entry was introduced in rc.4 and v0.24.3 has none, so no box had ever exercised this path — utah only reached rc.4 by hand, which is why it went unnoticed until now. The skipped patch is not cosmetic: patches/hypercore-storage+3.2.0.patch corrects corePointer/dataPointer allocation in hypercore-storage's Corestore-7 v0->v1 storage migration. Proceeding without it silently would have been considerably worse than failing loudly. patch-package now ships as a production dependency. Verified by running the updater's exact command in a clean tree with the workspace manifests: `npm ci --omit=dev` -> `patch-package 8.0.1 … hypercore-storage@3.2.0 ✔`, exit 0. 2. rollback_to_previous() checked out without --force. npm ci rewrites package-lock.json, so once a dependency install has failed the tree is dirty and the checkout refuses — logging "CRITICAL could not checkout previous SHA" and leaving the box on the NEW tree with a half-built node_modules. Forcing is safe on this path: the pre-update dirty-tree guard already refuses to start on a dirty tree, so anything dirty at rollback time was created by that run. The relay never went down on utah — both failures occur before the service restart, so the running process stayed up on rc.4 throughout. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
935b0e4e81f3a31bedd1e6b90b898281c6517f7d
by bigdestiny2 <33146784+bigdestiny2@users.noreply.github.com> · 2026-07-28T13:22:41.000Z

Changed files (10) +62 -72

CHANGELOG.md +35 -0
……@@ -6,6 +6,41 @@ documented here. Dates in YYYY-MM-DD.
66
77The packages are versioned in lockstep.
88
9## [0.25.0-rc.6] — 2026-07-28
10
11**Use this, not rc.5.** rc.5 cannot be installed by the fleet updater — see below.
12Contents are otherwise identical to rc.5.
13
14### Fixed — fleet update path (release-blocking)
15
16- **`patch-package` was a devDependency while `postinstall` invoked it.**
17 `fleet/updater.sh` installs with `npm ci --omit=dev`, which skips
18 devDependencies, so `postinstall` ran a binary that was not there and exited
19 **127**. Every box updating from `v0.24.3` would fail — the `postinstall` entry
20 was introduced in rc.4 and `v0.24.3` has none, so no box had exercised this
21 path. utah reached rc.4 by hand, which is exactly why it went unnoticed.
22
23 This matters beyond the failed install: the skipped patch is
24 `patches/hypercore-storage+3.2.0.patch`, which corrects `corePointer` /
25 `dataPointer` allocation in hypercore-storage's **Corestore-7 v0→v1 storage
26 migration**. Silently proceeding without it would have been worse than the
27 failure. `patch-package` now ships as a production dependency; verified with
28 `npm ci --omit=dev` in a clean tree → `patch-package 8.0.1 … hypercore-storage@3.2.0 ✔`.
29
30- **A failed update stranded the box on the new tree.**
31 `rollback_to_previous()` ran `git checkout` without `--force`. `npm ci` rewrites
32 `package-lock.json`, so by the time a dependency install has failed the tree is
33 dirty and the checkout refuses — producing
34 `CRITICAL could not checkout previous SHA` and leaving the relay pointed at the
35 new tag with a half-built `node_modules`, the opposite of a rollback. Forcing is
36 safe on this path: the pre-update dirty-tree guard already refuses to start on a
37 dirty tree, so anything dirty at rollback time was created by that run.
38
39Observed on utah 2026-07-28: update to rc.5 failed at dependency install, rollback
40then failed, and the box was left with an rc.5 checkout while the running process
41stayed on rc.4. The relay itself never went down — the failure occurs before the
42service restart.
43
944## [0.25.0-rc.5] — 2026-07-28
1045
1146**Preferred canary prerelease.** Supersedes rc.4. Restores a set of features that
README.md +1 -1
……@@ -14,7 +14,7 @@ and key-material fields at the schema boundary.
1414a one-page dashboard, first-run setup, wallet destination, service selection,
1515and persistent identity behind each platform's authenticated app proxy.
1616
17**Open source (Apache 2.0)** | **[GitHub](https://github.com/bigdestiny2/P2P-Hiverelay)** | **[npm](https://www.npmjs.com/package/p2p-hiverelay)** | **Status: v0.25.0-rc.5**
17**Open source (Apache 2.0)** | **[GitHub](https://github.com/bigdestiny2/P2P-Hiverelay)** | **[npm](https://www.npmjs.com/package/p2p-hiverelay)** | **Status: v0.25.0-rc.6**
1818
1919The four packages are versioned in lockstep:
2020
fleet/updater.sh +7 -1
……@@ -245,7 +245,13 @@ deps_if_changed() { # $1=from-ref $2=to-ref
245245rollback_to_previous() {
246246 local reason="$1"
247247 log "FAIL $reason — ROLLING BACK to $CUR_VER ($CUR_SHA)"
248 if ! git checkout --quiet "$CUR_SHA"; then
248 # --force is required, not optional. `npm ci` rewrites package-lock.json, so by
249 # the time a dependency install has failed the tree is dirty and a plain
250 # checkout refuses — which strands the box on the NEW tree with a half-built
251 # node_modules, the exact opposite of what a rollback is for. Forcing is safe
252 # here: the pre-update dirty-tree guard already refused to start on a dirty
253 # tree, so anything dirty at this point was created by this run.
254 if ! git checkout --quiet --force "$CUR_SHA"; then
249255 log "CRITICAL could not checkout previous SHA"
250256 exit 1
251257 fi
package-lock.json +10 -61
……@@ -1,12 +1,12 @@
11{
22 "name": "p2p-hiverelay-monorepo",
3 "version": "0.25.0-rc.5",
3 "version": "0.25.0-rc.6",
44 "lockfileVersion": 3,
55 "requires": true,
66 "packages": {
77 "": {
88 "name": "p2p-hiverelay-monorepo",
9 "version": "0.25.0-rc.5",
9 "version": "0.25.0-rc.6",
1010 "hasInstallScript": true,
1111 "license": "Apache-2.0",
1212 "workspaces": [
……@@ -17,13 +17,13 @@
1717 ],
1818 "dependencies": {
1919 "ip-address": "^10.2.0",
20 "patch-package": "^8.0.1",
2021 "socks": "^2.8.9"
2122 },
2223 "devDependencies": {
2324 "@hyperswarm/testnet": "^3.0.0",
2425 "bare": "^1.28.7",
2526 "brittle": "^4.0.2",
26 "patch-package": "^8.0.1",
2727 "standard": "^17.1.0"
2828 },
2929 "engines": {
……@@ -802,7 +802,6 @@
802802 "version": "1.1.0",
803803 "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
804804 "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
805 "dev": true,
806805 "license": "BSD-2-Clause"
807806 },
808807 "node_modules/acorn": {
……@@ -2234,7 +2233,6 @@
22342233 "version": "3.0.3",
22352234 "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
22362235 "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
2237 "dev": true,
22382236 "license": "MIT",
22392237 "dependencies": {
22402238 "fill-range": "^7.1.1"
……@@ -2304,7 +2302,6 @@
23042302 "version": "1.0.9",
23052303 "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz",
23062304 "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==",
2307 "dev": true,
23082305 "license": "MIT",
23092306 "dependencies": {
23102307 "call-bind-apply-helpers": "^1.0.2",
……@@ -2323,7 +2320,6 @@
23232320 "version": "1.0.2",
23242321 "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
23252322 "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
2326 "dev": true,
23272323 "license": "MIT",
23282324 "dependencies": {
23292325 "es-errors": "^1.3.0",
……@@ -2337,7 +2333,6 @@
23372333 "version": "1.0.4",
23382334 "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
23392335 "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
2340 "dev": true,
23412336 "license": "MIT",
23422337 "dependencies": {
23432338 "call-bind-apply-helpers": "^1.0.2",
……@@ -2364,7 +2359,6 @@
23642359 "version": "4.1.2",
23652360 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
23662361 "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
2367 "dev": true,
23682362 "license": "MIT",
23692363 "dependencies": {
23702364 "ansi-styles": "^4.1.0",
……@@ -2412,7 +2406,6 @@
24122406 "version": "3.9.0",
24132407 "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
24142408 "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
2415 "dev": true,
24162409 "funding": [
24172410 {
24182411 "type": "github",
……@@ -2590,7 +2583,6 @@
25902583 "version": "7.0.6",
25912584 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
25922585 "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
2593 "dev": true,
25942586 "license": "MIT",
25952587 "dependencies": {
25962588 "path-key": "^3.1.0",
……@@ -2699,7 +2691,6 @@
26992691 "version": "1.1.4",
27002692 "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
27012693 "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
2702 "dev": true,
27032694 "license": "MIT",
27042695 "dependencies": {
27052696 "es-define-property": "^1.0.0",
……@@ -2850,7 +2841,6 @@
28502841 "version": "1.0.1",
28512842 "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
28522843 "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
2853 "dev": true,
28542844 "license": "MIT",
28552845 "dependencies": {
28562846 "call-bind-apply-helpers": "^1.0.1",
……@@ -2960,7 +2950,6 @@
29602950 "version": "1.0.1",
29612951 "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
29622952 "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
2963 "dev": true,
29642953 "license": "MIT",
29652954 "engines": {
29662955 "node": ">= 0.4"
……@@ -2970,7 +2959,6 @@
29702959 "version": "1.3.0",
29712960 "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
29722961 "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
2973 "dev": true,
29742962 "license": "MIT",
29752963 "engines": {
29762964 "node": ">= 0.4"
……@@ -3008,7 +2996,6 @@
30082996 "version": "1.1.2",
30092997 "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
30102998 "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
3011 "dev": true,
30122999 "license": "MIT",
30133000 "dependencies": {
30143001 "es-errors": "^1.3.0"
……@@ -3696,7 +3683,6 @@
36963683 "version": "7.1.1",
36973684 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
36983685 "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
3699 "dev": true,
37003686 "license": "MIT",
37013687 "dependencies": {
37023688 "to-regex-range": "^5.0.1"
……@@ -3726,7 +3712,6 @@
37263712 "version": "2.0.0",
37273713 "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz",
37283714 "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==",
3729 "dev": true,
37303715 "license": "Apache-2.0",
37313716 "dependencies": {
37323717 "micromatch": "^4.0.2"
……@@ -3805,7 +3790,6 @@
38053790 "version": "10.1.0",
38063791 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
38073792 "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
3808 "dev": true,
38093793 "license": "MIT",
38103794 "dependencies": {
38113795 "graceful-fs": "^4.2.0",
……@@ -3837,7 +3821,6 @@
38373821 "version": "1.1.2",
38383822 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
38393823 "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
3840 "dev": true,
38413824 "license": "MIT",
38423825 "funding": {
38433826 "url": "https://github.com/sponsors/ljharb"
……@@ -3924,7 +3907,6 @@
39243907 "version": "1.3.0",
39253908 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
39263909 "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
3927 "dev": true,
39283910 "license": "MIT",
39293911 "dependencies": {
39303912 "call-bind-apply-helpers": "^1.0.2",
……@@ -3949,7 +3931,6 @@
39493931 "version": "1.0.1",
39503932 "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
39513933 "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
3952 "dev": true,
39533934 "license": "MIT",
39543935 "dependencies": {
39553936 "dunder-proto": "^1.0.1",
……@@ -4075,7 +4056,6 @@
40754056 "version": "1.2.0",
40764057 "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
40774058 "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
4078 "dev": true,
40794059 "license": "MIT",
40804060 "engines": {
40814061 "node": ">= 0.4"
……@@ -4088,7 +4068,6 @@
40884068 "version": "4.2.11",
40894069 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
40904070 "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
4091 "dev": true,
40924071 "license": "ISC"
40934072 },
40944073 "node_modules/graceful-goodbye": {
……@@ -4125,7 +4104,6 @@
41254104 "version": "4.0.0",
41264105 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
41274106 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
4128 "dev": true,
41294107 "license": "MIT",
41304108 "engines": {
41314109 "node": ">=8"
……@@ -4135,7 +4113,6 @@
41354113 "version": "1.0.2",
41364114 "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
41374115 "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
4138 "dev": true,
41394116 "license": "MIT",
41404117 "dependencies": {
41414118 "es-define-property": "^1.0.0"
……@@ -4164,7 +4141,6 @@
41644141 "version": "1.1.0",
41654142 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
41664143 "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
4167 "dev": true,
41684144 "license": "MIT",
41694145 "engines": {
41704146 "node": ">= 0.4"
……@@ -4193,7 +4169,6 @@
41934169 "version": "2.0.4",
41944170 "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
41954171 "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
4196 "dev": true,
41974172 "license": "MIT",
41984173 "dependencies": {
41994174 "function-bind": "^1.1.2"
……@@ -4905,7 +4880,6 @@
49054880 "version": "2.2.1",
49064881 "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
49074882 "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
4908 "dev": true,
49094883 "license": "MIT",
49104884 "bin": {
49114885 "is-docker": "cli.js"
……@@ -5031,7 +5005,6 @@
50315005 "version": "7.0.0",
50325006 "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
50335007 "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
5034 "dev": true,
50355008 "license": "MIT",
50365009 "engines": {
50375010 "node": ">=0.12.0"
……@@ -5240,7 +5213,6 @@
52405213 "version": "2.2.0",
52415214 "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
52425215 "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
5243 "dev": true,
52445216 "license": "MIT",
52455217 "dependencies": {
52465218 "is-docker": "^2.0.0"
……@@ -5253,14 +5225,12 @@
52535225 "version": "2.0.5",
52545226 "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
52555227 "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
5256 "dev": true,
52575228 "license": "MIT"
52585229 },
52595230 "node_modules/isexe": {
52605231 "version": "2.0.0",
52615232 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
52625233 "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
5263 "dev": true,
52645234 "license": "ISC"
52655235 },
52665236 "node_modules/iterator.prototype": {
……@@ -5336,7 +5306,6 @@
53365306 "version": "1.3.0",
53375307 "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz",
53385308 "integrity": "sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==",
5339 "dev": true,
53405309 "license": "MIT",
53415310 "dependencies": {
53425311 "call-bind": "^1.0.8",
……@@ -5376,7 +5345,6 @@
53765345 "version": "6.2.1",
53775346 "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz",
53785347 "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==",
5379 "dev": true,
53805348 "license": "MIT",
53815349 "dependencies": {
53825350 "universalify": "^2.0.0"
……@@ -5389,7 +5357,6 @@
53895357 "version": "0.0.1",
53905358 "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz",
53915359 "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==",
5392 "dev": true,
53935360 "license": "Public Domain",
53945361 "funding": {
53955362 "url": "https://github.com/sponsors/ljharb"
……@@ -5434,7 +5401,6 @@
54345401 "version": "6.0.0",
54355402 "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz",
54365403 "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==",
5437 "dev": true,
54385404 "license": "MIT",
54395405 "dependencies": {
54405406 "graceful-fs": "^4.1.11"
……@@ -5545,7 +5511,6 @@
55455511 "version": "1.1.0",
55465512 "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
55475513 "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
5548 "dev": true,
55495514 "license": "MIT",
55505515 "engines": {
55515516 "node": ">= 0.4"
……@@ -5555,7 +5520,6 @@
55555520 "version": "4.0.8",
55565521 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
55575522 "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
5558 "dev": true,
55595523 "license": "MIT",
55605524 "dependencies": {
55615525 "braces": "^3.0.3",
……@@ -5569,7 +5533,6 @@
55695533 "version": "2.3.2",
55705534 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
55715535 "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
5572 "dev": true,
55735536 "license": "MIT",
55745537 "engines": {
55755538 "node": ">=8.6"
……@@ -5831,7 +5794,6 @@
58315794 "version": "1.1.1",
58325795 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
58335796 "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
5834 "dev": true,
58355797 "license": "MIT",
58365798 "engines": {
58375799 "node": ">= 0.4"
……@@ -5950,7 +5912,6 @@
59505912 "version": "7.4.2",
59515913 "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
59525914 "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
5953 "dev": true,
59545915 "license": "MIT",
59555916 "dependencies": {
59565917 "is-docker": "^2.0.0",
……@@ -6094,7 +6055,6 @@
60946055 "version": "8.0.1",
60956056 "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.1.tgz",
60966057 "integrity": "sha512-VsKRIA8f5uqHQ7NGhwIna6Bx6D9s/1iXlA1hthBVBEbkq+t4kXD0HHt+rJhf/Z+Ci0F/HCB2hvn0qLdLG+Qxlw==",
6097 "dev": true,
60986058 "license": "MIT",
60996059 "dependencies": {
61006060 "@yarnpkg/lockfile": "^1.1.0",
……@@ -6124,7 +6084,6 @@
61246084 "version": "7.8.5",
61256085 "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
61266086 "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
6127 "dev": true,
61286087 "license": "ISC",
61296088 "bin": {
61306089 "semver": "bin/semver.js"
……@@ -6167,7 +6126,6 @@
61676126 "version": "3.1.1",
61686127 "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
61696128 "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
6170 "dev": true,
61716129 "license": "MIT",
61726130 "engines": {
61736131 "node": ">=8"
……@@ -6969,7 +6927,6 @@
69696927 "version": "1.2.2",
69706928 "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
69716929 "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
6972 "dev": true,
69736930 "license": "MIT",
69746931 "dependencies": {
69756932 "define-data-property": "^1.1.4",
……@@ -7018,7 +6975,6 @@
70186975 "version": "2.0.0",
70196976 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
70206977 "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
7021 "dev": true,
70226978 "license": "MIT",
70236979 "dependencies": {
70246980 "shebang-regex": "^3.0.0"
……@@ -7031,7 +6987,6 @@
70316987 "version": "3.0.0",
70326988 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
70336989 "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
7034 "dev": true,
70356990 "license": "MIT",
70366991 "engines": {
70376992 "node": ">=8"
……@@ -7176,7 +7131,6 @@
71767131 "version": "2.0.0",
71777132 "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
71787133 "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
7179 "dev": true,
71807134 "license": "MIT",
71817135 "engines": {
71827136 "node": ">=6"
……@@ -7559,7 +7513,6 @@
75597513 "version": "7.2.0",
75607514 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
75617515 "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
7562 "dev": true,
75637516 "license": "MIT",
75647517 "dependencies": {
75657518 "has-flag": "^4.0.0"
……@@ -7659,7 +7612,6 @@
76597612 "version": "0.2.7",
76607613 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz",
76617614 "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==",
7662 "dev": true,
76637615 "license": "MIT",
76647616 "engines": {
76657617 "node": ">=14.14"
……@@ -7669,7 +7621,6 @@
76697621 "version": "5.0.1",
76707622 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
76717623 "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
7672 "dev": true,
76737624 "license": "MIT",
76747625 "dependencies": {
76757626 "is-number": "^7.0.0"
……@@ -7858,7 +7809,6 @@
78587809 "version": "2.0.1",
78597810 "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
78607811 "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
7861 "dev": true,
78627812 "license": "MIT",
78637813 "engines": {
78647814 "node": ">= 10.0.0"
……@@ -7950,7 +7900,6 @@
79507900 "version": "2.0.2",
79517901 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
79527902 "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
7953 "dev": true,
79547903 "license": "ISC",
79557904 "dependencies": {
79567905 "isexe": "^2.0.0"
……@@ -8141,7 +8090,6 @@
81418090 "version": "2.9.0",
81428091 "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",
81438092 "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==",
8144 "dev": true,
81458093 "license": "ISC",
81468094 "bin": {
81478095 "yaml": "bin.mjs"
……@@ -8204,7 +8152,7 @@
82048152 },
82058153 "packages/client": {
82068154 "name": "p2p-hiverelay-client",
8207 "version": "0.25.0-rc.5",
8155 "version": "0.25.0-rc.6",
82088156 "license": "Apache-2.0",
82098157 "dependencies": {
82108158 "@noble/hashes": "^2.2.0",
……@@ -8213,11 +8161,12 @@
82138161 "bare-crypto": "^1.15.3",
82148162 "bare-events": "^2.9.1",
82158163 "bare-fs": "^4.7.2",
8164 "bare-os": "^3.9.1",
82168165 "bare-path": "^3.0.1",
82178166 "corestore": "^7.11.0",
82188167 "hyperdrive": "^13.3.2",
82198168 "hyperswarm": "^4.17.0",
8220 "p2p-hiverelay": "^0.25.0-rc.4",
8169 "p2p-hiverelay": "^0.25.0-rc.6",
82218170 "sodium-universal": "^5.0.1"
82228171 },
82238172 "engines": {
……@@ -8257,7 +8206,7 @@
82578206 },
82588207 "packages/core": {
82598208 "name": "p2p-hiverelay",
8260 "version": "0.25.0-rc.5",
8209 "version": "0.25.0-rc.6",
82618210 "license": "Apache-2.0",
82628211 "dependencies": {
82638212 "@grpc/grpc-js": "^1.14.4",
……@@ -8333,14 +8282,14 @@
83338282 },
83348283 "packages/services": {
83358284 "name": "p2p-hiveservices",
8336 "version": "0.25.0-rc.5",
8285 "version": "0.25.0-rc.6",
83378286 "license": "Apache-2.0",
83388287 "dependencies": {
83398288 "@noble/curves": "^2.2.0",
83408289 "@noble/hashes": "^2.2.0",
83418290 "@noble/secp256k1": "^3.1.0",
83428291 "b4a": "^1.8.1",
8343 "p2p-hiverelay": "^0.25.0-rc.4",
8292 "p2p-hiverelay": "^0.25.0-rc.6",
83448293 "sodium-universal": "^5.0.1"
83458294 },
83468295 "engines": {
……@@ -8380,7 +8329,7 @@
83808329 },
83818330 "packages/verifier": {
83828331 "name": "p2p-hiverelay-verifier",
8383 "version": "0.25.0-rc.5",
8332 "version": "0.25.0-rc.6",
83848333 "license": "Apache-2.0",
83858334 "dependencies": {
83868335 "b4a": "^1.8.1"
package.json +2 -2
……@@ -1,6 +1,6 @@
11{
22 "name": "p2p-hiverelay-monorepo",
3 "version": "0.25.0-rc.5",
3 "version": "0.25.0-rc.6",
44 "description": "Monorepo root for HiveRelay (Core + Services + Client)",
55 "private": true,
66 "type": "module",
……@@ -76,7 +76,6 @@
7676 "@hyperswarm/testnet": "^3.0.0",
7777 "bare": "^1.28.7",
7878 "brittle": "^4.0.2",
79 "patch-package": "^8.0.1",
8079 "standard": "^17.1.0"
8180 },
8281 "engines": {
……@@ -107,6 +106,7 @@
107106 },
108107 "dependencies": {
109108 "ip-address": "^10.2.0",
109 "patch-package": "^8.0.1",
110110 "socks": "^2.8.9"
111111 },
112112 "overrides": {
packages/client/package.json +2 -2
……@@ -1,6 +1,6 @@
11{
22 "name": "p2p-hiverelay-client",
3 "version": "0.25.0-rc.5",
3 "version": "0.25.0-rc.6",
44 "description": "Unified client SDK for HiveRelay (Core + Services). Talks to either via capability flags advertised by relay nodes.",
55 "type": "module",
66 "main": "index.js",
……@@ -61,7 +61,7 @@
6161 "corestore": "^7.11.0",
6262 "hyperdrive": "^13.3.2",
6363 "hyperswarm": "^4.17.0",
64 "p2p-hiverelay": "^0.25.0-rc.5",
64 "p2p-hiverelay": "^0.25.0-rc.6",
6565 "sodium-universal": "^5.0.1"
6666 },
6767 "engines": {
packages/core/package.json +1 -1
……@@ -1,6 +1,6 @@
11{
22 "name": "p2p-hiverelay",
3 "version": "0.25.0-rc.5",
3 "version": "0.25.0-rc.6",
44 "description": "HiveRelay Core — minimal always-on P2P availability infrastructure (seeding, circuit relay, proof-of-relay, gateway)",
55 "type": "module",
66 "main": "core/index.js",
packages/services/package.json +2 -2
……@@ -1,6 +1,6 @@
11{
22 "name": "p2p-hiveservices",
3 "version": "0.25.0-rc.5",
3 "version": "0.25.0-rc.6",
44 "description": "HiveRelay Services — application-layer services (AI inference, identity, schemas, SLAs, storage CRUD) that ride on top of HiveRelay Core",
55 "type": "module",
66 "exports": {
……@@ -20,7 +20,7 @@
2020 "@noble/hashes": "^2.2.0",
2121 "@noble/secp256k1": "^3.1.0",
2222 "b4a": "^1.8.1",
23 "p2p-hiverelay": "^0.25.0-rc.5",
23 "p2p-hiverelay": "^0.25.0-rc.6",
2424 "sodium-universal": "^5.0.1"
2525 },
2626 "engines": {
packages/verifier/package.json +1 -1
……@@ -1,6 +1,6 @@
11{
22 "name": "p2p-hiverelay-verifier",
3 "version": "0.25.0-rc.5",
3 "version": "0.25.0-rc.6",
44 "description": "Independent reference verifier for HiveRelay — reads raw hypercores from multiple relays and reports divergence. Ships separately from the main client SDK so cross-client verification is meaningful (see docs/THREAT-MODEL.md action item #3).",
55 "type": "module",
66 "main": "index.js",
startos/README.md +1 -1
……@@ -167,7 +167,7 @@ Three paths, smallest to widest reach:
167167## Status
168168
169169Package source targets multi-arch image tarballs (x86_64 + aarch64),
170v0.25.0-rc.5, one-page dashboard via `HIVERELAY_UI_SIMPLE`, review-mode first boot,
170v0.25.0-rc.6, one-page dashboard via `HIVERELAY_UI_SIMPLE`, review-mode first boot,
171171and a first-boot-only 10 GB storage cap. Current `v0.20.2` package verification
172172is externally gated on the published GHCR image/tag and digest; once that image
173173exists, `make verify IMAGE_DIGEST=sha256:<multi-arch-digest>` is the release