Backfill: multi-seat work coordination is ward's problem, and sirens-echo has been reimplementing it locally #1675

Open
opened 2026-08-17 18:20:19 +00:00 by coilyco-ops · 0 comments
Member

Filed by Darren (director seat), 2026-08-17, at Kai's direction during a sirens-echo consult round. Carrying coilyco-gaming/sirens-echo#552 up here.

Kai's framing, verbatim

this is ward's entire problem and you've been duplicating it inside of sirens-echo. we need to make fj issue to backfill into ward

That is the whole point of this issue. Below is the measured evidence sirens-echo accumulated while building a second, worse version of a thing ward exists to provide.

What sirens-echo built instead

A claim protocol: a seat comments on an issue to claim it, waits a one-minute buffer, then works it. Pure convention, enforced by nothing, coordinating four agent seats posting as one shared @coilyco-ops identity.

What it measured

Seven duplicate builds in a single session, from sirens-echo#552:

  • #337 / #345 - same fix twice, one discarded
  • #381 / #398 - same fix twice, one discarded
  • #386 / #407 - same fix twice, both landed, one emitting an empty line exactly when the reply mattered
  • the red-main fix - two seats, one wasted
  • #465 - same fix twice, one discarded
  • #527 the tracker-surface doc - both landed, main carried the doc twice until #546
  • #539 the capability report - caught pre-merge, PR #544 closed for PR #548

Two defects reached main this way.

The two structural facts the local protocol cannot fix

A file is not an issue. In the #527 collision the other seat was working a different issue that happened to touch the same file. No issue-scoped claim covers that and none reasonably could. The protocol coordinates issues, and the collision surface is files.

Two seats can claim the same issue in the same window. The one-minute buffer catches a claim racing a claim. It does not catch two seats that both decide, independently and correctly, that an unclaimed issue is theirs.

In the doc case and the capability case the protocol was followed correctly by everyone involved and the collision happened anyway. That is what makes it structural rather than carelessness, and it is why patching the protocol in sirens-echo is the wrong repository.

Why this is ward's

Ward is the governed execution layer for unattended coding agents in isolated repository workflows. Deciding which seat may work which change, and preventing two from doing the same one, is that layer's job. A per-repo comment convention is a symptom of the layer not offering it.

The same repo already reached the same conclusion once from a different direction. ward#1665 was filed from sirens-echo#483 with Kai's framing that the ward flow should be extracted into something lower-complexity. This issue is the coordination half of that same extraction, and the two should probably be read together rather than solved separately.

There is a related irony worth recording, because it bears on the design. ward#1665 documents that the claim protocol's comments are themselves what blocks ward agent director merge, since a @coilyco-ops claim comment reads as unacknowledged human feedback. So the local workaround for ward's missing coordination is actively breaking ward's merge gate. One mechanism, failing at both ends.

What a fix would need to reach

Recorded as constraints from the evidence, not as a design.

  • Claims are over paths, not only issues. The cross-issue same-file case is the one the current shape structurally cannot see, and it is the one that landed a duplicate doc on main.
  • Claiming is an operation, not a comment. A convention enforced by nothing produced two defects on main while being followed correctly. Whatever replaces it should be able to refuse.
  • Seat identity has to be real. Four seats share @coilyco-ops, so nothing downstream can tell them apart. ward#1665 records the same root cause breaking the merge gate.
  • It must not reintroduce a label-keyed decision. ward#1672 is removing executable authority derived from issue labels, on the grounds that a mutable string a human edits in a tracker UI is the wrong substrate for a guard. A coordination mechanism should not walk back into that.
  • coilyco-gaming/sirens-echo#552 - the measurement this carries, staying open there as the local record.
  • ward#1665 - the merge-flow extraction epic. Same territory, other half.
  • ward#1672 - removing label-driven dispatch authority. A constraint on any design here.
  • coilyco-gaming/sirens-echo#814, #568 - the merge-result gap that lets two green branches sum to a red main. Adjacent, and not the same problem.
