# Feature Context: Initial Implementation ## Configuration - **Development mode:** Automated - **Execution mode:** Orchestrator - **Strategy:** Big Bang - **Build:** `dotnet build Marathon.sln` - **Test:** `dotnet test Marathon.sln` - **Lint:** `dotnet format Marathon.sln --verify-no-changes` - **Run:** `dotnet run --project src/Marathon.Hosts.WpfBlazor` - **Implementer models:** Sonnet 4.6 (backend), Opus (frontend) - **Reviewer model:** Sonnet 4.6 ## Customer Constraints - Source: marathonbet.by — anonymous scraping (no login). ToS risk acknowledged by customer. - Output: Excel files matching customer's wide-column spec (`Bet_Match_Win_1`, `Bet_Period-1_Win_Fora_2_Value`, etc.) with date-range filenames. - Storage: customer accepted SQLite-with-Excel-export instead of Excel-as-database (decided 2026-05-05). - UI tech: Blazor Hybrid (changed from initial WPF assumption — better for web migration). - Locale: RU + EN. - Scope: analyze-only initially; design `IBetPlacer` extension point for future betting. - Configurability: every variable parameter (polling, concurrency, retry, UA, retention, thresholds, locale) goes in `appsettings.json` + Settings UI page. ## Current State Repo just initialized. Single `main` commit with `.gitignore` + `README.md` + `CLAUDE.md`. Working on `feature/initial-implementation` branch. No source code yet — Phase 0 starts with scraping research, no implementation. ## Temporary Workarounds (none yet) ## Cross-Phase Dependencies - **Phase 1 (Domain)** is the foundation; all later phases reference domain types. - **Phase 2 (Storage)** & **Phase 3 (Scraping)** depend only on Phase 1 — can run in parallel. - **Phase 4 (Application + Workers)** depends on Phase 2 + Phase 3. - **Phase 5 (UI Shell)** depends on Phase 1 only — can run in parallel with 2/3. - **Phase 6 (Event Browsing UI)** depends on Phase 4 + Phase 5. - **Phase 7 (Anomaly)** depends on Phase 4 (snapshot storage) + Phase 6 (UI patterns). - **Phase 8 (Results)** depends on Phase 6. - **Phase 9 (Packaging)** is final — runs full build + test suite. ## Deferred Work - Bet placing (explicit out-of-scope; design extension point only). - Authenticated scraping (anonymous now; `IOddsScraper` impl is swappable). - Multi-bookmaker support (only marathonbet.by; abstraction allows future expansion). - PostgreSQL backend (SQLite for now; `IRepository` abstraction allows swap). ## Failed Approaches (none yet — phases not started) ## Review Findings Log (populated by reviewers) ## Phase Execution Log | Phase | Agent | Model | Test Writer | Parallel | Notes | |---|---|---|---|---|---| | Phase 0 | phase-implementer | Sonnet 4.6 | ⏭️ Skipped (research only) | — | Throwaway probe; outputs SCRAPE_FINDINGS.md only | | Phase 1 | phase-implementer | Sonnet 4.6 | ⏭️ Skipped (Big Bang) | — | — | | Phase 2 | phase-implementer | Sonnet 4.6 | ⏭️ Skipped (Big Bang) | ✅ With 3 + 5 | — | | Phase 3 | phase-implementer | Sonnet 4.6 | ⏭️ Skipped (Big Bang) | ✅ With 2 + 5 | — | | Phase 4 | phase-implementer | Sonnet 4.6 | ⏭️ Skipped (Big Bang) | — | — | | Phase 5 | phase-implementer-frontend | Opus | ⏭️ Skipped (Big Bang) | ✅ With 2 + 3 | Uses frontend-design skill | | Phase 6 | phase-implementer-frontend | Opus | ⏭️ Skipped (Big Bang) | — | Uses frontend-design skill | | Phase 7 | phase-implementer (split if needed) | Sonnet/Opus | ⏭️ Skipped (Big Bang) | — | UI portion uses Opus | | Phase 8 | phase-implementer (split if needed) | Sonnet/Opus | ⏭️ Skipped (Big Bang) | — | UI portion uses Opus | | Phase 9 | phase-implementer | Sonnet 4.6 | ✅ Final phase tests | — | Full build + test enforced | ## Environment & Runtime Notes - Windows 10, PowerShell 5.1 default shell, Bash also available. - `git` configured globally; remote `origin` = `https://git.dolgolyov-family.by/alexei.dolgolyov/maraphon-app.git`. - Note: home directory (`C:\Users\Alexei`) is itself a git repo (likely accidental). The maraphon-app local `.git` overrides it for this directory tree. - .NET SDK assumed installed; if Phase 1 fails on `dotnet --version`, install or document in CONTEXT.md. ## Implementation Notes (populated as we work)