-
Notifications
You must be signed in to change notification settings - Fork 46
Description
Summary
Refine Milestone Discovery Protocol Step 6 in github-backlog-planning.instructions.md to describe how agents should parse, validate, and apply .github/milestone-strategy.yml when the file exists. Currently Step 6 says to "apply the declared strategy" without specifying what fields to read, how to interpret them, or how to handle invalid configs.
Problem
The current Step 6 text:
When confidence is low, check for
.github/milestone-strategy.ymlin the repository. If found, apply the declared strategy. If not found, present the discovered milestones to the user and request classification. When no user input is available, assignunclassifiedand flag for human review.
This gives agents no guidance on:
- What fields exist in the config file (
strategy,roles) - How to interpret the
strategyenum (what each named strategy implies) - How the
rolesobject maps to milestone title matching - What to do when the config file exists but is invalid (fails schema validation)
- How config-declared roles interact with discovery-inferred roles (conflict resolution)
Step 1 also references the file: "when comprehensive coverage is required, check for .github/milestone-strategy.yml as a supplement." This note similarly lacks detail on what "supplement" means operationally.
Design
Refined Step 6 Text
Replace the current Step 6 with text that covers:
- File location check: Read
.github/milestone-strategy.ymlfrom the repository root - Schema awareness: The config follows the milestone strategy schema; invalid configs are treated as absent
- Field processing: Read
strategyto identify the versioning scheme; read optionalrolesto map abstract role names to milestone title patterns - Strategy interpretation: Named strategies (
semver,semver-even-odd,calver,sprint,linear) carry default role semantics;customrequires explicitroles - Conflict resolution: When both discovery and config assign roles, config takes precedence (explicit beats inferred)
- Fallback chain: config present and valid > config absent, prompt user > no user input, assign
unclassified
Refined Step 1 Supplement Note
Update the Step 1 note to explain that the config file provides a known set of milestone names and roles, filling gaps left by the API query (which only surfaces milestones with open issues).
Scope Boundary
This issue modifies only the Step 6 (and Step 1 note) text in github-backlog-planning.instructions.md. It does not change other sections, triage instructions, or discovery instructions.
Implementation Touchpoints
| File | Section | Action |
|---|---|---|
.github/instructions/github-backlog-planning.instructions.md |
Step 6 (Milestone Discovery Protocol) | Replace text with schema-aware version |
.github/instructions/github-backlog-planning.instructions.md |
Step 1 supplement note | Clarify operational meaning |
Acceptance Criteria
- Step 6 references the
strategyandrolesfields by name - Step 6 describes how each named strategy maps to role classification
- Step 6 specifies that invalid configs are treated as absent (not error states)
- Step 6 defines conflict resolution: config roles override discovery-inferred roles
- Step 6 preserves the existing fallback chain (no config > prompt user > assign
unclassified) - Step 1 supplement note explains that the config fills gaps from API-only discovery
- The
customstrategy's requirement for explicitrolesis mentioned - No other sections of the planning instructions are modified
Dependencies
- Requires feat(schema): create milestone-strategy.yml JSON Schema and HVE-Core config file #490 (schema and config file define the fields Step 6 references)
Related Issues
- Parent: feat(instructions): discover milestone versioning strategy natively instead of hardcoding EVEN/ODD #466 (Phase 2: Configurable Fallback)
- Depends on: feat(schema): create milestone-strategy.yml JSON Schema and HVE-Core config file #490 (JSON Schema + Config File)