Skip to content

PR-2: Real CI — authoritative pytest matrix + ruff ratchet - #23

Merged
utkuvibing merged 2 commits into
mainfrom
chore/pr2-real-ci
Aug 25, 2026
Merged

PR-2: Real CI — authoritative pytest matrix + ruff ratchet#23
utkuvibing merged 2 commits into
mainfrom
chore/pr2-real-ci

Conversation

@utkuvibing

Copy link
Copy Markdown
Owner

Summary

Phase 0 / PR-2 of the stabilization roadmap: makes CI the authoritative merge signal instead of the dep-less best-effort pytest inside the Cursor-agent workflow.

What lands

  • .github/workflows/ci.yml — runs on PRs to main and pushes to main:
    • tests (python 3.11) / tests (python 3.12) jobs on ubuntu-latest, installing real runtime deps from requirements.txt, running the full non-RAG suite (python -m pytest tests/ -q --tb=short -rf; local authoritative baseline: 1181 collected / 1171 passed / 10 skipped). No exclusions.
    • ruff job enforcing the new lint contract.
  • ruff.toml — narrow global rule set (E4,E7,E9,F) with today's pre-existing debt frozen in explicit per-file entries (53 files inventoried). New/changed files are fully covered; no mass formatting; frozen debt is burn-down material for later ordinary PRs.
  • .github/workflows/cursor-agent.yml — removes the misleading best-effort pytest install + continue-on-error smoke step and its env flag. Automation explicitly labeled non-authoritative.
  • ui/dta_page.py (1 line-class fix) — f-string escape was a hard SyntaxError on Python 3.11 (legal only since 3.12); caught by the new py311-targeted parse. Hoisted default unit into a variable.

Hermeticity notes

Runner env sets MATERIALSCOPE_HOME=/tmp/materialscope-home (conftest already isolates per-test) and points kaleido at the runner's preinstalled Chrome for PNG-export tests. No tests were weakened or excluded.

Acceptance trail

  • Local full suite green before push
  • 3.11 job green on GitHub runners
  • 3.12 job green on GitHub runners
  • ruff job green
  • deliberate-red probe verified blocking, then removed
  • branch protection configured with these check names

Follows PR #22 (PR-1). Roadmap: docs/roadmap.md Phase 0.

- ci.yml: pytest matrix (3.11/3.12) on ubuntu-latest installing real
  requirements.txt, running the full non-RAG suite; ruff job enforcing
  the new ruff.toml contract (E4/E7/E9/F globally, frozen per-file debt)
- ruff.toml: lint ratchet baseline - 53 files of pre-existing debt frozen
  explicitly so new/changed files are fully covered; burn down later
- cursor-agent.yml: drop best-effort dep-less pytest install + smoke step
  and its env flag; automation is explicitly not a validation signal
- ui/dta_page.py: escape inside f-string was a SyntaxError on py311
  (legal only since 3.12); hoist default unit to a variable
test_publish_hosted_library_defaults_to_generated_build_corpus passed on
dev machines only because a real PROJECT_ROOT/build corpus outranked the
fixture during publisher auto-detection; clean runners saw only the
trimmed 4-record fixture and failed the stale 6-count assertion.
Sandbox PROJECT_ROOT to tmp, add explicit job-state root, assert actual
fixture counts (4 = 2 COD + 2 MP) - same contract, deterministic.
@utkuvibing
utkuvibing merged commit a5197cf into main Aug 25, 2026
6 checks passed
@utkuvibing
utkuvibing deleted the chore/pr2-real-ci branch August 25, 2026 23:51
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