feat(push): Phase 6 — ingest transaction model
Snapshot referential integrity (Phase C): server now rejects pushes where a snapshot manifest references an object not in the push bundle and not in storage. Prevents dangled commits that can never be fetched.
Explicit rollback coverage (Phase D): session.rollback() added before all post-loop error paths (quota exceeded, unsigned commits) to complement the existing rollbacks on unknown parent and non-fast-forward errors.
_objects_in_push set tracks IDs of every object received in this push so the integrity check can distinguish 'in this bundle' from 'must be in DB'.
T12 TDD tests (3 tests, 57 total): P6A: missing snapshot object rejected 422 P6B: object from prior push accepted (already-in-storage path) P6C: branch head unchanged after rejected push (atomicity)
_make_commit helper updated: populates parent_commit_id/parent2_commit_id from parent_ids list so WireCommit validation sees proper parent links.
0 comments
muse hub commit comment sha256:7707ea776a83cc570afb5582ab331a30e794ce8994ecadacf8ab3ff3daab66e0 --body "your comment"
No comments yet. Be the first to start the discussion.