Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 31 additions & 1 deletion .github/workflows/gc-ratchet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ jobs:
# that coupling one planted defect shape at a time.
- name: Harness unit tests and artifact validation
run: |
python3 -m unittest discover -s tests -p 'test_gc_ratchet.py' -v
python3 -m unittest discover -s tests -p 'test*gc_ratchet.py' -v
python3 benchmarks/gc_ratchet/gc_ratchet.py validate --scope structural

- name: Decide whether this change can affect the collector
Expand Down Expand Up @@ -270,3 +270,33 @@ jobs:
.bench-results/gc-ratchet-current.json
benchmarks/gc_ratchet/baseline/gc-ratchet-v1.json
retention-days: 90

report-main-result:
needs: gc-ratchet
if: >-
always() && github.ref == 'refs/heads/main' &&
(github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') &&
(needs.gc-ratchet.result == 'failure' || needs.gc-ratchet.result == 'success')
runs-on: ubuntu-latest
timeout-minutes: 5
# Serialize the short issue update, not the expensive measurement jobs.
concurrency:
group: gc-ratchet-main-alert
cancel-in-progress: false
permissions:
contents: read
actions: read
issues: write
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false
- name: Update the main GC ratchet incident
env:
GH_TOKEN: ${{ github.token }}
REPOSITORY: ${{ github.repository }}
RUN_ID: ${{ github.run_id }}
RESULT: ${{ needs.gc-ratchet.result }}
run: >-
python3 scripts/report_gc_ratchet.py
--repository "$REPOSITORY" --run-id "$RUN_ID" --result "$RESULT"
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1589,7 +1589,7 @@ jobs:
python scripts/check_gc_doc_claims.py
python scripts/check_thread_locals.py --self-test
python scripts/check_thread_locals.py
python -m unittest discover -s tests -p 'test_gc_ratchet.py' -v
python -m unittest discover -s tests -p 'test*gc_ratchet.py' -v
python benchmarks/gc_ratchet/gc_ratchet.py validate --scope structural

- name: Install Rust toolchain
Expand Down
13 changes: 13 additions & 0 deletions benchmarks/gc_ratchet/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -691,3 +691,16 @@ failure this suite has paid for most often.
| `run_gc_ratchet_baseline.sh` | quiet-host driver (`--check` / `--pin`) |
| `../../tests/test_gc_ratchet.py` | proves the gate fails on each failure mode |
| `../../.github/workflows/gc-ratchet.yml` | CI wiring |


## Recovery from the unwatched main failures (#9829)

The [recovery record](evidence/9829-recovery.md) explains the selective counter
acceptance, repaired receiver-store probe, 21-run large-Eden capacity exclusion,
historical A/Bs, and evidence grades. Only accepted deterministic distributions
move; the original quiet-host RSS/time pin remains separate.

Scheduled and main-branch dispatch runs now open or update one GC ratchet issue
on failure, including the run/SHA, last green, failing rows and their delta.
The next successful main-line run closes it. Reporting has a separate job and
does not swallow the measurement/check exit status.
Loading
Loading