integration: preserve deployed 1.8.0 OTA work
This commit is contained in:
@@ -304,6 +304,88 @@ phases 2–6 (`dual-ecash-design.md`).
|
||||
|
||||
## 8b. SESSION STATE + RESUME (updated 2026-06-26) — READ §8b "CURRENT STATE + RESUME" FIRST
|
||||
|
||||
### ▶ SESSION i (2026-06-30) — CURRENT HANDOFF / 1.8.0 OTA RESUME
|
||||
|
||||
**Branch/worktree:** currently on `bitcoin-version-bulletproof`, not `main`. Worktree is dirty.
|
||||
Do **not** discard mesh changes: they include E2E/transport indicator plumbing and the Meshtastic
|
||||
receive-path fixes below. Separate recovery note: `docs/SESSION-1.8.0-OTA-PROGRESS.md`.
|
||||
|
||||
**What was done this session:**
|
||||
1. ✅ **Local Rust release gate fixed and green.** `cargo test -p archipelago --bin archipelago` is
|
||||
green: **849/849** after fixing stale tests and the invalid `fedimint-clientd` manifest
|
||||
(`cpu_limit` was `0.25`, invalid for the current schema; now integer). `cargo check -p archipelago`
|
||||
also green after mesh edits.
|
||||
2. ✅ **Catalog/release static gates green.** `python3 scripts/check-app-catalog-drift.py --release
|
||||
--strict` is green. `scripts/check-release-manifest.sh` is green for the currently staged
|
||||
`1.7.99-alpha` manifest/artifacts. `npm run build` and `npm run type-check` are green.
|
||||
3. ✅ **Frontend unit gate fixed.** `npx vitest run --silent` now green: **81 files / 668 tests**. Fixes
|
||||
were test-only: add `router.onError` to the login test router mock and update the `AppIconGrid`
|
||||
mobile unresolved-new-tab expectation to match current app-launcher behavior.
|
||||
4. ✅ **Workstream F harness gap closed.** `tests/lifecycle/bats/cascade-uninstall.bats` now asserts
|
||||
uninstall progress truthfulness via backend `uninstall-stage`: stage must be parseable, monotonic,
|
||||
below 100 before terminal absence, and present before the app disappears. Non-destructive skip-mode
|
||||
parse check is green: `ARCHY_PASSWORD=dummy bats tests/lifecycle/bats/cascade-uninstall.bats` → 7 skip-ok.
|
||||
5. ✅ **3ccc → .116 Meshtastic receive bug taken over and partially live-validated.** Context: `3ccc`
|
||||
is the stock/non-Archy Meshtastic peer. The bug was LoRa text from `3ccc` not surfacing in
|
||||
`.116` `mesh.messages`. Root causes/fixes:
|
||||
- The prior attempted fix dropped any packet older than 10 minutes by `rx_time`; live `.116` logs
|
||||
showed `FromRadio.packet` from `!433e3ccc` being dropped as stale (`rx_time` about an hour old).
|
||||
The window is now **24h**, so recent radio FIFO/store-forward backlog surfaces instead of vanishing.
|
||||
- Radios with unset clocks can report tiny nonzero epoch values; those are now treated as unknown,
|
||||
not stale.
|
||||
- Serial prevalidation was rejecting valid `FromRadio.queueStatus` frames (`field 11`, live bytes like
|
||||
`5a04100e1810`) as corrupt payloads; field 11 and other modern non-message `FromRadio` variants
|
||||
are now accepted/ignored instead of poisoning the stream.
|
||||
- Focused Meshtastic tests green: **8/8**, including `packet_to_inbound_frame_accepts_recent_meshtastic_backlog`
|
||||
and `packet_to_inbound_frame_accepts_stock_peer_with_unset_clock`.
|
||||
- Deployed patched binary to **.116**: sha256
|
||||
`028ec6ff9a60ca8970c081987457d78ed1c517cd81f7089f51b9a01745b5c3c4` at `/usr/local/bin/archipelago`.
|
||||
Service active. Post-deploy checked window showed `FromRadio field=11` accepted and no new
|
||||
`Dropping stale ... !433e3ccc` entries.
|
||||
- There are stale other-agent `RXDIAG` shell watcher processes on `.116`; leave them unless they
|
||||
actively interfere.
|
||||
6. ✅ **Phase-3 Quadlet read-only check on .116 skip-clean.** Copied lifecycle tests to `.116` and ran
|
||||
`bats bats/use-quadlet-backends-install.bats`: **6/6 skip-clean** because no backend `.container`
|
||||
units exist. This confirms `use_quadlet_backends` is not active on `.116`; Phase-3 remains a rollout gate.
|
||||
|
||||
**Commands/results worth trusting:**
|
||||
- `cargo test -p archipelago --bin archipelago` → 849/849 green.
|
||||
- `npx vitest run --silent` from `neode-ui/` → 81 files / 668 tests green.
|
||||
- `npm run build` from `neode-ui/` → green, bundle `index-CYaDgfX3.js`.
|
||||
- `python3 scripts/check-app-catalog-drift.py --release --strict` → green.
|
||||
- `scripts/check-release-manifest.sh` → green for **v1.7.99-alpha** staged artifacts.
|
||||
- `tests/release/run.sh --manifest` was rerun after `cargo fmt`; it previously reached frontend tests,
|
||||
which are now fixed. Re-run it from scratch as the next static gate.
|
||||
|
||||
**Remaining blockers / decisions before 1.8.0 OTA:**
|
||||
1. **Release version metadata is not 1.8.0 yet.** `releases/manifest.json`, Cargo, and npm still say
|
||||
`1.7.99-alpha`; `CHANGELOG.md` top says `v1.8.00-alpha` (note double zero). Do not silently publish
|
||||
until the release version naming is decided (`1.8.0-alpha` vs `1.8.00-alpha` vs `1.8.0`).
|
||||
2. **Workstream B signing is blocked on the offline release-root mnemonic.** `docs/workstream-b-signing-runbook.md`
|
||||
says catalog distribution/embedded manifests are live, but authenticity requires the publisher to pin
|
||||
`RELEASE_ROOT_PUBKEY_HEX` and sign `releases/app-catalog.json` with `RELEASE_MASTER_MNEMONIC`.
|
||||
This cannot be automated by an agent without the offline mnemonic.
|
||||
3. **Phase-3 `use_quadlet_backends` is implemented but default-off.** Completing this requires explicit
|
||||
node/fleet flag rollout plus backend reinstall/migration verification. `.116` currently skip-clean only.
|
||||
4. **Bitcoin multi-version coordinated rollout is still separately owned/blocked by its runbook.** See
|
||||
`docs/bitcoin-version-bulletproof-rollout.md`; do not repoint `bitcoin-knots:latest` before fixed binary
|
||||
is fleet-wide.
|
||||
5. **True RF validation of 3ccc requires either a live 3ccc send or waiting for another FIFO/backlog packet.**
|
||||
Parser/unit coverage and `.116` logs strongly validate the drop-path fix, but no human was available to
|
||||
send a fresh 3ccc message during this session.
|
||||
|
||||
**Immediate next steps for the next agent:**
|
||||
1. Run `tests/release/run.sh --manifest` from repo root again; frontend unit failures are fixed, so expect
|
||||
it to pass or continue from the next failing stage.
|
||||
2. If `.116` is still the canary, monitor logs after any 3ccc activity:
|
||||
`journalctl -u archipelago --since "<time>" | grep -Ei "!433e3ccc|3ccc|Dropping stale|Meshtastic received text|FromRadio field field=2"`.
|
||||
3. Decide/reconcile version naming for the actual 1.8.0 OTA, then use the release scripts intentionally
|
||||
(do not run `create-release.sh` casually: it commits/tags and requires `main` + clean tree).
|
||||
4. If pursuing Workstream B completion, get the offline release mnemonic from the publisher and follow
|
||||
`docs/workstream-b-signing-runbook.md` exactly.
|
||||
5. If pursuing Phase-3 Quadlet, enable `ARCHY_USE_QUADLET_BACKENDS=1` only on a canary first and run the
|
||||
Quadlet/lifecycle gates before considering fleet rollout.
|
||||
|
||||
### ▶ SESSION h (2026-06-26) — LATEST, RESUME FROM HERE
|
||||
|
||||
**Canonical resume detail: memory `project_session_resume_2026_06_23b` (▶️ top of MEMORY.md).**
|
||||
|
||||
Reference in New Issue
Block a user