spec: Content Analytics Mode (persist/read-only) for issue #37521 - #37540
jcastro-dotcms wants to merge 7 commits into
Conversation
Refs #37521 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Claude finished @jcastro-dotcms's task in 52s —— View job Spec Review — Content Analytics Mode (#37521)Task list
This PR carries only OverallThe spec is well-structured and unusually rigorous for a draft: prioritized user stories with independent tests, an explicit load-bearing assumption called out as such (lines 215–224), and success criteria that acknowledge the shared-dataset measurement constraint (SC-003). The scope reversal of #37349 / #37407 (required A few things worth resolving before Gaps / clarifications
Nits
None of these block the spec as PR 1 — they're items to resolve in clarification or carry explicitly into |
- FR-002a: default new (never-before-configured) instances to Read & Write too - Edge case: define "from that point forward" for in-flight/queued events at switch time - FR-004: scope "any analytics events" to Content Analytics ingest traffic only Refs #37521 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…de' into issue-37521-content-analytics-mode
- FR-004/Assumptions: name the single instance-side ingest hand-off (verified in EventAnalyticsProxyResource + the analytics SDK's config.server+ANALYTICS_ENDPOINT) as the one gate that covers both server-rendered auto-tracking and headless/SPA SDK traffic, since neither posts directly to the Content Analytics infrastructure. Removes the apparent contradiction between FR-004 and the old enforcement wording. - Edge case + Legacy Considerations: Experiments (A/B testing) reads results via CubeJS against the same Content Analytics dataset (confirmed in ExperimentsAPIImpl / CubeJSClientFactoryImpl) - Read Only halting ingest is accepted to also halt new experiment result collection on that instance, not treated as a gap. Refs #37521 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…findings - FR-005: clarify cluster-wide propagation uses the same existing cache-invalidation mechanism every other Content Analytics app config field already relies on (verified via AppsAPIImpl.invalidateCache() / CacheLocator.getAppsCache()) — no new mechanism, brief propagation delay is expected and acceptable. - Assumptions: flag the "events always route through the instance first" claim as the one load-bearing assumption the whole feature depends on; require /speckit-plan to re-trace it against the actual code rather than carry it forward unverified. - US1: add acceptance scenario 4 exercising the headless/SPA SDK path specifically, not just server-rendered tracking. - SC-002/SC-003: add concrete measurement methods; SC-003 measured instance-side since the shared dataset can't attribute events to a specific instance (per FR-007). Refs #37521 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Summary
Spec for issue #37521 — replaces epic #37349's environment-based cross-instance analytics access model with a simpler, per-instance Analytics Mode dropdown (
Read & Write/Read Only) in the Content Analytics app config.Read & Writeafter upgrade — no silent data lossenvironment-at-ingest decision from Analytics: Environment Filtering (read Production data from Authoring) #37349's amendment (specced under Analytics: Environment Filtering — CAEM: acceptenvironmentat ingest and filter on it in the query API #37407)This is PR 1 of 2 per the Spec-Kit flow — spec only, nothing else. Please review for: is this the right problem, is it scoped correctly, are the success criteria measurable, is anything out of scope missing.
Refs #37521
Test plan
N/A — this PR carries only
spec.md, no code changes.