Skip to content

Fix formatting of affiliation firewall statement #62

Fix formatting of affiliation firewall statement

Fix formatting of affiliation firewall statement #62

Workflow file for this run

# 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.