| name | analytics-observability-governance |
| description | Use when changing or verifying Kai analytics observability across GA4, Firebase Analytics, BigQuery export, growth dashboard contracts, property and stream topology, or shared-auth versus analytics-plane boundaries. |
Hussh Analytics Observability Governance Skill
Purpose and Trigger
- Primary scope:
analytics-observability-governance-intake
- Trigger on GA4/Firebase/BigQuery observability workflows, growth dashboard verification, property or stream topology inspection, key-event and custom-dimension governance, shared-auth versus analytics-plane reasoning, and observability doc upkeep.
- Avoid overlap with
repo-operations, docs-governance, and quality-contracts.
Coverage and Ownership
- Role:
owner
- Owner family:
analytics-observability-governance
Owned repo surfaces:
docs/reference/operations/observability-architecture-map.md
docs/reference/operations/observability-google-first.md
docs/reference/operations/observability-event-matrix.md
docs/reference/quality/analytics-verification-contract.md
hushh-webapp/lib/observability
hushh-webapp/__tests__/services/observability-schema.test.ts
hushh-webapp/__tests__/services/observability-route-map.test.ts
hushh-webapp/__tests__/services/observability-growth.test.ts
hushh-webapp/__tests__/services/observability-native-firebase.test.ts
hushh-webapp/__tests__/services/observability-web-transport.test.ts
hushh-webapp/__tests__/services/observability-sandbox-audit.test.ts
hushh-webapp/scripts/testing/run-observability-sandbox-audit.mjs
hushh-webapp/scripts/testing/run-uat-analytics-smoke.mjs
consent-protocol/scripts/observability
.codex/skills/analytics-observability-governance
Non-owned surfaces:
repo-operations
docs-governance
frontend
mobile-native
backend
Do Use
- Inspecting GA4 properties, Firebase app streams, or BigQuery export links.
- Governing key events, custom dimensions, and growth dashboard query contracts.
- Explaining or verifying shared-auth versus analytics-sink separation across UAT and production.
- Updating the observability docs set and relationship diagrams as the system evolves.
- Verifying that dashboards and query surfaces match the emitted event contract.
Do Not Use
- Generic deploy, Cloud Run, branch-protection, or CI ownership work.
- Documentation-home placement decisions outside the observability doc family.
- Broad frontend or backend product implementation that is not primarily about observability.
Read First
docs/reference/operations/observability-architecture-map.md
docs/reference/operations/observability-google-first.md
docs/reference/operations/observability-event-matrix.md
docs/reference/quality/analytics-verification-contract.md
.codex/skills/analytics-observability-governance/references/property-stream-dataset-matrix.md
.codex/skills/analytics-observability-governance/references/event-taxonomy-and-validation.md
consent-protocol/scripts/observability/ga4_growth_dashboard_queries.sql
Workflow
- Inspect the live topology first; do not trust stale screenshots or assumed property mappings.
- Treat the analytics system as three planes: identity, analytics collection, and reporting.
- Keep production as the canonical business-reporting surface and UAT as validation-only unless the policy changes explicitly.
- Update property/stream/dataset references, event taxonomy, and verification docs in the same change.
- Keep BigQuery query ownership explicit and exclude non-Kai streams such as
HushhVoice from Kai growth models.
- Verify repo-side schema and transport behavior with
npm run verify:analytics before treating any property-side change as complete.
- Run
npm run audit:analytics-sandbox for local transport proof and npm run verify:analytics:governed for the full deployed validation bundle when UAT can be exercised.
- Use the local inspection helper for non-mutating inventory and drift checks before editing docs or dashboard assumptions.
- Keep the all-routes route-ID test strict; first-party app routes must not map to
unknown.
- UAT analytics smoke must reuse the existing reviewer test fixture through
REVIEWER_UID and REVIEWER_VAULT_PASSPHRASE; UAT_SMOKE_* and KAI_TEST_* are temporary migration aliases only.
- If the smoke fixture is missing portfolio or recommendation state, repair or reseed that same fixture rather than minting another account.
- After the cold
/login boot, Playwright analytics smoke must use Next client navigation for protected route transitions so the in-memory vault key is preserved.
- Web observability must push
dataLayer for GTM compatibility and send direct GA4 gtag events to the configured measurement ID; do not let GTM trigger drift be the only path for governed KPI events.
- UAT smoke must verify direct GA4 collect handoff for required web events in addition to client-side
dataLayer capture.
- Cache and route performance KPIs must be metadata-only: route ID, resource class, cache tier, freshness, result, duration bucket, and footprint bucket are allowed; user IDs, emails, workflow IDs, raw cache keys, PKM payloads, prompts, portfolio values, and decrypted values are not.
- Treat UAT as event-shape and transport validation for performance KPIs; production is the source for real user conclusions such as warm-cache time to usable UI, stale-render rate, blocking-loader rate, and refresh error rate.
- Spawn subagents only for independent, bounded, non-blocking lanes such as read-only route coverage audits, docs/skill updates, or disjoint verification automation patches; keep the immediate critical-path task local.
Handoff Rules
- If the task becomes generic deploy or environment rollout work, use
repo-operations.
- If the task becomes documentation-home governance outside observability, use
docs-governance.
- If the task becomes frontend route or UI implementation beyond observability emitters, use
frontend.
- If the task becomes native plugin or mobile build parity work, use
mobile-native.
- If the task becomes backend runtime instrumentation beyond the observability-owned script surface, use
backend.
Required Checks
python3 -m py_compile .codex/skills/analytics-observability-governance/scripts/inspect_analytics_surface.py
python3 .codex/skills/analytics-observability-governance/scripts/inspect_analytics_surface.py validate
python3 .codex/skills/analytics-observability-governance/scripts/inspect_analytics_surface.py health
cd hushh-webapp && npm run verify:analytics
cd hushh-webapp && npm run audit:analytics-sandbox
cd hushh-webapp && npm run smoke:analytics:uat
cd hushh-webapp && npm run verify:analytics:governed
./bin/hushh docs verify