Skip to content

docs(protocol): name destructive commands 155-159 (certificate transfer, LOCK_DEVICE) - #2828

Open
LeonardSEO wants to merge 1 commit into
ryanbr:mainfrom
LeonardSEO:docs/name-commands-155-159
Open

LeonardSEO wants to merge 1 commit into
ryanbr:mainfrom
LeonardSEO:docs/name-commands-155-159

Conversation

@LeonardSEO

Copy link
Copy Markdown

What this PR does

Names five opcodes from the official app 5.473.0 in the shared schema (whoop_protocol.json) and the Kotlin CommandNames map, so a response echoing one is legible in a strap log:

Code Name
155 START_CERTIFICATE_TRANSFER
156 LOAD_CERTIFICATE
157 VERIFY_CERTIFICATE
158 PROCESS_CERTIFICATE
159 LOCK_DEVICE

All five are destructive or of unknown reversibility. They are added to the "Destructive commands" table in docs/PROTOCOL_IMPLEMENTATION.md and stay out of the send allowlist and sender enums on both platforms. Nothing can send them.

146/147 (SET_CLOCK / GET_CLOCK in the app's table) are left out on purpose: those names already belong to 10/11 in NOOP's schema and would make logs ambiguous.

Source: LeonardSEO/wearable5.0, command table (app-derived names).

Type of change

  • Documentation

How it was tested

  • CommandCatalogueTest (schema and Kotlin name map stay in lockstep) passes with the five new names.
  • swift test in Packages/WhoopProtocol: 816 tests pass (1 skipped, as on main).
  • ./gradlew testFullDebugUnitTest: 6688 tests, all pass apart from the 2 RecoveryDriversTest half-tie cases that fail the same way on unmodified main.
  • Tools/i18n_audit.py --ci, Tools/doc_comment_lint.py, docs/protocol-examples checks and Tools/parity_ledger.py --refresh-derived (derived snapshots included): pass.
  • Tools unit tests, the parity acceptance suite and the R-R contract: pass apart from the 4 test_check_source_references cases (/var vs /private/var temp path on macOS) that fail the same way on unmodified main.
  • Apple: the macOS app (Strand) builds with this change on my development branch; StrandTests and the iOS target were not run locally for this branch. app-build.yml covers both.

Checklist

  • Swift package tests pass for any package I touched
  • Android unit tests pass if I touched android/ (apart from the 2 RecoveryDriversTest half-tie cases that fail the same way on unmodified main)
  • No new build warnings introduced (Android: none; Apple warnings not checked per branch)
  • UI changes use only StrandDesign / Palette / Metrics tokens
  • No hardcoded hex frame bytes; protocol facts live in the schema / decoders
  • Follows the conventions in docs/CONTRIBUTING.md
  • I did not commit generated output (Strand.xcodeproj/) or any secrets/keystores

Related issues

None.

🤖 Generated with Claude Code

… for log legibility

Names from the official app's command table via LeonardSEO/wearable5.0. Schema and Kotlin name map only; listed as destructive and absent from the send allowlist on both platforms.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant