feat: muse sign propose — Ed25519 signing for merge proposal pre-images
New subcommand: muse sign propose --repo-id sha256:<hex> --from-branch <name> --to-branch <name> --hub <url> --json
Outputs proposerPublicKey, proposerSignature, and proposerTimestamp ready to pass directly to muse hub proposal create or the MuseHub REST API.
Also exports canonical_propose_message() — the deterministic UTF-8 byte builder that both the CLI and the MuseHub server use to construct and verify the PROPOSE pre-image. Uses encode_sig/encode_pubkey from muse.core.types throughout — no manual prefix manipulation.
11 TDD tests covering: canonical message format, determinism, proposal_id presence/absence, signature verification, JSON/human-readable output, argparse registration.
sha256:a2e2226b0b27c3a123da1b746ea1c8c4b7a4ad632d763e7b6da35e0dfbcc8fc8
sha
+42
~5
symbols
sha256:8ac3e117d96a4d875e56357b328c78312bcfe81e492ed28ad0adb5053d9c80e4
snapshot
+42
symbols added
~5
symbols modified
0
dead code introduced
Semantic Changes
47 symbols
+
test_public_key_matches_signing_identity
method
method test_public_key_matches_signing_identity L177–185
0 comments
To add a comment, use the Muse CLI:
muse hub commit comment sha256:a2e2226b0b27c3a123da1b746ea1c8c4b7a4ad632d763e7b6da35e0dfbcc8fc8 --body "your comment"
No comments yet. Be the first to start the discussion.