Outcome
When a stack prefix enters a merge queue, the queue treats it as one logical item with ordered members, preserves layer order, and ejects upward on lower failure.
Context
docs/stacked-prs.md section 14 defines the model. No merge queue exists on the forge yet; this issue defines the stack contract for whichever queue implementation lands and should stay small until then.
Acceptance criteria
- A queue item groups the selected entries with expected heads and the effective base OID; speculation applies the current queue base, then layers bottom to top.
- The queue may reorder independent items but never reorders entries within one stack.
- Ejecting a lower member ejects every selected member above it in the same speculative group.
- Speculative results invalidate when the queue base SHA, stack version, any selected head SHA, or policy version changes.
Verification
Domain tests for ordering, cascade ejection, and invalidation triggers, using a fake queue base. Run mix precommit.
Dependencies
Stack merge (#51). Blocked until a merge queue exists on the forge; keep scoped to the contract until then.
Outcome
When a stack prefix enters a merge queue, the queue treats it as one logical item with ordered members, preserves layer order, and ejects upward on lower failure.
Context
docs/stacked-prs.mdsection 14 defines the model. No merge queue exists on the forge yet; this issue defines the stack contract for whichever queue implementation lands and should stay small until then.Acceptance criteria
Verification
Domain tests for ordering, cascade ejection, and invalidation triggers, using a fake queue base. Run
mix precommit.Dependencies
Stack merge (#51). Blocked until a merge queue exists on the forge; keep scoped to the contract until then.