Repository navigation
Stop a refused replace from ending in "stored but not activated" - #83
Merged
Merged
Conversation
"stored but not activated" is our own label for finish: 0a, and it is only ever shown on the append that follows a refused overwrite. The loop guard keyed on "this is a retry", so it also fired when the overwrite target was a guessed id (a re-flash of a dial that is gone from the watch) rather than a slot the user picked. That append is the first one, and 0a on an append is the full-watch answer (#43) — it now reaches the slot dialog. After a slot picked in the dialog, a second 0a still surfaces as an error. Refs #62 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LX5gm5ode3C7m9UdSZPtHp
A 0a against an old_wf_id that a055 reported this session was read as "that dial isn't installed": the id was dropped from the list and the file went out again as an append. On real hardware a reset watch refused most stock dials as replace targets and every append, and took one stock dial (watch_health docs/cmf-protocol.md §9.5h), so that path threw away a real slot, spent a second transfer on a certain refusal and ended in "stored but not activated". Now the dial stays listed and the error asks for a different target, which is the recovery §9.5h found. Guessed ids (this browser's records) still fall back to append. Refs #62 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LX5gm5ode3C7m9UdSZPtHp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #62. This fixes both paths in our code that end in the exact error the reporter quoted. The rest is watch-side firmware state that matches a documented hardware finding; it is unverified on this reporter's watch, so reopen the issue if their answers point elsewhere.
Is it our bug?
The file is fine. Our error handling turned a recoverable watch state into a dead end.
The DosWatch files are ordinary
I downloaded all four marketplace uploads (
1sephn6x6t56opy,detq31fmwvb5xkz,ivo9bn9oyd2vqjn,h1cvpr8a1b7x9an) and compared them with the 100 stock faces and the fixtures:0x0a0x0ain 45 of 100The most-flashed upload has about 160 flashes, and this is the only report.
The watch state is documented, and it is recoverable
watch_health/docs/cmf-protocol.md§9.5h is a real Pro 2 run of the same symptom. After a reset, the watch answeredfinish: 0x0ato every upload: appends, a stale id, and replacing 4 of its 6 stock dials. It accepted only one target, replacing stock dial 274. After that install, uploads worked normally again. The same section shows that0x0aalso covers what looks like a storage refusal: a 498 KB file failed three times, then went through after a smaller install. So0x0adescribes the watch's state, not the content of the file.What our code did with that state
stored but not activatedis our label forfinish: 0x0a.uploadWatchfaceonly shows it on the append that follows a refused overwrite. Two things led there:Still unverified
ponytail:comment.Verification
tests/watch-dials.browser.test.ts: a bareWatchwhose transport answers every finished transfer with0a.watch did not accept the file (stored but not activated; …).NoFreeSlotError(slot dialog). Without the fix this fails with the same message.npm run check: 0 errors. oxlint/oxfmt clean on the touched files.npm test: 56/56 files, 320 passed.Draft reply to the reporter
🤖 Generated with Claude Code
https://claude.ai/code/session_01LX5gm5ode3C7m9UdSZPtHp