Record the completed protocol-8 implementation, its security and lifecycle decisions, and the final local acceptance evidence. Mark protocol-7 Call to Play relay reviews as historical so they cannot be mistaken for current design. Keep production acceptance honest by recording the unavailable canonical 186-game manifest corpus, real Windows/NTFS confinement and durability proof, and representative physical-LAN evidence as external release prerequisites. Test Plan: - `just fmt` (passed) - `just test` (passed; 708 workspace tests, including peer 480 and Tauri 56) - `just clippy` (passed) - `just frontend-test` (passed; 91/91) - `just build` (passed; fixture-backed no-bundle build) - `LANSPREAD_S37_MIN_MIB_PER_S=100 just peer-cli-tests` (passed; S1-S49) - `git diff --cached --check` (passed)
44 lines
2.1 KiB
Markdown
44 lines
2.1 KiB
Markdown
# Findings
|
|
|
|
## Open
|
|
|
|
### `handleErrorEvent` still writes status fields directly
|
|
|
|
`crates/lanspread-tauri-deno-ts/src/hooks/useGames.ts:80-89` — the error handler
|
|
writes `install_status`, `status_message`, `status_level`, and
|
|
`download_progress` from a lifecycle event, which is the same "two sources of
|
|
truth" pattern that commit `5df82aa` ("fix(ui): derive operation status from
|
|
snapshots") removed everywhere else. That commit explicitly carved out error
|
|
messages as a preserved side effect, so this is a documented exception rather
|
|
than a regression — but if we want strict snapshot-is-truth, the error handler
|
|
should stop writing status fields and let the next snapshot reconcile the card,
|
|
keeping only the error message overlay (which the snapshot does not carry).
|
|
|
|
Not blocking. Captured here for a future cleanup pass.
|
|
|
|
## Claude Review Scope Triage
|
|
|
|
No out-of-scope code smells or issues were identified in Claude's review. All
|
|
four points were direct follow-up cleanup for the current protocol change and
|
|
were handled in code.
|
|
|
|
The previous four findings have landed in code and tests:
|
|
|
|
- Download ownership is now journaled before payload mutation. Cancellation and
|
|
startup recovery remove only exact downloader-owned paths and preserve unknown
|
|
root files, instead of leaving crashed partial archives or broadly deleting
|
|
the game root.
|
|
- Historical, superseded by the protocol-v8 cutover: `update_game` once used
|
|
`PeerCommand::FetchLatestFromPeers` and fresh peer metadata. That command and
|
|
its cited tests no longer exist; updates now use the local catalog manifest
|
|
and authenticated peers advertising its exact `ContentId`.
|
|
- Download-to-install handoff no longer relies on `OperationGuard::Drop` for
|
|
ordered state transitions. Covered by
|
|
`download_handoff_waits_for_readers_and_auto_installs` and the liveness
|
|
cancellation tests.
|
|
- Library index reads and writes are serialized by `LIBRARY_INDEX_LOCK`. Covered
|
|
by `concurrent_rescans_preserve_both_index_updates`.
|
|
|
|
Manual install/update/uninstall smoke testing is still a useful release check,
|
|
but there are no known blocking findings left in this file.
|