feat: Ed25519 proposer signature on merge proposals
Every proposal now optionally carries an Ed25519 signature by the proposer over the canonical PROPOSE pre-image (repo_id, from_branch, to_branch, author, client-supplied timestamp).
- musehub/proposals/signing.py: canonical_propose_message(), verify_proposer_signature() (uses decode_sig/decode_pubkey from muse.core.types), check_timestamp_skew() - alembic/versions/0048: proposer_signature + proposer_public_key columns (nullable) - musehub_models.py: ORM columns on MusehubProposal - musehub.py: ProposalCreate gains proposerPublicKey/Signature/Timestamp fields; ProposalResponse gains proposerSignature + proposerPublicKey - musehub_proposals service: create_proposal accepts + stores both fields - proposals route: verifies registered key (403), valid sig (422), timestamp skew (422) - tests/test_proposal_proposer_signature.py: 10 tests (T1-T7) all passing
0 comments
muse hub commit comment sha256:e55c0e6cc811e108d2f1638d065cbf87a81cd0d34d16a2f8a28ba07f876d77b3 --body "your comment"
No comments yet. Be the first to start the discussion.