fix(review): resolve the still-valid review findings on #899 - #933
Merged
Conversation
…elease PR Triage of the 28 inline comments on #899. Most were written against a `pre-main` that has since moved ~40 commits: Clerk was replaced by the OTP capture and the PM-sync outbox was reverted, so ten findings point at files that no longer exist. Seven CodeRabbit already marks addressed, and three of those were re-verified in the current tree rather than trusted (the checkpoint WARN carries `pid`, `is_unprinted_attr` separates exact keys from prefix namespaces, the quit flush is bounded by `QUIT_FLUSH_BUDGET`). What actually changed: - `detect.rs` logged the raw tail of a sign-in CLI's own output as `raw_tail`. DEBUG is off by default so it rarely captures, but when it does it lands in the telemetry spool - and an Export Diagnostics bundle ships the spool UNREDACTED to support. That branch's own comment says a device code or OAuth URL can be the only thing in the tail. Now logs a length and the crash classification, which is what the line existed to record anyway. - `startup_health::fast_poll_until_healthy` did real work with no span and no outcome logs, so a stale offline banner left no record of which of its four exits it took. Instrumented; healthy / timeout / poisoned-lock / failed-emit are now distinguishable, with the elapsed cold-start time on the span. - `release_notes_stay_short` measured the What's New limits with `String::len` (UTF-8 bytes) while CLAUDE.md states them in characters. Latent today - the file is all-ASCII - so this is the fix before it bites, not after. - CLAUDE.md's What's New contract said "at most three" items; the assertion also rejects an empty list. Now says 1-3, matching what is enforced. - `WhatsNewModal` keyed items on their title. Siblings are per-release so the cross-release collision the review described cannot happen, but two items in one release may legitimately share a title. - The Jira "no auth available" `bail!` reaches the user on stdout, so its em dash becomes a plain hyphen. Log message BODIES are left alone: there are 256 em dashes in Rust string literals, almost all of them log messages, and CLAUDE.md's rule enumerates UI copy rather than diagnostics. Also fixes a red test already on `pre-main`, unrelated to the review: the provider-unreachable WARN interpolated `{streak}` into its body, which `log_hygiene::no_user_data_interpolated_into_a_log_body` rejects because a body ships verbatim to central OpenObserve. `streak` was already a structured field on the same call, so the body is now static. Deliberately not done, with reasons recorded on the threads: the `detect.rs` (3355 lines) and tray `lib.rs` (1912 lines) splits are pre-existing and not a regression this release introduced; migrations 082/083 stay, because the tables are inert but `sqlx::migrate!` raises `VersionMissing` for an applied migration that has left the source tree, which would crash-loop every tester already on v1.91.0-staging.2+. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Triage of the 28 inline review comments on #899 (
pre-main→main, v1.91.0). Fixes land here because nothing may be pushed topre-maindirectly; #899 picks them up on its next sync.Most comments were written on 2026-08-25/26 against a
pre-mainthat has since moved ~40 commits. Clerk was replaced by the OTP capture (c9f15596) and the PM-sync outbox was reverted (#912), so ten findings point at files that no longer exist.Fixed
src/llm/detect.rslogged raw CLI output (🔒 Major)raw_tail = %reason→raw_tail_len+crash_class. DEBUG is off by default so it rarely captures, but when it does it lands in the telemetry spool, and an Export Diagnostics bundle ships the spool unredacted to support. That branch's own comment says a device code or OAuth URL can be the only thing in the tail.startup_health.rshad no tracingfast_poll_until_healthydid real work with no span and no outcome logs, so a stale offline banner left no record of which exit it took. Instrumented: healthy / timeout / poisoned-lock / failed-emit are now distinguishable, with elapsed cold-start time on the span.whats_new.rscounted bytes, not charsString::len()→.chars().count(). Latent today (the file is all-ASCII) — this is the fix before it bites.CLAUDE.mdsaid "at most three"1-3. The assertion also rejects an empty list.WhatsNewModalkey={item.title}${r.version}-${idx}. Note the review's cross-release claim is wrong (siblings are per-release), but two items in one release may share a title.bail!Plus one red test already on
pre-main, unrelated to the review:log_hygiene::no_user_data_interpolated_into_a_log_bodywas failing — the provider-unreachable WARN interpolated{streak}into its body, which ships verbatim to central OpenObserve.streakwas already a structured field on the same call, so the body is now static. The pre-push hook runs the full suite, so this had to be fixed for anything to land.Deliberately not done
sqlx::migrate!raisesVersionMissingfor an applied migration that has left the source tree. They shipped inv1.91.0-staging.2onward, so removing them crash-loops every staging tester's daemon. Cost of keeping: zero. Cost of removing: a dead install.detect.rs(3355 lines) and traylib.rs(1912 lines) splits. Real against the 500-line rule, but pre-existing and not a regression this release introduced. A release-PR review pass is the wrong place to restructure the daemon's LLM detection.main.rs,platform/unix.rs). There are 256 em dashes in Rust string literals, almost all log messages; CLAUDE.md's rule enumerates UI copy, notification bodies and tooltips, and exempts diagnostics. Fixing 3 of 256 is noise. (CodeRabbit marked this thread "✅ Addressed" while the strings are still present — the badge was not trusted for the behavioural findings either; the checkpointpid,is_unprinted_attrexact-vs-prefix matching, and the bounded quit flush were each re-verified in the current tree.)whats-new.jsonfragment bodies (v1.75.0, v1.70.0). Historical entries users have already read; rewriting shipped release notes changes the record for no reader benefit.Obsolete — files no longer exist
Both Clerk findings;
pm_sync_requests/mod.rs,sync_delegate.rs,sync_requests.rs; theintelligence/mod.rsvacuous ordering test; theWorklogTicketPickerdouble-read (there is only oneread()now).Verification
cargo clippy --workspace --all-targets -D warningsclean ·cargo test --workspace1153+ pass, 0 fail ·bun test921 pass ·npm run buildclean.🤖 Generated with Claude Code