[delight] User Experience Analysis Report - 2026-08-06 #50901
Closed
Replies: 1 comment
|
This discussion has been marked as outdated by Delight. A newer discussion is available at Discussion #51118. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Executive Summary
Today's analysis focused on:
docs/src/content/docs/reference/outcomes.md,docs/src/content/docs/examples/maintaining-repos.md)smoke-create-cross-repo-pr.md,architecture-guardian.md)pkg/workflow/model_costs_pricing_validation_test.go→ traced topkg/workflow/model_costs_pricing_validation.go)Overall Quality: Professional overall, with one clear inconsistency in error message construction.
Key Finding:
validateDefaultAiCreditsPricinguses two different error-reporting mechanisms within the same function — a structuredNewValidationError(field/value/reason/suggestion) for the AWF-version check, but plainfmt.Errorfstrings for the positivity checks — producing inconsistent error shape and missing actionable suggestions for the most commonly hit errors (zero/negative pricing values).Quality Highlights ✅
Example 1: Outcomes Reference Documentation
docs/src/content/docs/reference/outcomes.mdExample 2: Architecture Guardian Workflow Messages
.github/workflows/architecture-guardian.mdmessagesblock uses consistent, sparing emoji (🏛️/✅/❌), clear run-state framing, and includes workflow name + run URL links for traceability."run-failure": "❌ Architecture scan failed. [{workflow_name}]({run_url}) {status}. Scan did not complete."— concise and actionable.Improvement Opportunities 💡
High Priority
Opportunity 1: Inconsistent Error Message Construction - Single File Improvement
pkg/workflow/model_costs_pricing_validation.goNewValidationError(field, value, reason, suggestion)helper (which produces a consistently formatted, severity-classified error with an explicit remediation suggestion) for the AWF-version compatibility check. Lines 39–50, coveringinput,output,cache_read, andcache_writepositivity checks, instead use rawfmt.Errorf(...)strings with noField/Suggestionstructure.input: 0) than hitting an outdated AWF pin.models.default-ai-credits-pricingwho make a simple typo (entering0forinput) get a terser, less structured message than users who hit the AWF version issue, even though both are validation failures in the same feature area.fmt.Errorfcalls (lines 40, 43, 46, 49) to useNewValidationError("models.default-ai-credits-pricing", value, reason, suggestion)for consistency, adding a concrete suggestion (e.g., "Set input to a positive rate, such as 0.000001 for effectively-free self-hosted models.").Before (lines 39-44):
After:
Files Reviewed
Documentation
docs/src/content/docs/reference/outcomes.md- Rating: ✅docs/src/content/docs/examples/maintaining-repos.md- Rating: ✅Workflow Messages
.github/workflows/smoke-create-cross-repo-pr.md- Rating: ✅.github/workflows/architecture-guardian.md- Rating: ✅Validation Code
pkg/workflow/model_costs_pricing_validation.go- Rating:Metrics
🎯 Actionable Tasks
Task 1: Standardize error construction in
model_costs_pricing_validation.goFile to Modify:
pkg/workflow/model_costs_pricing_validation.goCurrent Experience
The function
validateDefaultAiCreditsPricing(lines 23–53) mixes two error styles: the AWF-version check (lines 32–37) returns a*WorkflowValidationErrorviaNewValidationError, with a structuredField,Value,Reason, andSuggestion. The four positivity checks (lines 39–50) return plainfmt.Errorfstrings that embed the same information ad hoc in a single sentence, with no separate suggestion field.Quality Issue
Design Principle: Trust and Reliability — "Consistent experience across touchpoints" and "Clear error messages with actionable solutions."
Because the positivity checks are far more likely to be triggered by ordinary user typos (e.g., accidentally setting
input: 0), inconsistent error shape here has an outsized impact on the everyday validation experience, even though the less-common AWF-version error already has the more polished treatment.Proposed Improvement
Convert all four
fmt.Errorfcalls to useNewValidationError, matching the field-naming and suggestion conventions already established by the AWF-version check in the same function.Before:
After:
Why This Matters
Success Criteria
pkg/workflow/model_costs_pricing_validation.goonly*WorkflowValidationErrorviaNewValidationErrorwith matching field naming and existing test assertions (assert.Contains(err.Error(), "input"), etc.) still passScope Constraint
pkg/workflow/model_costs_pricing_validation.gomodel_costs_pricing_validation_test.goshould continue to pass unmodified since assertions only check for substring presence)All reactions