Skip to content

feat: owner revoke/update + linux CI - #5

Merged
jtwolfe merged 1 commit into
rework/unifyfrom
cursor/owner-revoke-update-linux-ci-0f90
Aug 14, 2026
Merged

feat: owner revoke/update + linux CI#5
jtwolfe merged 1 commit into
rework/unifyfrom
cursor/owner-revoke-update-linux-ci-0f90

Conversation

@jtwolfe

@jtwolfe jtwolfe commented Aug 14, 2026

Copy link
Copy Markdown
Owner

Summary

Continues the REWORK-UNIFY effort on jtwolfe/MyMesh. This slice adds:

Owner Management Over Mesh

Honor owner add/remove/update from carrier over the mesh (not HTTP 17878):

  • OwnerRevoke: Node forgets the owner (removes enrollment) when a signed revoke message is received from an enrolled owner
  • OwnerUpdate: Updates the label for an enrolled owner when a signed update message is received

Implementation details:

  • Added OwnerRevoke and OwnerUpdate variants to ControlMessage in the protocol
  • Added owner_revoke_preimage and owner_update_preimage wire functions for signature verification
  • Added update_label method to EnrollmentStore
  • Handler in agent verifies:
    • Sender is an enrolled owner with can_drive
    • Ed25519 signature over the preimage is valid
    • Timestamp is within ±5 min skew window

GitHub Actions CI

Enabled the existing (disabled) CI workflow:

  • Triggers on push to rework/unify branch and v* tags
  • Triggers on pull requests to rework/unify
  • Runs cargo fmt, clippy, tests
  • Builds release binary and uploads as artifact mymesh-linux-x86_64
  • Does not publish to crates.io

ALPN mymesh-enroll/1 Documentation

Added documentation comment in enroll.rs explaining the wire protocol expectations for the mymesh-enroll/1 ALPN. The current EnrollRequest message (ticket + person_public_key_hex + person_id + mesh_name) matches the DESIGN protocol.

Clippy Fixes

Fixed pre-existing clippy warnings to ensure CI passes with -D warnings:

  • mymesh-net: derivable_impls, dead_code, large_enum_variant
  • mymesh-terminal: redundant_closure
  • mymesh-session: borrowed_box, for_kv_map, while_let_loop
  • mymesh-core: manual_repeat_n
  • mymesh-cli: print_literal, format_in_format_args, derivable_impls, collapsible_if, if_same_then_else, min_max

Testing

  • cargo build --workspace
  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace

Not Included

  • Glass, holofs, Tor, pair/v1
  • Does not break 24-word mymesh link or mymesh enroll
Open in Web Open in Cursor 

Owner management over the mesh:
- Add OwnerRevoke and OwnerUpdate ControlMessage variants
- Add owner_revoke_preimage and owner_update_preimage wire functions
- Add update_label method to EnrollmentStore
- Handle OwnerRevoke and OwnerUpdate in agent (verify signature, apply)
- Remove = node forgets that owner, Update = changes label

GitHub Actions CI:
- Enable CI workflow for push to rework/unify branch and tags
- Enable CI for pull requests to rework/unify
- Produces mymesh-linux-x86_64 binary artifact

ALPN mymesh-enroll/1:
- Add documentation comment about wire protocol expectations

Also fixes pre-existing clippy warnings to ensure CI passes.

Co-authored-by: jtwolfe <jtwolfe@users.noreply.github.com>
@jtwolfe
jtwolfe marked this pull request as ready for review August 14, 2026 03:02
@cursor

cursor Bot commented Aug 14, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@jtwolfe
jtwolfe merged commit 18f8d0b into rework/unify Aug 14, 2026
1 check passed
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.

2 participants