5.9 KiB
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.65–0.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