# Known-inert arms of scripts/gc_repsel_matrix.sh (#7255).
#
# Format:  <arm id> | <#issue> | <reason, and what makes this entry deletable>
#
# An arm listed here is allowed to satisfy its `requires=` on ZERO cells without
# failing the run. Anything NOT listed here that goes inert corpus-wide fails it
# (scripts/gc_matrix_liveness_check.py). So does an arm listed here that starts
# biting again: the entry is then stale, and the checker says so. Both directions
# matter — this file exists because the one-directional version of it (a prose
# paragraph in the matrix header quoting `default: 0/22 -> 12/22`) stayed
# authoritative for five weeks after the measurement it quoted became false.
#
# ***AN ENTRY HERE IS A LOSS OF COVERAGE, NOT A WAIVER.*** The arms below are
# the ones that certify the shipped configuration relocates. While they are
# listed, that property is NOT tested per-PR by them, and only `safepoint_minor`
# (the sound route) and the %E% arms carry the relocating-minor defect class
# (#6993: #6951, #6972, #6982, #6991, #6992). Every entry must name an open
# issue and say what must become true for it to be deleted.
#
# DO NOT add an entry to make a table green. An arm that went quiet without
# anyone deciding it should is the defect this file was created to surface.

# --- RETIRED 2026-08-09: #7161's four entries, deleted because they bit ------
#
# `default`, `verify_evac`, `cons_scan_off` and `cons_scan_off_force` were
# registered here on the ground that `PERRY_GC_MOVING_LOOP_POLLS` is default-OFF
# (#7161's stopgap for #7154), so a default binary has no back-edge polls and its
# alloc-point minor runs behind a forced conservative scan, making the copying
# minor "ineligible by construction".
#
# ***THAT MECHANISM NO LONGER HOLDS, AND THE POLL FLAG DID NOT CHANGE.*** All
# four arms now scavenge. Measured three ways, on files nobody edited to make it
# so:
#
#   * CI, `gc-stress` on `main`, run 31240304595 (2026-08-08): each of the four
#     satisfied `requires=scavenge` on **41 of 58 cells**, `default` at
#     `counter=1384046`. The gate has been reporting STALE-REGISTRY, and
#     `gc-stress` has been red for it, since at least that run.
#   * locally, `--arms default,verify_evac,cons_scan_off,cons_scan_off_force
#     --filter test_gap_repsel_gc_stress`: 1/1 live on every arm,
#     copy-minor 1/1, `default` copying 228,181 objects.
#   * `shipped_default` (requires=none, no pressure knob, no GC env at all)
#     scavenges 340,956 objects on the same file. The SHIPPED configuration
#     relocates today.
#
# What changed is not the poll flag but the collector around it (statepoint root
# lowering became the default in #7370; #7432's adaptive tenuring; #7657's seed;
# #7666's escalation floor). The entries' stated cause outlived its truth by the
# same mechanism the header above describes for the prose it replaced — which is
# precisely why the gate is bidirectional, and why these are deleted rather than
# re-worded.
#
# All four are already in PR_ARMS except `cons_scan_off_force`; none needed to be
# put back. If the copying minor ever stops running in the shipped configuration
# again, the gate fails in the OTHER direction and says so on the same line.

