Skip to content

ci: accept release.yml's matrix runner under its fetched path in PR admission - #615

Closed
luisleo526 wants to merge 2 commits into
mainfrom
ci/admit-release-matrix-runner
Closed

luisleo526 wants to merge 2 commits into
mainfrom
ci/admit-release-matrix-runner

Conversation

@luisleo526

Copy link
Copy Markdown
Collaborator

The pull-request admission reads the head's workflows as data and names each file by its repository path. The runs-on literal check compared the bare name release.yml with .github/workflows/release.yml, so it never matched. Every pull request's admission therefore refused the one runs-on: ${{ matrix.runner }} line that release.yml carries on main. The result job went red before any pod job was requested; the first gke-pr run failed this way.

The fix compares the file name instead of the full path (scripts/ci_preflight.py, one line).

scripts/test_ci_preflight.py gains a test that fetches the real release.yml together with the admission workflow and expects no finding; it fails on main with the line above. A control keeps the same runs-on expression refused in any other workflow file.

No workflow file changes. The lab preflight of this commit is running.

🤖 Generated with Claude Code

…admission rules

The member-only admission reads the head's workflows as data and names each
file by its repository path, so the runs-on literal check compared the bare
name `release.yml` with `.github/workflows/release.yml` and never matched.
Every pull request's admission therefore refused the one
`runs-on: ${{ matrix.runner }}` line that release.yml carries on main, and the
hosted result job went red before any pod job was requested.

Compare the file name instead of the full path. A new test fetches the real
release.yml with the admission workflow and expects no finding, and a control
row keeps the same line refused in any other workflow.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>

@graphify-labs graphify-labs Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Graphify reviewed this change.

Code graph out of date: Health delta baseline: last indexed commit d55b116, 1 commit(s) behind this PR's base. Impact and hotspot numbers below may be wrong.

No verdict: the code graph is out of date. Static checks found no blocking issues, but they compared against an outdated graph. The next push after the repository re-indexes gets a full review.

Not checked: tests were not run; formal verification proved 0 of 1 changed function(s) (1 sampled, not proven).

Formal verification. PR-changed functions: 1/1 verified (0 proven, 1 may-equivalent, 0 distinguished) · 0 not verified.


Graphify review — findings

Fixes the admission check so the runs-on: ${{ matrix.runner }} exemption for release.yml applies when the file is named by its fetched repository path (.github/workflows/release.yml), not just the bare filename. The exemption now compares Path(name).name, so any other workflow carrying the same expression is still refused with "every runs-on must be a literal value". A new test copies the real workflow files into a temp directory, checks that admission passes, and checks that a stray other.yml with the same runs-on line is still flagged.

No blocking issues surfaced. 2 lower-confidence candidates did not survive cross-model review.

Analysis details — impact, health, verification

Impact & health

Graphify review

Impact — 660 functions depend on the 643 functions this change touches.

Health — this change adds coupling hotspots:

  • worse: ci_workflow_findings() — 79 callers, 24 callees
  • worse: native_workflow_findings() — 8 callers, 11 callees
  • worse: check_commands() — 17 callers, 5 callees
  • worse: _job_values() — 24 callers, 3 callees
  • new: gke_admit_workflow_findings() — 7 callers, 10 callees
  • worse: runner_findings() — 2 callers, 20 callees
  • new: admit_rule_findings() — 4 callers, 9 callees
  • worse: _job_block() — 12 callers, 3 callees
  • …and 5 more — each is listed as a finding

Verification — 660 functions in the blast radius were not formally verified this run (proofs are advisory here).

Health delta baseline: last indexed commit d55b116, 1 commit(s) behind this PR's base.

Gate & verification

graphify gate

PASS — objectively clean (no health regressions, tests not run — proofs not run this pass (advisory)). Grounded, not self-assessed.

Advisory (not blocking):

  • verification_scope: 660 function(s) in the blast radius were not formally verified this run

Formal verification

No difference found (not proven): No behavior difference found in \_admit\_flow\_findings (not a proof).

The verifier ran both versions of \_admit\_flow\_findings on many inputs and saw identical behavior every time. Strong evidence the change is safe, but evidence, not a proof.

Guarantee: Empirical: differential testing (both versions run on many generated inputs). A divergence on an untested input remains possible, so this is 'no counterexample found', not 'proven equivalent'.

Note: An input the sampler did not try could still differ.

· 13 more finding(s) on lines outside this diff (see the check run).

Brings the branch up to date with main before its merge; no conflict, no other change.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
luisleo526 added a commit that referenced this pull request Oct 28, 2026
…aling, UDT graphs, metrics replay and the CI admission fix (#616)

This lands twelve engine pull requests as one change, verified and measured once on the combined tree:

- #593 scratch: a fixed write-through read cache for the adapter's id tables
- #594 live runner: a delta report stream by default, and report-path work that does not rescan closed trades
- #597 live runner: typed pre-growth stop for the ledger budget and flat pending counts
- #608 run_json: reserve the report channel, so strategy output on fd 1 cannot corrupt a report
- #586 Pine UDT object graphs on the paged object Store
- #578 native order: dormant working book, flat per-point cost for never-filled orders
- #579 adapter: skip roster passes and empty-family scans that cannot change anything
- #599 adapter: read projected pending orders through one cached duplicate index
- #563 adapter: gate the reversal exit cancel on candidate owners instead of every historical id
- #591 report sink: retire sealed closed-trade rows on sink routes when the module opts in
- #596 metrics: stream the bar Sharpe and Sortino through an ordered, packed return replay
- #615 ci: accept release.yml's matrix runner under its fetched path in PR admission

Fixes found while testing the combined tree are in the final commits: the retiring ledger's cache sizing, a residency witness that bounds sink-run heap by the declared cache cap and checks zero growth at 100k, 200k and 1M trades, a test fix for a descriptor reuse race, and a standing-orders timing grid whose 20,000-order point is tracked in #621. The member pull requests are closed as landed here.
@luisleo526

Copy link
Copy Markdown
Collaborator Author

Landed in #616 (squash a991b4e on main), which carries this change with one verify and one parity run on the combined tree.

@luisleo526 luisleo526 closed this Oct 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant