Skip to content

work-items(attend-queue): no row-level claim — concurrent attended sessions collide on the same rows #1290

Description

@kyle-sexton

This was generated by AI during a loop-lane launch-prompt design session.

Context

/work-items:attend-queue builds one attention view merging [ratify], [escalated], and
[intake] rows, then works them. It has no claim or lease protocol for a row.

/work-items:work has one — the seam claim (assignee + lease), where exit 7 means "another
session won: advance to the next candidate." attend-queue has no equivalent, so two concurrent
attended sessions on the same repository will both surface the same row and can both act on it:
duplicate interview questions posted as comments, conflicting label flips, or two operators
answering the same escalation differently.

This blocks a real workflow: running several attended terminals against one repository to raise
human-in-the-loop throughput on a large backlog. The only mitigation today is manual sharding —
by row kind, by issue-number parity, or by label — coordinated verbally between terminals.

Proposed work

Give attend-queue a row-level claim consistent with the tracker seam's existing protocol, or an
explicit sharding argument so concurrent sessions partition deterministically rather than by
operator discipline.

Sharding-argument shape is the cheaper option and may be sufficient: an argument naming the row
kinds or a modulus this session owns, with the view filtered accordingly.

Acceptance criteria

  • Two concurrent attend-queue sessions on one repository cannot both work the same row
  • The mechanism is stated in the skill, not left to operator convention
  • A single-session run is unaffected — no new required argument

References

Metadata

Surfaced while planning five concurrent attended terminals against a 260-issue backlog.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

priority: mediumReal value, no hard deadline; normal backlog flow.status: needs-decisionAwaiting a human or maintainer judgment call.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions