114 lines
5.7 KiB
Markdown
114 lines
5.7 KiB
Markdown
# Resume — 2026-08-05 (app gate, releases .122–.125)
|
||
|
||
Paste the block at the bottom into a new session.
|
||
|
||
## Where things stand
|
||
|
||
- **v1.7.124-alpha is SHIPPED** (signed with the NEW root, published, verified).
|
||
- **Signed catalog is LIVE** carrying two hotfixes made after .124:
|
||
the repaired bitcoin start script and the fedimint 8175 removal.
|
||
Last commit: `4ace62fa`.
|
||
- **Release-root rotation is COMPLETE.** .122 was the last release signed with
|
||
the old key; .123/.124 and all catalogs use the new one. No override needed.
|
||
|
||
## Two bugs I introduced in .124 (both fixed, both instructive)
|
||
|
||
1. **Bitcoin vanished from every node.** I put a `#` comment INSIDE the
|
||
manifest's folded YAML scalar (`>-`), where `#` is not a comment — it
|
||
reaches the shell, and folding joins lines with spaces so it commented out
|
||
the `if ... then` while the more-indented `echo` survived, leaving an orphan
|
||
`fi`. Container exited instantly; app detection is container-based so the
|
||
app disappeared. **Guard added:** `scripts/check-manifest-shell.py` runs
|
||
`sh -n` over every embedded manifest script and rejects `#` in these
|
||
scalars; wired into `tests/release/run.sh`.
|
||
2. **Fedimint crash-looped.** I declared port 8175 on the `fedimint` app so the
|
||
gate could name it — but 8175 is served by the separate `archy-fedimint-ui`
|
||
companion. The orchestrator then tried to publish 8175 from fedimintd,
|
||
collided, and `start_container` failed forever. Removed. **Rule: never
|
||
declare a port on an app whose container does not actually serve it.**
|
||
|
||
Also: I published an UNSIGNED catalog at one point, which nodes correctly
|
||
reject — they silently keep their old cached copy. **Always verify
|
||
`'signature' in catalog` on the live URL after publishing.**
|
||
|
||
## OPEN TASKS
|
||
|
||
1. **indeedhub crash-loop — NOT mine, needs a real fix.** `indeedhub-minio` is
|
||
**absent** on `.38` and `.88`, so nginx fails with
|
||
`host not found in upstream "minio"` and both `indeedhub` and
|
||
`indeedhub-api` exit(1). The stack member never gets created. Look at
|
||
`api/rpc/package/stacks.rs` + `dependencies.rs`.
|
||
2. **Verify `.38` refetched the signed catalog** and bitcoin-knots starts.
|
||
`.88` already did (signed: True, script fixed).
|
||
3. **Deploy the .125 build to archi-dev-box for operator confirmation.**
|
||
Binary is built at `core/target/release/archipelago` with: app-login page
|
||
using the sidebar **A mark** (`favico-black-v2.svg`) not the wordmark;
|
||
page pinned to `100svh` + `position:fixed` so mobile stays centred and the
|
||
keyboard overlays instead of scrolling; install-version modal icon uses
|
||
`object-contain` so non-square icons are not cropped. **Operator has not
|
||
seen these yet.**
|
||
4. **Cut v1.7.125-alpha** once confirmed. Sign with the **NEW** mnemonic.
|
||
|
||
## Traps that cost time today
|
||
|
||
- `create-release.sh` says "sign, then re-run" — **re-running regenerates the
|
||
manifest and DESTROYS the signature**, and its clean-tree check blocks
|
||
anyway. Do steps 7/8 by hand: `git add` version+changelog+manifest →
|
||
commit `chore: release vX` → `git tag -a vX` → push main → **push the tag
|
||
explicitly** → `git ls-remote --tags` to prove it → `publish-release-assets.sh`.
|
||
- The release gate's `cargo-test-weekly` times out on the **compile** after any
|
||
version bump. Pre-warm: `CARGO_INCREMENTAL=0 cargo test --manifest-path
|
||
core/Cargo.toml -p archipelago --no-run`.
|
||
- The frontend version check fails until the in-app **What's New** block for
|
||
that version exists (`neode-ui/src/views/settings/AccountInfoSection.vue`) —
|
||
that string is what it greps for.
|
||
- `generate-app-catalog.py` writes `APP_LAUNCH_PORTS` one-per-line; rustfmt
|
||
packs it, so run `cargo fmt` after any catalog sync or the gate fails.
|
||
- **Manifest changes reach nodes via the SIGNED CATALOG, not the binary.** A
|
||
manifest hotfix needs only a catalog re-sign — no release.
|
||
|
||
## Fleet
|
||
|
||
SSH: `sshpass -p 'ThisIsWeb54321!' ssh archipelago@<ip>` (note the `!`; `@`
|
||
is older and still works on some). RPC/node password differs per node — the
|
||
`!` one failed RPC login on `.38`.
|
||
|
||
- `100.69.68.39` archi-dev-box — dev target
|
||
- `100.82.34.38` archipelago-1
|
||
- `100.70.96.88` austin-sapien
|
||
- `100.64.204.114` .228 shorty-s — **in real use, treat carefully**
|
||
|
||
**Force a catalog refresh on a node:** Settings → App Updates → Check for
|
||
updates, or `sudo rm -f /var/lib/archipelago/app-catalog.json && sudo
|
||
systemctl restart archipelago`.
|
||
|
||
**All fleet nodes were repaired** from `Restart=on-failure` →
|
||
`Restart=always`; a node with the old value stays DEAD after an in-process
|
||
update (the updater exits cleanly and systemd reads that as success).
|
||
`bootstrap::ensure_restart_policy()` now self-heals it.
|
||
|
||
---
|
||
|
||
## PASTE THIS INTO THE NEW SESSION
|
||
|
||
Resume the archy work from 2026-08-05. Read
|
||
`.planning/RESUME-2026-08-05-appgate-fixes.md` and the memory notes
|
||
`project_fleet_ota_restart_policy_incident` and
|
||
`project_v1_7_121_shipped_appgate` first.
|
||
|
||
v1.7.124-alpha is shipped and the signed catalog is live with two hotfixes
|
||
(bitcoin start script, fedimint 8175). Four things are open, in order:
|
||
|
||
1. Fix the indeedhub crash-loop: `indeedhub-minio` is absent on .38 and .88 so
|
||
nginx fails on upstream "minio" and indeedhub + indeedhub-api exit(1). This
|
||
one is pre-existing, not from the port work.
|
||
2. Verify .38 refetched the signed catalog and bitcoin-knots starts (.88
|
||
already did).
|
||
3. Deploy the built .125 binary + frontend to archi-dev-box (100.69.68.39) so
|
||
I can confirm the app-login page (A mark, mobile centring, keyboard
|
||
behaviour) and the install-modal icon.
|
||
4. Then cut v1.7.125-alpha — I sign with the new mnemonic.
|
||
|
||
Do not re-run create-release.sh after signing; it destroys the signature —
|
||
do the commit/tag/publish steps by hand as the resume doc describes.
|