Skip to content

Put the release gate in front of the legacy banner, and fail a push when a fixture is BLOCKED - #166

Merged
Bryancruzcb merged 2 commits into
mainfrom
fix/readme-java24-and-content-hash
Oct 6, 2026
Merged

Bryancruzcb merged 2 commits into
mainfrom
fix/readme-java24-and-content-hash

Conversation

@Bryancruzcb

Copy link
Copy Markdown
Owner

Summary

The GitHub description now says Java 24. The parent pom describes the release-preflight tool. The release-gate commands sit above the legacy gallery history, and that banner no longer says the rest of the file cannot be run.

changedPaths compares SHA-256. An approval on the same hash is not a content change. The test that kept the hash and expected art/hero.png in changedPaths now expects an empty list.

Push CI runs ReleaseGateCli on the two screenshot fixtures in .github/fixtures/release-gate/. The passing fixture must exit 0, so a BLOCKED result fails the push. The blocked fixture must exit 2. If the gate accepts it, the push fails. The dispatch workflow stays manual and defaults to the passing fixture.

The description change is already on the repo, from gh repo edit. It is not in this diff.

Tests

Local JDK is 26, because JAVA_HOME points at Temurin 21 and that JDK cannot compile --release 24. CI uses Temurin 24.

mvn -B -pl desktop -am test

BUILD SUCCESS.

  • Core: Tests run: 128, Failures: 0, Errors: 0, Skipped: 1
  • Desktop: Tests run: 203, Failures: 0, Errors: 0, Skipped: 0

ReleaseExportServiceTest is in that desktop run: 12 tests, 0 failures.

The same CLI the workflow runs, with a Windows classpath separator:

java -cp 'core/target/classes;core/target/dependency/*' creatorflow.manifest.ReleaseGateCli .github/fixtures/release-gate/creatorflow-manifest.json

Exit 0.

java -cp 'core/target/classes;core/target/dependency/*' creatorflow.manifest.ReleaseGateCli .github/fixtures/release-gate/creatorflow-manifest-blocked.json

Exit 2.

Paradigm

Paradigm: ReleaseExportService stays an OOP interaction service. It owns one SQLite transaction and the repositories. fileBytesChanged is an FP calculation: the same two asset records always return the same boolean, and it has no effect.

Changed: changedPaths lists a path only when the SHA-256 differs. Push CI runs the release gate on the two fixtures.

Rules applied: DES-05, one predicate and no new type. FP-01 and FP-02, the hash check is a calculation called from compare. TST-01, ReleaseExportServiceTest plus the core and desktop suites. API-03, changedPaths means the file bytes.

Verified: mvn -B -pl desktop -am test on JDK 26. Core 128 tests, 1 skipped, 0 failures. Desktop 203 tests, 0 failures. Passing fixture exit 0. Blocked fixture exit 2.

Unverified: GitHub Actions has not run on this branch yet. Frontend tests were not run.

Deviations: none.

The banner said nothing under it could be run, and the release-gate
commands sat under it. The parent pom still described the old
originality engine.
An approval with the same SHA-256 was listed in changedPaths.
Push CI runs ReleaseGateCli on the screenshot fixtures. A BLOCKED
result on the passing fixture fails the push, and the blocked
fixture must exit 2.
@Bryancruzcb
Bryancruzcb merged commit 3b3fe6f into main Oct 6, 2026
4 checks passed
@Bryancruzcb
Bryancruzcb deleted the fix/readme-java24-and-content-hash branch October 6, 2026 03:29
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