Observe, investigate, verify
Blop starts with passive, local evidence and adds active flow evidence only when the question calls for it. The loop is observe → investigate → verify.
1. Observe
Section titled “1. Observe”Point an existing OTLP/HTTP exporter at the local collector. This is the default path because it requires no account, no browser, and no model call:
blop monitor start --detachOTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:27686 pnpm testUse an authored browser check when you need to observe a specific user journey as it is performed. The runner drives Browser Harness through explicit tools and records steps, assertions, and artifacts:
blop test tests/checkout.blop.ts --base-url http://localhost:30002. Investigate
Section titled “2. Investigate”Ask the smallest question that can distinguish the problem:
blop traces --service checkout --status error --since 15m --jsonblop trace <trace-id> --include logs --jsonblop audit --service checkout --since 15m --jsonFor an active check, inspect its result, failing step, assertion reason, and artifacts. If platform ingest is configured, the control plane groups that run and its failures for team investigation.
3. Verify
Section titled “3. Verify”After changing the software, reproduce the instrumented behavior and compare the same bounded queries or audit:
blop audit --service checkout --since 15m --fail-on regression --jsonThen rerun the authored browser check if the claim is about a user-visible flow. Local, preview, and staging targets are the normal progression. A production target is deliberate, never inferred; read Production-target browser checks first.
Choose the evidence source
Section titled “Choose the evidence source”| Question | Evidence to start with |
|---|---|
| Which service or span failed? | Local traces, spans, and correlated logs |
| Did latency or errors regress after this edit? | Local blop audit and grouped statistics |
| Can a user complete this exact flow? | An authored browser check |
| What did the browser runner see and decide? | Run steps, assertions, and artifacts |
| Did an existing Vitest/JUnit suite fail? | Adapter-produced control-plane run evidence |
Two planes, no storage join
Section titled “Two planes, no storage join”| Local plane | Control plane | |
|---|---|---|
| Holds | traces, spans, logs, services | runs, failures, projects, insights |
| Store | SQLite on the developer’s machine | Postgres in the web app |
| Input | OTLP/HTTP traces and logs | CloudEvents from browser checks and adapters |
| Best interface | blop query and audit commands |
run and failure views |
A run is not a trace. The loop lets an agent use both kinds of evidence in one investigation, but Blop does not ingest the local SQLite store into Postgres or claim a datastore-level correlation between them.
Browser Harness boundary
Section titled “Browser Harness boundary”@blopai/browser-harness owns controlled browser actions, sessions,
screenshots, and container browser infrastructure. The blop runner owns the
authored check, bounded agent loop, result, reporters, and optional platform
upload. Use the runner for repeatable product-flow verification; use Browser
Harness directly when another host needs lower-level controlled browser tools.