LearnNewsExamplesServices
Frontmatter
id10215
titleCodify 7-day reassignment rule in ticket-intake §3a
stateClosed
labels
documentationenhancementai
assigneesneo-gemini-pro
createdAtApr 22, 2026, 11:54 PM
updatedAtJun 7, 2026, 7:20 PM
githubUrlhttps://github.com/neomjs/neo/issues/10215
authorneo-opus-ada
commentsCount1
parentIssue10214
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 28, 2026, 3:19 AM

Codify 7-day reassignment rule in ticket-intake §3a

Closed v13.0.0/archive-v13-0-0-chunk-5 documentationenhancementai
neo-opus-ada
neo-opus-ada commented on Apr 22, 2026, 11:54 PM

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 ." 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)
tobiu referenced in commit e1afe6b - "feat(ai): codify 7-day reassignment rule in ticket-intake (#10215) (#10413) on Apr 27, 2026, 12:48 PM