# District Source Network V3.4 Design

## Goal
Create a maintainable district-source registry that can seed verified district landing pages for all 64 Bangladesh districts, bind them to the existing local-news classifier, monitor health, and allow bulk enable/disable from Admin.

## Architecture
- Add `includes/district_sources.php` as the single registry/generator/health abstraction.
- Seed district-specific listing pages into the existing `scrape_sources` table, so the proven scrape/dedup/classification pipeline remains unchanged.
- Use publisher URL patterns where stable; keep per-district overrides possible.
- Seed only supported publishers. Broken/blocked sources are visible and can be automatically paused after repeated failures.
- District pages use `location_mode=strict`, `category_mode=auto`, and AI fallback disabled by default because location is deterministic.

## Initial publisher registry
1. Jugantor: `/location/{division}-{district}`
2. Dhaka Post: `/country/{district}-news`
3. Ajker Patrika: `/country/{division}-division/{district}`
4. Daily Janakantha: `/divisions/{division}/{district}`
5. Prothom Alo: `/topic/{district_bn}`

## Admin
New `admin/district_sources.php` page with publisher summary, district coverage, seed-all / seed-one-publisher actions, health-check controls, and source status.

## Data
Add metadata columns to `scrape_sources`: `publisher_key`, `source_scope`, `health_status`, `http_status`, `last_health_at`, `last_health_error`.

## Safety
- Duplicate-safe by deterministic source IDs.
- No Google Search HTML scraping.
- Health checks use bounded timeout and do not delete sources.
- Existing sources, scraper cron, classifier and API remain backward compatible.
