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.
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: inactiveneeds-infoissue pending automatic closure.keep-open: protected because maintainers intentionally keep it open.pinned: protected maintainer issue.
Protected labels for stale cleanup:
pinnedkeep-openrelease-blockersecurity
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-infoonly 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-openor close them as superseded by a canonical epic.
Do not close release blockers, security issues, or active milestone work from stale automation alone.