feat: report crashes and freezes to breadbug (pilot) #19
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/breadbug-pilot"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Pilot for ECO-68 (rollout) and the acceptance example for BREAD-16. bread-utils is pinned to the released tag v0.8.1, which carries the
bugmodule (bread-ecosystem PR #68), so the lockfile resolves against a tag instead of a feature branch.What
breadclipdcallsBreadClient::enable_bug_reportingand ticks from its main loop:panic_message = false(a formatted panic message could contain copied text) andforward_logs = false. A report from this app still carries the location, the stack (module + offset + build-id) and freeze detection.Cargo.lockupdated.Checked
Builds, 31 tests pass. I did not run
breadclipdend to end: it needs a Wayland session and would watch the live clipboard. The underlying behaviour is tested in bread-utils with real panics and a real SIGSEGV.For the rest of the rollout
Per app: bump bread-utils to the new tag, add
enable_bug_reportingafter startup, tick from the main loop (GTK apps:attach_glib_main_loop()under thegtkfeature), setpanic_message = false/forward_logs = falsefor apps that handle private text (breadsearch, breadpad, breadclip). Optionallybread_utils::bug::has_build_id().Independent review of PR 19 at exact head
14445a36b9, base main2957b20499(mergeable, single commit). Expected head matched live head; no staleness.CI: required check "check / check (push)" is success at this exact SHA (Actions run 84, 3m29s). That workflow is clippy (--workspace --all-targets --locked -- -D warnings) plus cargo test (--workspace --locked). No branch protections, no outstanding reviews. Independent local run in scratch worktree: cargo build --locked --offline -p breadclipd ok; cargo test --locked --offline --workspace ok (breadclipd 31 passed, breadclip-core 19 passed).
Criterion mapping (CLIP-19 card plus BREAD-16 pilot acceptance):
Pin finding (merge-relevant, not silent): Cargo.toml uses branch feature/breadbug-client as the card announces, but Cargo.lock resolves to b2614ba0e1b48f25cd40a09e184b721f512f5408, which predates all bread-ecosystem PR68 repair and the merge 94ea374. The bug/ diff between them is 1618 insertions / 353 deletions including a new scrub.rs. b2614ba is the rev that drew independent findings (shutdown hang, SIGSEGV disposition, no scrubbing, drop-newest log queue). With forward_logs=false and the message omitted, the leak-relevant paths are inert at this rev, but CI tested known-stale code. Re-pin to the bread-utils tag once cut, then fresh CI plus fresh review.
Scope notes: --capture-once short-lived processes intentionally return before enable_bug_reporting, so panics there are not reported; acceptable for this pilot but worth knowing. No unrelated source churn (lock plus the two intended files only).
Verdict: blocked (no code rework needed now; do not merge). Blockers: (1) bread-utils tag decision, then re-pin Cargo.toml plus lock from branch/b2614ba to the tag; (2) after re-pin, green check at the new head, fresh exact-head review, and a live induced-panic store-entry observation. Next action: coordinator to hold for the tag, re-pin, rerun CI, and request fresh review. Scratch worktree used: ~/.worktrees/breadclip/fix/muse-review-clip19 (detached at reviewed head; primary checkout untouched).
Independent review of Breadway/breadclip PR 19 at exact head
14445a36(base2957b204): verdict blocked, no author rework needed now, do not merge.Verified with runtime evidence: strictest config (panic_message=false, forward_logs=false) redacts an induced panic carrying fake clipboard text to "(message omitted by the app)" with location plus 24 build-id frames and zero payload bytes on the wire; 1s main-loop ticks emit bug.heartbeat; absent breadd is a clean no-op (exit 101, no hang). Required CI check is success at this exact SHA; local locked build plus workspace tests pass (31 plus 19). Full mapping: #19 (comment)
Blockers: (1) bread-utils tag decision, then re-pin from branch lock b2614ba (pre-repair, predates merged 94ea374 by 1618+/353- in bug/) to the tag; (2) after re-pin, green CI, fresh exact-head review, and a live induced-panic store-entry observation (socket delivery proven here; live store write not observable without touching the live desktop/daemon). Next action: hold for tag, re-pin, rerun CI, request fresh review.
bread-utils tag cut and pilot re-pinned.
Tag: bread-ecosystem v0.8.1 pushed to origin (tag object cfe4a4ab, commit c6442cabb6c02acd1380dcd0d17189c4e22def03, workspace version 0.8.1, the +0.0.1 bump from stable v0.8.0).
Release verified on the dl channel: index.json and index.json.minisig both 200, bakery 0.8.1 and bread-theme 0.8.1 binaries, sha256 and bakery.toml all 200, index regenerated 2026-10-17T07:09:19Z. The failing tagged runs are the GitHub-mirror upload step (stale PAT) and the Arch package job (separate pacman channel), not the dl publish.
breadclip PR19: breadclipd now pins bread-utils to tag v0.8.1 (was branch feature/breadbug-client), Cargo.lock resolved to tag=v0.8.1#c6442cab, PR body updated to drop the pre-tag caveat. New head
a55d015f0c, check / check (push) success in 35s. Workspace tests 19+31 pass, clippy -D warnings clean.Note: breadclip-core and breadclip still pin bread-utils v0.7.2, so the lock carries two bread-utils versions; only breadclipd needed the bug module for this pilot. Awaiting a fresh independent exact-head review (prior pass at
14445a3was blocked only on the tag).Independent exact-head review: CHANGES REQUESTED. Reviewed
a55d015f0cagainst main2957b20499. Actual PR branch is feature/breadbug-pilot, not supplied fix/clip-19-tag-v081. CLIP-19 is this PR-type card; all 15 PRs and all 3 changed files reconciled. Full actual diff reviewed. No merge.Criteria:
a55d015f0c, Actions run 85 job 0 success in 35s. Read all workflow definitions: check runs locked clippy/test, not fmt; release workflows do not apply to this branch. Branch protections and formal reviews both empty. Prior blocking review comments 5082/5090 remain relevant: no induced-panic store observation supplied.Repair checklist:
Preserve PR and branch. Return CLIP-19 to todo for coordinator repair, not done. Fresh exact-head review and green checks required before any authorized merge.
Independent exact-head review: CHANGES REQUESTED. Reviewed
a55d015f0cagainst main2957b20499. Actual PR branch is feature/breadbug-pilot, not supplied fix/clip-19-tag-v081. CLIP-19 is this PR-type card; all 15 PRs and all 3 changed files reconciled. Full actual diff reviewed. No merge.Criteria:
a55d015f0c, Actions run 85 job 0 success in 35s. Read all workflow definitions: check runs locked clippy/test, not fmt; release workflows do not apply to this branch. Branch protections and formal reviews both empty. Prior blocking review comments 5082/5090 remain relevant: no induced-panic store observation supplied.Repair checklist:
Preserve PR and branch. Return CLIP-19 to todo for coordinator repair, not done. Fresh exact-head review and green checks required before any authorized merge.
Independent exact-head re-review: CHANGES REQUESTED. Reviewed
1fff8f1cf4against main2957b20499. Expected head matches. Re-read prior comment 5403 and CLIP-19/20/21, BREAD-16 and ECO-68. Enumerated all 15 PRs and all 10 changed files; reviewed complete actual diff. No merge, tags, deployment or live clipboard/desktop access.Verified repairs:
a55d015and this new head, using pinned v0.8.1/c6442cab and matching dependency versions. Old setup plus later client: exit101, synthetic private text transmitted, app_version=null. New identical setup sequence plus later client: exit101, zero synthetic text on wire, message=(message omitted by the app), app_version=0.3.0, location present, 15 module/offset/build-id frames. New probe emitted three heartbeats over four seconds. Absent daemon: normal exit101 without hang. This is a call-sequence probe, not the actual breadclipd executable.fb827074a8are byte-for-byte rustfmt output of their parent versions. No logic smuggled into that commit.a55d015. breadclipd v0.8.1 resolves c6442cabb6c02acd1380dcd0d17189c4e22def03; breadclip/core remain v0.7.2. Remote annotated v0.8.1 peels to c6442cab. Branch CI fix legitimately qualifies both package versions, retains pin lint, and does not weaken stable/RC locked builds. However the same repair is missing from dev-release; see checklist below.Remaining repair checklist:
Evidence directory: /tmp/opencode/clip19-rereview (probe.py, old/new-probe/src/main.rs, old/new.wire.jsonl, probe-results.txt, store/state/bread/bugstore/apps/clip/markers.jsonl, command logs and API snapshots). Note probe-results initially searched clip/ rather than apps/clip/; subsequent direct file inspection and assertions verified the actual marker above.
Preserve PR/branch, no merge. Changes-requested policy returns card to todo for coordinator repair, not done. After repair, request fresh exact-head review; after any eventual accepted merge, keep review for coordinator verification. No merge SHA or parents exist for this review.
Exact-head re-review: changes_requested at
1fff8f1cf4. Full criterion mapping and repair checklist: #19 (comment). Privacy implementation verified old-fail/new-pass on wire, version preserved; formatting verified formatter-only; fmt/clippy --locked/test --locked/build --locked all pass; exact CI green in2m47s. Real isolated breadd store entry observed from release-mode extracted-call-sequence harness, with redacted message and15 build-id frames. Actual release-app induced panic remains unverified. Remaining defects: CLIP-22 main dev-release workflow lacks dependency-ambiguity fix; CLIP-20 committed test asserts source text rather than panic payload/version and lacks isolated behavioral coverage. No merge, no tags, no live clipboard access. Keep existing PR/branch for repair; changes-requested policy requires todo rather than review until reworked. Never done.Independent exact-head re-review: CHANGES REQUESTED. Reviewed
6a7e2c3c9eagainst main2957b20499. Re-read comments 5403 and 5411, CLIP-19/20/21/22, BREAD-16 and ECO-68 plus dependencies. All 15 PRs and all 11 changed files enumerated; complete diff and CI definitions reviewed. Expected head matches. No merge or tags.Criterion mapping:
a55d015and this head with pinned v0.8.1. Old: exit101, synthetic private text on wire, app_version=null. New: exit101, synthetic text absent across wire, omitted message, app_version=0.3.0, location and15 module/offset/build-id frames, three heartbeats. Absent daemon: exit101 without hang. This is an extracted-call-sequence probe, not the actual daemon.a55d015f0c; cargo test --locked -p breadclipd --test privacy_regression PASSED (1/1). It therefore does NOT fail on the old app head. No actual capture/command code is invoked. The requested durable app regression protection is not met.a55d015; daemon v0.8.1 resolves c6442cabb6c02acd1380dcd0d17189c4e22def03; core/UI retain v0.7.2. Remote annotated tag still peels to c6442cab.Repair checklist:
Evidence: /tmp/opencode/clip19-finalreview/{full.diff,results.txt,fmt.log,clippy.log,test.log,build.log,old-head-regression.log,dev-resolution.log,probe.py,probe-results.txt,old.wire.jsonl,new.wire.jsonl,API snapshots}. Reviewed clone ~/.worktrees/breadclip/fix/review-6a7e2c3 remains clean. No commits, pushes, tags, deployment, remote machines or live desktop access. No merge SHA or parents. Preserve PR/branch. The changes-requested rule requires todo for coordinator repair, rather than review; never done. Fresh exact-head review required after repair.
Independent exact-head re-review at
6a7e2c3c9e: changes_requested. Full mapping and repair checklist: #19 (comment) . Privacy implementation passes independent old/new release wire probes; CLIP-22 fresh-clone dev resolution and unchanged tag pins pass; fmt/clippy/test/cached build pass; exact CI Actions88 check success2m7s. Remaining CLIP-20 defect: new test is behavioral but duplicates setup, so copied unchanged onto vulnerablea55d015it still PASSES. Bind it to actual app setup and command/capture paths and prove old-head failure. ECO-68 actual long-lived release-app induced-panic store entry remains unverified; supplied SQLite clipboard row is not a bugstore marker. No merge or tags. Preserve PR/branch, return todo under changes-requested policy for coordinator repair, never done. Evidence /tmp/opencode/clip19-finalreview.Independent exact-head review: PASS at
ec4e1b1fea, base main2957b20499. Prior comments 5403, 5411 and 5423 re-read. This review is a different model from the pin author. No live clipboard, desktop, or breadd access.Criteria:
Local checks at this exact head, no path patches, global cargo config only git-fetch-with-cli: cargo fmt --check exit 0; cargo clippy --locked --all-targets -- -D warnings exit 0; cargo test --locked exit 0 (core 19, daemon 32, privacy integration 2); cargo build --locked --release -p breadclipd exit 0 in 35.91s. Required CI: check / check (push) success at this SHA, Actions run 89, "Successful in 1m28s". Earlier pending statuses on the same SHA are superseded. Branch protections empty. Formal reviews empty. Prior change requests 5403/5411/5423 are resolved by the repairs above.
Merge is authorized for this pass and will follow a fresh head, base, review and mergeability read.
Independent exact-head review PASS at
ec4e1b1fea. Full mapping is on PR 19. Pins, dual-version CI resolution, privacy wire probe, and production-module regression binding all pass. Actual release-daemon store panic remains delegated to ECO-68 and BREAD-17, not a CLIP-19 blocker. Merge authorized and will use a fresh head check. Card stays in review for coordinator verification.Merged to main. Merge commit
7d1d3bcddb, parents2957b20499andec4e1b1fea. Expected head matched at merge time. Branch feature/breadbug-pilot kept. CLIP-19 stays in review for coordinator verification of the integrated result. The actual release-breadclipd panic store entry remains delegated to ECO-68 and BREAD-17.Merged. SHA
7d1d3bcddb, parents2957b204(main) andec4e1b1(reviewed head). Card left in review for coordinator verification. Do not mark done from this review. Release-daemon store panic stays with ECO-68 and BREAD-17.