Repository navigation
evidence report: regenerate on main by bot, advisory in PRs, strict at release (stop per-PR report churn) #4703
Copy link
Copy link
Closed
Labels
ci-cdContinuous integration, delivery, and automated runnersContinuous integration, delivery, and automated runnersenhancementNew feature, sensor, or structural signatureNew feature, sensor, or structural signaturepriority: highCore feature broken, but workarounds existCore feature broken, but workarounds existscope:infraCI, tooling, churn/factory, docs infrastructureCI, tooling, churn/factory, docs infrastructuretestingUnit, integration, and E2E pipeline verificationUnit, integration, and E2E pipeline verification
Description
Owner decision (2026-10-08), revising #4601's "CI runs --check" for PRs. The rendered evidence report (docs/language_status/evidence_report/*/report.{json,md}) is derived output. Today every PR must commit it byte-current (tests/tools/test_evidence_report.py::test_the_committed_reports_are_current). That forces parallel PRs into merge conflicts on the same generated files, and it makes every open PR stale again after each merge. On 2026-10-07/08 it was the main source of CI churn (#4660, #4661, #4663, #4693, ...), while protecting nothing a buyer sees between releases.
Plan (land in this order)
- Reliable bot refresh on main. Run
.github/workflows/evidence-refresh.ymlon every push tomain(plus the nightly). It runsevidence.py refresh --stale,det_coverage_ledger.py updateandevidence_report.py --refresh --live, and commits through an auto-merged bot PR fromauto/evidence-refresh. Make it robust first; earlier bot PRs were closed dirty or opened against the wrong branch (evidence: nightly re-proof of stale records #4640, evidence: nightly re-proof of stale records #4649):- always branch from the current
main; - skip the PR when nothing changed;
- use a concurrency group, so a newer push cancels an older refresh;
- stamp the report "as of commit ".
- always branch from the current
- Advisory report check in PRs.
test_the_committed_reports_are_currentno longer fails PRs. CI still runsevidence_report.py --checkand writes the per-program level changes the PR would cause to the job summary, but does not fail. PRs stop committing regenerated report files.test_committed_report_validates(schema) stays blocking. - Release gate. A release or tag workflow requires
evidence_report.py --check --liveto be clean, so anything published is current.
Unchanged
- Evidence records rule (Q1) stays as is: stale on a program's own port, case, corpus pin or declared differences fails CI and is re-proven in the PR (
test_every_committed_record_is_current). Harness, oracle and generator staleness stays scheduled. - The det-sweep baseline (
tests/equivalence/det_sweep_baseline.json) stays a blocking two-way ratchet.
Acceptance
- A PR that changes a case or ledger and doesn't touch the report files passes CI, and its job summary shows the level deltas.
- After it merges, the bot PR refreshes the report and merges itself.
- Two parallel PRs no longer conflict on report files.
- The release gate fails on a stale report.
- Docs explain the new flow:
docs/language_status/evidence_report/README.md, the evidence docs, and thegitgalaxy-pr-workerbrief (drop "refresh the report in your PR").
🤖 Generated with Claude Code
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
ci-cdContinuous integration, delivery, and automated runnersContinuous integration, delivery, and automated runnersenhancementNew feature, sensor, or structural signatureNew feature, sensor, or structural signaturepriority: highCore feature broken, but workarounds existCore feature broken, but workarounds existscope:infraCI, tooling, churn/factory, docs infrastructureCI, tooling, churn/factory, docs infrastructuretestingUnit, integration, and E2E pipeline verificationUnit, integration, and E2E pipeline verification
Activity
ci: evidence report refreshed by a bot on main, advisory in PRs, gate…
ci: evidence-refresh finishes a running refresh instead of cancelling…
evidence report: no derived 'current levels' count in the Markdown (#…
feat(#4789): per-case det-sweep coverage ledger; CICS spec status pag…