LearnNewsExamplesServices
Frontmatter
id16828
titlelist_issues read-path `@me` alias resolution — L2-delivered leaf of #16806
stateClosed
labels
enhancementaiagent-os
assigneesneo-kimi-iris
createdAtAug 9, 2026, 8:13 PM
updatedAtAug 9, 2026, 9:24 PM
githubUrlhttps://github.com/neomjs/neo/issues/16828
authorneo-kimi-iris
commentsCount0
parentIssue16806
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 9, 2026, 9:24 PM

list_issues read-path @me alias resolution — L2-delivered leaf of #16806

Closed Backlog/active-chunk-14 enhancementaiagent-os
neo-kimi-iris
neo-kimi-iris commented on Aug 9, 2026, 8:13 PM

Context

Split from #16806 during PR #16809's review (@neo-opus-vega's RA-1, the #16776 pattern). The parent's AC-1 is a live behavioural-equivalence claim against the merged server — structurally unreachable from a stubbed-transport unit suite — so a PR closing the parent would auto-close it with its headline criterion unmet and no artifact tracking it. This leaf is the L2-deliverable subset that PR #16809 closes cleanly; the parent stays open for AC-1 alone.

The split is also forced mechanically, and that is worth recording: .github/workflows/agent-pr-body-lint.yml (#12367, operator rule) fails any non-draft agent PR body without Resolves #N, so the Refs-only alternative is not actually available — the leaf is the only shape that satisfies the lint, the close-target audit, and the review.

Live latest-open sweep: latest 20 open issues at 2026-08-09T18:14Z — no equivalent. A2A in-flight sweep: 30 most recent messages at 18:14Z — no [lane-claim]/[lane-intent] on this scope. KB semantic sweep: no equivalent (the close-target material the KB surfaced is reviewer-side discipline in pr-review-guide.md §5.2, not a ticket).

The Problem

As #16806: list_issues({assignee: '@me'}) dies on a raw GraphQL rejection while the write path on the same service resolves the alias. This leaf's boundary is everything except the live equivalence receipt.

The Architectural Reality

As #16806: #resolveAssigneeAliases (ai/services/github-workflow/IssueService.mjs:540-553) is the in-file mechanism; the read path passed the alias verbatim into filterBy at :1353.

The Fix

Exactly the parent's Fix §1–3, delivered by PR #16809 at head 42aa8978b0: reuse the resolver pre-filterBy; failure returns the sibling write path's GITHUB_API_ERROR shape; openapi.yaml description advertises the alias.

Acceptance Criteria

  • Non-alias logins pass through with no added REST round-trip — spec arm drives a concrete login behind a hermetic guard that throws on ANY REST reach.
  • A resolution failure returns a named GITHUB_API_ERROR, not a raw GraphQL rejection — spec arm asserts NO GraphQL query is issued (the counterfactual shape).
  • Unit tests cover alias resolution, pass-through, and the failure path; the existing IssueService spec stays green — 71/71 (67 pre-existing + 4 new falsifiers) at 42aa8978b0.

No open criteria at creation: this is the post-hoc delivered-work leaf; its evidence is committed and CI-green.

Out of Scope

  • Parent AC-1 — list_issues({assignee: '@me'}) returns the same set as the concrete-login form against the merged server. Deployment-gated; stays open on #16806 as its sole remaining criterion, tracked by PR #16809's Post-Merge Validation box.

Related

#16806 (parent; carries AC-1) · PR #16809 (the delivering PR) · #16776 (the L2-leaf split precedent) · #12367 (mandatory-Resolves lint rule — the mechanical half of why this leaf exists)

Origin Session ID: d05afdba-d7f9-4733-b9da-e1a8a7946777

tobiu closed this issue on Aug 9, 2026, 9:24 PM