Make tracker-label optional in campaign specs #8706
Merged
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.
Campaign Feature Stabilization - Complete ✅
Goal: Make tracker-label optional while keeping the project board as the canonical source of campaign membership.
Implementation Summary
Successfully implemented minimal, campaign-focused changes to make the tracker-label field optional throughout the campaigns feature. The project board is now clearly documented as the canonical source of campaign membership, with tracker-label serving as an optional ingestion hint.
Changes Completed
Validation Logic (
pkg/campaign/validation.go)Validation Tests (
pkg/campaign/validation_test.go)TestValidateSpec_MissingTrackerLabelto expect validation success (no problems)TestValidateSpec_InvalidTrackerLabelFormatto ensure format validation still worksJSON Schema (
pkg/campaign/schemas/campaign_spec_schema.json)Code Documentation (
pkg/campaign/spec.go)User Documentation
docs/src/content/docs/guides/campaigns.md- Updated to clarify project board is canonical sourcedocs/src/content/docs/guides/campaigns/specs.md- Updated core fields, diagrams, and descriptionsVerification Results
✅ All campaign tests pass (71 tests in pkg/campaign/)
✅ CLI commands work correctly
gh aw campaignlists campaigns successfullygh aw campaign validatevalidates both existing campaigns without issuesgh aw campaign statusshows correct status including optional tracker-label✅ Linting passes (
make lint)✅ Validation behavior verified
✅ Backward compatibility maintained
FetchItemCounts){{if .TrackerLabel}}for conditional renderingCode Quality
pkg/campaign/and related docsKey Design Decisions
campaign:id)Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.