feat(ci): publish debug symbols keyed by build-id for breadbug #69
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/breadbug-symbols"
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?
Part of ECO-67 (the shared half). The per-product workflow wiring is a separate PR in each repo, starting with bread.
What
scripts/publish-symbols.sh <binary>...: run on the unstripped release binaries. Extracts debug sections withobjcopy --only-keep-debugto$BREADBUG_SYMBOL_DIR/<xx>/<build-id>.debug(default/srv/breadbug-symbols). Fails the job when a binary has no GNU build-id (REQUIRE_BUILD_ID=0to warn instead), idempotent for the same build-id, never deletes, writes atomically, mode 0644.scripts/test-publish-symbols.sh: builds real binaries with and without a build-id and checks layout, DWARF present, mode, idempotence, failure modes, mixed runs.docs/breadbug-symbols.md: what a release pipeline must do (build-id,debug = "line-tables-only"in the release profile, publish before strip), where symbols go, how breadbug-server reads them.Notes
ci/bread-ecosystem.rev, so the rev has to be bumped after this merges.Independent exact-head review: CHANGES REQUESTED
Issue ECO-67; shared-half PR #69 / ECO-70. Reviewed head
300b3d7ff5against baseb52f0fd6fa. Expected head matches. Complete diff: 3 files, 174 additions; file and PR pagination exhausted. Read ECO-67, ECO-66 umbrella, ECO-70 and BREAD-31. Existing PR reviews/comments were empty.Required repairs on this same PR:
Criterion mapping and observed evidence:
PASS (local shared mechanics only): build-id extraction and /.debug layout, objcopy extraction on unstripped input, valid-file idempotence, missing-ID failure and mixed-run failure; shipped local stripped binary retains the same ID. scripts/test-publish-symbols.sh passes; bash -n and git diff --check pass. Independent rustc -g fixture with spaces in binary/store paths: addr2line -f on published known_fn resolves known_fn and a.rs:1; original/shipped/debug all carry 4558e2c6fb6fb1de288392f95df3e619abcd3ab3.
FAIL: private storage and fail-closed usable-symbol publication, as reproduced above. Bug recorded as ECO-75 (Forgejo #74), high confidence.
PASS (source policy only): append-only retention and documented release profile/build-id/publish-before-strip ordering, docs:9-31; real supported-release retention is UNVERIFIED.
UNVERIFIED: all-product wiring, CI enforcing IDs in actual product releases, server-readable mount, bakery/pacman release integration and released user-machine crash resolving on the server. bread#30 remains open/unmerged; no release/deployment evidence was supplied or performed. This PR changes no shared CI workflow despite that scope description.
CI: exact head context check / check (push) is success, Actions run 296/jobs/0, Successful in 2m7s. main branch API reports unprotected, no status-check contexts. Release workflows are not expected to run on this feature head. Private branch-protections endpoint returned 401 without authentication, so no stronger protection assertion is made.
Scratch worktree: ~/.worktrees/bread-ecosystem/feature/eco67-independent-review. Reproduction artifacts: /tmp/opencode/eco67-review.RRN60k. No code changes, commits, pushes, Hestia, /srv or merges. Merge not authorized for this review. Shared half is not accepted yet, and ECO-67 as a whole remains unverified. Next: fix the three checklist items on feature/breadbug-symbols, obtain fresh exact-head CI/review, then separately integrate and verify product rollout before done.
Exact-head review of
300b3d7ff5: changes requested. Full evidence persisted on PR #69 and ECO-67. Repairs: private symbol store permissions, reject unusable DWARF and invalid existing entries, run behavioral symbol tests in CI. Reproduced defects tracked by ECO-75. Shared half not accepted; full ECO-67 rollout/server acceptance unverified. Preserve PR/branch; no merge.Review repairs for ECO-75 (ECO-67 shared half), pushed as fast-forward
ef218b8on top of300b3d7.Local results at
ef218b8: test-publish-symbols.sh pass; cargo fmt --check, clippy -D warnings (default, gtk, extract), cargo test (default, gtk, extract) and cargo build --locked --features extract all pass; lint-pins and test-build-lock pass.Not verified here: the real runner and server accounts and group membership, the reader's access from breadbug-server's container, and a rebuilt CI image containing binutils.
Independent exact-head re-review: PASS
Reviewed head
ef218b88c9against baseb52f0fd6fa. Expected head matched. Complete diff: 5 files, 415 additions. Reviews API empty. Prior change request is comment 4424 at300b3d7; repair summary is comment 4464.Previous items, confirmed fixed:
Local: scripts/test-publish-symbols.sh passed; bash -n and git diff --check passed. Required check "check / check (push)" success on
ef218b88. main has no branch-protection rules.Shared half of ECO-67 accepted and merged. Merge commit
4f70691b33(parentsb52f0fd,ef218b8), merged flag true. Head branch kept. No tag. Dev-track publish on main is expected.ECO-67 is not done: per-product wiring (bread PR 30 / BREAD-31) and a released user-machine crash resolving on the server stay open. Cards left in review for coordinator verification.