From 22f1a0246f3c624bec50758eac61b04e6c749e47 Mon Sep 17 00:00:00 2001 From: codex-bot-andresmgsl <304681515+codex-bot-andresmgsl@users.noreply.github.com> Date: Fri, 24 Jul 2026 00:50:48 +0000 Subject: [PATCH] docs: explain core taxonomy bootstrap maintenance --- CHANGELOG.md | 1 + LABELS.md | 9 +++++---- docs/CONSUMERS.md | 5 ++++- test/labels-reconcile.test.sh | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e33fc8e..5d8f844 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ so entries say what changed, cite the issue, and stop. - BUILDER.md — the handed-off PR is the parked claim's fourth shape, its handoff is its declaration, and shape 2 covers the round awaiting its first verdicts (#109). - `labels-reconcile` — a degraded mergeability/checks read now logs gh's actual stderr (collapsed, bounded) beside the byte-identical counted line, and the blind-sweep warning leads with the observed reason instead of asserting the permissions cause (#101). - Changelog publication — count entries instead of bytes, refuse dangling grouped headings, and seed grouped re-arms with Added/Changed/Fixed (#98). +- `labels-reconcile` — warn once per sweep when a repository lacks labels declared by the pinned core taxonomy (#105). - `labels-reconcile` — grant callers private-repo check reads and warn when an entire PR sweep is blind (#95). - `labels-reconcile` — the bootstrap now retires the six GitHub defaults `LABELS.md` publishes as deleted, tolerating both an already-absent label and a refused delete (#93). - `issueflow-reconcile` — a triage-authored issue arrival stands down with exit 0 instead of killing the run before the sweep (#91). diff --git a/LABELS.md b/LABELS.md index 2136a92..f4dda53 100644 --- a/LABELS.md +++ b/LABELS.md @@ -190,7 +190,8 @@ on a PR would say the same thing twice and drift. The labels workflow (issue #10) recomputes PR state statelessly on PR events plus a 15-minute advisory cron, and bootstraps this taxonomy idempotently on -manual dispatch. The same workflow reconciles issue-flow labels on issue -events and during the scheduled sweep. Default GitHub labels (`duplicate`, `invalid`, -`question`, `wontfix`, `help wanted`, `good first issue`) are deleted at -bootstrap — a `question` is a discussion, not an issue. +manual dispatch. The sweep warns when the core taxonomy declares a label the +repository lacks. The same workflow reconciles issue-flow labels on issue +events and during the scheduled sweep. Default GitHub labels (`duplicate`, +`invalid`, `question`, `wontfix`, `help wanted`, `good first issue`) are +deleted at bootstrap — a `question` is a discussion, not an issue. diff --git a/docs/CONSUMERS.md b/docs/CONSUMERS.md index efad3f8..2b285bc 100644 --- a/docs/CONSUMERS.md +++ b/docs/CONSUMERS.md @@ -319,7 +319,10 @@ rows remain consumer-owned because paths and surfaces differ by repository. After adding the caller and configuration, run `workflow_dispatch` once to bootstrap labels on a fresh repository. Scheduled and PR-triggered runs only -reconcile; they do not repeatedly upsert the taxonomy. +reconcile; they do not repeatedly upsert the taxonomy. When a ceremony pin +bump adds a core label, bump the pin first and then re-dispatch +`workflow_dispatch`; the scheduled sweep warns when the pinned taxonomy +declares a core label the repository lacks. ## Doctrine mirror diff --git a/test/labels-reconcile.test.sh b/test/labels-reconcile.test.sh index 88e821b..4cb1c14 100755 --- a/test/labels-reconcile.test.sh +++ b/test/labels-reconcile.test.sh @@ -654,7 +654,7 @@ blind_main_probe() { LABELS_CONF=.github/labels.conf gh() { if [ "$1" = label ] && [ "$2" = list ]; then - printf 'state:building\nstate:addressing\n' + core_label_rows | cut -d'|' -f1 elif [ "$1" = pr ] && [ "$2" = list ]; then printf '101\n102\n' elif [ "$1" = pr ] && [ "$2" = view ]; then