wulf-pulse/.planning/phases/06-analyzer-feed-new/06-DISCUSSION-LOG.md

5.9 KiB
Raw Blame History

Phase 6: Analyzer Feed (NEW) - Discussion Log

Audit trail only. Do not use as input to planning, research, or execution agents. Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.

Date: 2026-05-03 Phase: 06-analyzer-feed-new Mode: auto (recommended defaults selected for every gray area) Areas discussed: Feed scope & ordering, Pagination, Stage indicator, Confidence badge, Needs-review surfacing, Summary view route, "View full analysis" target, Detail endpoint reuse, Loading/error/empty states, Typography & spacing


Feed scope & ordering

Option Description Selected
All statuses (pending/running/complete/failed) Show every row including in-flight and failed; lets manager see "an analysis is happening"
Complete only, latest-version-per-ticket Read-only stream of finished output; one row per ticket; matches user value of "skim recent analyses"
Complete only, every version Same ticket appears multiple times if re-analyzed; noisy on feed

Auto-selection: Complete only, latest-version-per-ticket — matches ANL-01 ("most-recent-first stream"), avoids duplicate ticket rows from re-analysis, mirrors desktop /analyzer/tickets analog.

Notes: Apply kiosk_settings company scoping (mirror Phase 4 getMobileCompanyFilter()). Order by completed_at DESC, id DESC for stability.


Pagination

Option Description Selected
Cursor-based, ~25/page (mirror Phase 4) IntersectionObserver + Load more fallback
Offset-based, ~50/page Simpler, matches desktop analyzer ticket-feed
Server-streamed Live updates, more infra

Auto-selection: Cursor-based ~25/page — parity with Phase 4 (TICK-05), keeps mobile patterns consistent across surfaces.


Stage indicator

Option Description Selected
3-pip row driven by haiku/sonnet/opus_used Compact, no library, columns already on row
Text label "Stage X of 4" Less visual, requires legend
Step-stages component (shadcn) Heavier, takes width

Auto-selection: 3-pip row — fits the row footer, columns already on analyzer_analyses, pure CSS.


Confidence badge thresholds

Option Description Selected
≥0.85 High green / 0.650.85 Medium amber / <0.65 Low slate; null hidden 3 buckets, traffic-light intuition
2 buckets (high/low at 0.7) Simpler, less informative
Numeric percent only Most precise, less scannable

Auto-selection: 3 buckets with null hidden — matches the desktop analyzer's own treatment of confidence and is the most scannable.


Needs-review surfacing

Option Description Selected
Small "Review" pill when needs_human_review=true At-a-glance triage cue
Hide entirely Spec doesn't require it
Sort review-flagged rows to top Changes default ordering

Auto-selection: Inline Review pill — preserves chronological ordering while giving managers a triage cue. Doesn't expand scope (read-only).


Summary view route shape

Option Description Selected
/mobile/analyzer/[id] segment route Shareable URL, real history entry, back gesture works
Sheet drawer / modal No URL, doesn't survive deep-link or refresh
Inline expand on the row Crowded on small screens

Auto-selection: Segment route — matches Phase 8's [userId] preference, makes the back gesture work correctly (per spec §6.5 philosophy).


"View full analysis" target

Option Description Selected
/analyzer/analysis/[id] (existing canonical route) Direct link to full desktop view
/analyzer/ticket/[ticketNumber] Ticket-centric view, less direct
/analyzer/queue Lists all, requires another click

Auto-selection: /analyzer/analysis/[id] with ExternalLink icon hint (matches Phase 2 More-drawer convention).


Detail endpoint

Option Description Selected
Reuse existing GET /api/analyzer/analyses/[id] Already returns full PersistedAnalysis row
New /api/mobile/analyzer/analysis/[id] returning subset Smaller payload but parallel maintenance

Auto-selection: Reuse existing endpoint — payload is small enough already, avoids parallel routes for the same data.


Loading / error / empty states

Option Description Selected
5-row skeleton + toast+Retry on error + "No analyses yet" empty Phase 4/5 precedent
Single spinner only Less polished
No skeleton, just loading text Worse perceived perf

Auto-selection: Skeleton + toast+Retry + custom empty state — mirrors established mobile patterns.


Typography & spacing

Option Description Selected
Mirror Phase 4 UI-SPEC: 2 weights / 3 sizes Consistency across mobile shell
New scale just for Analyzer Avoid divergence cost

Auto-selection: Mirror Phase 4/5 — consistency.


Auto-Resolved (--auto mode)

All ten gray areas were auto-resolved with the recommended option per the workflow's --auto mode. No interactive questioning occurred.

Deferred Ideas

(See 06-CONTEXT.md <deferred> section for the canonical list.)

  • Filter strip on the feed
  • Search across analyses
  • Re-run / cancel / prompt-tuning controls on mobile (explicit Out-of-Scope)
  • Showing failed/pending analyses in the feed
  • Stale-analysis indicator
  • SSE / live feed updates
  • Push notifications for completed analyses
  • Cross-ticket aggregate views
  • IT Glue references on mobile
  • Cost / token usage display on mobile