Skip to content

pathDead: treat a Cancelled base dependency as dead once multi-path enumeration lands #369

Description

@behinddwalls

Context

speculate.reconcile marks a path dead (pathDead in submitqueue/orchestrator/controller/speculate/speculate.go) when its merge assumptions can no longer hold: a base dependency reached Failed, or a dependency outside the base Succeeded (the path bet it would not land first).

A Cancelled base dependency deliberately does NOT dead the path today (Phase-A leniency). This mirrors the pre-tree chain semantics: the cancelled batch will never land, so it can no longer conflict with the path's changes, and we accept that the path's build ran against a stale assumption set (it built on top of a base member that will now never merge ahead of it).

What should change

Once multi-path enumeration lands (a batch's tree carries more than the single chain path), a Cancelled base dependency should mark the path dead the same way a Failed one does: a sibling path that never assumed the cancelled batch picks up the slack, and the batch merges on an accurate assumption set instead of a stale build.

This is gated on multi-path enumeration because today there is exactly one path per batch (chain enumerator) — deading the only path on a benign cancel would fail batches that currently survive via the chain semantics.

Where

  • pathDead in submitqueue/orchestrator/controller/speculate/speculate.go — treat a Cancelled base dependency as dead.
  • Revisit the reconcile tests' Phase-A expectations at the same time.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions