> Core 中立版(Increment 2 改写)。术语对照见 core/adapters/TERMINOLOGY.md;本组织实例表述见 dogfood 对应文件。 ## Ticket Lifecycle — registry-first filing, claim-to-promote ([org-internal #3002] G1) Bugs worth fixing start life as a **registry row**, not an independent ticket. This extends the two-tier-artifacts philosophy to the ticket queue: a "discovery" (no consumer yet, lifecycle undetermined) is Tier-1-shaped — a cheap row in a ledger — and is **promoted** to a Tier-2 independent ticket only when someone schedules or picks it up. (Filing one ticket per discovery is how the 2026-08 backlog formed.) ### The registry (登记册) - **Where**: a `## TD 登记` comment on the **source ticket** (the ticket whose verify/review produced the candidates; a ticket-backend issue comment). No source ticket (standalone iteration) → the owning Epic's tracker ticket; no Epic either → the standing TD 冷存档 tracker ticket (G2's fallback archive target). - **Row format** (one line per item, checkbox-closeable): ```markdown - [ ] TD-{NNN} · {type: UNVERIFIABLE|ACCEPTED_RISK|DEFERRED|INFO} · {severity: HIGH|MEDIUM|LOW} · {origin chunk-id/iter-N} — {one-line summary} · trigger: {objectively verifiable reactivation condition} ``` - **TD-NNN** is allocated at REGISTRATION via the ledger mutex [org-internal #3322]: the 配额账本脚本 (`td-alloc` 形态, `bash [--ticket N]`) takes a contiguous range from the TD allocation ledger (a standing tracker issue) — append-only `**td-alloc**` comments, earliest-comment-id wins on collision. **ANY allocation — manual included — must land a td-alloc comment on the ledger BEFORE the registry row is written** (script, tool API, or web UI). Hand-computed `max + 1` without a ledger comment is FORBIDDEN (parallel-session races, [org-internal #3322]). The id is **reserved for life**: promotion reuses it, never renumbers. Run the alloc script's `--check` (reconciliation) when the last check predates this batch, and in retrospectives. - **De-duplication** queries the TD index (same-source rows) plus open promoted issues (cross-source); index matching replaces title-keyword matching (keyword dedup once produced 18 fragments from one source). - **Query-failure ruling ([org-internal #3383]: fail-open, visible)**: if the dedup query itself errors (backend API failure — NOT "queried and found no match"), retry once; on second failure file anyway, marking the comment `dedup-unverified` for retro/reconciliation sweep. Fail-closed rejected: known dedup failures are match failures it cannot prevent, and a backend hiccup would block a verify PASS gate. ### Promotion (认领升票) A row is promoted to an independent ticket when **scheduled or picked up** (assigned, pulled into a wave/sprint, or chosen): 1. Create the ticket (ticket backend 立案) with the row's reserved `TD-NNN` (full body per the verify skill's promotion template). 2. Tick the registry row (`- [x]`) and append `→ #NNNN` to it. 3. The new ticket's `## Parent` points back at the registry's source ticket. Unpromoted rows are not second-class: the registry comment IS a visible ticket-backend comment, rows close individually, and the TD index dedups across sessions — the old per-item model's three guarantees at ~1 ticket per source. ### PR 准入(pr-admission,TD-678) 会话交付物 = 分支 + 报告;开 PR 属编排职权,按容量串行一次一张、双绿并入 再开下一张([org-internal #3864] 管合并出口、本节管 PR 入口)。交付推送前置 本地验证(`` + `` 绿;实例命令绑定见 core/adapters/TERMINOLOGY.md)。编排不可达可自开,PR 正文标 `uncoordinated`。细则与门控项:pipeline-gate 清单 PR 准入节。 ### BF / FT family umbrellas Baseline failures and flaky tests file **per root-cause family**, not per occurrence: evidence (run, commit, failing output, failure rate) attaches as comments on the family's **umbrella ticket** (ticket-backend issue), keyed by failure signature (error signature + affected surface, not just `file::test-name` — one root-cause family may span several tests; precedents [org-internal #2585], [org-internal #2925]). Filing a new ticket when the signature already matches an existing family (open or closed) is forbidden — attach evidence instead. A family umbrella is closed when its signature no longer reproduces. ### TTL semantics (feeds G2's issue-reaper) - An **unpromoted registry row** stale for 30 days (no promotion, no evidence comment) is reaper-eligible: 7-day notice, then archived into the tracker's archive section. - A **promoted ticket** follows the normal issue lifecycle (its own priority, assignee, milestone). ### Compatibility (Iron Law preserved) - `_(Deferred: TD-XXX )_` annotations keep their exact format; the `TD-XXX` now resolves to a registry row (or promoted ticket) instead of an issue number. - Archive-at-close, `## 工件索引` guards, and issue-checklist-sync are untouched: the registry comment is an ordinary ticket-backend comment, not a Tier-2 artifact page.