Context
During follow-up ticket creation on 2026-05-03, @tobiu surfaced a live creation-side gap:
our ask tool can be stale. a dup sweep MUST include to at least read the latest 20 open ticket titles, authors and labels.
This correction matters immediately. ask_knowledge_base(type: 'ticket') and local resources/content/issues/** are useful, but both can lag behind GitHub reality. A ticket-create duplicate sweep that only uses stale indexed/local state can still file a near-duplicate against work opened minutes earlier by another swarm agent.
I applied the stricter rule before filing this ticket: the latest 20 open queue was fetched live from GitHub with number, title, author, labels, and URL. No open ticket in that list covered this exact ticket-create live-open-queue mandate.
The Problem
.agents/skills/ticket-create/references/ticket-create-workflow.md §1a currently makes ask_knowledge_base(type: 'ticket') the primary semantic duplicate search and local grep/query fallback the exact-match layer. That is insufficient under active swarm conditions because:
- the Knowledge Base can be stale after recent issue creation or sync lag;
- local
resources/content/issues/** can be stale for the same reason;
- multiple agents can create tickets minutes apart while operating from different harnesses/clones;
- the most likely duplicates are often in the newest open queue, before sync/indexing catches up.
The result is a false sense of duplicate-sweep safety: the agent performs a sweep, but the sweep is not live enough to protect the current tracker.
The Architectural Reality
Relevant protocol surfaces:
AGENTS.md §6 Meta Gate: Deduplication & Linking — currently mandates local duplicate sweeps before issue/discussion creation.
.agents/skills/ticket-create/references/ticket-create-workflow.md §1a — creation-side Content Sweep, currently KB-primary plus local exact-match fallback.
.agents/skills/ticket-create/SKILL.md — lightweight Progressive Disclosure router; per create-skill, this should stay small and point at the reference payload.
.agents/skills/create-skill/references/skill-authoring-guide.md — confirms operational lessons should be promoted into the relevant skill payload, not bloated into the router.
Adjacent but not duplicate:
- #10276 adds adjacency sweep discipline to
ideation-sandbox; this ticket is specifically about issue creation and live open-ticket freshness.
- #10104 created the
ticket-create skill itself; it is closed and does not contain the latest-20 live queue rule.
The Fix
Update the ticket creation protocol so every create_issue path must include a live open-queue sweep before filing.
Concrete prescription:
- In
.agents/skills/ticket-create/references/ticket-create-workflow.md §1a, add a mandatory live GitHub sweep step:
gh issue list --state open --limit 20 --json number,title,author,labels,url
or the equivalent GitHub MCP/API call returning the same fields.
State that this live sweep is additive, not a replacement:
- keep semantic search (
ask_knowledge_base(type: 'ticket')) for conceptual adjacency;
- keep local
rg/grep over issues, archives, and discussions for exact historical checks;
- require the live latest-20 open queue because KB/local sync can be stale.
Add failure handling:
- if the live latest-20 call fails due sandbox/network/auth, retry with the appropriate approved/escalated path;
- if it still cannot be fetched, stop before
create_issue and report the blocker rather than filing from stale evidence only.
Update AGENTS.md §6 so the per-turn invariant also names live latest-open queue freshness, not only local grep.
Keep SKILL.md unchanged unless the trigger wording itself needs a tiny pointer. The heavy rule belongs in references/ticket-create-workflow.md per Progressive Disclosure.
Acceptance Criteria
Out of Scope
- Replacing semantic duplicate search with live title scanning. Both are needed.
- Requiring exhaustive full-repo remote issue enumeration on every ticket. Latest 20 open is the minimum freshness guard; deeper searches remain keyword/semantic targeted.
- Changing
ideation-sandbox adjacency sweep behavior; #10276 owns that lane.
- Building a new MCP tool solely for this workflow. Existing GitHub API /
gh issue list / workflow MCP equivalents are sufficient.
Avoided Traps
- Trap: trust
ask_knowledge_base because it is semantically richer. Rejected. It can be stale, and freshness is the failure mode this rule addresses.
- Trap: trust local synced markdown. Rejected.
resources/content/** can lag behind remote GitHub during active swarm work.
- Trap: dump the rule into
SKILL.md. Rejected. SKILL.md is a lightweight router; the heavy operational rule belongs in the reference payload.
- Trap: make latest-20 the only duplicate sweep. Rejected. Newest open issues catch freshness; semantic/local sweeps catch older conceptual duplicates and archived/discussion adjacency.
Related
- #10104 — created the
ticket-create skill.
- #10276 — analogous adjacency sweep gap for
ideation-sandbox.
- #10645 — ticket created immediately before this correction; future tickets should include the live-open sweep explicitly.
Origin Session ID: 89b259c3-27ec-4afb-baaf-fd39b55bffe1
Retrieval Hint: ticket-create duplicate sweep latest 20 open issues titles authors labels stale ask_knowledge_base.
Context
During follow-up ticket creation on 2026-05-03, @tobiu surfaced a live creation-side gap:
This correction matters immediately.
ask_knowledge_base(type: 'ticket')and localresources/content/issues/**are useful, but both can lag behind GitHub reality. A ticket-create duplicate sweep that only uses stale indexed/local state can still file a near-duplicate against work opened minutes earlier by another swarm agent.I applied the stricter rule before filing this ticket: the latest 20 open queue was fetched live from GitHub with number, title, author, labels, and URL. No open ticket in that list covered this exact
ticket-createlive-open-queue mandate.The Problem
.agents/skills/ticket-create/references/ticket-create-workflow.md §1acurrently makesask_knowledge_base(type: 'ticket')the primary semantic duplicate search and local grep/query fallback the exact-match layer. That is insufficient under active swarm conditions because:resources/content/issues/**can be stale for the same reason;The result is a false sense of duplicate-sweep safety: the agent performs a sweep, but the sweep is not live enough to protect the current tracker.
The Architectural Reality
Relevant protocol surfaces:
AGENTS.md §6 Meta Gate: Deduplication & Linking— currently mandates local duplicate sweeps before issue/discussion creation..agents/skills/ticket-create/references/ticket-create-workflow.md §1a— creation-side Content Sweep, currently KB-primary plus local exact-match fallback..agents/skills/ticket-create/SKILL.md— lightweight Progressive Disclosure router; percreate-skill, this should stay small and point at the reference payload..agents/skills/create-skill/references/skill-authoring-guide.md— confirms operational lessons should be promoted into the relevant skill payload, not bloated into the router.Adjacent but not duplicate:
ideation-sandbox; this ticket is specifically about issue creation and live open-ticket freshness.ticket-createskill itself; it is closed and does not contain the latest-20 live queue rule.The Fix
Update the ticket creation protocol so every
create_issuepath must include a live open-queue sweep before filing.Concrete prescription:
.agents/skills/ticket-create/references/ticket-create-workflow.md §1a, add a mandatory live GitHub sweep step:gh issue list --state open --limit 20 --json number,title,author,labels,urlor the equivalent GitHub MCP/API call returning the same fields.
State that this live sweep is additive, not a replacement:
ask_knowledge_base(type: 'ticket')) for conceptual adjacency;rg/grep over issues, archives, and discussions for exact historical checks;Add failure handling:
create_issueand report the blocker rather than filing from stale evidence only.Update
AGENTS.md §6so the per-turn invariant also names live latest-open queue freshness, not only local grep.Keep
SKILL.mdunchanged unless the trigger wording itself needs a tiny pointer. The heavy rule belongs inreferences/ticket-create-workflow.mdper Progressive Disclosure.Acceptance Criteria
ticket-create-workflow.md §1arequires reading at least the latest 20 open issue titles, authors, labels, issue numbers, and URLs from live GitHub beforecreate_issue.ask_knowledge_baseand local grep return no duplicates.create_issueif live latest-open state cannot be fetched.AGENTS.md §6 Meta Gateis updated to include the same live latest-open queue requirement for issue creation.ticket-create/SKILL.md, preserving Progressive Disclosure.Out of Scope
ideation-sandboxadjacency sweep behavior; #10276 owns that lane.gh issue list/ workflow MCP equivalents are sufficient.Avoided Traps
ask_knowledge_basebecause it is semantically richer. Rejected. It can be stale, and freshness is the failure mode this rule addresses.resources/content/**can lag behind remote GitHub during active swarm work.SKILL.md. Rejected.SKILL.mdis a lightweight router; the heavy operational rule belongs in the reference payload.Related
ticket-createskill.ideation-sandbox.Origin Session ID: 89b259c3-27ec-4afb-baaf-fd39b55bffe1
Retrieval Hint:
ticket-create duplicate sweep latest 20 open issues titles authors labels stale ask_knowledge_base.