Autri — Working Backlog
Running list of bugs + deferred features surfaced during build. Created 2026-05-31. Triage source for between-epic work. Each item: what, where (file/surface), severity, known root cause. Promote to an epic/sub-system doc when it graduates to scheduled work; check off + date when shipped.
Convention: P1 = breaks a user flow / data risk · P2 = degraded UX, workaround exists · P3 = polish. (design doc) = needs design before build.
Bugs
- P2 — Side-panel hover popup overlaps main chat text. Hovering a source row in the right-side DocPanel also fires the in-chat
CitationPopup, which renders over the main chat column and covers the answer text. Expected: hovering a panel source card highlights without popping the floating popup over the chat (or the popup avoids occluding text). Surface:app/components/chat/{DocPanel.tsx,CitationPopup.tsx,KbChat.tsx}— theonHoverpath inKbChatanchors the popup to the inline marker even when the hover originates in the panel. Found 2026-05-31 (Dan, prod iPad). - P2 — "New chat" doesn't start a fresh thread. Clicking "+ New chat" on an existing KB pulls up the most recent thread instead of a blank one; no way to clear the current chat. Per D23 this is the localStorage stopgap (one thread per KB) + the "new chat needs a hard reload" limitation. Minimal fix folded into EPIC-5 (needed for the Day-13 self-test e2e flow). Surface:
app/components/chat/KbChat.tsx(localStorage key per KB;useChatstate reset). Found 2026-05-31 (Dan). - P1 — Can't delete stuck-
ingestingdocs from a KB. A doc stuck iningestingcan't be deleted, which drove creating fresh KBs ("test 2"/"test 3") as a workaround. InvestigatedeleteDocumentinapp/app/kb/[kbId]/actions.ts; clean up S3 children + DB rows; make stuck docs deletable. Carried from prior session's spawn_task. Test data left in prod: "test 2"/"test 3" KBs + DELETEME probe junk + possibly stuck Competition Regs doc0209fd31in "test 2". (Note: the deployed janitor re-surfaces stuck docs but does not make them deletable — separate concern.) - P2 — UI ingestion counters wrong under the cloud pipeline. Shows
0/N pagesfor a doc whose pages all loaded; chunk counts inconsistent (UI "Test 3 · 448 chunks" vs finalize embedded ~320). The Lambda fan-out doesn't write the per-page progress the old local runner did. FixgetPipelineSnapshot/ progress fields, or switch the UI to unit-based progress. Carried from prior session's spawn_task. - P2 — RSC prefetch failures degrade nav to full reloads. Authenticated
?_rsc=prefetches return HTML/redirect instead of the RSC flight payload →TypeError: Failed to fetch→ Next falls back to full page navigation for every authed user. Confirmed root cause (2026-05-31): the CloudFront origin-request allow-list (autri-infra/lib/web-stack.ts/web/cdn.ts, capped at CloudFront's 10-header max) doesn't forwardRSC/Next-Router-Prefetch. Same class as the D50Next-Actionstrip. Fix: add the two RSC headers (drop two lower-value ones to stay ≤10) + diff-gated Web deploy. Punted from the 2026-05-31 session by Dan's call.
PAT expiry — feedback token (≈2026-08-30)
P2 / operational. The autri/github/feedback-token PAT (Issues R+W on danhannah94/autri) is 90-day, minted 2026-06-01 → expires ~2026-08-30. When it lapses, in-app feedback submission 502s silently (route logs feedback_issue_failed). Rotate: mint a new fine-grained PAT, then aws secretsmanager put-secret-value --secret-id autri/github/feedback-token --secret-string '<PAT>' --profile autri-prod (no redeploy needed — Main reads it from env, but the CFN dynamic ref is baked at deploy, so an env-only Web redeploy IS needed to pick up the new value). See decisions.md D55.
Feedback submit cold-start latency (15-30s)
P3 / known, beta-acceptable. In-app feedback submit takes 15-30s on a cold Main Lambda. Diagnosed (not the screenshot — those are 240-350 KB, sub-second PUTs): scale-to-zero VPC Main Lambda cold start + first DB connection, compounded across the two sequential API calls (presign + submit). Lambda compute is <1s warm, init ≤2.6s. Mitigated with staged button progress. Real fix = provisioned concurrency / a warmer, deferred as over-built for a 3-user beta — revisit if real users complain. See decisions.md D55.
Features / deferred
- (design doc) DB-backed chat history. Full multi-thread history: thread list/sidebar, switch threads, per-thread URL identity, cross-device. This is the full D23 feature (the minimal "new chat works" fix above is the EPIC-5 carve-out). Scope constraint (D23/D19): keep it table-stakes — do NOT build rich chat features (share links, export, history-sidebar over-investment) that pull users deeper into web chat and away from MCP (the wedge). Free-tier query caps (D18) are the "use MCP not chat" lever, not making chat worse. Needs its own design doc before build; defer to post-beta / v1.1 unless the beta signals a real need.
Floating "New chat" button (discoverability)
P3 / UX nice-to-have. The sidebar "New chat" button works (verified on iPad) but isn't obvious. Dan's idea (2026-05-31): a floating/persistent affordance in the chat surface to make starting a fresh thread more discoverable. Out of beta-critical scope. (The misleading ⌘N hint was already removed, autri@a64ffa2.)
Prose source-view: text/markdown inspector pane (no page image for non-PDF docs)
(design doc) P2 — the inspector source pane is dead for non-PDF docs. Prose (markdown/docx) has no page images — there's no PDF to rasterize — so PageCanvas shows "no page image" for essentially all prose, a large slice of the corpus (novels, docx). NOT a regression — inherent to the source-as-pages model; PDFs still render fine (verified: James 4/4, SRWF26 62/62 pages have image_path; markdown docs have 0). Found 2026-06-06 (Dan, during S3 cost-display verification).
Ready-to-build fix (the contained part): render the doc's derived markdown text in the left pane with chunk-boundary highlights (text overlays instead of bbox rectangles) — same inspect-the-chunks concept, different medium. Ties to D59 ("markdown is the derived display view"). Surface: app/components/inspector/PageCanvas.tsx + a text-view branch keyed on source_type / null image_path.
Related design thread — REFINE, not built (Lever B / quality): Dan's idea (2026-06-06) — during the Haiku prose grouping pass (which already reads every paragraph), also emit per-chunk keywords and a descriptive header. Keywords → the FTS index (prose's weakest index today — D63 found FTS contributes ~0 on prose because raw narrative gives keyword search no handles); the grouping rationale we already emit could BE the header. Then heading → lookup, keywords → FTS, text → vector gives prose a real 3-index hybrid for the first time. Nearly-free output on a pass that's already running; textbook "LLM does semantics, code does mechanics." Eval-testable (score keyword-enriched FTS vs current via the harness before any prod spend). Needs a design + red-team pass — carry into the north-star / next-session refinement; touches the grouping prompt+schema, the FTS index, and retrieval.
Shipped (recent)
- EPIC-4.5 ingestion observability alarms — shipped 2026-05-31 (autri-infra Monitoring stack). 3 DLQ-depth alarms (any-message ≥1 on ingest/extract/finalize DLQs) + a "degraded to review" metric filter + alarm (D52 graceful-degrade live-sighting). All route to the existing
autri-tier1-alarmsSNS topic. (The RT-18 stuck-doc janitor Lambda + 10-min schedule were already deployed in the AutriIngestion stack.) - Citation format drift + click-to-new-tab — fixed 2026-05-31 (D54,
c3d858e). Surface-scoped citation reminder +appBaseUrl:nullfor chat + temp 0.5. Verified in prod (numbered chips, click opens DocPanel, 0 leaked/docs/links across 6 runs). - Graceful-degrade for terminal extraction failures — shipped 2026-05-31 (D52,
c36ad67). - vector_search restored in prod — shipped 2026-05-31 (D53, autri-infra
442feda).