Files
codebase-memory-mcp/.github/workflows/bug-repro.yml
T
Martin Vogel 6e70a8b019 test(repro): scaffold cumulative bug-reproduction suite + cross-platform board
Stand up a separate, non-gating reproduce-first suite that holds one RED case
per open bug issue (the redness is the deliverable + the regression guard):

- tests/repro/ + repro_main.c -> `make test-repro` (its own runner with its own
  main + counters; deliberately EXCLUDED from ALL_TEST_SRCS so the gating
  `make test` / ci-ok required check stays green and PRs are not wedged)
- repro_extraction.c: first reproduction, #554 -- a C++ out-of-line method's
  inner CALLS edge must attribute to the class-qualified Method QN, not the
  Module; ties the call's enclosing_func_qn to the method definition's own
  qualified_name so a class-qualifier drop (the live root cause) fails it
- scripts/repro.sh: build+run the board; a build/link failure fails the job,
  while expected test redness is reported as the board state (job stays green)
- .github/workflows/bug-repro.yml: workflow_dispatch (platform filter) + qa/**
  push; runs the board on linux x2 / macos x2 / windows so many bug vectors can
  be reproduced on many platforms at once

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-06-26 00:09:23 +02:00

83 lines
2.7 KiB
YAML

# Bug-reproduction board — runs the cumulative reproduce-first suite (RED by
# design, one case per open bug) across every platform on a chosen branch.
#
# This is the "test many bug vectors on many platforms at once" harness. It is
# NON-GATING: dispatch-only, never a required check, so a red board never blocks
# a merge. Dispatch against a feature branch with:
# gh workflow run bug-repro.yml --ref <branch> -f platforms=all
name: Bug Repro Board
on:
workflow_dispatch:
inputs:
platforms:
description: 'Which platforms to run the repro board on'
type: choice
options: ['all', 'linux', 'macos', 'windows']
default: 'all'
# Iteration convenience: any push to a qa/** branch runs the board straight
# from that branch's own copy of this file (no main merge needed). Non-gating.
push:
branches: ['qa/**']
permissions:
contents: read
jobs:
repro-unix:
if: ${{ github.event_name == 'push' || inputs.platforms == 'all' || inputs.platforms == 'linux' || inputs.platforms == 'macos' }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
group: linux
cc: gcc
cxx: g++
- os: ubuntu-24.04-arm
group: linux
cc: gcc
cxx: g++
- os: macos-14
group: macos
cc: cc
cxx: c++
- os: macos-15-intel
group: macos
cc: cc
cxx: c++
runs-on: ${{ matrix.os }}
timeout-minutes: 60
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Install deps (Ubuntu)
if: startsWith(matrix.os, 'ubuntu')
run: sudo apt-get update && sudo apt-get install -y zlib1g-dev
- name: Run bug-reproduction board
if: ${{ github.event_name == 'push' || inputs.platforms == 'all' || inputs.platforms == matrix.group }}
run: scripts/repro.sh CC=${{ matrix.cc }} CXX=${{ matrix.cxx }}
repro-windows:
if: ${{ github.event_name == 'push' || inputs.platforms == 'all' || inputs.platforms == 'windows' }}
runs-on: windows-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: msys2/setup-msys2@66cd2cce69caa17b53920067426061ca1de3a884 # v2
with:
msystem: CLANG64
path-type: inherit
install: >-
mingw-w64-clang-x86_64-clang
mingw-w64-clang-x86_64-compiler-rt
mingw-w64-clang-x86_64-zlib
make
git
- name: Run bug-reproduction board
shell: msys2 {0}
run: scripts/repro.sh CC=clang CXX=clang++