SDR-2026-0425-PROD-WEB

Production Web Analytics

Grade B−
Overall 71%
Components 487 evaluated
Adapter CJA · 3.5.17
Rubric strict@2.0
Generated Apr 25 2026 · 09:14 UTC
Summary

This illustrative implementation graded B−. In the configured reference distribution, that score is near the median. Schema hygiene and naming consistency are strong; the largest gaps are in calculated metric maintainability (61%) and governance posture (54%), driven by a long tail of duplicate-near-equivalent metrics and the absence of any tracked snapshot history. The five highest-priority remediations are listed below in severity-derived priority order.

Category scores

Schema hygiene
82% B
Naming consistency
79% B−
Segment complexity
74% C+
Calc. metric maint.
61% D+
Attribution coverage
68% C
Governance posture
54% D

Top remediations

  1. Consolidate the seven near-duplicate revenue calculated metrics into a single canonical metric. CALC-014 Priority weight 6
  2. Establish snapshot tracking for the data view via cja_auto_sdr and commit the baseline to version control. GOV-001 Priority weight 4
  3. Add descriptions to the 120 dimensions currently lacking them. Required fields exist in the data view; populate them via the API. SCH-003 Priority weight 3
  4. Refactor the three segments with nesting depth above 5 into composed sub-segments to make their intent reviewable. SEG-007 Priority weight 2
  5. Document the attribution override used by 12 data view metrics, or remove overrides that are not intentional. ATTR-004 Priority weight 2

All findings

CALC-014 High calculated metric maintainability

Seven near-duplicate revenue calculated metrics detected

Jaccard similarity across calculated metric formulas identified seven metrics with ≥ 0.85 formula overlap that all compute revenue per visit, with minor variations in attribution model and allocation. They appear to be the result of independent authors solving the same problem without coordination.

cm_revenue_per_visit              author: r.kim@      created: 2024-03-12
cm_rev_per_visit_v2               author: a.patel@    created: 2024-08-04
cm_revpv_lasttouch                author: r.kim@      created: 2024-11-19
cm_rev_visit_linear               author: m.chen@     created: 2025-01-22
cm_revenue_visit_corrected        author: a.patel@    created: 2025-04-08
cm_rpv_marketing                  author: l.gomez@    created: 2025-09-15
cm_rev_per_visit_final            author: r.kim@      created: 2026-02-03

Near-duplicate metrics produce subtly different numbers in different reports, which surfaces as “the dashboards disagree” complaints from executives. They also create maintenance debt: when the underlying definition needs to change, all seven must be updated in lockstep, and inevitably one is missed.

Designate one canonical metric, document its attribution and allocation choices, and update downstream Workspace projects to reference it. Deprecate the others by tagging them with a sunset date and reviewing downstream references before retirement.

GOV-001 High governance posture

No snapshot history detected for this data view

The grader could not locate any prior snapshots of this data view in the configured snapshot directory. Without snapshot history, configuration changes cannot be diffed, drift cannot be detected, and audit trails are unavailable for compliance review.

cja_auto_sdr dv_prod_web --include-all-inventory --format json --output snapshots/snapshot_2026-04-25.json
sdr-grader snapshots/ --trend --output snapshots/trend.html

Store dated snapshots in version control and schedule the same supported export command at an interval appropriate for the project.

SCH-003 Medium schema hygiene

120 dimensions lack descriptions

120 dimensions in this data view have empty description fields. Descriptions are the primary way new analysts and AI agents understand what a component measures; missing descriptions force readers to infer intent from names alone, which is frequently wrong.

Dimensions: 120 of 203 missing (59%). The strict@2.0 rubric threshold is 56%.

Use the component IDs reported above to populate descriptions via the data view API. Establish a CI check that fails new components added without descriptions.

SEG-007 Medium segment complexity

Three segments exceed nesting depth threshold

The rubric flags segments with container nesting depth above 5 as difficult to review. Three segments in this data view exceed that threshold; the deepest reaches depth 8.

seg_qualified_lead_v3             depth: 8     containers: event/session/person mixed
seg_high_intent_returning         depth: 6     containers: session/event nested
seg_b2b_account_engaged           depth: 6     containers: event/session mixed

Deep nesting makes intent illegible. Reviewers cannot easily tell whether the segment matches what its name implies, and small definitional changes have unpredictable population effects.

Decompose each segment into composed sub-segments, named for what each layer captures. The surface segment then becomes a shallow combination of well-named pieces, each independently reviewable.

ATTR-004 Medium attribution coverage

12 data view metrics use attribution overrides without documentation

Twelve data view metrics configure an attribution override, but their descriptions do not identify the model or explain why the override is appropriate.

Update each metric description to name the configured attribution model and its purpose, or remove an override that is not intentional.

NAME-001 Low naming consistency

Inconsistent prefix convention in custom dimensions

73% of custom dimensions follow the c_ prefix convention. The rubric expects ≥ 80%. Four components diverge from the established pattern.

product_category          (expected: c_product_category)
user_segment              (expected: c_user_segment)
cart_value_band           (expected: c_cart_value_band)
last_search_term          (expected: c_last_search_term)

Rename the four affected components via the data view API. Document the prefix convention in the SDR for future contributors.

Distribution context

Overall score vs reference distribution
0 25 50 75 100 median 67 you · 71
Category scores vs median (n = 142 instances)
Schema hygiene Naming Seg. complexity Calc. metric maint. Attribution Governance 0 100 ▌ median

Methodology

This illustrative grade was produced by sdr-grader using the strict@2.0 rubric pack. The default CJA inventory contains 27 rules across six active categories; six are represented by findings in this report. Each rule contributes to a category subtotal weighted by severity (critical: 4, high: 3, medium: 2, low: 1). Category subtotals roll up to the overall score using the category weights defined in the rubric pack.

The grader is rule-based and deterministic — the same input always produces the same grade. Findings carry stable rule IDs that can be checked against the rubric documentation and rule definitions in the sdr-grader repository. Rules can be suppressed or reweighted via a project-level .sdr-grader.yaml.

1 rules skipped during this run:
  • CALC-001 · SEG-005 — Suppressed by the demo project's example configuration to reflect an accepted legacy documentation backlog.
Generated by sdr-grader v1.2.2 against snapshot 2026-04-25T09:14:00Z. Rubric: strict@2.0. Adapter: cja_auto_sdr@3.5.17. 487 components evaluated; 0 components skipped . Source: github.com/brian-a-au/sdr-grader.