**Filed by Darren (director seat), 2026-08-17, at Kai's direction during a sirens-echo consult round.** Carrying `coilyco-gaming/sirens-echo#552` up here. ## Kai's framing, verbatim > this is ward's entire problem and you've been duplicating it inside of sirens-echo. we need to make fj issue to backfill into ward That is the whole point of this issue. Below is the measured evidence sirens-echo accumulated while building a second, worse version of a thing ward exists to provide. ## What sirens-echo built instead A **claim protocol**: a seat comments on an issue to claim it, waits a one-minute buffer, then works it. Pure convention, enforced by nothing, coordinating four agent seats posting as one shared `@coilyco-ops` identity. ## What it measured Seven duplicate builds in a single session, from sirens-echo#552: * `#337` / `#345` - same fix twice, one discarded * `#381` / `#398` - same fix twice, one discarded * `#386` / `#407` - same fix twice, **both landed**, one emitting an empty line exactly when the reply mattered * the red-main fix - two seats, one wasted * `#465` - same fix twice, one discarded * `#527` the tracker-surface doc - **both landed**, main carried the doc twice until `#546` * `#539` the capability report - caught pre-merge, PR `#544` closed for PR `#548` Two defects reached `main` this way. ## The two structural facts the local protocol cannot fix **A file is not an issue.** In the `#527` collision the other seat was working a *different* issue that happened to touch the same file. No issue-scoped claim covers that and none reasonably could. The protocol coordinates issues, and the collision surface is files. **Two seats can claim the same issue in the same window.** The one-minute buffer catches a claim racing a claim. It does not catch two seats that both decide, independently and correctly, that an unclaimed issue is theirs. In the doc case and the capability case **the protocol was followed correctly by everyone involved** and the collision happened anyway. That is what makes it structural rather than carelessness, and it is why patching the protocol in sirens-echo is the wrong repository. ## Why this is ward's Ward is the governed execution layer for unattended coding agents in isolated repository workflows. Deciding which seat may work which change, and preventing two from doing the same one, is that layer's job. A per-repo comment convention is a symptom of the layer not offering it. The same repo already reached the same conclusion once from a different direction. ward#1665 was filed from sirens-echo#483 with Kai's framing that the ward flow should be extracted into something lower-complexity. **This issue is the coordination half of that same extraction**, and the two should probably be read together rather than solved separately. There is a related irony worth recording, because it bears on the design. ward#1665 documents that the claim protocol's comments are themselves what blocks `ward agent director merge`, since a `@coilyco-ops` claim comment reads as unacknowledged human feedback. So the local workaround for ward's missing coordination is actively breaking ward's merge gate. One mechanism, failing at both ends. ## What a fix would need to reach Recorded as constraints from the evidence, not as a design. * **Claims are over paths, not only issues.** The cross-issue same-file case is the one the current shape structurally cannot see, and it is the one that landed a duplicate doc on main. * **Claiming is an operation, not a comment.** A convention enforced by nothing produced two defects on main while being followed correctly. Whatever replaces it should be able to refuse. * **Seat identity has to be real.** Four seats share `@coilyco-ops`, so nothing downstream can tell them apart. ward#1665 records the same root cause breaking the merge gate. * **It must not reintroduce a label-keyed decision.** ward#1672 is removing executable authority derived from issue labels, on the grounds that a mutable string a human edits in a tracker UI is the wrong substrate for a guard. A coordination mechanism should not walk back into that. ## Related * `coilyco-gaming/sirens-echo#552` - the measurement this carries, staying open there as the local record. * ward#1665 - the merge-flow extraction epic. Same territory, other half. * ward#1672 - removing label-driven dispatch authority. A constraint on any design here. * `coilyco-gaming/sirens-echo#814`, `#568` - the merge-result gap that lets two green branches sum to a red main. Adjacent, and not the same problem.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/ward#1675
No description provided.