Add release hygiene: CHANGELOG, mima, CI matrix, NOTICE, examples#144
Merged
Conversation
2f53550 to
ba38ac2
Compare
a200117 to
6b022fb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 infeat/init-timeout-and-sync-verify(#138) because C5'sexamples/ofrep-init-timeoutuses the newinitTimeoutfactory andOFREPProvider.makevalidated construction. Once #138 and #139 land inmain, retarget tomain.C1 —
CHANGELOG.mdKeep-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] — earlierblock 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-mimaproject/plugins.sbt: addedcom.typesafe % sbt-mima-plugin % 1.1.4.build.sbt:ThisBuild / mimaFailOnNoPrevious := false;mimaPreviousArtifacts := Set.emptyincommonSettings. The first post-mima release tag will populatemimaPreviousArtifactsper module; until thenmimaReportBinaryIssuesis a no-op (verified locally).sbt +mimaReportBinaryIssuesas a dedicated job so binary-compatibility regressions are caught at PR time once a baseline exists.C3 — CI matrix
.github/workflows/ci.ymlsplit into four jobs:format—scalafmtCheckAllonce 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'score-httpclient-implrequires JDK 17+, which is now the realistic floor.mima— runs+mimaReportBinaryIssuesonce.examples— compiles both example projects to keep README/docs snippets honest.C4 —
NOTICEApache 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 withpublish / skip := true:examples/ofrep-init-timeout/— production wiring withOFREPProvider.make+FeatureFlags.fromProviderAsync(_, evaluationTimeout). The CircuitBreaker pattern is documented (in the scaladoc preamble) but not wired in, becauseOfrepProviderextendsFeatureProviderdirectly, notEventProvider, andCircuitBreakerProviderrequiresEventProvider. The example notes this and points to the Optimizely integration where the breaker does compose.examples/testkit-app/— a trivialUserServicegated by a flag, plus a spec that drives it throughTestFeatureProvider.scopedLayerwithsetFlag/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