---
id: 10215
title: Codify 7-day reassignment rule in ticket-intake §3a
state: CLOSED
labels:
  - documentation
  - enhancement
  - ai
assignees:
  - neo-gemini-pro
createdAt: '2026-04-22T21:54:41Z'
updatedAt: '2026-06-07T17:20:24Z'
githubUrl: 'https://github.com/neomjs/neo/issues/10215'
author: neo-opus-ada
commentsCount: 1
parentIssue: 10214
subIssues: []
subIssuesCompleted: 0
subIssuesTotal: 0
blockedBy: []
blocking: []
closedAt: '2026-05-28T01:19:05Z'
---
# Codify 7-day reassignment rule in ticket-intake §3a

# Context

Sub of `#10214`. See parent epic for architectural rationale and substrate analysis. This ticket focuses on the implementation delta for Sub 1 — codifying the existing `CONTRIBUTING.md` 7-day reassignment rule into the `ticket-intake` skill.

# The Problem

`ticket-intake §3a Claim Ownership` currently calls `manage_issue_assignees add @me` without checking whether the ticket already has an assignee. Two failure modes:

1. Silent override — agent B assigns self over agent A without noticing → duplicate parallel work
2. No enforcement of the 7-day-no-feedback reassignment grace period specified in `CONTRIBUTING.md`

# The Architectural Reality

`.agent/skills/ticket-intake/references/ticket-intake-workflow.md §3a` is the fix site. The `assignees` field is already on every local `.md` ticket's frontmatter (from `sync_all`); check via `get_local_issue_by_id`. Timeline events + comments queryable via `get_conversation` for the "last activity" computation.

# The Fix

Extend `§3a Claim Ownership` with a pre-assign check:

1. **Query existing assignee:** read `assignees` array from the ticket frontmatter (local-sync'd) or via `get_local_issue_by_id`.
2. **If empty:** proceed with `manage_issue_assignees add @me` as today.
3. **If already assigned to a different identity:**
   - Compute `lastQualifyingActivity` = most recent comment from the current assignee OR from any maintainer (`@neo-opus-ada`, `@neo-gemini-pro`, or contributor with write permissions) acknowledging in-progress work.
   - If `now - lastQualifyingActivity < 7 days`: BLOCK pickup. Post a comment requesting transfer, do NOT self-assign, halt.
   - If `now - lastQualifyingActivity >= 7 days`: proceed with self-serve reassignment, BUT require a mandatory attribution comment first: *"Picking up per 7-day rule; previous assignee @X; last qualifying activity <ISO-8601 timestamp>."* Then call `manage_issue_assignees add @me` (which may need to be paired with `remove @X` depending on multi-assignee policy — verify).

# Acceptance Criteria

- [ ] `ticket-intake §3a` updated with the three-branch logic (empty / assigned-active / assigned-stale)
- [ ] "Qualifying feedback" definition codified inline: assignee comment OR maintainer comment acknowledging WIP; random observer comments explicitly excluded
- [ ] Self-serve reassignment requires the mandatory attribution comment BEFORE the assign call
- [ ] Skill reference cites `CONTRIBUTING.md` as the source-of-truth for the 7-day rule

# Out of Scope

- Active detector that flags stale assignments automatically — covered by Sub 5 (`#10214`'s stale-assignment detector via sandman)
- Multi-assignee handling (more than one person assigned simultaneously) — out of scope; current convention is single-assignee
- Authentication against GitHub to verify maintainer identity — relies on the committed `CODEOWNERS` or org-maintainer list; implementation detail

# Related

- **Parent epic:** `#10214`
- **Source of the 7-day rule:** `CONTRIBUTING.md`
- **Sibling (active detector):** Sub 5 of `#10214` (forthcoming)
- **Adjacent:** `ticket-intake §3b` Branch-Before-Code Gate (unchanged)

# Handoff Retrieval Hints

- `query_raw_memories(query="7-day reassignment rule ticket-intake §3a qualifying feedback definition")`
- `query_summaries(query="agent operational hygiene assignment protocols")`

Known contributing sessions (partial, restart-fragmented):
- `ae546a40-2133-482f-85a6-779fdf6757b2` (epic authoring session)

## Timeline

- 2026-04-22T21:54:42Z @neo-opus-ada added the `documentation` label
- 2026-04-22T21:54:42Z @neo-opus-ada added the `enhancement` label
- 2026-04-22T21:54:42Z @neo-opus-ada added the `ai` label
- 2026-04-22T21:56:35Z @neo-opus-ada added parent issue #10214
- 2026-04-27T10:39:02Z @neo-gemini-pro assigned to @neo-gemini-pro
- 2026-04-27T10:39:41Z @neo-gemini-pro cross-referenced by PR #10413
- 2026-04-27T10:48:11Z @tobiu referenced in commit `e1afe6b` - "feat(ai): codify 7-day reassignment rule in ticket-intake (#10215) (#10413)

Co-authored-by: tobiu <tobiasuhlig78@gmail.com>"
- 2026-04-27T10:59:27Z @neo-opus-ada cross-referenced by #10214
- 2026-04-27T11:04:53Z @neo-opus-ada cross-referenced by PR #10415
- 2026-04-27T11:24:23Z @neo-opus-ada cross-referenced by PR #10417
### @neo-gpt - 2026-05-28T01:19:04Z

Closing as completed by merged PR #10413 (2026-04-27). Live verification: #10413 is MERGED, and current ticket-intake workflow contains the existing-assignee / 7-day qualifying-activity protocol required by this leaf. The issue stayed open because the PR body has no GitHub closingIssuesReferences.

- 2026-05-28T01:19:05Z @neo-gpt closed this issue

