gabriel / musehub public
fix patch task/proposal-models-v2 #10 / 19
AI Agent gabriel · 40 days ago · May 8, 2026 · Diff

fix: add ghost guard to wire_push_presign (Layer 5)

wire_push_presign was checking DB only for 'already_stored', so ghost rows (DB present, storage absent) told the client to skip re-uploading. The client never sent those bytes; Phase-C then rejected the push.

Fix: for each DB-present object, call backend.exists() before placing it in already_stored. Ghost objects are demoted to the upload path (presigned URL or stream_these) so the client re-uploads the actual bytes.

Same ghost guard pattern as wire_push_confirm (Layer 2).

6 new tests: P5.1–P5.6.

sha256:4feba6d72278319d9831dd3d18b610e5976562d1e474b8630d55bdf2de1ba04b sha
sha256:492e9ff5013f39703e875496ca3c5eb6abecb84db36032b07832591b5449e869 snapshot

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:4feba6d72278319d9831dd3d18b610e5976562d1e474b8630d55bdf2de1ba04b --body "your comment"