Skip to content

[Frontend] Composer silently discards label/due metadata; board-link columnId is read by nothing (horizon doc round-2 findings) #1984

Description

@Chris0Jeky

Exposed by the Codex round on PR #1980's golden-journey doc, verified against source 2026-08-22.

Realignment 2026-08-23 (main a43df082c): finding 1 is struck — superseded by #2005, which covers the same handler with live proposal evidence plus the backend half. Finding 2 stays live and is tracked nowhere else. See the reconciliation comment below.

  1. Composer metadata discard: PaperInboxView.onComposerSubmit (frontend/taskdeck-web/src/views/paper/inbox/PaperInboxView.vue:118-131) explicitly drops labels and dueAt because CreateCaptureItemDto doesn't carry them — the composer UI collects metadata that never reaches the server, silently. Either carry them through the DTO→proposal chain or remove the fields from the composer (never collect-and-discard). The [Frontend][Testing] Guard against dead affordances - six enabled-but-inert controls found in one audit pass #1949 class, data-shaped.

    STRUCK 2026-08-23 — superseded by Capture due date (and labels) are silently dropped end-to-end — never reach the proposal or the card #2005. Same defect, same handler, but Capture due date (and labels) are silently dropped end-to-end — never reach the proposal or the card #2005 carries live proposal evidence and the backend half this finding could not see (CaptureTriageService.cs:626-632 never reads task.DueDateHint; the field has zero consumers). Tracked there so one handler has one owner.

    Path correction while striking it: the path cited above does not exist. frontend/taskdeck-web/src/views/paper/inbox/ holds only PaperCaptureComposer.vue, PaperCaptureNib.vue, PaperTriageRowEdit.vue and PaperTriageTable.vue. The real site is frontend/taskdeck-web/src/views/paper/PaperInboxView.vue:124-136.

  2. Dead columnId parameter: the board's + capture link navigates to /workspace/inbox?boardId=…&columnId=… but useInboxOrchestrator reads only boardIdroute.query.columnId has ZERO readers repo-wide, so column-scoped capture routing silently degrades to board-scoped. Either honor it through triage→proposal targeting or stop passing it.

    Re-confirmed 2026-08-23 at main a43df082c. Grepping route.query.columnId across frontend/taskdeck-web/src still returns zero matches; composables/useInboxOrchestrator.ts:42 reads only boardId. This is the surviving scope of this issue.

AC: each path either works end-to-end with a test or the affordance stops promising it. Refs: PR #1980, #2005 (owns struck finding 1), #1966 (same class, same route — fix finding 2 alongside it), #1949, tracker #1947.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Priority IIThe active direction's next tranche: wedge capabilities, significant defects, near-term hardening.bugSomething isn't workingdogfoodingFrom real personal/beta use; evidence-grade product feedback (exempt from intake severity bar).featureUser-facing functionality delivery slices (new capabilities or clear product-surface enhancements).frontendPrimary implementation impact in Vue/TypeScript UI and client runtime.product-truthProduct or docs claim something unsupported, misleading, or silently untrue; truth-repair work.uxDiscoverability, accessibility, interaction model, and user workflow quality.

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions