docs(02-review): update fix commit hashes after rebase onto latest main
Demo images / Build & push demo images (push) Successful in 3m46s

Rebasing the review-fix branch onto main (which had advanced with
unrelated 09-06/botfights commits since this branch was created) rewrote
every commit hash. Update 02-REVIEW.md's Status lines and summary table to
reference the post-rebase hashes.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
archipelago
2026-07-31 04:18:10 -04:00
co-authored by Claude
parent 64aafa7899
commit fcbf50f67e
+16 -16
View File
@@ -61,15 +61,15 @@ findings. Full test suite (774 tests / 95 files), `vue-tsc --noEmit`, and
| Finding | Status | Commit |
|---|---|---|
| CR-01 | Fixed | `69e45554` |
| WR-01 | Fixed | `f34ef922` |
| WR-02 | Fixed | `f5cd9294` |
| WR-03 | Fixed (flagged for human verification — concurrency-race logic) | `467f53e8` |
| WR-04 | Fixed | `2005c8c7` |
| WR-05 | Fixed | `40f8cf67` |
| WR-06 | Fixed | `013704a9` |
| CR-01 | Fixed | `57989dfc` |
| WR-01 | Fixed | `61057704` |
| WR-02 | Fixed | `751b05f2` |
| WR-03 | Fixed (flagged for human verification — concurrency-race logic) | `69358bf6` |
| WR-04 | Fixed | `5f7cd4c8` |
| WR-05 | Fixed | `7e4e739e` |
| WR-06 | Fixed | `0486045d` |
| IN-01 | Documented, not fixed | — |
| IN-02 | Fixed | `952f6102` |
| IN-02 | Fixed | `b5506025` |
## Summary
@@ -157,7 +157,7 @@ const lndInfoRes = useCachedResource<{
Also update Home.vue's comment once fixed — it currently documents this as a
known, deliberately-unfixed gap.
**Status:** Fixed in `69e45554` (`fix(02-review): CR-01 web5.lnd-info/profits resources must not persist to sessionStorage`).
**Status:** Fixed in `57989dfc` (`fix(02-review): CR-01 web5.lnd-info/profits resources must not persist to sessionStorage`).
## Warnings
@@ -222,7 +222,7 @@ subscribers' fetcher happened to execute, or (c) make Marketplace.vue call
`fetchAppCatalog()` too (unifying the two fetchers) so both producers are
genuinely interchangeable as the design comment assumes.
**Status:** Fixed in `f34ef922` (`fix(02-review): WR-01 decouple Discover's featured-banner data from app-catalog dedup race`) — implemented option (b)-adjacent: the featured payload now lives on its own dedicated cache key (`'app-catalog:featured'`) subscribed only by Discover.vue, decoupled entirely from the shared `'app-catalog'` dedup race. The shared key and its dedup behavior are unchanged.
**Status:** Fixed in `61057704` (`fix(02-review): WR-01 decouple Discover's featured-banner data from app-catalog dedup race`) — implemented option (b)-adjacent: the featured payload now lives on its own dedicated cache key (`'app-catalog:featured'`) subscribed only by Discover.vue, decoupled entirely from the shared `'app-catalog'` dedup race. The shared key and its dedup behavior are unchanged.
### WR-02: MeshMap.vue's geolocation watch keeps running after the Mesh tab is deactivated
@@ -261,7 +261,7 @@ onDeactivated(() => {
should be a deliberate, documented decision like the other exceptions in this
phase — not a gap in an otherwise-systematic "only-while-visible" rewrite.)
**Status:** Fixed in `f5cd9294` (`fix(02-review): WR-02 stop MeshMap geolocation watch on deactivate, resume on activate`). `onDeactivated` now stops an active watch, tracked via a flag so `onActivated` transparently resumes it on return to the tab (the user's toggle state is preserved, not lost).
**Status:** Fixed in `751b05f2` (`fix(02-review): WR-02 stop MeshMap geolocation watch on deactivate, resume on activate`). `onDeactivated` now stops an active watch, tracked via a flag so `onActivated` transparently resumes it on return to the tab (the user's toggle state is preserved, not lost).
### WR-03: OpenWrtGateway.vue's `load(params)` can silently drop a caller's params under concurrent load
@@ -309,7 +309,7 @@ via `.optimistic()`), or track an explicit "params in flight" flag and reject/
queue overlapping calls with different params instead of silently coalescing
them.
**Status:** Fixed in `467f53e8` (`fix(02-review): WR-03 never drop OpenWrtGateway Connect form params under concurrent load`). `load(params)` now bypasses `routerResource.refresh()` entirely when explicit params are supplied, calling `rpcClient` directly and writing the result into `routerResource.entry` (rather than via `.optimistic()`, to also set `fetchedAt`/`loadState` consistently with a normal refresh success). This is a real concurrency-race fix — flagged for human verification of the logic (concurrent-load race conditions are inherently hard to prove correct from static reading alone; type-check and the full test suite pass, but there is no dedicated OpenWrtGateway.vue test file to exercise the race directly).
**Status:** Fixed in `69358bf6` (`fix(02-review): WR-03 never drop OpenWrtGateway Connect form params under concurrent load`). `load(params)` now bypasses `routerResource.refresh()` entirely when explicit params are supplied, calling `rpcClient` directly and writing the result into `routerResource.entry` (rather than via `.optimistic()`, to also set `fetchedAt`/`loadState` consistently with a normal refresh success). This is a real concurrency-race fix — flagged for human verification of the logic (concurrent-load race conditions are inherently hard to prove correct from static reading alone; type-check and the full test suite pass, but there is no dedicated OpenWrtGateway.vue test file to exercise the race directly).
### WR-04: `resources.ts`'s `entry()` silently ignores `persist` after the first call for a key
@@ -343,7 +343,7 @@ sessionStorage with no indication anything is wrong.
consistent, or have `optimistic()` require an explicit `persist` argument
(no default) so silent fallback-to-`true` can't happen by omission.
**Status:** Fixed in `2005c8c7` (`fix(02-review): WR-04 require explicit persist on resources.ts entry()/optimistic()`) — implemented both suggested fixes together: `persist` is now a required (no-default) argument on both `entry()` and `optimistic()`, and the per-key decision is recorded and asserted (dev-only warning) against any later call that disagrees. `useCachedResource`'s `optimistic()` wrapper threads its own already-resolved `persist` value through automatically. The two direct external call sites (Cloud.vue/PeerFiles.vue's per-peer browse cache) and the resources store's unit tests were updated to pass `persist` explicitly, preserving existing behavior exactly.
**Status:** Fixed in `5f7cd4c8` (`fix(02-review): WR-04 require explicit persist on resources.ts entry()/optimistic()`) — implemented both suggested fixes together: `persist` is now a required (no-default) argument on both `entry()` and `optimistic()`, and the per-key decision is recorded and asserted (dev-only warning) against any later call that disagrees. `useCachedResource`'s `optimistic()` wrapper threads its own already-resolved `persist` value through automatically. The two direct external call sites (Cloud.vue/PeerFiles.vue's per-peer browse cache) and the resources store's unit tests were updated to pass `persist` explicitly, preserving existing behavior exactly.
### WR-05: `server.network-summary`'s abort-on-unmount contract is only half-honored
@@ -372,7 +372,7 @@ resource.
`dnsStatus()` (mirroring the pattern already used everywhere else in
`rpc-client.ts`) and forward it here.
**Status:** Fixed in `40f8cf67` (`fix(02-review): WR-05 forward abort signal through vpnStatus()/dnsStatus()`).
**Status:** Fixed in `7e4e739e` (`fix(02-review): WR-05 forward abort signal through vpnStatus()/dnsStatus()`).
### WR-06: MeshMap.vue re-arms a redundant 300ms fallback timer on every reactivation
@@ -392,7 +392,7 @@ init for the very first mount") not actually match what the code does
if (!map) setTimeout(initMap, 300)
```
**Status:** Fixed in `013704a9` (`fix(02-review): WR-06 skip redundant fallback init timer on later MeshMap reactivations`).
**Status:** Fixed in `0486045d` (`fix(02-review): WR-06 skip redundant fallback init timer on later MeshMap reactivations`).
## Info
@@ -434,7 +434,7 @@ path from the cache, so a future reader doesn't mistake it for dead code to
delete.
**Fix:** Non-blocking; a comment is sufficient.
**Status:** Fixed in `952f6102` (`fix(02-review): IN-02 document wrapperFor's currently-unreachable full-bleed branch`).
**Status:** Fixed in `b5506025` (`fix(02-review): IN-02 document wrapperFor's currently-unreachable full-bleed branch`).
---