color/semantic-holds-literalRole colours bypass the palette
Role-based colour tokens contain direct colour values instead of references to the palette.
Rule-reported count; importer not determined · 2 located occurrences all / reached 0
Back to the homepage · Initial assessment for a public synthetic fixture · See the completed delivery and checks
ds-loop-site / System review · 2026-10-12
Problems to review
These checks found possible problems. Their counts are not a quality grade.
Review the planReference-only values / (literal + reference + mixed values). Not reference resolution. Read the coverage limits.
The measured state and what deserves a closer look.
Agent-authored recommendation. Read left to right: problem → proposed outcome → first delivery → verification. This sequence is a plan, not a measured dependency graph or completed work.
The action background repeats the light palette value in both themes. The existing dark palette cannot reach the button through that literal.
Read the diagnosis and evidenceUse a theme-local palette alias for the action background. Keep the existing light and dark palettes, component geometry and form behavior.
Inspect the proposed architectureReplace the two literal action-background declarations with var(--palette-blue-500, #245bdb) in their existing theme scopes.
Effort: Not estimated
Review the sequenceMeasure both theme colors and button dimensions; exercise keyboard form submission; retain the decision and the limits. This report records the initial assessment; completed checks are linked from the website's worked delivery.
These checks are planned. Their presence does not mean they passed.
Read verification limitsProblems to review
These checks found possible problems. Their counts are not a quality grade.
What we checked: .css files with 15 checks. No additional coverage gaps reported within that scope. What we couldn’t check
| Area | Highest severity | Groups | Most severe finding |
|---|---|---|---|
| Colour | high | 2 · reached 0 | Role colours bypass the palette |
Severity is the engine’s rule severity, not a business priority.
Up to three finding groups, ordered by engine severity. This is not a business-priority ranking.
color/semantic-holds-literalRole-based colour tokens contain direct colour values instead of references to the palette.
Rule-reported count; importer not determined · 2 located occurrences all / reached 0
color/literal-duplicate-tokensSeveral tokens store the same colour. Check whether they should share a palette value.
Rule-reported count; importer not determined · located occurrences not measured / reached not measured
No file:line recorded; see detailed engine evidence.
The agent’s assessment of what is getting in the way.
Agent assessment; the engine does not establish business impact.
The action background repeats the light palette value in both themes. The existing dark palette cannot reach the button through that literal.
Agent-cited evidence (not independently verified): before.css:3 · before.css:7
The supplied convention for this public synthetic fixture is that primary actions follow each theme's existing palette. Preserve component dimensions, text colors and form behavior.
Unsupported — no evidence refs. This is not an established fact.
Source evidence, available for inspection.
Measured from source code. Counts describe the source; they are not grades.
No unread formats reported.
No unread token files reported.
No rule judgment limits reported.
Unconvertible colours: 0
Unclassified style values: 0
Unclassified token values: 0
Undecided colour roles: 0
CSS keyword/generic font components recognised and excluded: 0
Coverage retains samples, not every unread location. Counts without locations cannot be traced further in this report.
color/semantic-holds-literalRole-based colour tokens contain direct colour values instead of references to the palette.
Rule-reported count; importer not determined · 2 located occurrences all / reached 0
color/literal-duplicate-tokensSeveral tokens store the same colour. Check whether they should share a palette value.
Rule-reported count; importer not determined · located occurrences not measured / reached not measured
No file:line recorded; see detailed engine evidence.
2 findings · reached 0. A finding may group many use sites; finding counts are not occurrence counts.
See recorded location in Details
2 semantic token declaration(s) hold a literal colour instead of referencing a primitive (1 distinct token names across 1 file(s))
where: --color-action-background = #245bdb (before.css:3); --color-action-background = #245bdb (before.css:7)
risk: Renaming or retuning a palette entry stops propagating — the same colour now lives in two places and drifts apart on the next edit.
fix: Point each at a primitive: --token: var(--<ns>-palette-<name>). If no primitive matches, add one first.
See recorded location in Details
1 colour value(s) are declared by 3 different tokens
where: #245bdb <- --palette-blue-500, --color-action-background
risk: The next person to change this colour changes one of the names and not the others, and the system carries two values for one decision.
fix: Keep one canonical token per value; make the rest var() aliases of it.
Summaries, risks, fixes and suggestions are engine output. Candidates are not replacements. Some rules retain only example locations; expanding shows all evidence the rule recorded.
Extracted use sites before exceptions or severity filtering. Token declarations and markup are outside this inventory.
No ordinary CSS property values were recorded. This is not a count of all styling in the source.
2 declared names · 4 declarations · 0 var() references. Layers use configured naming patterns. Lane order is not a reference edge.
--palette-blue-*
1 names / 2 declarations
--color-action-*
1 names / 2 declarations
Consumer → referenced group. Weight = observed var() occurrences, including fallbacks. Highlight = at least one recorded tier finding; it does not mark every occurrence as a violation.
Select a token to inspect its declarations and follow references in either direction.
Print shows the aggregate lanes. Open the HTML for complete searchable and paginated evidence.
No publishable shared library was established; products is the fallback. Review the structural facts below. Override with --against products|systems.
Ratios are reference-only values / (literal + reference + mixed values), from 0 to 1. Ranges are observations, not targets or grades. 5 measured reference repositories. 100 classified occurrences per dimension and 3 contributing repos are required. Partial adapter coverage limits every comparison. If any contributing reference uses a different instrument, the dimension has no numeric comparison.
| Dimension | Your ratio | Reference range | Median | Comparison | Contributing sources |
|---|---|---|---|---|---|
| Colour tokenization | not checked | — | — | not checked | 4 reference repos: appsmithorg/appsmith, refinedev/refine, excalidraw/excalidraw, PostHog/posthog |
| spacing tokenization | not checked | — | — | not checked | 5 reference repos: supabase/supabase, appsmithorg/appsmith, refinedev/refine, excalidraw/excalidraw, PostHog/posthog |
| typography tokenization | not checked | — | — | not checked | 3 reference repos: refinedev/refine, excalidraw/excalidraw, PostHog/posthog |
| radius tokenization | not checked | — | — | not checked | 2 reference repos: excalidraw/excalidraw, PostHog/posthog |
| shadow tokenization | not checked | — | — | not checked | 0 reference repos: none |
| z-index tokenization | not checked | — | — | not checked | 1 reference repos: PostHog/posthog |
| duration tokenization | not checked | — | — | not checked | 1 reference repos: PostHog/posthog |
Component usage not checked: no workspace packages were found at this source root.
Source: .ds-scorecard/history.jsonl · 0 recorded runs.
Not checked: no scorecard history for this source.
Ratios describe static source evidence within each run’s coverage. They do not measure savings or productivity.
Practices to learn from, with their sources.
Primary actions follow each theme’s palette. The two palette values remain legitimate product choices.
Agent-cited evidence (not independently verified): before.css:2 · before.css:6
Current and proposed architecture, with evidence boundaries visible.
Proposed architecture, not a measured future result.
Use a theme-local palette alias for the action background. Keep the existing light and dark palettes, component geometry and form behavior.
Agent-cited evidence (not independently verified): before.css:2 · before.css:6
Work in this order; verify each step before moving on.
Step 1 · Effort: not estimated
What changes: Replace the two literal action-background declarations with var(--palette-blue-500, #245bdb) in their existing theme scopes.
Why: A palette edit should propagate to the primary action without replacing the component or changing legitimate theme choices.
How you’ll know it worked: Measure both theme colors and button dimensions; exercise keyboard form submission; retain the decision and the limits. This report records the initial assessment; completed checks are linked from the website's worked delivery.
Agent-cited evidence (not independently verified): before.css:3 · before.css:7
The boundaries of this evidence travel with every conclusion.
Static code checks do not establish rendered behaviour, accessibility, business impact or whether a cited claim is true. Source links open the public fixture files alongside this report.
Printed summary: only expanded evidence is included. Open the HTML file for the full recorded lists.