Skip to content

issue-metadata conventions: operationalize native types, sub-issues hierarchy, dependencies, priority re-baseline, close-reason + documented conventions (umbrella) #552

Description

@kyle-sexton

Category: conventions (umbrella) · Source: control-tower issue-taxonomy audit 2026-07-19 (Opus auditor, all claims gh-verified against live org/repo)

Finding — native primitives enabled, decided, and unused

Empirical capability matrix: issue types enabled org-wide (ADR 0003 accepted 2026-07-13) but 1/99 open issues typed; sub-issues endpoint live, zero usage repo-wide; native dependencies (blocked-by) live, zero usage; milestones/projects empty (skip — see member 6). Umbrellas model membership as prose ("19-issue class", "member 1/5") — no rollup, not queryable. The work-map label's own description assumes sub-issues; 25 open wayfind: design items are parentless orphans.

Members (one umbrella; the filing/triage skills + operating-procedures own the changes)

  1. Type axis at filing time [triage + work + dogfood filing skills, S]: set --type on every gh issue create (Task default; Bug via bug-report path; Feature for capability asks). Decision already made in ADR 0003 — operationalize, don't re-litigate. (The governance-App permission blocker is filed in github-iac.)
  2. Sub-issues for the hierarchy axis [operating-procedures + wayfind, M] — RECOMMENDED: split axes. Umbrella→member becomes real sub-issues (progress rollup, queryable); semantic Relations prose stays (sub-issues can't carry "supersedes"/"adds guidance" meaning). work-map issue = parent, wayfind items = children — matches the label's stated design. Maps the old .work epic → slice → sub-topic chain onto native primitives.
  3. Native dependencies for blocks/blocked-by [operating-procedures + triage, S]: machine-queryable "what's blocked" replaces prose scanning. Blocks/blocked-by only; supersedes/duplicate stay prose+close.
  4. Priority re-baseline [triage skill, S]: 77% of open issues carry priority: high — meaningless as a staffing signal and it dilutes the terminal-4 priority-high partition. Triage defaults medium; high reserved for blocks-other-work/imminent-need. Land automation: auto-apply 'priority: needs-triage' to new issues lacking a priority label #506 first, then re-triage the high backlog.
  5. Close-reason discipline [track/triage skills, S]: 60/60 sampled closures = COMPLETED, zero not-planned — dupes/supersedes are being mis-closed. Duplicate path: close as not-planned + ## Duplicate of #N.
  6. Document title + body conventions [operating-procedures, M]: ~98% title-prefix conformance and the lane-filing body shape are load-bearing and written down nowhere. Short documented section the lane skills cite — RECOMMENDED over GitHub issue forms (forms fight the autonomous gh issue create path). Projects v2: skip (duplicates the label state machine); deferred-with-trigger: adopt when >1 repo needs unified rollup.

Relations

ADR 0003 (github-iac — type axis decision), #506 (auto-labeler — member 4 prerequisite), #515 (enrichment artifacts attach to the hierarchy this creates), #513 (complexity signal could ride the type/field axis).

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: needs-triageDefault until a priority tier is assigned.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions