diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 517ed20d..8bbc15c8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,6 +46,9 @@ jobs: - run: npm ci - run: npm run typecheck - run: npm run test + - name: Test isolated telemetry benchmark transport + if: matrix.node-version == '22.22.0' + run: npm run benchmark:telemetry:test - name: Run evaluator tests if: matrix.node-version == '22.22.0' run: npm run eval:test @@ -102,6 +105,11 @@ jobs: src/team/workflow/__tests__/repository-team-workflow-port.test.ts test/team-inbox-spec-authoring-real.contract.test.ts test/capabilities.test.ts + test/telemetry.test.ts + test/telemetry-delivery.test.ts + test/telemetry-context-schema.test.ts + test/telemetry-project-context.test.ts + test/telemetry-project-capture.test.ts src/logging/__tests__/policy.test.ts src/wiki/operations/__tests__/durability.test.ts src/wiki/operations/__tests__/identity-precision.test.ts diff --git a/.mex/ROUTER.md b/.mex/ROUTER.md index 557fbfde..9f2921a8 100644 --- a/.mex/ROUTER.md +++ b/.mex/ROUTER.md @@ -152,6 +152,23 @@ Then read this file fully before doing anything else in this session. all memory and other limits stay unchanged. A clean enforcing run on the new calibrated head remains required. Local same-code memory/latency evidence is retained in `docs/design/graph-isolation-diagnostic.json`. +- Graph performance PR #180 passed the final checks (run `34291831733`) and + merged into `codex/0.8.1` as `d64f171`; the preceding calibration notes are + historical. Main remains separate. +- Telemetry v2 is implemented on `codex/0.8.1-telemetry`, based on that merge, + and shared in draft PR #188 targeting `codex/0.8.1`. Local verification and + latency evidence for `9cbfab8` are retained. The follow-up context additions + pass 353 focused tests, typecheck/build and a separate actual-CLI benchmark; + fresh full and platform CI remains required. The approved random installation UUID is shared + across CLI and Hub. The user additionally approved existing scaffold UUIDs + for shared-project estimates and configured AI-tool names from project setup; + these cannot establish team size or identify the invoking agent. The bounded + reader never creates or repairs project identity. Content, paths, queries, + names, repository remotes, and contact data remain outside the event catalog. + Namespaced CLI outcomes, explicit Hub actions/pages, and terminal jobs use a + bounded per-user queue and cancellable delivery. Pure discovery/read commands + remain quiet. CLI feedback uses the existing Hub hosted form without an + analytics identity. See `docs/design/telemetry-v2.md` for validation status. - Targeted graph get/query/impact consumers use one provenance-bound immutable snapshot and discard output if graph or exact source identity changes. - The graph half of Checkpoint 2 is working in the Project Hub: grouped symbol diff --git a/.mex/context/architecture.md b/.mex/context/architecture.md index be912807..9fc02390 100644 --- a/.mex/context/architecture.md +++ b/.mex/context/architecture.md @@ -23,7 +23,7 @@ edges: # Broad overview: keep this empty unless a claim depends on a few specific symbols. # Entry shape: { node: "function:", fingerprint: "mh:64:" } grounds_to: [] -last_updated: 2026-09-06 +last_updated: 2026-09-09 mex: id: mx_01M1M0CJ5C5XQV0HM5VM787WQS type: architecture @@ -99,7 +99,7 @@ revision: 1 can use Claude Code, Codex, or OpenCode, and prompt-only fallback works with any file-reading agent. - A local browser connects only to the loopback Project Hub and exchanges a one-use bootstrap token for a private session. -- **posthog-node** — optional anonymous CLI telemetry; disabled for the development repository and by `DO_NOT_TRACK=1` or `MEX_TELEMETRY=0`. +- **PostHog ingestion** — optional pseudonymous CLI/Hub events share one random installation UUID. A bounded read-only configuration snapshot can add the existing scaffold UUID for shared-project estimates and known configured AI-tool names; it never identifies the invoking agent or creates project identity. Names, remotes, paths, content, queries, and contact details remain excluded. A bounded per-user outbox and cancellable Node HTTP transport replace the SDK. Development checkouts and opt-out controls disable collection/delivery; see `TELEMETRY.md`.