Files

5.1 KiB
Raw Permalink Blame History

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):

    - [ ] 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 <alloc-script> <count> <source-slug> [--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-admissionTD-678

会话交付物 = 分支 + 报告;开 PR 属编排职权,按容量串行一次一张、双绿并入 再开下一张([org-internal #3864] 管合并出口、本节管 PR 入口)。交付推送前置 本地验证(<test-cmd:changed> + <typecheck-cmd> 绿;实例命令绑定见 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 <reason>)_ 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.