ktx/docs-site
Andrey Avtomonov cb6a67c2d7 Make telemetry reliable across interrupts and headless installs
Three reliability gaps surfaced while auditing why PostHog numbers were
untrustworthy:

1. Interrupted commands lost their events. capture() is fire-and-forget and the
   only flush guarantee lived in a finally block, which SIGINT/SIGTERM skip — so
   Ctrl-C'ing a long ingest or an MCP client killing 'ktx mcp stdio' dropped the
   command event and any queued events. Add SIGINT/SIGTERM handlers (real-process
   entry only; never under test/programmatic io) that mark the active command
   span aborted, emit it, drain the emitter, then exit. Idempotent with the
   normal finally path via the single-consume command span.

2. Headless-first installs were invisible. loadTelemetryIdentity refused to mint
   an installId unless stdout was a TTY, so a machine whose first run was an
   IDE-launched MCP server or a script emitted nothing, ever. Mint on first run
   regardless of surface (still honoring CI/DO_NOT_TRACK/KTX_TELEMETRY_DISABLED),
   writing the one-time notice to stderr — safe under the MCP stdio protocol,
   which reserves stdout. Drop the now-unused stdoutIsTTY option.

3. No guard against silent emit regressions (the 0.7.0 scan_completed blackout).
   Add tests: the shared executePublicIngestTarget chokepoint emits exactly one
   ingest_completed on success and on the preflight-failure branch, and a
   database target invokes the scan that emits scan_completed; plus coverage for
   the aborted-flush helper.

Identity is unchanged otherwise: every event still attributes to the installId
in ~/.ktx/telemetry.json. No event/field changes, so Node<->Python schema parity
is untouched. Docs updated to reflect first-run-on-any-surface activation.
2026-06-02 23:19:37 +02:00
..
app feat: README architecture diagrams + React Flow diagram studio (#245) 2026-06-01 12:06:27 +02:00
components feat: README architecture diagrams + React Flow diagram studio (#245) 2026-06-01 12:06:27 +02:00
content/docs Make telemetry reliable across interrupts and headless installs 2026-06-02 23:19:37 +02:00
lib chore: revert repo references to Kaelio/ktx and remove rename-resilience (#252) 2026-06-02 00:14:43 +02:00
public feat: README architecture diagrams + React Flow diagram studio (#245) 2026-06-01 12:06:27 +02:00
tests docs: standardize ktx naming (#187) 2026-05-20 17:33:38 +02:00
.gitignore chore: configure docs site deployment 2026-05-11 17:57:55 +02:00
next-env.d.ts docs(quickstart): redesign demo-warehouse callout with sticker icons (#202) 2026-05-21 16:04:58 +02:00
next.config.mjs Route ktx stars dashboard 2026-05-28 13:00:49 +02:00
package.json feat: README architecture diagrams + React Flow diagram studio (#245) 2026-06-01 12:06:27 +02:00
postcss.config.mjs chore: move docs site workspace 2026-05-11 16:53:42 +02:00
proxy.ts docs: rewrite Semantic Querying concept with imperative-vs-declarative diagram (#156) 2026-05-19 23:41:29 +02:00
source.config.ts docs: revamp quickstart and tighten code-block styling (#135) 2026-05-18 19:22:19 +02:00
tsconfig.json feat: merge ingest and scan 2026-05-14 01:43:06 +02:00