chore(work): decompose product-analytics-channel epic
Generated 1 epic + 9 stories under docs/work/epics/ from the approved PRD docs/work/prds/product-analytics-channel.prd.md. Stories follow the sequencing hints from the PRD (brand+wrapper → manifest+wireUseCase → assertFeatureConformance → BindContext+ESLint → React provider → docs). Ready for `pnpm work dispatch --execute` to begin implementation.
This commit is contained in:
30
docs/work/epics/product-analytics-channel/_epic.md
Normal file
30
docs/work/epics/product-analytics-channel/_epic.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
id: product-analytics-channel
|
||||
prd: docs/work/prds/product-analytics-channel.prd.md
|
||||
title: Product analytics as a fourth capture channel (ADR-024 implementation)
|
||||
type: epic
|
||||
status: in-progress
|
||||
features: [core-analytics, core-shared, core-testing, core-eslint]
|
||||
created: 2026-05-18T12:00:00Z
|
||||
updated: 2026-05-18T10:46:27.080Z
|
||||
---
|
||||
|
||||
## Goal
|
||||
|
||||
Ship `@repo/core-analytics` as an optional core package that codifies product analytics as the fourth capture channel alongside `ITracer`, `ILogger`, and `IAuditLog`. Adds `IAnalytics` interface, `NoopAnalytics` + `RecordingAnalytics` implementations, `Analyzed` brand, `withAnalytics` wrapper, `analyticsEvents` manifest field, `assertFeatureConformance` extension, `AnalyticsProtocol` in `BindContext`, `no-undeclared-analytics-event` ESLint rule, and a React provider scaffold — all mirroring the audit channel shape with ADR-024's three deliberate divergences.
|
||||
|
||||
## Why
|
||||
|
||||
Consumers routinely bolt analytics SDKs on at the React component layer, bypassing manifests, brands, and the five-gate conformance system. Codifying analytics as a channel with the same structural shape as `core-audit` means the conformance gates extend to a fourth signal at zero new gate count.
|
||||
|
||||
## Stories
|
||||
|
||||
- [ ] [01 — Scaffold @repo/core-analytics package](01-scaffold-core-analytics-package/_story.md)
|
||||
- [ ] [02 — Add RecordingAnalytics to @repo/core-testing](02-recording-analytics/_story.md)
|
||||
- [ ] [03 — Add Analyzed brand and withAnalytics wrapper](03-analyzed-brand-and-with-analytics-wrapper/_story.md)
|
||||
- [ ] [04 — Extend manifest schema and wireUseCase with analyticsEvents](04-manifest-schema-and-wire-use-case/_story.md)
|
||||
- [ ] [05 — Extend assertFeatureConformance to check Analyzed brand](05-assert-feature-conformance-analyzed/_story.md)
|
||||
- [ ] [06 — Add AnalyticsProtocol and BindContext.analytics](06-analytics-protocol-bind-context/_story.md)
|
||||
- [ ] [07 — Add no-undeclared-analytics-event ESLint rule](07-eslint-rule-no-undeclared-analytics-event/_story.md)
|
||||
- [ ] [08 — Add React provider to @repo/core-analytics](08-react-provider/_story.md)
|
||||
- [ ] [09 — Documentation](09-documentation/_story.md)
|
||||
Reference in New Issue
Block a user