fix: add feature-signal detection to ship version bump heuristic#573
Open
claygeo wants to merge 1 commit intogarrytan:mainfrom
Open
fix: add feature-signal detection to ship version bump heuristic#573claygeo wants to merge 1 commit intogarrytan:mainfrom
claygeo wants to merge 1 commit intogarrytan:mainfrom
Conversation
The version bump auto-decide logic uses only line count (< 50 = MICRO, 50+ = PATCH) to pick the bump level. MINOR is never auto-triggered — it only fires when the user is asked, but the ask never happens because PATCH catches everything above 50 lines. This caused real feature work (new pages, new engines, new modules) to ship as PATCH bumps across 23+ sessions. The fix adds feature-signal detection before the line-count check: - New route/page files (e.g. app/*/page.tsx, pages/*.ts) - New DB migration/schema files - New test files alongside new source files - Branch name starting with feat/ - 500+ lines changed (large scope) - New modules/packages added If ANY signal is detected, the skill ASK the user about MINOR instead of auto-picking PATCH. This preserves auto-decide for genuine patches while surfacing the MINOR question for real features. Closes garrytan#527
garrytan
added a commit
that referenced
this pull request
Mar 29, 2026
Tests-first for all fixes in this PR wave: - #594 discoverability: gstack tag in descriptions, 120-char first line - #573 feature signals: ship/SKILL.md Step 4 detection - #510 context warnings: no preemptive warnings in generated files - #474 Safety Net: no find -delete in generated files - #467 telemetry: JSONL writes gated by _TEL conditional - #584 sidebar: Write in allowedTools, stderr capture - #578 relink: prefixed/flat symlinks, cleanup, error, config hook Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
garrytan
added a commit
that referenced
this pull request
Mar 29, 2026
/ship Step 4 now checks for feature signals (new routes, migrations, test+source pairs, feat/ branches) when deciding version bumps. PATCH requires no feature signals. MINOR asks the user if any signal is detected or 500+ lines changed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
24601
pushed a commit
to 24601/gastack
that referenced
this pull request
Mar 29, 2026
Tests-first for all fixes in this PR wave: - garrytan#594 discoverability: gstack tag in descriptions, 120-char first line - garrytan#573 feature signals: ship/SKILL.md Step 4 detection - garrytan#510 context warnings: no preemptive warnings in generated files - garrytan#474 Safety Net: no find -delete in generated files - garrytan#467 telemetry: JSONL writes gated by _TEL conditional - garrytan#584 sidebar: Write in allowedTools, stderr capture - garrytan#578 relink: prefixed/flat symlinks, cleanup, error, config hook Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
24601
pushed a commit
to 24601/gastack
that referenced
this pull request
Mar 29, 2026
…n#573) /ship Step 4 now checks for feature signals (new routes, migrations, test+source pairs, feat/ branches) when deciding version bumps. PATCH requires no feature signals. MINOR asks the user if any signal is detected or 500+ lines changed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The
/shipskill (Step 4: Version bump) uses a line-count-only heuristic:In practice, MINOR is never auto-triggered because every real session exceeds 50 lines, so PATCH is always auto-picked. Over 23 sessions on a real product, features like full health score engines, reports pages, coaching signal layers, and PDF import all shipped as PATCH bumps.
Solution
Add feature-signal detection before the line-count check. If ANY of these signals are detected, the skill asks the user about MINOR instead of auto-picking PATCH:
app/*/page.tsx,pages/*.ts)feat/The MICRO and MAJOR thresholds are unchanged. PATCH still auto-picks when there are no feature signals and < 500 lines.
Changes
ship/SKILL.md.tmpl— Updated Step 4 auto-decide heuristicship/SKILL.md— Regenerated from templateTest Plan
/shipon a branch withfeat/prefix → should ask about MINOR/shipon a branch that adds newapp/*/page.tsxfiles → should ask about MINOR/shipon a branch with a 30-line config tweak → should auto-pick MICRO/shipon a branch with a 60-line bug fix (no feature signals) → should auto-pick PATCHCloses #527