[delight] User Experience Analysis Report - 2026-09-13 #60634
Closed
Replies: 1 comment
|
This discussion has been marked as outdated by Delight. A newer discussion is available at Discussion #60864. |
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:
drive-memory.md,using-at-scale.mdx)pdf-summary.md,daily-byok-ollama-test.md)expression_secrets_serialization_validation.go)Overall Quality: Professional overall, with one concrete, high-value clarity gap in a security-critical error message.
Key Finding: The
toJSON(secrets)compile-time error/warning explains what is wrong and how to fix it in general terms, but never shows a corrected example, so users editing a workflow under time pressure have to infer the fix pattern themselves.Quality Highlights ✅
Example 1: Clear preview scoping in
drive-memory.mddocs/src/content/docs/experimental/drive-memory.md[!CAUTION]admonition scoping the feature to enrolled preview repos, and the "Limitations" section lists constraints as a scannable bullet list rather than prose — exactly the efficient, low-cognitive-load format enterprise readers need before adopting an experimental feature.Example 2: Layered guidance in
using-at-scale.mdxdocs/src/content/docs/guides/using-at-scale.mdxImprovement Opportunities 💡
High Priority
Opportunity 1: Secrets-serialization error lacks a corrected example - Single File Improvement
pkg/workflow/expression_secrets_serialization_validation.go"secrets serialization expression(s) detected that would expose all secrets to the agent. Found: %s. Use specific secret references (e.g. secrets.MY_SECRET) instead of passing the entire secrets context."It names the offending expression but gives only an abstract placeholder (secrets.MY_SECRET), not a rewritten version of what the user actually wrote.${{ toJSON(secrets) }}expression echoed back, then a generic instruction — but no worked "before → after" showing how to replace a whole-context serialization with individual secret references in something like anenv:block."For example, replace 'env: { ALL: ${{ toJSON(secrets) }} }' with 'env: { MY_SECRET: ${{ secrets.MY_SECRET }} }'."This keeps the change scoped to the message string in this one file.Files Reviewed
Documentation
docs/src/content/docs/experimental/drive-memory.md- Rating: ✅docs/src/content/docs/guides/using-at-scale.mdx- Rating: ✅CLI Commands
Workflow Messages
.github/workflows/pdf-summary.md- Rating: ✅ (themed emoji footer/messages are consistent and on-brand for the workflow's purpose; professional despite playful icons).github/workflows/daily-byok-ollama-test.md- Rating: ✅ (status messages are terse, accurate, and include actionable status like "BYOK endpoint responded")Validation Code
pkg/workflow/expression_secrets_serialization_validation.go- Rating:Metrics
🎯 Actionable Tasks
Here is 1 targeted improvement task, affecting a single file:
Task 1: Add a worked example to the secrets-serialization error message
File to Modify:
pkg/workflow/expression_secrets_serialization_validation.goCurrent Experience
The
validateSecretsSerializationExpressionsfunction (around lines 188-193) builds this message when it detects${{ toJSON(secrets) }}or similar whole-context serialization:This appears as a hard compile error in strict mode, or a warning otherwise (see lines 195-199).
Quality Issue
Design Principle: Trust and Reliability — actionable, self-service error messages.
The message correctly identifies the problem and names the risky pattern, but stops short of showing the user what a corrected expression looks like in context (e.g., inside
env:). Users must guess the right replacement syntax or search documentation/ADR-44922 for an example, adding friction to a security-relevant fix.Proposed Improvement
Append a concrete before/after example to the
msgstring so the guidance is self-contained.Before:
After:
Why This Matters
toJSON(secrets), including by newcomers copying patterns from unrelated GitHub Actions tutorials that are common outside gh-aw.Success Criteria
pkg/workflow/expression_secrets_serialization_validation.goonlyexpression_secrets_serialization_validation_test.go) updated to match the new message substring, if they assert on exact message textScope Constraint
pkg/workflow/expression_secrets_serialization_validation.goWarning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
storage.googleapis.comTo allow these domains, add them to the
network.allowedlist in your workflow frontmatter:See Network Configuration for more information.
All reactions