diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 6d57a70..1b1a466 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -15,7 +15,8 @@ None - Decimal phases (2.1, 2.2): Urgent insertions (marked with INSERTED) - [x] **Phase 1: Script Architecture** - Split monolithic scripts into sport-specific modules (3/3 plans) -- [ ] **Phase 2: Stadium Foundation** - Complete stadium database with coordinates and names +- [x] **Phase 2: Stadium Foundation** - Complete stadium database with coordinates and names (2/2 plans) +- [ ] **Phase 2.1: Additional Sports Stadiums** - Add stadium data for MLS, WNBA, NWSL, CBB (INSERTED) - [ ] **Phase 3: Alias Systems** - Stadium and team alias systems for name variations - [ ] **Phase 4: Canonical Linking** - Correct game→team→stadium relationships - [ ] **Phase 5: CloudKit CRUD** - Full create, read, update, delete operations @@ -42,11 +43,20 @@ Plans: Plans: - [x] 02-01: Audit & complete hardcoded stadium data in sport modules -- [ ] 02-02: Regenerate canonical data and verify pipeline +- [x] 02-02: Regenerate canonical data and verify pipeline + +### Phase 2.1: Additional Sports Stadiums (INSERTED) +**Goal**: Add hardcoded stadium data for secondary sports: MLS, WNBA, NWSL, and CBB (College Basketball) +**Depends on**: Phase 2 +**Research**: Unlikely (stadium data compilation) +**Plans**: TBD + +Plans: +- [ ] 02.1-01: TBD (run /gsd:plan-phase 2.1 to break down) ### Phase 3: Alias Systems **Goal**: Implement alias systems for both stadiums and teams to handle name variations across data sources -**Depends on**: Phase 2 +**Depends on**: Phase 2.1 **Research**: Unlikely (internal mapping logic) **Plans**: TBD @@ -84,12 +94,13 @@ Plans: ## Progress **Execution Order:** -Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 +Phases execute in numeric order: 1 → 2 → 2.1 → 3 → 4 → 5 → 6 | Phase | Plans Complete | Status | Completed | |-------|----------------|--------|-----------| | 1. Script Architecture | 3/3 | Complete | 2026-01-10 | -| 2. Stadium Foundation | 1/2 | In progress | - | +| 2. Stadium Foundation | 2/2 | Complete | 2026-01-10 | +| 2.1. Additional Sports Stadiums | 0/TBD | Not started | - | | 3. Alias Systems | 0/TBD | Not started | - | | 4. Canonical Linking | 0/TBD | Not started | - | | 5. CloudKit CRUD | 0/TBD | Not started | - | diff --git a/.planning/STATE.md b/.planning/STATE.md index 221f209..4fb73fb 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -5,33 +5,33 @@ See: .planning/PROJECT.md (updated 2026-01-09) **Core value:** Every game must correctly link to its teams and stadium — a game at the wrong venue or with broken team links ruins trip planning. -**Current focus:** Phase 2 — Stadium Foundation +**Current focus:** Phase 2.1 — Additional Sports Stadiums ## Current Position -Phase: 2 of 6 (Stadium Foundation) -Plan: 1 of 2 in current phase -Status: In progress -Last activity: 2026-01-10 — Completed Plan 02-01 (Stadium Data Audit & Completion) +Phase: 2.1 of 7 (Additional Sports Stadiums) +Plan: 0 of TBD in current phase +Status: Not started +Last activity: 2026-01-10 — Completed Phase 2 (Stadium Foundation) -Progress: ████░░░░░░ 17% (1 of 6 phases complete) +Progress: ██░░░░░░░░ 28% (2 of 7 phases complete) ## Performance Metrics **Velocity:** -- Total plans completed: 4 -- Average duration: 7.5 min -- Total execution time: 30 min +- Total plans completed: 5 +- Average duration: 7.4 min +- Total execution time: 37 min **By Phase:** | Phase | Plans | Total | Avg/Plan | |-------|-------|-------|----------| | 1. Script Architecture | 3/3 | 23 min | 7.7 min | -| 2. Stadium Foundation | 1/2 | 7 min | 7 min | +| 2. Stadium Foundation | 2/2 | 14 min | 7 min | **Recent Trend:** -- Last 5 plans: 01-01 (5 min), 01-02 (10 min), 01-03 (8 min), 02-01 (7 min) +- Last 5 plans: 01-02 (10 min), 01-03 (8 min), 02-01 (7 min), 02-02 (7 min) - Trend: Consistent ## Accumulated Context @@ -49,6 +49,11 @@ Recent decisions affecting current work: - **01-03**: Non-core sports (WNBA, MLS, NWSL, CBB) remain inline with TODO markers - **02-01**: Used original opening years (not renovation years) for year_opened field - **02-01**: Stadium dataclass already supported year_opened - no changes needed to core.py +- **02-02**: MLS stadiums excluded from bundled JSON (incomplete data), deferred to Phase 2.1 + +### Roadmap Evolution + +- Phase 2.1 inserted after Phase 2: Add stadium data for MLS, WNBA, NWSL, CBB (INSERTED) ### Deferred Issues @@ -61,6 +66,6 @@ None yet. ## Session Continuity Last session: 2026-01-10 -Stopped at: Completed Plan 02-01 (Stadium Data Audit & Completion) +Stopped at: Completed Phase 2 (Stadium Foundation) Resume file: None -Next action: Execute Plan 02-02 (Pipeline Regeneration) +Next action: Plan Phase 2.1 (Additional Sports Stadiums) diff --git a/.planning/phases/02-stadium-foundation/02-02-SUMMARY.md b/.planning/phases/02-stadium-foundation/02-02-SUMMARY.md new file mode 100644 index 0000000..305ae84 --- /dev/null +++ b/.planning/phases/02-stadium-foundation/02-02-SUMMARY.md @@ -0,0 +1,54 @@ +# Phase 2 Plan 02: Pipeline Regeneration & Verification Summary + +**Regenerated canonical stadium data for all 4 core sports (122 stadiums) with complete data quality validation.** + +## Accomplishments + +- Ran stadium scraping pipeline (`scrape_schedules.py --stadiums-update`) collecting 152 stadiums (including MLS) +- Ran canonicalization pipeline (`canonicalize_stadiums.py`) generating canonical IDs and aliases +- Filtered bundled JSON to core 4 sports only (122 stadiums, 165 aliases) +- Verified data quality: 0 empty states, 0 zero capacities, 0 null year_opened values + +## Files Created/Modified + +- `Scripts/data/stadiums.json` - Raw stadium data (152 stadiums including MLS) +- `Scripts/data/stadiums_canonical.json` - Canonical output (152 stadiums) +- `Scripts/data/stadium_aliases.json` - Historical aliases (200 aliases) +- `SportsTime/Resources/stadiums_canonical.json` - Bundled canonical data (122 core sport stadiums) +- `SportsTime/Resources/stadium_aliases.json` - Bundled aliases (165 aliases for core sports) + +## Decisions Made + +- **MLS excluded from bundled JSON**: MLS stadiums (30) have incomplete data from source (zero capacity, null year_opened). Deferred to Phase 2.1: Additional Sports Stadiums +- **Core 4 sports only**: Bundled JSON contains MLB (30), NBA (30), NFL (30), NHL (32) = 122 stadiums +- **Full data retained in Scripts/data/**: MLS data preserved for Phase 2.1 work + +## Issues Encountered + +- **MLS data quality**: The gavinr GeoJSON source for MLS stadiums lacks capacity and year_opened fields. This is expected - MLS stadiums need manual enrichment in Phase 2.1. + +## Stadium Counts + +| Sport | Scraped | Bundled | +|-------|---------|---------| +| MLB | 30 | 30 | +| NBA | 30 | 30 | +| NFL | 30 | 30 | +| NHL | 32 | 32 | +| MLS | 30 | 0 (deferred) | +| **Total** | **152** | **122** | + +## Commits + +| Hash | Description | +|------|-------------| +| `c2da6a7` | feat(02-02): regenerate stadium data with canonicalization pipeline | +| `1808d2c` | feat(02-02): bundle 122 core stadiums (MLB/NBA/NHL/NFL) | + +## Phase 2 Complete + +Phase 2: Stadium Foundation is complete: +- All 4 core sports have complete stadium data +- Data includes: canonical_id, name, city, state, lat/lng, capacity, year_opened, teams +- Historical aliases in place for renamed stadiums (165 aliases) +- Ready for Phase 2.1: Additional Sports Stadiums (MLS, WNBA, NWSL, CBB)