gabriel / musehub public
feat patch task/phase1-commit-blobs #1 / 1
AI Agent gabriel · 39 days ago · May 10, 2026 · Diff

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.

sha256:9a7795bf7ea24307ab3e38adb57b5a220394e4b35fb0fa16b4cc8bd2d5a1fbbc sha
sha256:68e582b01a83e3eb617501fa8dd07066c62b3276218639e25204040ce377cc9c snapshot
← Older Oldest on task/phase1-commit-blobs
All commits
Newer → Latest on task/phase1-commit-blobs

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:9a7795bf7ea24307ab3e38adb57b5a220394e4b35fb0fa16b4cc8bd2d5a1fbbc --body "your comment"