Skip to content

feat: add Java Spring Boot implementation - #69

Merged
tappe9 merged 16 commits into
mainfrom
feat/add-java-spring-boot
Sep 17, 2026
Merged

tappe9 merged 16 commits into
mainfrom
feat/add-java-spring-boot

Conversation

@tappe9

@tappe9 tappe9 commented Sep 17, 2026 •

Copy link
Copy Markdown
Owner

Summary

Closes #67.

Add java-spring-boot as the ninth registered, CI-covered implementation. Keep eight-stack-v1 active and both historical cohorts frozen. Java has not been officially measured and no synthetic result is added.

  • Implement the unchanged health/JSON/SQL/direct-recursive CPU contract using Spring MVC/Tomcat, JDBC/HikariCP and ordinary record serialization. Preserve signed BIGINT IDs, parameterized live SQL, sanitized failures, bounded startup and graceful shutdown.
  • Pin Temurin JDK/JRE 25.0.4.1+1, Spring Boot 4.1.1 and Gradle 9.7.1. Verify the Wrapper, strict runtime/test dependency locks, SHA-256 metadata, architecture-specific archives and digest-pinned container bases. Run as non-root with one JVM, 1 CPU, 512 MiB and a maximum-ten connection pool.
  • Add real production-container/PostgreSQL acceptance, negative acceptance-helper regressions, static version extraction, generated registry projections and Java-only CI setup. Unrelated language jobs require no host JDK. Retain every existing gate and fail-closed aggregation.
  • Update English/Japanese guidance to distinguish nine registered implementations from eight officially measured implementations.

Verified identities and integration

  • Baseline main: 6e25eb07759bd6eed4de9ab9ee3d1dd35562932b.
  • Final reviewed PR head: ad0d02bcf0323153f7228ad5c28319f27ada22eb.
  • Exact reviewed tree: 5916fff3612e03ea882b2938dbcbf9b4eee741c9.
  • Squash merge: 9b92c74cba34bd5a4bfc389075b9bef135131034, completed 2026-09-17 at 07:54:11 UTC.
  • The actual merge commit has the reviewed tree unchanged and the verified baseline as its sole parent. Issue Add Java / Spring Boot implementation with contract and CI coverage #67 closed automatically.

TDD, corrections and verification

Earlier red/green evidence is recorded on #67. Development run 35192167889 exercised actual Linux x86-64 production-container acceptance, 22 native Java tests, 186 shared regressions, 38 contract-runner tests and 14 live Java HTTP checks. Documentation run 35193242290 checked registry/README output and unchanged-result invariants.

Corrections retained fail-closed checks: verified actual image/archive pins; replaced unavailable in-image downloading with architecture-selected ADD --checksum; completed the Java workflow-language mapping; and normalized the stored Windows Gradle launcher to LF with launcher-scoped checkout attributes. No validation rule was relaxed.

Final-head normal PR CI 35194319804 passed all 13 jobs: all nine implementation acceptance/contract jobs, shared, plan, non-publishing smoke and required. The retained Axum diagnostic also passed.

The reconstructed local review snapshot exactly matched the final remote tree. Replayed 42 focused tests successfully (12 Java metadata/registration, 9 acceptance-helper, 21 workflow tests), plus static production-pin validation, registry/README generation checks and whole-scope whitespace/invariant checks. Supplementary local full-contract and whole-site replays hit execution timeouts and are not claimed as passes; the site replay completed its 24 Python tests before timing out in the Node portion. The complete corresponding hosted suites passed in normal CI. Review was self-review, not independent reviewer approval.

Completed post-merge gates

  • Exact-head normal PR CI and final self-review.
  • Expected-head-guarded squash merge and actual main/tree/parent verification.
  • Issue Add Java / Spring Boot implementation with contract and CI coverage #67 automatically closed as completed.
  • Main CI 35196871135, attempt 1, push on the exact merge commit: all 13 jobs succeeded, including all nine implementations, shared, plan, smoke and required. Java production acceptance, 22 native Java tests, 38 contract-runner tests and 14 live Java HTTP checks passed again.
  • Ordinary Pages 35197629301, attempt 1: automatically triggered by successful main CI, completed successfully on the exact merge commit. Both deploy / build and deploy / deploy succeeded; current-main validation ran inside the deployment lock.
  • Verified the actual deployment log used artifact 10486941394, named github-pages-9b92c74cba34bd5a4bfc389075b9bef135131034-35197629301-1, with pages_build_version equal to the merge SHA and a successful deployment status.
  • Downloaded that exact artifact and verified archive SHA-256 e3133fccf5a0a752643f365350c82635ff3e6dde4c98373c01d0b684c8311083. All 10 distribution files byte-match a fresh local build from the reviewed merge tree, including the latest report, all three immutable history reports and the history index.

The retained latest result remains official run 34925168324, attempt 1, measured source c8e033ea176366644f5bed5ded12cab79e6fcbeb. Its bytes have SHA-256 15f22d39e3b1ab7b73e61effdbaec378767845889ae6ab969cb631c11393e82d. The current Pages deployment SHA is not a new measured-source or publication SHA.

Preserved boundaries and limitations

Existing eight application directories, published result/history bytes, generated README result blocks, official benchmark workflow and Pages workflows remain unchanged. Both temporary Java development files are removed. AGENTS.md and the local-only docs/superpowers/ / docs/investigations/ policy are preserved; no scratch files were committed.

No official benchmark, result publication, cohort activation, release/tag, credential/App or protection change was performed. #52 stays deferred and #59 stays open; ordinary Pages success is not producer-to-publication handoff evidence.

ARM64 archive paths/checksums are provided, but actual ARM64 acceptance has not been executed. Direct public-site retrieval was unavailable from this environment (web retrieval rejected; container DNS lookup failed). Deployment and exact distribution bytes are verified; live HTTP/CDN/browser behavior is not claimed. A Java-inclusive official cohort and an appropriate common JVM warm-up profile require a separate decision.

Add test-first MVC, JDBC settings, BIGINT, Fibonacci and readiness cases. Establish reviewed dependency generation separately from immutable validation. Keep production Java absent for initial red evidence; keep the official eight-stack cohort unchanged.
…flags

Keep immutable lock and checksum validation. Replace deprecated collection filtering in the temporary dependency preparation step and inspect actually published Java image variants.
Add native MVC JSON, BIGINT validation, parameterized JDBC reads, per-request direct recursion, bounded database startup and standalone health checks. Run the existing red tests against immutable dependency candidates before importing their Git objects. No official cohort or result changes.
Attach the six reviewed bootstrap blobs and remove the temporary contents-write object-import job. Subsequent builds validate committed lock/checksum data without regeneration.
Cover actual application startup failures versus Docker launch errors, secret suppression, graceful exit, OOM/restart rejection, missing inspect fields and bounded pool counts before adding the acceptance harness.
Add strict lifecycle/pool evidence validation, isolated real-PostgreSQL acceptance, native BIGINT and changed-row checks, non-root/resource/process constraints and owned cleanup. Read runtime versions from committed dependency evidence without invoking a toolchain. Container integration follows before these gates enter normal CI.
…ration

Pin base digests and exact AMD64/ARM64 hotfix archive checksums. Build only locked production dependencies and run a non-root direct JVM. Prepare narrowly scoped registry, static metadata and Java-only CI edits on a read-only runner, with real-container and shared-contract gates before explicit blob import. Preserve all existing official cohort and result bytes.
Resolve the observed E402 failures by applying the test entry point's path bootstrap before module imports, without disabling shared lint rules or changing application behavior.
Keep all development jobs read-only, remove the no-longer-needed Git object importer, and retain an exact source bundle for local review. Inspect base image identities without changing dependency pins or publishing any benchmark.
Reproduce the existing fail-closed rejection of the malformed runtime image digest, then use the actual JDK/JRE index identities inspected in development run 35190249988. Preserve exact checksum-verified 25.0.4.1+1 archives, strict Gradle locks and all acceptance checks.
…t policy

Use the exact x64 and aarch64 JRE SHA-256 identities from Temurin release assets 523665431 and 523666840. Preserve the independently verified JDK pins and strict build checks. Reproduce malformed-archive rejection locally before correcting the pins.

Integrate main's AGENTS.md and local-only investigation/plan cleanup without restoring scratch documents. After successful read-only development gates, import only the existing fifteen explicit integration candidates as immutable Git blobs for reviewed connector-side commit construction; never create refs or publish results from the helper job. Remove temporary development tooling before final PR gates.
Development run 35191432054 reproduced a real image build failure because the pinned Temurin image deliberately removes download utilities. Use architecture-selected scratch stages with ADD --checksum instead of installing floating packages or weakening archive verification.

Add fail-closed regressions for malformed, missing, duplicated and wrong-platform archive pins. Confirm the new repository regression fails against the former Dockerfile and all nine acceptance-helper tests pass with the corrected layout. Native tests and real container gates remain required; no official measurement or publication.
Import the exact fifteen reviewed source blobs from successful development run 35192167889, independently verified against its artifact digest and source bundle. Real Java container acceptance, 22 native tests, 186 shared regression tests, 38 contract-runner tests and 14 live Java contract checks passed; the active eight-stack cohort, existing implementations and result bytes remain unchanged.

Stage the separately reviewed durable documentation updates through an uncredentialed, before/after-hash-bound helper. Its temporary follow-up job may create only nine explicitly named and content-verified documentation blobs, never refs or publication commits. Remove both temporary helper files before normal PR gates. No official benchmark, release, protection or publisher redesign.
Import the nine exact reviewed public-documentation blobs from successful run 35193242290, independently checked against artifact SHA-256 and the exported source identity. Clearly distinguish nine registered implementations from eight officially measured ones and document the locked Java build, acceptance commands and unverified ARM64 execution boundary.

Remove both temporary preparation/workflow files. Fix the expected CI toolchain mapping to include Java after reproducing its KeyError; all 21 permanent workflow tests now pass without weakening the fail-closed aggregate. Preserve generated README result blocks, all result files, historical cohorts and existing application versions. No official benchmark or publication.
PR CI 35194002760 passed Python 3.10 regressions, actionlint, all 21 workflow tests and Ruff, then correctly rejected committed CRLF bytes as trailing whitespace in gradlew.bat. Normalize the Git blob to LF and add launcher-scoped attributes so checkouts still use CRLF for Windows and LF for POSIX.

Reproduce the exact whole-PR whitespace failure with default whitespace rules before the fix, then verify the entire candidate passes without relaxing CI or Git settings. Launcher content, dependency pins, application behavior and published results are unchanged.

tappe9 commented Sep 17, 2026

Copy link
Copy Markdown
Owner Author

Normal-CI correction and final candidate

Normal PR run 35194002760 passed the Python 3.10 shared regression suite (186 tests), contract-runner suite (38 tests), actionlint, all 21 workflow tests, and Ruff (59 files already formatted; all lint checks passed). The subsequent whole-PR git diff --check correctly rejected CRLF bytes stored directly in the newly added gradlew.bat blob.

Commit ad0d02bcf0323153f7228ad5c28319f27ada22eb normalizes the stored launcher to LF and adds two launcher-scoped Git attributes (gradlew text eol=lf, gradlew.bat text eol=crlf) so the Windows checkout still gets its intended line endings. No launcher logic, dependency pins or application behavior changed. The exact whitespace failure was reproduced with default whitespace rules before the fix; the complete candidate now passes without changing CI or Git settings.

Final candidate tree: 5916fff3612e03ea882b2938dbcbf9b4eee741c9, verified to match the local reviewed tree. Rechecked 12 Java metadata/registration tests, 21 workflow tests, 9 acceptance-helper tests and static production pins. Whole-scope checks confirm unchanged existing applications, official/Pages workflows, cohorts and generated result blocks, and no tracked temporary development or local-only scratch files.

The final head's complete normal CI is still pending. The supplementary full local regression replay hit this runtime's command-execution timeout and is not claimed as a pass; the recorded GitHub-hosted suite is the executed complete evidence. No official benchmark or publication was run.

@tappe9
tappe9 merged commit 9b92c74 into main Sep 17, 2026
13 checks passed
@tappe9
tappe9 deleted the feat/add-java-spring-boot branch September 17, 2026 07:54
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.

Add Java / Spring Boot implementation with contract and CI coverage

1 participant