Skip to content

Add release hygiene: CHANGELOG, mima, CI matrix, NOTICE, examples#144

Merged
EtaCassiopeia merged 3 commits into
mainfrom
feat/release-hygiene
May 13, 2026
Merged

Add release hygiene: CHANGELOG, mima, CI matrix, NOTICE, examples#144
EtaCassiopeia merged 3 commits into
mainfrom
feat/release-hygiene

Conversation

@EtaCassiopeia
Copy link
Copy Markdown
Owner

@EtaCassiopeia EtaCassiopeia commented May 13, 2026

Summary

Implements #128 (C1 — CHANGELOG), #129 (C2 — sbt-mima), #130 (C3 — CI matrix), #131 (C4 — NOTICE), and #132 (C5 — examples/) from the 1.0-readiness milestone.

Stacked. Base branch is feat/typed-errors-and-ofrep-validation (#139). This branch also merges in feat/init-timeout-and-sync-verify (#138) because C5's examples/ofrep-init-timeout uses the new initTimeout factory and OFREPProvider.make validated construction. Once #138 and #139 land in main, retarget to main.

C1 — CHANGELOG.md

Keep-a-Changelog 1.1.0 format. [Unreleased] is populated with the in-progress 1.0-readiness work (init hardening, typed errors, OFREP validation, optimizely module, WireMock failure suites, property + concurrency specs, mima, CI matrix, examples, NOTICE). Prior versions are summarised in a [0.8.0] — earlier block pointing at GitHub Releases for the full per-version detail. A "Maintaining this file" footer codifies the contract: every user-visible change must add an [Unreleased] entry in the same PR.

C2 — sbt-mima

  • project/plugins.sbt: added com.typesafe % sbt-mima-plugin % 1.1.4.
  • build.sbt: ThisBuild / mimaFailOnNoPrevious := false; mimaPreviousArtifacts := Set.empty in commonSettings. The first post-mima release tag will populate mimaPreviousArtifacts per module; until then mimaReportBinaryIssues is a no-op (verified locally).
  • CI runs sbt +mimaReportBinaryIssues as a dedicated job so binary-compatibility regressions are caught at PR time once a baseline exists.

C3 — CI matrix

.github/workflows/ci.yml split into four jobs:

  • formatscalafmtCheckAll once on JDK 21.
  • build — matrix of JDK 17 + 21 × Scala 2.13.16 + 3.3.4 (4 cells, fail-fast: false). JDK 11 deliberately omitted: Optimizely's core-httpclient-impl requires JDK 17+, which is now the realistic floor.
  • mima — runs +mimaReportBinaryIssues once.
  • examples — compiles both example projects to keep README/docs snippets honest.

C4 — NOTICE

Apache 2.0 attributions at the repo root: OpenFeature Java SDK, OFREP contrib, Optimizely SDK (core-api + core-httpclient-impl), ZIO, ZIO Cache, Typesafe Config, plus WireMock under a test-only block since it isn't redistributed.

C5 — examples/

Two reference projects under examples/, both with publish / skip := true:

  • examples/ofrep-init-timeout/ — production wiring with OFREPProvider.make + FeatureFlags.fromProviderAsync(_, evaluationTimeout). The CircuitBreaker pattern is documented (in the scaladoc preamble) but not wired in, because OfrepProvider extends FeatureProvider directly, not EventProvider, and CircuitBreakerProvider requires EventProvider. The example notes this and points to the Optimizely integration where the breaker does compose.
  • examples/testkit-app/ — a trivial UserService gated by a flag, plus a spec that drives it through TestFeatureProvider.scopedLayer with setFlag / setStatus. Three test cases cover the off-by-default path, the flag-on path, and the provider-in-Error failure path.
  • examples/README.md — covers running each example and the criteria for adding new ones.

Closes #128
Closes #129
Closes #130
Closes #131
Closes #132

@EtaCassiopeia EtaCassiopeia added area:release release hygiene / CI / docs kind:chore build / CI / tooling labels May 13, 2026
@EtaCassiopeia EtaCassiopeia added this to the 1.0-readiness milestone May 13, 2026
@EtaCassiopeia EtaCassiopeia added the kind:docs documentation label May 13, 2026
@EtaCassiopeia EtaCassiopeia force-pushed the feat/typed-errors-and-ofrep-validation branch from 2f53550 to ba38ac2 Compare May 13, 2026 15:59
Base automatically changed from feat/typed-errors-and-ofrep-validation to main May 13, 2026 16:03
@EtaCassiopeia EtaCassiopeia force-pushed the feat/release-hygiene branch from a200117 to 6b022fb Compare May 13, 2026 16:34
@EtaCassiopeia EtaCassiopeia merged commit 2b46fc2 into main May 13, 2026
8 checks passed
@EtaCassiopeia EtaCassiopeia deleted the feat/release-hygiene branch May 13, 2026 16:44
@EtaCassiopeia EtaCassiopeia mentioned this pull request May 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:release release hygiene / CI / docs kind:chore build / CI / tooling kind:docs documentation

Projects

None yet

1 participant