feat: Phase 1 — commit identity blobs stored in object store (content-addressing invariant)
Store the canonical identity payload (the bytes that produce commit_id via sha256) as a blob in MinIO for every new commit. The blob is PUT before the DB INSERT, so the content-addressing invariant holds: DB presence implies blob presence, identical to the guarantee already enforced for file blobs.
What the blob contains: - The six identity fields: sorted parent hex IDs, snapshot_id hex, message, committed_at, author, signer_public_key — null-byte separated. - Mutable annotations (agent_id, reviewed_by, test_runs, etc.) are DB-only; they cannot be part of a content-addressed blob because the commit_id is derived before they exist.
Test added: test_P1_commit_blobs_exist_in_object_store — red then green. Mock fixes: stub backends in test_wire_streaming_push / test_wire_push_plain now declare backend.put as AsyncMock. TestT5ServiceStream.stub_session now patches AsyncSessionLocal so unit tests survive the session-close/reopen that wire_push_stream performs before finalization.
0 comments
muse hub commit comment sha256:9a7795bf7ea24307ab3e38adb57b5a220394e4b35fb0fa16b4cc8bd2d5a1fbbc --body "your comment"
No comments yet. Be the first to start the discussion.