rt register-check: honor REGISTER_CHECK_PATTERNS (#435) adopter vocabulary override #580
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#580
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Phase-7-scoped follow-up from #568 (PR#579). Deferred at Bosun's ratification (bus 3464); filed so it is substrate-of-record and does not fall through the cracks when Phase 7 (workflow integration) begins.
The gap
rt register-check(ported in #568) honors the built-in register vocabulary (internal/register.Patterns) in all three modes. It does not honorREGISTER_CHECK_PATTERNS— the release-toolkit#435 adopter override that, in the bashregister-check.sh, REPLACES the built-in pattern list when set + non-empty.The reusable workflow wires this override:
reusable-register-check.ymlpassesREGISTER_CHECK_PATTERNS: ${{ inputs.register_patterns_override }}to both the file-scan and commit-subject steps. So an adopter who setsregister_patterns_overridegets a different pattern set from the bash script than they would fromrt register-check.Why it was deferred (the landed Phase-3 rationale)
internal/register/register.goalready documents #435 as deliberately unwired, with a landed Phase-3 rationale:#568 (the file-scan +
--git-logport) honored that established substrate boundary rather than overturning a landed Phase-3 decision inside the heaviest Phase-6b port.#435is orthogonal to #568's ratified mode-scope (Ma = which modes; #435 = which patterns).For release-toolkit-self this is a no-op: toolkit-self uses the built-in list (the
register_patterns_overrideinput defaults empty → bash falls through to the built-in list too). The divergence only surfaces for an adopter who sets a custom vocabulary.The Phase-7 trigger
Phase 7 (workflow integration, milestone #80) switches
reusable-register-check.yml's callsites from.release-toolkit/scripts/register-check.shtort register-check. If that migration must preserve adopterregister_patterns_overridebehavior end-to-end,rt register-checkmust honorREGISTER_CHECK_PATTERNSfirst. This tracker is that precondition — to be confirmed by Phase-7 framing-verify (whether the workflow migration empirically needs it, vs. deferring the override to a later adopter-facing milestone).The scoped follow-up work
Small matcher-parametrization of
internal/register:REGISTER_CHECK_PATTERNS(newline-separated; non-empty replaces the built-in list; empty/unset → built-in), matchingregister-patterns.sh's parse.Detect/FindHits/ScanTree(today they use the package-levelscrubRebuilt fromPatterns) — e.g. a smallMatchertype, with the package-level functions delegating to a default built-in matcher so existing consumers (gates.RegisterCheckStdin,register.ScrubLine) are unchanged.REGISTER_CHECK_PATTERNSon both sides.Refs
internal/register/register.go(the landed Phase-3 boundary)Filed 2026-07-27 by Engineer per Bosun ratification (bus 3464). Disposition: explicit-deferral, not silent-drop.
Closed via PR#590 merged @
5626ede(2026-07-29 10:44 CEST) — Option A (command-faithful) landed. All 3 modes honor REGISTER_CHECK_PATTERNS with mode-agnostic parity to bash. Cut-time boundary preserved (gates/render.go untouched, byte-verified both sides). Surveyor deep-verified with fresh differential distinct from Engineer mutation (review 4646). One should-consider (whitespace-only-kept invariant regression guard, mutation-confirmed vacuity by Surveyor) — Engineer to disposition. Refs-only closure, hand-closed same pattern as #583/#587.