feat(config): layered resolution for publish_mode matching default_branch pattern (v1.0.0 must-fix) #408
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#408
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?
Empirical finding
release-toolkit v0.26.0 has a design-consistency gap between two similarly-shaped config knobs:
Adopter journey exposing the gap: operator sets up demo repo (#382) with default_branch: master via config, works cleanly per #370's layering. Operator asks whether publish_mode can be flipped per-project via repo variables (same pattern) — no. Design-consistency violation forces workflow edit + PR round for a per-project preference that should be one variable set.
Blocking rationale
Operator directive 2026-07-05: land pre-v1.0.0 cut per SemVer stability contract (#338). Config interface should be clean + stable AT the major cut. Adding layered resolution post-v1.0.0 is not breaking (adds fallbacks, doesn't remove existing paths) but the semantic surface should be complete at v1.0.0 — adopters pinning @v1.0.0 get the full config vocabulary.
Fix path
Extend publish_mode to match default_branch's layered resolution:
Layer 1 (highest):
RT_PUBLISH_MODEenv var /vars.RT_PUBLISH_MODErepo variable / workflow_dispatch inputLayer 2:
publish_mode:field in release-toolkit.yml configLayer 3: workflow_call
with: publish_mode:(already exists)Layer 4 (default): 'draft' per #332
Precedence order: adopter explicit override (layer 1) → version-controlled config (layer 2) → workflow-call-input (layer 3) → default (layer 4).
Verification AC
vars.RT_PUBLISH_MODEset to 'immediate' in a consumer repo flips the default without editing the workflowRT_PUBLISH_MODE=immediateenv var in a consumer workflow flips the defaultpublish_mode: immediatein release-toolkit.yml flips the defaultRelated
Anchor
Operator ratified 2026-07-05 as v1.0.0 must-fix per SemVer stability contract (#338): config interface should be clean + stable AT the major cut, not iteratively adjusted post-v1.0.0. Surfaced during demo repo (#382) empirical adoption: operator asked whether publish_mode could be flipped per-project via repo variables (as default_branch can, per #370), found no such mechanism exists, exposing a design-consistency gap between the two similarly-shaped config knobs.
BLOCKING v1.0.0.
release-bot referenced this issue2026-07-05 20:36:42 +02:00