Files
hmbown--codewhale/docs/ISSUE_TRIAGE.md
CodeWhale Bot 7242381022 docs: move internal planning out of the public repo
The public repo carried maintainer process that is not contributor-facing
contract: perishable lane state, the release queue, the issue-triage
standard, dated audits and state matrices, per-release completion ledgers,
QA evidence, and design specs. All of it moves to the private
`codewhale-ops` repo, which already holds this class of document.

Moved: docs/ops/CURRENT.md, RELEASE_QUEUE.md, AGENT_READY_ISSUES.md,
MODEL_PROVIDER_AUDIT.md, CONSTITUTIONAL_KERNEL_AUDIT.md, the dated
TUI_DOG_008 state matrix, TUI_METAMORPHOSIS.md,
RECURSIVE_SELF_IMPROVEMENT.md, TTC_DESIGN.md, and the docs/releases/,
docs/evidence/, and docs/superpowers/ trees.

Two were moved and put back. `PREVIEW_REQUEST.md` is cited from
request_manifest.rs, client.rs, and engine/preview.rs, and
`RUNTIME_SIMPLIFICATION_DESIGN.md` is listed in
docs/public-surface-facts.json, which the web vocabulary tests pin. Those
are load-bearing references, not planning notes.

Every surviving link was repointed rather than left dangling: AGENTS.md,
crates/tui/AGENTS.md, CONTRIBUTING.md, docs/ISSUE_TRIAGE.md,
docs/CATALOG_REFRESH.md, docs/AGENT_RUNTIME.md. `npm run check:docs`
passes.

Also re-baselines the source-structure budget for the [Unreleased] work
merged this session (673375 -> 676325 aggregate, 17596 -> 17631 max
module, 175 -> 176 large modules) and declares plugins/agent_plugin.rs as
an allowed thousand-line module. Unrelated to the doc move; the gate simply
had not been re-run since Agent Plugins landed.
2026-08-06 17:24:27 -07:00

2.7 KiB

Issue Triage

Triage aims issues at the agent-ready standard defined in the agent-ready issue standard (codewhale-ops): bodies that a fresh agent can execute without extra context. This page covers the stale/needs-info lifecycle that runs alongside that standard.

Stale needs-info cleanup

The stale workflow only acts on issues that a maintainer has explicitly labeled needs-info. This keeps old roadmap, release, security, and current milestone work out of automatic cleanup unless a maintainer first marks the issue as waiting on reporter input.

Required labels:

  • needs-info: waiting on reporter information or current-version reproduction details.
  • stale: inactive needs-info issue pending automatic closure.
  • keep-open: protected because maintainers intentionally keep it open.
  • pinned: protected maintainer issue.

Protected labels for stale cleanup:

  • pinned
  • keep-open
  • release-blocker
  • security

A bug issue is not protected just because it is a bug. If a maintainer has also labeled it needs-info, it is eligible for stale warning and closure unless one of the protected labels above is present.

Dry-run queries

Run these before changing stale policy or doing a manual cleanup pass:

STALE_CUTOFF=$(python3 -c 'from datetime import date, timedelta; print(date.today() - timedelta(days=45))')
NEEDS_INFO_CUTOFF=$(python3 -c 'from datetime import date, timedelta; print(date.today() - timedelta(days=30))')

gh issue list --repo Hmbown/CodeWhale --state open \
  --search "updated:<${STALE_CUTOFF}" \
  --limit 100 \
  --json number,title,updatedAt,labels,url

gh issue list --repo Hmbown/CodeWhale --state open \
  --search "label:needs-info updated:<${NEEDS_INFO_CUTOFF}" \
  --limit 100 \
  --json number,title,updatedAt,labels,url

gh issue list --repo Hmbown/CodeWhale --state open \
  --search "created:<${STALE_CUTOFF} comments:0 -label:keep-open -label:release-blocker -label:security" \
  --limit 100 \
  --json number,title,createdAt,updatedAt,labels,url

Use updatedAt, labels, and current release relevance as the closure basis. Creation date alone is too aggressive.

First cleanup pass

Before relying on automation, perform one manual pass:

  • Label unresolved old bug reports as needs-info only after asking for current-version reproduction details.
  • Close obvious GUI, VS Code, and web UI duplicates with links to canonical desktop/runtime issues.
  • Close old brand-discussion issues as superseded when the CodeWhale rebrand and README/history work already covers them.
  • Protect intentional v0.9.0 roadmap shards with keep-open or close them as superseded by a canonical epic.

Do not close release blockers, security issues, or active milestone work from stale automation alone.