Roll-up of the UX/polish findings deferred by the 3e (plan checklist / "Approve & run") review. None is an authority path — the approval gate is independently correct in every case below; these are places where the card tells the user less than it could, or tells them something ambiguous.
Display fidelity
- Duplicate connection names. A step renders
ScopeLabel's label only and drops detail, so a plan mixing two same-named connections looks like one target. Duplicate names are known to exist in this product.
- Badge explanation lives only in a
title attribute — invisible on touch, invisible to most keyboard users.
- Badge is ambiguous next to "Approve plan". It means "will still ask even if you pre-authorize", but under Approve plan (
ask) nothing is pre-authorized, so the user who picked the conservative button is then surprised by cards on unbadged steps too.
- Invisible-but-nonempty commands (3e task 1, m1): the residual after the
hasShellMetacharacter widening is trim() equivalence collapse.
- Duplicate step ids degrade oddly — React duplicate-key warning, both rows tick together. Unreachable today; worth a guard or a comment saying why it can't happen.
Dead-end states
- Removing every step still offers "Approve & run" —
Plan — 0 steps renders with all three buttons enabled, and approving silently leaves plan mode having authorized nothing.
- A plan parked when the run errors is never reaped (3e task 3, minor 3). It self-heals on the next send, but until then the user sees a live grant card with no run behind it.
Test debt (found by mutation, all currently green)
- The whole read-only half of
PlanCard is unpinned — mutants that drop "this plan is no longer active" and similar survive all tests.
Transcript's plan dispatch has no test at all — there is no Transcript.test.tsx.
p.planId !== planId untested (task 3, minor 2); proposePlan accepts a dead generation (task 3, minor 4).
i18n
- ru
plan.heading omits _other, breaking the file's own convention.
- fr
outcome.abandoned is "n'est plus actif", a clause where the sibling strings are noun phrases.
Reference
.superpowers/sdd/3e/task-6-review.md (minors 2–9), task-3-review.md, and whole-branch-review.md §5 rows 6, 13, 17, 25.
Roll-up of the UX/polish findings deferred by the 3e (plan checklist / "Approve & run") review. None is an authority path — the approval gate is independently correct in every case below; these are places where the card tells the user less than it could, or tells them something ambiguous.
Display fidelity
ScopeLabel's label only and dropsdetail, so a plan mixing two same-named connections looks like one target. Duplicate names are known to exist in this product.titleattribute — invisible on touch, invisible to most keyboard users.ask) nothing is pre-authorized, so the user who picked the conservative button is then surprised by cards on unbadged steps too.hasShellMetacharacterwidening istrim()equivalence collapse.Dead-end states
Plan — 0 stepsrenders with all three buttons enabled, and approving silently leaves plan mode having authorized nothing.Test debt (found by mutation, all currently green)
PlanCardis unpinned — mutants that drop "this plan is no longer active" and similar survive all tests.Transcript's plan dispatch has no test at all — there is noTranscript.test.tsx.p.planId !== planIduntested (task 3, minor 2);proposePlanaccepts a dead generation (task 3, minor 4).i18n
plan.headingomits_other, breaking the file's own convention.outcome.abandonedis"n'est plus actif", a clause where the sibling strings are noun phrases.Reference
.superpowers/sdd/3e/task-6-review.md(minors 2–9),task-3-review.md, andwhole-branch-review.md§5 rows 6, 13, 17, 25.