Full source at `/home/dev/research_loop/production/MSFT/extractor.py` (719 lines). Runnable:

```bash
python3 production/MSFT/extractor.py --manifest production/MSFT/source_manifest.csv --output production/MSFT/forecast_vintage.csv
python3 production/MSFT/extractor.py --build-timeseries  # also regenerates timeseries + chart
```

Key behavior:
- Fetches all primary sources including `earnings_call_webcast` IR pages via `fetch_html()`.
- Extracts guidance snippets with `GUIDANCE_SNIPPET_PATTERNS` regex anchors verified against live page text.
- Q2/Q3 FY2026 carry-forward ~$96.8B uses quarter-specific capex commentary snippets (not Q1 growth-rate quote).
- Derived FY2026-FQ2/FQ3 `capex_actual` rows cite `sec.gov` 10-Q URLs with `int(round(value*1000))` snippet rounding.
