agents: claim tickets by comment, never by assignment #8

Merged
pit merged 3 commits from hermes/claim-not-assign into main 2026-10-09 10:45:10 +00:00
Owner

Summary

One doc changed: docs/agents/issue-tracker.md (the Wayfinding operations
section). Assignment stops being the claim signal, and the frontier query is
written as the one call it takes.

 docs/agents/issue-tracker.md
   - **Child ticket**: linked as a native `subtask`, labelled `wayfinder:<type>`.
-    Once claimed, assign the driving user (`task_assignees_create`).
+    (no assignment)
 
   - **Frontier query**: open child tasks, drop any with an open blocker...
-    or an assignee; first in map order wins.
-- **Claim**: `task_assignees_create` naming the driving user — Pedro, `pit` —
-    as the session's first write. Never Efesto.
-- **Never assign Efesto.** ... the claim assignee is always Pedro.
+    no assignee check; first in map order wins. One call:
+    `tasks_list` `filter: "project_id = 3 && parenttask_id = 2 && done = false"`,
+    then drop any item whose `related_tasks.blocked` holds a non-`done` task.
+    Do **not** pull the whole project to find the frontier.

Evidence

  • Before: a session invoking /wayfinder on a frontier ticket stalled — the
    ticket was pre-assigned by a human, which the doc equated with "claimed", so the
    session could not tell takeable from taken, and it re-derived the blocking
    direction by hand. Reproduced this session: tasks_read on ticket 7 showed
    assignees=[pit] while the doc said "claim = assign pit", and the frontier was
    only findable by walking the whole-project tasks_list payload (134 KB).
  • After: the frontier is one filtered call, and the doc no longer asks a
    session to assign. git diff main on the branch shows only the removals above;
    make fmt clean.

Merge Danger

Door: two-way

Doc-only; git revert fully undoes it. No code, no infra, no behaviour.

Blast Radius: documentation

Every /wayfinder session reads this file. The change removes the assignment
step from the workflow; there is no data or deploy side effect.

## Summary One doc changed: `docs/agents/issue-tracker.md` (the Wayfinding operations section). Assignment stops being the claim signal, and the frontier query is written as the one call it takes. ```diff docs/agents/issue-tracker.md - **Child ticket**: linked as a native `subtask`, labelled `wayfinder:<type>`. - Once claimed, assign the driving user (`task_assignees_create`). + (no assignment) - **Frontier query**: open child tasks, drop any with an open blocker... - or an assignee; first in map order wins. -- **Claim**: `task_assignees_create` naming the driving user — Pedro, `pit` — - as the session's first write. Never Efesto. -- **Never assign Efesto.** ... the claim assignee is always Pedro. + no assignee check; first in map order wins. One call: + `tasks_list` `filter: "project_id = 3 && parenttask_id = 2 && done = false"`, + then drop any item whose `related_tasks.blocked` holds a non-`done` task. + Do **not** pull the whole project to find the frontier. ``` ## Evidence - **Before:** a session invoking `/wayfinder` on a frontier ticket stalled — the ticket was pre-assigned by a human, which the doc equated with "claimed", so the session could not tell takeable from taken, and it re-derived the blocking direction by hand. Reproduced this session: `tasks_read` on ticket 7 showed `assignees=[pit]` while the doc said "claim = assign pit", and the frontier was only findable by walking the whole-project `tasks_list` payload (134 KB). - **After:** the frontier is one filtered call, and the doc no longer asks a session to assign. `git diff main` on the branch shows only the removals above; `make fmt` clean. ## Merge Danger **Door:** two-way Doc-only; `git revert` fully undoes it. No code, no infra, no behaviour. **Blast Radius:** documentation Every `/wayfinder` session reads this file. The change removes the assignment step from the workflow; there is no data or deploy side effect.
@ -59,16 +58,30 @@ Used by `/wayfinder`. The **map** is one task with **child** tasks as tickets.
- A ticket is **unblocked** when every task in its `blocked` list is `done`.
- Concretely: ticket 7 with `blocking=[5,6,8,9]` and `blocked=[]` blocks
Author
Owner

Remove this

Remove this
pit marked this conversation as resolved
@ -59,16 +58,30 @@ Used by `/wayfinder`. The **map** is one task with **child** tasks as tickets.
- A ticket is **unblocked** when every task in its `blocked` list is `done`.
- Concretely: ticket 7 with `blocking=[5,6,8,9]` and `blocked=[]` blocks
5/6/8/9 and waits on nothing — it is frontier.
- **Do not re-derive this.** `blocking=[x]` means this task blocks `x`;
Author
Owner

Remove this point

Remove this point
pit marked this conversation as resolved
@ -69,3 +68,1 @@
- **Never assign Efesto.** `bot-efesto` (user id 2) is the implementation agent;
Pedro assigns him to tasks manually. A planning session must not assign him —
the claim assignee is always Pedro.
blocker (a non-`done` entry in its `blocked` list) or an **assignment**;
Author
Owner

remove or an **assignment**

remove `or an **assignment**`
pit marked this conversation as resolved
@ -72,0 +69,4 @@
first in map order wins. One call:
`tasks_list` with
`filter: "project_id = 3 && parenttask_id = 2 && done = false"`, then read the
`related_tasks.blocked` and `assignees` of each item. Do **not** pull the
Author
Owner

no need to check assignees

no need to check assignees
pit marked this conversation as resolved
@ -72,0 +71,4 @@
`filter: "project_id = 3 && parenttask_id = 2 && done = false"`, then read the
`related_tasks.blocked` and `assignees` of each item. Do **not** pull the
whole project (`tasks_list` with no `filter`) to find the frontier.
- **Claim**: post a `task_comments_create` comment naming the session — the
Author
Owner

Remove this point

Remove this point
pit marked this conversation as resolved
@ -72,0 +73,4 @@
whole project (`tasks_list` with no `filter`) to find the frontier.
- **Claim**: post a `task_comments_create` comment naming the session — the
session's first write. This is the only claim signal; agents never assign.
- **Never assign anyone.** Assignment is a human act, always. A planning
Author
Owner

Remove this point

Remove this point
pit marked this conversation as resolved
@ -72,3 +81,4 @@
- **Resolve**: `task_comments_create` with the answer, `tasks_update`
`done: true`, then append a context pointer (gist + link) to the map's
Decisions-so-far.
- **Research artifacts live on branches**, never in the working tree:
Author
Owner

Remove this point

Remove this point
pit marked this conversation as resolved
pit merged commit 5023fb7365 into main 2026-10-09 10:45:10 +00:00
pit deleted branch hermes/claim-not-assign 2026-10-09 10:45:10 +00:00
Sign in to join this conversation.
No reviewers
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
olympus/infra-tracker!8
No description provided.