logs/2026-06-27-ci-v1-implementation-closeout.md
CI v1 implementation closeout
Date: 2026-06-27 Status: Completed for CI Collector Router v1
What shipped
Implemented CI Collector Router v1 on live Chowmes.
The live CI runtime now supports:
- Collector strategy fields on
sources. - Acquisition quality metadata on
snapshots. - Scout
0.1.1/scrapecalls with acquisition metadata enabled. - RSS/feed parsing for OpenAI and Reddit-style feeds.
- Fallback collector ladder using
fallback_collectors. - Source health event writes for every collection run.
- Six-source benchmark artifacts.
- Dashboard collector summary showing
direct_http,scout_scrape, andrss_feed. - Path-aware daily and weekly wrappers that use the real
/root/.hermes/...runtime path.
Live runtime paths
Live workspace:
/root/.hermes/knowledge/obsidian/MyOS/Projects/Competitive Intelligence
Live skill:
/root/.hermes/knowledge/obsidian/MyOS/Projects/Competitive Intelligence/skills/competitive-research
Live artifacts:
/root/.hermes/knowledge/obsidian/MyOS/Projects/Competitive Intelligence/artifacts/competitive-research
Dashboard:
/root/.hermes/knowledge/obsidian/MyOS/Projects/Competitive Intelligence/artifacts/competitive-research/dashboard/index.html
Benchmark:
/root/.hermes/knowledge/obsidian/MyOS/Projects/Competitive Intelligence/artifacts/competitive-research/benchmarks/2026-06-27-ci-collector-benchmark/
Key implementation details
- Added snapshot columns:
quality_score,quality_reasons,recommended_collector,recommended_collector_reason,content_markers_found,content_markers_missing,acquisition_json. - Added source health columns:
collector,duration_ms,quality_score,recommended_collector. - Added
fetch_rss_urlusing feed-specific XML parsing. - Updated
fetch_scout_urlto sendquality_analysis,cleanup,expected_markers,recommend_collector, andsource_id. - Added fallback routing so Scout failures can recover through direct HTTP or RSS where configured.
- Added benchmark script:
scripts/collector-benchmark.py. - Updated dashboard source section to include collector strategy summary.
Scout operational fix
CI initially could not call Scout because Hermes/CI did not have SCOUT_API_KEY.
Then Scout still returned 403 because the running container was using the old 7-character fallback key while /opt/prism/scout/.env contained the intended 48-character key.
Fix:
- Copied the existing Scout key reference into
/root/.hermes/.envwithout printing the secret. - Added
SCOUT_BASE_URL=http://127.0.0.1:8421. - Recreated the Scout container with
/opt/prism/scout/.envloaded into the compose shell. - Verified protected
/scrapereturned200with acquisition metadata.
Benchmark result
Six-source benchmark selected:
| Source | Selected collector |
|---|---|
| Google AI blog | scout_scrape |
| Constructor product | scout_scrape |
| Coveo press/blog | scout_scrape |
| Bloomreach updates | direct_http |
| OpenAI RSS | rss_feed |
| Simple static source | direct_http |
Important finding:
OpenAI RSS direct HTTP produced a noisy 120,000-character capture. RSS parsing produced a cleaner 12,719-character feed representation and was selected as the correct collector.
Latest live verification
Local test suite:
python3 -m pytest tests/test_ci_core_weekly.py -q- Result:
18 passed
Live database after fallback-enabled daily run:
sources: 53snapshots: 160+signals: 65+synthesis_runs: 13+report_index: 8+source_health_events: 39+action_items: 1
Latest enabled source health:
ok: 39- failed: 0
Latest enabled collector mix:
scout_scrape: 23direct_http: 14rss_feed: 2
Fallback success:
Coveo blog, platform, commerce, and case studies were blocked through Scout but recovered through direct HTTP fallback. The failed Scout attempt and successful direct fallback are stored in snapshot acquisition metadata.
Generated artifacts:
- Daily Markdown:
/root/.hermes/knowledge/obsidian/MyOS/Projects/Competitive Intelligence/artifacts/competitive-research/briefs/2026-06-27.md - Daily HTML:
/root/.hermes/knowledge/obsidian/MyOS/Projects/Competitive Intelligence/artifacts/competitive-research/reports/2026-06-27.html - Weekly Markdown:
/root/.hermes/knowledge/obsidian/MyOS/Projects/Competitive Intelligence/artifacts/competitive-research/briefs/2026-06-27-weekly.md - Weekly HTML:
/root/.hermes/knowledge/obsidian/MyOS/Projects/Competitive Intelligence/artifacts/competitive-research/reports/2026-06-27-weekly.html - Dashboard:
/root/.hermes/knowledge/obsidian/MyOS/Projects/Competitive Intelligence/artifacts/competitive-research/dashboard/index.html
Dashboard verification:
- Latest daily visible.
- Latest weekly visible.
- Collector summary visible.
scout_scrape,direct_http, andrss_feedvisible.- Actions visible.
- Archive visible.
Health check:
scripts/chowmes-health-check --repair --send-test- Result: success.
- Runtime files readable by
hermes. - Gateway running.
- Parallel web backend ready.
- No recent permission errors.
- Telegram send-test delivered.
- No root-owned runtime drift after checks.
Remaining product work
CI Collector Router v1 is complete and running. The next product-quality work is not more acquisition plumbing. It is intelligence quality:
- Improve semantic delta extraction so the report says what materially changed, not merely that a page changed.
- Add weekly baseline-only gate so battlecard/action recommendations require real deltas.
- Add evidence claim gates for unsupported material claims.
- Improve dashboard action workflow and usefulness feedback.
- Build the dedicated CI bot only after the dashboard/report quality is stable.