SDR-2026-0425-MESSY-PROD

Messy Production

Grade C−
Overall 70%
Components 75 evaluated
Adapter AA · 1.0.0
Rubric strict@1.0
Generated Apr 25 2026 · 09:14 UTC
Summary

This implementation graded C− (70%). The grader evaluated 75 components in this report suite using the strict@1.0 rubric pack. The largest gap is in governance posture (42%); 3 of 6 rules in that category fired.

Category scores

schema hygiene
71% C−
naming consistency
60% D−
segment complexity
80% B−
calc metric maint
78% C+
attribution coverage
100% A
governance posture
42% F

Top remediations

  1. Establish a snapshot directory in version control and schedule regular runs of cja_auto_sdr / aa_auto_sdr to populate it. GOV-001 +5 pts overall
  2. Generate the SDR via cja_auto_sdr / aa_auto_sdr and commit it alongside this snapshot. Suppress this rule via .sdr-grader.yaml if the SDR lives somewhere the grader cannot see. GOV-003 +5 pts overall
  3. Re-create the missing component, or update the segment / calculated metric to point at the current canonical equivalent. SCH-002 +5 pts overall
  4. Update the formula to reference the current canonical component or retire the calculated metric. CALC-002 +3 pts overall
  5. Pick one term per concept, document it, and rename existing components to align. The losing synonyms should be deprecated, not silently kept around. NAME-004 +3 pts overall

All findings

GOV-001 High governance posture

No snapshot history detected for this data view

No prior snapshots of this implementation were detected alongside the input. Without snapshot history, configuration changes cannot be diffed, drift cannot be detected, and audit trails are unavailable for compliance review.

Establish a snapshot directory in version control and schedule regular runs of cja_auto_sdr / aa_auto_sdr to populate it.

GOV-003 High governance posture

No SDR documentation detected

No Solution Design Reference (SDR) document was supplied alongside this snapshot. Without an SDR, definitions live only in the platform UI, which makes peer review and onboarding harder and obscures the “why” behind component choices.

Generate the SDR via cja_auto_sdr / aa_auto_sdr and commit it alongside this snapshot. Suppress this rule via .sdr-grader.yaml if the SDR lives somewhere the grader cannot see.

SCH-002 High schema hygiene

4 broken references

4 references are broken — segments or calculated metrics point at component IDs that don't exist in this report suite. Broken references are usually a symptom of components renamed or deleted without updating their consumers.

calc_metric cm_conversion_rate -> missing metrics/orders
calc_metric cm_conversion_rate -> missing metrics/visits
calc_metric cm_revenue_per_visit -> missing metrics/revenue
calc_metric cm_revenue_per_visit -> missing metrics/visits

Re-create the missing component, or update the segment / calculated metric to point at the current canonical equivalent.

CALC-002 Medium calc metric maint

4 broken calculated metric references

4 calculated metric references are broken — the formula points at components, segments, or other calculated metrics that don't exist in this snapshot.

cm_conversion_rate -> metrics/orders
cm_conversion_rate -> metrics/visits
cm_revenue_per_visit -> metrics/revenue
cm_revenue_per_visit -> metrics/visits

Update the formula to reference the current canonical component or retire the calculated metric.

NAME-004 Medium naming consistency

Mixed synonym usage in 1 group

1 synonym group appears in component names with multiple terms in active use. Inconsistent vocabulary forces analysts to learn each team's idiolect; downstream tooling and segmentation drift apart over time.

[user, visitor] -> user: 1, visitor: 1

Pick one term per concept, document it, and rename existing components to align. The losing synonyms should be deprecated, not silently kept around.

SCH-003 Medium schema hygiene

42 components lack descriptions

9 metrics and 33 dimensions in this report suite 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.

Metrics: 9 of 15 missing (60%). Dimensions: 33 of 60 missing (55%). The rubric threshold is 35%.

Generate the list of components missing descriptions via the data view API and populate them. Establish a CI check that fails new components added without descriptions.

SEG-002 Medium segment complexity

1 segment mix container types

1 segment mixes container types (event / session / person) within a single definition. Mixed containers obscure intent and produce surprising population differences from segments that look superficially similar.

s_returning  containers: visitors, visits, hits  depth: 2

Decompose the segment into composed sub-segments, one per container level, and combine them at the surface segment.

GOV-005 Low governance posture

41 components lack tags

41 of 75 components (55%) have no tags. Tags are the cheapest way to keep schema browsing tractable as the data view grows; without them, finding components by purpose requires reading every name.

Adopt a small, documented tag taxonomy and apply it via the platform API.

Methodology

This grade was produced by sdr-grader using the strict@1.0 rubric pack. The rubric encodes 30 rules across 6 active categories; 8 fired against this snapshot. 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 are auditable: every rule's source YAML is linked from its finding, and rules can be suppressed or reweighted via a project-level .sdr-grader.yaml.

Generated by sdr-grader v1.1.3 against snapshot 2026-04-25T09:14:00Z. Rubric: strict@1.0. Adapter: aa_auto_sdr@1.0.0. 75 components evaluated; 0 components skipped . Source: github.com/brian-a-au/sdr-grader.