Competitive Intelligence

logs/2026-06-26-ci-stabilization.md

CI Stabilization Log - 2026-06-26

Status

Phase 0 is partially implemented and verified. The weekly renderer failure is fixed, the VPS ledger exists again, the daily baseline-filter bug is fixed, and the CI workspace sync now preserves runtime-only artifacts.

Live Runtime Truth

Verified on the Hostinger VPS chowmes on 2026-06-26.

Surface Confirmed state
Host chowmes
Public ports 22/tcp, 80/tcp, 443/tcp allowed by UFW
Local-only ports Hermes dashboard 127.0.0.1:9119, Temporal 127.0.0.1:7233, Temporal UI 127.0.0.1:8088, Scout 127.0.0.1:8421, AC2 lab backend 127.0.0.1:8787
Containers hermes, caddy, scout, temporal, temporal-ui, temporal-db, ac2-lab-backend
Hermes model provider openrouter
Hermes default model deepseek/deepseek-v4-pro
Hermes context length 131072
Hermes max turns 6
Hermes web backend parallel
Default gateway Athena/default running, PID 144
Other active gateway Vulcan profile running, PID 167
Other available profiles arjuna, kubera, prometheus, strategic exist as profile directories but no gateway was reported running for them

Fixes Implemented

  1. Added weekly HTML renderer support in skills/competitive-research/scripts/ci_core.py.
  2. Added regression coverage in skills/competitive-research/tests/test_ci_core_weekly.py.
  3. Fixed daily synthesis material filtering so baseline captures with raw_json.baseline == true are not treated as action-worthy competitor movement.
  4. Added scripts/sync-competitive-intelligence-to-hermes for CI-only safe sync.
  5. Patched scripts/sync-obsidian-to-hermes to preserve CI runtime-only artifacts: - Projects/Competitive Intelligence/artifacts/competitive-research/ci.sqlite - Projects/Competitive Intelligence/artifacts/competitive-research/raw/

Verification Evidence

Local regression:

python3 -m pytest .../skills/competitive-research/tests/test_ci_core_weekly.py -v
9 passed in 0.09s

VPS runtime artifact check:

ci_sqlite_bytes=483328
raw_files=1

VPS daily resume after baseline filter:

Sources loaded: 43
Synthesis packet: 0 signals, 20 ledger sources
No material daily signals; using deterministic quiet-day synthesis.
Markdown saved: .../briefs/2026-06-26.md
HTML saved: .../reports/2026-06-26.html
Quality score: 1.00

VPS weekly production wrapper:

Weekly competitive readout - 2026-06-20 to 2026-06-26
Signals in window: 27
Markdown: .../briefs/2026-06-26-weekly.md
HTML: .../reports/2026-06-26-weekly.html
PDF: .../reports/2026-06-26-weekly.pdf
weekly_pdf_exists=yes
weekly_pdf_bytes=2832
pdf_header=%PDF-1.4

VPS static dashboard:

Dashboard saved: /opt/data/knowledge/obsidian/MyOS/Projects/Competitive Intelligence/artifacts/competitive-research/dashboard/index.html
dashboard_bytes=16045
CI Command Center=True
Today=True
Weekly=True
Sources=True
Signals=True
Actions=True
Archive=True

Chowmes health check after skill sync:

repair=applied
hermes_can_read_runtime_files=yes
telegram_owner_approval=present
root_owned_runtime_files=no
gateway_status=running
web_backend=parallel
telegram_send_test=sent
root_owned_runtime_files_after_checks=no

Important warning: the health check also reported an OpenRouter payment/credit error for auxiliary model processing. Local deterministic CI runs still pass, but model-backed synthesis quality may degrade or fail until OpenRouter billing/credits are healthy.

Open Stabilization Work

  • Decide whether Arjuna, Kubera, and Prometheus should remain on-demand or run active gateways.
  • Serve the static CI dashboard behind a private tunnel.
  • Replace or reclassify blocked sources so quiet-day confidence is not overstated.
  • Add sync preflight output that explicitly prints preserved runtime files before and after extraction.