Skip to content

ci: tighten release pipeline + enforce conventional-commit format#57

Open
gerchowl wants to merge 1 commit intomainfrom
chore/release-pipeline-tighten
Open

ci: tighten release pipeline + enforce conventional-commit format#57
gerchowl wants to merge 1 commit intomainfrom
chore/release-pipeline-tighten

Conversation

@gerchowl
Copy link
Copy Markdown
Contributor

Description

Three coordinated tightenings for the release pipeline post-3.0:

  1. Disable rs-materials in release-please until ci: enable rs-materials crates.io publishing #43 enables crates.io publish. Stops the recurring false-bump Release PRs (chore(main): release rs-materials 1.0.0 #50, chore(main): release rs-materials 1.0.0 #55).
  2. Wire commitizen as commit-msg hook — the spec in `docs/COMMIT_MESSAGE_STANDARD.md` was documentation-only; now enforced at commit time.
  3. Document the scope taxonomy — `(py)` / `(rs)` / `(data)` / `(vis)` / `(deps)` / `(ci)` / `(docs)`.

Type of Change

  • `ci` — CI/CD pipeline changes (no release)

Required

  • Tests pass locally (config + docs only; no Python code touched)
  • Self-reviewed the diff
  • No new warnings or errors in the changed code
  • Linked to an issue in the `Refs:` line at the bottom

If Applicable

Documentation

Additional Notes

What stops on merge:

What starts on merge:

  • Every `git commit` validates message format. Existing PR template + Refs convention unchanged. Scope membership is social, not enforced (commitizen accepts any `(scope)` matching `[a-z0-9-]+`).

Rs-materials re-enablement plan:
When #43 lands, restore the package entry to `release-please-config.json` with `"bump-minor-pre-major": true` so a future `feat(rs)!:` proposes 0.3.0 not 1.0.0.

Refs: #43

Three coordinated tightenings for the release pipeline post-3.0:

1. **Disable rs-materials in release-please** until crates.io publish
   enables (#43). While the publish path is gated behind
   `CRATES_IO_PUBLISH_ENABLED`, release-please tracking rs-materials
   produces only false-bump Release PRs (#50, #55) — every push to
   main re-opens them. Removing the package entry stops the inflation.
   Re-add when #43 lands, with `bump-minor-pre-major: true` to keep
   pre-1.0 versioning sane.

2. **Wire commitizen as commit-msg hook.** The .githooks/commit-msg
   script invoked `pre-commit run --hook-stage commit-msg` but no
   commit-msg-stage hooks were configured — the standard in
   docs/COMMIT_MESSAGE_STANDARD.md was documentation-only with zero
   enforcement. Add commitizen pinned to v4.13.9. Conventional-commit
   format is now validated at commit time.

3. **Document the scope taxonomy.** Multi-package monorepo benefits
   from per-package scopes:
     (py)   — py-materials Python package
     (rs)   — rs-materials Rust crate
     (data) — TOML data shared between py + rs
     (vis)  — vis subsystem (Python, mat-vis-client integration)
     (deps) — dependency bumps
     (ci)   — CI / release pipeline
     (docs) — documentation
   Documented in COMMIT_MESSAGE_STANDARD.md with rationale linking to
   the cross-cutting-bump issues (#50, #55). Scope membership is
   social convention; format is enforced by commitizen.

Refs: #43
@gerchowl gerchowl enabled auto-merge (squash) April 18, 2026 19:35
gerchowl added a commit that referenced this pull request Apr 19, 2026
Pre-existing CI flake on #57 (chore/release-pipeline-tighten):
`test_search_and_fetch` + `test_discover_finds_candidates` hit a
hard `assert len(results) > 0` that fires when a fresh CI environment
has no seeded indexes (or mid-release manifest drift). The existing
`_skip_on_upstream_outage` guard wraps `vis.fetch()` calls but not
the outer `vis.search()` that returns the empty list.

Both tests now skip with a clear message when search comes back
empty. The follow-on fetch/PNG assertions stay hard because by
that point we know the search actually found something.

Other e2e tests already use `if not results: pytest.skip(...)` in
this spot; this aligns search_and_fetch + discover_finds_candidates
with that pattern.

Local: 268 passing. Unblocks #57 and any future PR whose CI hits a
transient empty-index return.
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