scripts/issue-qualification-audit.sh: lists OPEN issues missing a `priority:` label
(the #237 ranking keys off priority:/gate labels, so an unlabeled issue is invisible
to it). "Fully qualified" = has a priority: label; gate-vs-backlog derives from the
review label / milestone, and a milestone is NOT required (backlog is unmilestoned).
Advisory (exit 1 if any unqualified); fail-open without Gitea creds. Wired into the
kickoff session-end protocol + a lore bullet. Tested live (flagged 2) + no-creds no-op.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- contributing.md §7: document fix-formatting-as-you-touch (normalize a legacy file you
edit, incl. BOM strip; no big-bang), enforced by the pre-commit hook + the new format CI job.
- kickoff lore: flip "merge main into PR branch" -> "rebase on origin/main" (H11 enforces it);
keep the regenerate-generated-artifacts-on-conflict nugget.
- decisions.md: new entry (+ TOC) for both decisions.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- H11: .husky/pre-push calls .claude/hooks/prepush-rebase-check.sh, which blocks a
push whose branch is behind origin/main (rebase first; do not merge main in — a
merge drags in files you didn't touch, e.g. legacy-BOM .cs, tripping the format
hook on code that isn't yours). Fail-open; escape ETV_SKIP_REBASE_CHECK=1.
- New blocking `format` CI job: dotnet format --verify-no-changes scoped to the
PR's changed .cs only (style + charset=utf-8/no-BOM), enforcing fix-as-you-touch
without a big-bang reformat of the ~2500 legacy BOM files. .cs-free PRs skip and
pass (always reports a status). Closes the "CI never checks charset" gap that let
#269 land 17 BOM files (#310).
Docs (contributing.md §7 / decisions.md / lore) follow in the next commit.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>