SeatSuccessionService class

The reusable succession LOGIC — the whole verb minus argv and sinks.

Why it composes GitOps rather than driving git itself. The safety this verb needs is already owned one layer up and already used three times in this package: GitOps.hasUncommittedWork runs the rev-parse --show-toplevel --show-prefix WORK-TREE-ROOT guard (a git command run from a non-checkout walks UP and would commit to the enclosing repository) and fails CLOSED on a git status that exits 0 while warning on stderr — a degraded scan is "couldn't tell", never an invented answer. Both rules are scope-independent, so re-deriving either here would be a second, diverging copy of a solved problem.

GitOps has no PATHSPEC-scoped public method, and scoping is load-bearing here: a grid home is a live checkout, and git add -A would sweep the operator's unrelated work into an archive commit. So the two scoped mutations and the two archive proofs go through the SAME injected GitRunner the GitOps instance wraps — the established pattern for a GitOps gap in this package (code_capabilities.dart's worktree prune). They run only AFTER the gate above has cleared the root guard on this exact working directory.

Constructors

SeatSuccessionService({GitRunner? runner})
Creates the service over its ONE IO seam beyond the disc itself: the runner every git call rides (Fakes, not mocks). Absent ⇒ the real SystemGitRunner.
const

Properties

hashCode → int
The hash code for this object.
no setterinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
succeed({required String gridHome, required String seat, required bool destructive}) → Future<SeatSuccessionReport>
Archives seat's disc under gridHome and consumes its one live handoff. With destructive false, everything happens EXCEPT the deletion.
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited