This checklist is tailored to the current wrongsecrets codebase (Spring Boot 4.0.3, Java 25).
- Keep this as a living checklist in PRs.
- Mark items complete when merged.
- Prefer small, focused migrations (one concern per PR).
- Spring Boot
4.0.3is configured inpom.xml. - Spring Cloud line is aligned (
2025.1.1). -
@ConfigurationPropertiesis already used in multiple places. - Mockito inline-mock-maker warning addressed by passing Mockito as Java agent in Surefire.
- Add a global
@RestControllerAdvicefor API endpoints that returnsProblemDetail. - Keep MVC HTML error handling as-is for Thymeleaf pages; only modernize JSON API errors.
- Add tests that assert RFC 9457-style payload fields (
type,title,status,detail,instance).
Why now: Reduces custom exception payload drift and improves API consistency.
- Stop introducing any new
RestTemplateusage. - Migrate existing bean in
WrongSecretsApplicationfromRestTemplatetoRestClient.Builder. - Migrate call sites incrementally (start with
SlackNotificationService). - Add timeout and retry policy explicitly for outbound calls.
Current state: RestTemplate bean and usage exist and can be migrated safely in phases.
- Run compile with deprecation warnings enabled in CI (
-Xlint:deprecation). - Fail build on newly introduced deprecations (can be soft-fail initially).
- Track remaining suppressions/deprecations as explicit TODOs.
Why now: Boot 4/Spring 7 deprecations will accumulate quickly otherwise.
- Ensure tracing is enabled in all non-local profiles.
- Ensure logs include trace/span correlation IDs.
- Add dashboard/alerts for key challenge-flow operations.
- Verify readiness/liveness probes are exposed and used by deployment manifests.
- Do not restrict sensitive endpoints for the actuator to make sure the challenge still works!
- Add health contributors for external dependencies used in runtime profiles.
- Use JSON logs for cloud/container profiles.
- Keep developer-friendly text logs for local profile.
- Document expected log fields for incident response.
- Add profile-based toggle (
spring.threads.virtual.enabled=true) for evaluation. - Run load comparison (latency, throughput, memory) before default-enabling.
- Keep a rollback toggle in case of third-party incompatibilities.
- Verify request drain behavior on shutdown in containerized environments.
- Confirm no challenge state corruption occurs during rolling updates.
- Add optional CI job for AOT/native compatibility (not necessarily release artifact yet).
- Record blockers (reflection/dynamic proxies/resources) in this document.
- Introduce/extend
@ConfigurationPropertiesclasses for grouped settings. - Limit direct
@Valueusage to simple one-off values. - Validate config with bean validation annotations.
- Use SSL bundle config for outbound TLS trust/key material where applicable.
- Remove ad-hoc SSL setup code if present.
- Document expected secret source per profile (
docker,k8s,aws,gcp,azure). - Ensure no fallback path accidentally logs sensitive values.
- Surefire passes Mockito as
-javaagent. - Mirror same setup in Failsafe if/when integration tests use inline mocking.
- Prefer service-connection style wiring for test dependencies.
- Reduce custom bootstrapping code in integration tests where possible.
- Add tests for success, timeout, retry, and non-2xx mapping behavior.
- Ensure migrated
RestClientpaths are fully covered.
- PR 1: Add API
ProblemDetailadvice + tests. - PR 2: Introduce
RestClientbean and migrateSlackNotificationService. - PR 3: Add deprecation checks to CI and document policy.
- PR 4: Add tracing/log-correlation defaults for non-local profiles.
- PR 5: Virtual thread evaluation profile + benchmark notes.
- No new
RestTemplatecode introduced. - API errors are standardized on
ProblemDetail. - Deprecation warnings are tracked and controlled in CI.
- Observability baseline (metrics, traces, log correlation) is active in non-local profiles.
- Migration choices and rollout decisions are documented in
docs/.