Skip to content

ci: pin the conformance catalog by SHA instead of cloning its default branch - #24

Open
RobertoIskandarani wants to merge 1 commit into
mainfrom
port/pin-conformance-catalog
Open

ci: pin the conformance catalog by SHA instead of cloning its default branch#24
RobertoIskandarani wants to merge 1 commit into
mainfrom
port/pin-conformance-catalog

Conversation

@RobertoIskandarani

Copy link
Copy Markdown
Contributor

What

CI clones github.com/AuthPlane/conformance at its default branch, so any change
to the catalog reaches this repo immediately. A case added there can turn an
unrelated PR red here with nothing in this repo having changed.

This pins the revision instead. A catalog change arrives only when this repo
deliberately bumps the pin together with the coverage for it.

  • .conformance-catalog-ref — a tracked file holding a 40-hex commit SHA,
    guarded by a shape check before the fetch so a branch or tag name cannot
    silently un-pin CI.
  • ci.yml / release.yml — both read that file instead of cloning the tip.
  • .github/workflows/conformance-catalog-drift.yml — a weekly job that clones
    the unpinned tip and runs the alignment assertion, so new cases surface as an
    early warning rather than a surprise at bump time.

The catalog lands in $RUNNER_TEMP, outside the workspace, so it stays out of
test discovery and coverage globs.

Scope

No SDK source is touched — four files, all CI.

Verification

Run locally against the pinned revision:

  • the catalog alignment assertion passes,
  • the conformance suite is green (104 passed, 1 xfailed — the xfail is
    pre-existing and unrelated to the pin),
  • the core suite is green (525 passed).

The pin adopts no new case ids, so it requires no coverage change. actionlint
clean on both modified workflows.

Known follow-up, deliberately not fixed here

The read/guard/fetch block is duplicated in ci.yml and release.yml. The ref
is single-sourced; the ten lines reading it are not, so the guard could be
tightened in one workflow and not the other.

Extracting it to a shared script is the right fix, and it has already been done in
the sibling Go repository. It is left out of this PR on purpose: doing it here
first would put the public copy ahead of the private one and create drift in the
opposite direction. The extraction should land privately and port, so the two stay
identical.

… branch

CI cloned github.com/AuthPlane/conformance at its default branch, so any change
to the catalog reached this repo immediately — a case added there could turn an
unrelated PR red here with nothing in this repo having changed. Pinning
decouples them: a catalog change arrives only when this repo deliberately bumps
the pin together with the coverage for it.

The revision is single-sourced in a tracked .conformance-catalog-ref, guarded by
a 40-hex shape check before the fetch so a branch or tag name cannot silently
un-pin CI, and read by both ci.yml and release.yml.

A weekly conformance-catalog-drift workflow clones the unpinned tip and runs the
alignment assertion, so new cases surface as an early warning instead of a
surprise at bump time.

No SDK source changes. Verified locally against the pinned revision: the catalog
alignment assertion passes, the conformance suite is green (104 passed, 1 xfailed
— the xfail is pre-existing and unrelated), and the core suite is green (525).
The pin adopts no new case ids, so it requires no coverage change.
@RobertoIskandarani
RobertoIskandarani requested a review from a team as a code owner August 10, 2026 14:37
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