-
Notifications
You must be signed in to change notification settings - Fork 0
[Frontend][UX] Applied proposals are unreachable and "Open Proposal" renders a different proposal than it deep-links #1967
Copy link
Copy link
Open
Labels
Priority IRelease-blocking/trust-breaking now. Per q-3 (2026-08-23) this tranche + #1876 = the v0.1.2 scope.Release-blocking/trust-breaking now. Per q-3 (2026-08-23) this tranche + #1876 = the v0.1.2 scope.bugSomething isn't workingSomething isn't workingdogfoodingFrom real personal/beta use; evidence-grade product feedback (exempt from intake severity bar).From real personal/beta use; evidence-grade product feedback (exempt from intake severity bar).frontendPrimary implementation impact in Vue/TypeScript UI and client runtime.Primary implementation impact in Vue/TypeScript UI and client runtime.product-truthProduct or docs claim something unsupported, misleading, or silently untrue; truth-repair work.Product or docs claim something unsupported, misleading, or silently untrue; truth-repair work.uxDiscoverability, accessibility, interaction model, and user workflow quality.Discoverability, accessibility, interaction model, and user workflow quality.
Description
Metadata
Metadata
Assignees
Labels
Priority IRelease-blocking/trust-breaking now. Per q-3 (2026-08-23) this tranche + #1876 = the v0.1.2 scope.Release-blocking/trust-breaking now. Per q-3 (2026-08-23) this tranche + #1876 = the v0.1.2 scope.bugSomething isn't workingSomething isn't workingdogfoodingFrom real personal/beta use; evidence-grade product feedback (exempt from intake severity bar).From real personal/beta use; evidence-grade product feedback (exempt from intake severity bar).frontendPrimary implementation impact in Vue/TypeScript UI and client runtime.Primary implementation impact in Vue/TypeScript UI and client runtime.product-truthProduct or docs claim something unsupported, misleading, or silently untrue; truth-repair work.Product or docs claim something unsupported, misleading, or silently untrue; truth-repair work.uxDiscoverability, accessibility, interaction model, and user workflow quality.Discoverability, accessibility, interaction model, and user workflow quality.
Projects
StatusShow more project fields
Next
The defect
Three related defects around reaching a proposal from an applied card.
ThreeTwo — see the strike on (c).(a) The deep link targets a proposal it does not show
From an applied card's
CAPTURE ORIGINblock,Open Proposalnavigates to:The hash names proposal
8efe8562(the applied one), but the detail pane renders#6a8b247e— adifferent, still-pending proposal. There is no error and no "not found" state; the pane simply shows
something else.
In a surface whose entire purpose is deciding, silently rendering a different, actionable proposal than
the one requested is dangerous: the next
⏎approves the wrong thing. (The?boardId=half of this URLis separately broken — see the sibling finding on silent board filtering, #1966.)
(b) Applied proposals cannot be opened at all
The
RECENTLY APPLIEDrail lists them, but the rows are inert markup. Ancestor chain, as rendered:with no
role, noonclick, notabindexanywhere in that chain. The audit record of a decision youalready made is visible but not inspectable — which is also why (a) has no correct destination today.
(c) A second dead link in the same pane— STRUCK 2026-08-23 (refuted)View full read-set →ishref="#"and inert (urlChanged:false,htmlDelta:0, zero network requests).It is the string at
frontend/taskdeck-web/src/locales/en/review.ts(provenance.viewAll), renderedimmediately below the provenance footnote. This is the same defect class as #1941's
Tune heuristics →,but on a different link that #1941 does not mention — so fixing #1941 as written would leave this one
dead.
Why it matters
Taskdeck's pitch is an auditable decision trail: evidence in, human decision, applied change, record kept.
(b)
and (c)means the record is a display artifact rather than a destination, and (a) means the one linkthat does navigate lands on the wrong record without saying so. Together they break the "inspect what I
approved" path end to end — and (a) adds a real chance of approving an unintended proposal.
Acceptance criteria
Open Proposalfrom an applied card opens that proposal. If it cannot be shown (applied, archived, missing), an explicit not-found / already-applied state renders — never a silent substitution of a different proposal.RECENTLY APPLIEDrows are real controls (keyboard-focusable,role/semantics, activatable) that open the applied proposal in a read-only detail view.— struck 2026-08-23: the link is bound and opens the Teleported drawer; the empty drawer is [Backend][Frontend] Wire the provenance triple (provider/model/promptVersion) into the deep-review payload so #1963's honest footnote can render #1987 (missingView full read-set →either navigates to the full read-set or is removed. Nohref="#"remains in the provenance pane.:metadata).RECENTLY APPLIEDrow is reachable by keyboard and its activation is asserted against the rendered DOM.Spec / lint guard: no inert— struck 2026-08-23: already delivered by PR fix(frontend): #1934 #1941 dead sidebar + provenance controls #1957'shref="#"anchors in the Review surface (feeds the [Frontend][Testing] Guard against dead affordances - six enabled-but-inert controls found in one audit pass #1949 dead-affordance guard).frontend/taskdeck-web/src/tests/guards/deadAnchors.spec.ts.Refs
[Frontend][Bug] Review provenance card: the Tune heuristics link is dead #1941 — same class as— struck with (c).Tune heuristics →, different link; (c) should be fixed alongside it.:metadata).?boardId=half of the (a) URL.