Summary
Add two separate CI jobs — one for AddressSanitizer, one for UndefinedBehaviorSanitizer — each emitting its own badge. Split as two jobs so README and staging-build-matrix.md can show independent pass/fail status.
Scope
Workflow
Badges
Acceptance criteria
- Two new jobs visible in Actions UI on every push.
- Two distinct badges in README badge bar.
- Two distinct badges in
staging-build-matrix.md badge bar.
- Failing ASan or UBSan run flips the corresponding badge to red.
Dependencies
Conventions
- Branch: cut from
staging, named <N>-ci-add-asan-and-ubsan-jobs.
- Commits:
[#<N>]:svarga:ci, <description>.
- PR: targets
staging, title [#<N>]:svarga:ci, add ASan and UBSan jobs with separate badges.
Summary
Add two separate CI jobs — one for AddressSanitizer, one for UndefinedBehaviorSanitizer — each emitting its own badge. Split as two jobs so README and
staging-build-matrix.mdcan show independent pass/fail status.Scope
Workflow
asanjob to.github/workflows/ci.yml:runs-on: ubuntu-24.04,CMAKE_BUILD_TYPE=Debugclang-20(matches matrix top-end)-fsanitize=address -fno-omit-frame-pointer -O1 -gASAN_OPTIONS=detect_leaks=1:halt_on_error=1:abort_on_error=1:strict_string_checks=1ctest --output-on-failure. Failure → red.ubsanjob to.github/workflows/ci.yml:-fsanitize=undefined -fno-sanitize-recover=undefined -fno-omit-frame-pointer -O1 -gUBSAN_OPTIONS=print_stacktrace=1:halt_on_error=1ctest --output-on-failure.status-asan.json/status-ubsan.json), consumed by the existinggenerate-badgesjob.Badges
[![ASan][asan-badge]]and[![UBSan][ubsan-badge]]rows to the top badge bar inREADME.md. Point atbadges/asan.svgandbadges/ubsan.svg.staging-build-matrix.mdpointing atbadges-staging/asan.svgandbadges-staging/ubsan.svg.generate-badgesjob to also emit the two sanitizer SVGs into the badge output dir.Acceptance criteria
staging-build-matrix.mdbadge bar.Dependencies
Conventions
staging, named<N>-ci-add-asan-and-ubsan-jobs.[#<N>]:svarga:ci, <description>.staging, title[#<N>]:svarga:ci, add ASan and UBSan jobs with separate badges.