Repository navigation
fix(mcp-apps): log a missing spool without a traceback - #15233
Conversation
GPT 5.6 Review (fork) — ✅ no blocking findingsReviewed Review detailsNo findings. |
Design Review (Fable 5, fork) — ✅ PASSDesign-level review of Design-Verdict: PASS Nothing to check. [DESIGN-REVIEWED] 2ae0efe Description read[DESCRIPTION-READ] b87711ba8524e6dbf5faf65bfb8c1df0621155af16010dde89243b2e212fb30f That sha256 names everything this verdict read: the PR description, plus the 1 evidence file(s) the workflow collected from it and handed this review. It covers that evidence because the media strip replaces every attachment URL with the same placeholder, so an edit swapping one attachment for another would leave the description's captured text identical while what this review judged changed. Recompute it with |
First Principles Review (Fable 5, fork) — ✅ PASSPremise-level review of First-Principles-Verdict: PASS The missing-spool debug line's text changed from "spool unreadable" to "no spool" — confirm nothing greps logs for the old string on that path. What this change shipsInventory (3 items) — 1 justifiedIntent: stop a healthy no-spool state writing a FileNotFoundError traceback to the debug log on every rehydrate — a FIX (issue #15223; the added test fails on base, where
The fix sits at cause level: the broad [FIRST-PRINCIPLES-REVIEWED] 2ae0efe Description read[DESCRIPTION-READ] 61a9fc9f668dffb22a4f0669a33f679939154d48a1685df6d132f4c896adc159 That sha256 names the PR description this verdict read. Recompute it with |
Opus 5 Review (fork) — ✅ no blocking findingsReviewed |
load_claimed_row_groups logged its "spool unreadable" debug line with exc_info=True, so an absent spool, the normal state before any app has rendered, wrote a FileNotFoundError stack trace on every rehydrate. Log the plain message and keep returning no groups.
Split the spool-open handler: a missing spool (FileNotFoundError) logs the plain debug line, while any other OSError such as EACCES keeps exc_info=True. Pin both branches in tests.
8205b64 to
2ae0efe
Compare
iamwhatever
left a comment
There was a problem hiding this comment.
Reviewed: a missing spool (the normal state before any app renders) now logs a plain debug line instead of a traceback, while an unreadable spool keeps its traceback. Both cases are tested. CI green.
Problem / Motivation
Goal: A missing MCP-apps spool no longer writes a stack trace to the debug log.
load_claimed_row_groupslogged "spool unreadable" withexc_info=True, so an absent spool (the normal state before any app has rendered) wrote aFileNotFoundErrortraceback on every rehydrate.Why it matters
Debug logs fill with a misleading traceback for a healthy state.
Not a goal
What changed (motivation → approach → change)
Dropped
exc_info=Truefrom that one debug call; the plain message stays and the function still returns[].Backwards compatibility
Compatible: only the log record's traceback is removed.
Tests
test_a_missing_spool_logs_no_tracebackfails on upstream/main and passes with the change.Manual verification
N/A — unit coverage sufficient, the change is one log call.
Screenshots / video
N/A — no UI change.
Related Issues
Fixes #15223.
Pattern harvest
Not generalizable: a one-off
exc_info=Trueon an expected-condition log line.Checklist
feat|fix|docs|style|refactor|perf|test|chore|ci|build|revert: ...)Contribution License Agreement
N/A — the template has only an OSPO placeholder here.