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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions