Maple Review Bot / Maple / review
succeeded
Sep 29, 2026 in 1m 4s
Confidence 5/5 · No issues found
Confidence 5/5 · safe to merge
The reset of lastError in configureFeedback closes the shutdown case the previous review flagged, and the new browser tests exercise it.
quality 100/100 · no findings · tests covered · risk low · 1/1 new units observable
Adds MapleBrowser.sendFeedback, a headless API that emits a maple.user_feedback OTel log event linked to the session, the last error's span and a replay it keeps. The earlier lastError-after-shutdown finding is fixed; the change is contained and safe to merge.
sendFeedbackemitsmaple.user_feedbackwithsession.id,user.email/user.nameandmaple.feedback.*attributesconfigureFeedbackis called frominit()and fromshutdown(), clearinglastErroron either lifecycle startkeepReplayruns beforehas_replayis read, so a buffered replay it keeps is reported
Fixed since the last review
F2 ·lastErrorsurvivesshutdown()and links feedback to a dead trace
What was checked
- F2:
shutdown()now callsconfigureFeedback(init.ts:249), which setslastError = undefined; the re-init test atfeedback.browser.test.ts:88covers it has_replaytiming:keepReplay()precedes the read (feedback.ts:57-58) andtriggercallsmarkReplayTriggeredsynchronously (replay-session.ts:147-151)user.emaildrop path matches resolved config:privacy.captureUserEmail→config.captureUserEmail(config.ts:267), tested atfeedback.browser.test.ts:98
Observability coverage: 1 of 1 changes observable
| Change | Kind | Observable | Evidence |
|---|---|---|---|
| sendFeedback user feedback event | log event | yes | emitLog queues a structured record with session.id and the linked span context, exported through the OTLP logs pipeline (packages/browser/src/deferred/logs.ts:56) |
04e5138 · Updated on every push. Reply "won't fix" to dismiss a finding, or mention @maple to ask about one.
Loading