Fix formatting of affiliation firewall statement #62
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # AdityaNet CI — Sprint 29 Phase 1 | |
| # Sprint 28 reference: 06_IMPLEMENTATION_ROADMAP.md Sprint 29 entry gates; | |
| # 07_EXTERNAL_REVIEW.md Reviewer-5 (FAANG) resolution. | |
| # Mirror of scripts/ci/run_ci.sh gates 1-3 for the hosted runner; gates 4-6 | |
| # (policy artifact validation, AgentOS validator) require repository data files | |
| # excluded from git (*.parquet/*.pkl) and run locally via scripts/ci/run_ci.sh. | |
| name: ci | |
| # GATE RELIABILITY — why `push` to main carries no path filter. | |
| # | |
| # GitHub truncates the file list it evaluates for `paths:` on very large diffs. A | |
| # 3,231-file restructure changed two files under web/ and this workflow did not run: | |
| # the gate was skipped silently, which is the one failure mode a gate must not have. | |
| # Pull requests carry no filter either, for a second and independent reason recorded | |
| # at the `pull_request` trigger below. The job takes well under a minute. | |
| on: | |
| push: | |
| branches: [main] | |
| # NO `paths:` FILTER ON PULL REQUESTS — a required check that never runs is a | |
| # permanent block, not a skipped one. | |
| # | |
| # `main` requires all four checks (verify, test, budget, lint-and-test) before a merge. | |
| # GitHub reports a required check that was never triggered as "Expected — waiting for | |
| # status to be reported", and the pull request can never be merged. With a path filter, | |
| # a PR touching only web/ would deadlock on lint-and-test, and a PR touching only docs/ | |
| # would deadlock on all four. | |
| # | |
| # Both jobs finish in well under a minute. Running them on every pull request costs | |
| # less than one afternoon spent working out why a green branch will not merge. | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| # The Python science pipeline lives under research/. Running from there keeps the | |
| # `from app.v2...` imports resolvable without a package install or PYTHONPATH hack. | |
| defaults: | |
| run: | |
| working-directory: research | |
| jobs: | |
| lint-and-test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| # pyarrow is pandas' parquet engine. Without it the dataset-manifest tests | |
| # (build, verify, tamper detection) fail on an ImportError rather than on their | |
| # own assertions — and those are precisely the integrity checks this project | |
| # cannot afford to leave unrun. It is a small wheel, unlike torch/astropy below. | |
| # pyarrow is pandas' parquet engine; astropy is the FITS reader the v2 parsers are | |
| # built on. astropy was previously omitted, which was half the reason tests/v2 was | |
| # excluded from this job — see the v2 step below. | |
| - run: pip install ruff pytest numpy pandas scikit-learn scipy pyarrow astropy | |
| # Scope narrowed by M1/E2/#9: app/services was deleted with the v1 generation, so the | |
| # V4 paths this job used to lint no longer exist. What remains is the v2 pipeline, | |
| # which is the whole of the surviving Python under research/. | |
| - name: Lint (error-level rules, v2 pipeline) | |
| run: ruff check --select E9,F app/v2 scripts/v2 tests | |
| # THE CURRENT PIPELINE'S OWN TESTS. This is the canonical v2 parser/builder suite — | |
| # the code that produces the frozen dataset every published figure derives from. | |
| # | |
| # It was previously excluded with `--ignore=tests/v2` for two stated reasons, both | |
| # now fixed rather than worked around: | |
| # | |
| # 1. astropy was not installed. It is now (above). | |
| # 2. Fourteen `test_real_*` cases failed without the 21 GB HEL1OS archive, which | |
| # is not in git. The cause was a guard bug, not a data problem: the skip | |
| # condition tested `os.path.isdir(ORBIT)`, and two `aux/cztdis/*.txt` pixel | |
| # maps inside that orbit ARE tracked — so the directory exists in every clean | |
| # checkout while the FITS products do not, the guard passed, and the tests ran | |
| # without their inputs. The guard now checks for the FITS products themselves. | |
| # | |
| # Result: 188 pass where the archive is present, 131 pass / 57 skip where it is not. | |
| # Skips are reported (-rs) so a silently-growing skip set stays visible. | |
| - name: Unit tests (v2 pipeline — current code) | |
| run: pytest tests/v2 -q -rs | |
| # The v1-era subset that used to run here is gone: M1/E2/#9 deleted the seven test | |
| # files along with the app/services and scripts/sprint* code they imported. Nothing | |
| # remains under research/tests/ outside tests/v2, which the step above already runs, | |
| # so a second step would now select zero tests and exit non-zero on an empty | |
| # collection — a red gate reporting the absence of code that was deliberately removed. |