Built the entire omnictx harvest-freshness PRD (F1–F5) end-to-end: per-source freshness in the store, an MCP freshness tool + GET /stats + extension readout, an on-demand "refresh now" gesture, and the active-refresh lane — capture_url and refresh_source — that drives the user's own browser over a loopback CDP attach. Reviewed it (two-axis), then live-tested it against a real debug Chrome + the real store, which surfaced and fixed two genuine bugs (Chrome 136+ rejects any DevTools WebSocket carrying an Origin; a scratch-tab about:blank ready-race). Shipped as PR #26. Added Taskfile launchers for per-profile debug Chrome. Then pivoted to a Perth-ecosystem networking push: deep-researched venture ideas for 4 WA innovation leaders (Brodie / Charlie / Jo / Zane) via a 9-agent workflow with adversarial stress-testing, and helped ratify a team unified-CEO-report norm.
count, most_recent, age_seconds) in store.Stats, TDD, 100% pkg coverage.freshness tool + GET /stats + an options-page "Source freshness" readout.capture_url + refresh_source over a hand-rolled CDP client (internal/cdp) + a Go collection-walker (internal/harvest); omnictx refresh CLI for opt-in cron self-healing.main, so it verifies post-merge.)task chrome:cdp:* — per-profile persistent debug-Chrome launchers (personal/gusmao/mia) + omnictx:refresh; live-verified (refresh walked HN over real Chrome, ingested delta).| File | What it is |
|---|---|
| internal/cdp/cdp.go | Loopback CDP client: scratch-tab open/navigate/evaluate/close; loopback-only guard. |
| internal/cdp/ws.go | Hand-rolled RFC 6455 WebSocket client that sends no Origin (Chrome 136+ rejects one); zero new modules. |
| internal/cdp/session.go | CDP JSON command/response session + readiness gate. |
| internal/harvest/harvest.go | Server-side collection walker: adapter walk → frontier delta → ingest, bounded pages. |
| internal/harvest/sources.go | Refreshable-source registry (hackernews walk expr; reddit/lobsters/googlenews added later by a parallel session). |
| internal/denylist/denylist.go | Server-side sensitive-host guard (mirrors the extension builtin) — denylist-wins on the active lane. |
| scripts/stress-test.mjs | Live end-to-end stress harness (real store + real CDP Chrome) → JSON results. |
| scripts/stress-report.mjs | Renders the stress results into a self-contained HTML report. |
| tools/omnictx-cdp/launch-chrome-cdp.ps1 | Launch a dedicated persistent debug Chrome per profile (own port/user-data-dir). |
| tools/omnictx-cdp/stop-chrome-cdp.ps1 | Stop/report the omnictx debug-Chrome instances (never touches normal Chrome). |
| downloads/omnictx-stress-report.html | Rendered live-stress-test report (17/17; the freshness before/after proof). |
| downloads/omnictx-allowlist-snippet.js | Paste-in snippet to merge 21 bookmarked content hosts into the myimaginationai allowlist. |
| perth-network-big-ideas (workflow) | The 9-agent deep-research workflow: research → skeptic stress-test → ranked portfolio. |
| File | Change |
|---|---|
internal/store/store.go (+ test) | Per-source freshness via one GROUP BY; injected clock; derive corpus most_recent. |
internal/mcp/mcp.go, mcp_serve.go (+ test) | New tools: freshness, capture_url, refresh_source; cap→capturer, fail-safe-to-stale. |
internal/api/api.go (+ stats_test) | GET /stats endpoint (token-guarded, fail-open). |
internal/app/app.go, cli.go (+ tests) | Wire CDP client + capturer + refresher; omnictx refresh subcommand w/ --min-interval guard. |
internal/browsercap/browsercap.go (+ test) | CaptureURL orchestration + ErrDenied + active-capture logging. |
extension/src/lib/{client,harvest}.js | client.stats(); pure pickRefreshTab. |
extension/src/options/options.{js,html} | "Source freshness" readout + "Refresh now" gesture + formatAge. |
extension/src/background/{harvest-loop,service-worker}.js | MSG_REFRESH_SOURCE + handler routing. |
docs/DESIGN.md | Documented the new MCP tools in the surface list. |
| Taskfile.yml workspace | Added chrome:cdp[:all|:stop|:status] + omnictx:refresh tasks. |
| wiki/live.md workspace | Registered this session's line on the coordination board. |
x/net/websocket or a new dep — Chrome 136+ 403s any DevTools socket with an Origin, and the vendored lib always sends one. Keeps pure-Go / zero new modules.capture_url refuses credential/SSO hosts even on explicit request (new internal/denylist).reports/ticket-progress.html + reports/index.html); confirmed + aligned instead.This session created/updated no adb tickets — the omnictx work is tracked in its own repo via GitHub PR #26, not the valter-workspace adb board. The adb board (available this run) holds the separate venture-validation tickets (FIFO / questionnaire / Vibe-to-Prod), untouched here. The deep-research portfolio is a candidate for a new venture-validation ticket if you want it on the CEO dashboard.
Fact sources used this run: git (branch diff) on-disk mtime adb (available) gstack (thin) transcript — grabbed a DIFFERENT concurrent session, ignored.