feat(genesis): Phase 4-5 genesis-addressed IDs for all server entities
Phase 4 — service layer: replace uuid4() with compute_*_id() everywhere - musehub_auth.py: compute_identity_id(handle, public_key_b64) - musehub_repository.py: compute_repo_id(owner_identity_id, slug) - musehub_sessions.py: compute_session_id(identity_id, nonce) - musehub_issues.py: compute_issue_id / compute_comment_id - musehub_proposals.py: compute_proposal_id / compute_review_id - All routes and MCP tools updated to pass author_identity_id + domain
Phase 5 — Pydantic validators: @field_validator on all entity ID fields in musehub/models/musehub.py enforces sha256:<64 hex chars> format at the API boundary; invalid IDs raise 422 immediately on deserialization
New files: - musehub/core/genesis.py: all compute_*_id helpers - alembic/versions/0049_widen_commit_id_columns.py - alembic/versions/0050_genesis_addressed_ids.py - tests/test_genesis_ids.py: 43 TDD tests covering all six tiers - tests/test_id_canonical.py, tests/test_object_store_canonical.py
0 comments
muse hub commit comment sha256:ad10f6d3966da02981bb920192ae0cce156d5e0ad0dec6f0eefe20d42f41bb4d --body "your comment"
No comments yet. Be the first to start the discussion.