Files
cairnobs/hack
jcoffey-dev 9bbd802a91 Catch the runbooks up with the query API they describe
Phase 2 unified the two query languages behind one endpoint and renamed
the request field, and the runbooks were never updated. Following them
today does not work:

  {"sql": ...}                 -> 400 query must not be empty
  POST /api :8080/search       -> 404, the route no longer exists

Both appear in the Phase 0 and Phase 1 runbooks and in the
windows-fixture README. That matters more than a normal doc typo,
because status.md cites the Phase 0 runbook as the record of how Phase
0 was verified -- so the documented verification procedure is one
nobody can re-run as written.

The Phase 1 step is rewritten rather than search-and-replaced: it
checked the SQL and full-text paths against two different endpoints,
and its exit criterion (the same record_id from both) now has to be
expressed against /query twice, once with SQL and once with a bare
word.

Phase 0's expected output for SELECT 1 also gained a warnings field
since it was written.

Every command here was run against a live stack before being written
down, including confirming both paths return the same record_id.

Signed-off-by: John Coffey <[email protected]>
2026-09-04 17:44:54 -07:00
..
2026-09-04 16:59:42 -07:00
2026-08-21 20:53:32 -07:00
2026-08-21 20:53:32 -07:00

hack

Local developer tooling that isn't part of any shipped component — scripts you run against your own machine/dev stack, not code that ends up in a container image (except dev-certs' output, which mounts into the ingest container).

Not one of the top-level directories in the original monorepo scaffold — added because dev-only mTLS cert generation didn't have a natural home in /deploy (real deployment manifests), /transport, or any other existing component. /hack is the conventional name for this in a lot of larger Go monorepos (Kubernetes among them).

  • dev-certs/ — generates a throwaway CA + server/client cert pair for local mTLS between the agent and ingest. See /docs/phase-0-runbook.md for when to run it.
  • windows-fixture/ — sends synthetic Windows Event Log-shaped records directly to ingest, bypassing the real Windows agent. Tests whether the pipeline handles Windows-shaped data; doesn't test the real EvtSubscribe/ETW integration, which needs actual Windows. See /docs/phase-1-runbook.md.
  • demo-simulator/ — the public demo's synthetic world: a fictional fleet whose agents check in, report CPU/memory/disk, and ship realistically shaped logs for eight services. Backfills a window of history, then keeps generating in real time. Distinct from benchmark-fixture/ (volume, for the Phase 2 latency benchmark) and windows-fixture/ (correctness, for the Windows ingest path).
  • check-web-routes.sh — asserts web/nginx.conf's hand-maintained route allowlists still match web/src/routes. nginx.conf 404s unknown paths, so it has to name the routes that have no prerendered file to match (dynamic ones, and any route without prerender = true). Drift here breaks production only — dev and npm run preview never read nginx.conf — so this runs in CI, like check-tenant-boundary.sh.
  • demo-seed/ — the rest of the demo deployment: its reset script, dashboards, alert rules, and the systemd unit that runs demo-simulator.