Keycloak 26.8.2-CE-ubuntu24.04-r1 build trail
How ReadyStack built readystack/keycloak:26.8.2-CE-ubuntu24.04-r1 and its build kit, copied record by record: why the release exists, every chain, drive and stage it went through, the model work, the review rounds, the defects, the checks that verified it and when it was published. Each line names the record it comes from in brackets; a record that does not exist for this release says so.
This trail
As JSON- Image
readystack/keycloak:26.8.2-CE-ubuntu24.04-r1 - Index digestsha256:076f816d3d63872e4106e69342a8da8948d197cd2d62caf80bc18f9b8bee64b2
- linux/amd64 digestsha256:9cc6dbf11a53fabf3fb46e70a8b696469ad0caa73eaf44e5831104c94956dd16
- Archive
ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.tar.gz - Archive SHA-256 nowe17d998f83575a5785aaa728ebf299265be964740718df8092f066591f8a2826
- Pins record
docs/PINS.md,docs/provenance/PINS.jsonin the archive (since generated) - Generated2026-11-06T16:20:54Z by KitForge release/build_trail.py
- Sections9 sections, 8 fully recorded; 1 item not recorded
Signed with the release key The trail's signature is a Sigstore bundle beside it. Check it is ours before you rely on it:
cosign verify-blob --key https://readystack.dev/keys/cosign.pub \ --bundle ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.trail.json.sigstore ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.trail.json
IdentityWhy this release existsThe path through the harnessModel work per stageReviewDefectsVerificationPublicationPackages and CPU level
Identity
Fully recorded- ProductKeycloak (keycloak) [MANIFEST.json]
- Release tag26.8.2-CE-ubuntu24.04-r1 [MANIFEST.json]
- Imagereadystack/keycloak:26.8.2-CE-ubuntu24.04-r1 [MANIFEST.json]
- Image index digestsha256:076f816d3d63872e4106e69342a8da8948d197cd2d62caf80bc18f9b8bee64b2 [docs/provenance/LOCKED_DIGEST.txt]
- linux/amd64 image digestsha256:9cc6dbf11a53fabf3fb46e70a8b696469ad0caa73eaf44e5831104c94956dd16 [ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.rebuild.json, subject.image_manifest_digest]
- ArchiveReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.tar.gz (bytes 2205219679) [MANIFEST.json]
- Archive sha256 at publishe17d998f83575a5785aaa728ebf299265be964740718df8092f066591f8a2826 [MANIFEST.json, tarball_sha256]
- Archive records agreeyes [MANIFEST.json, PUBLISH_MANIFEST.json and .cutover.json name the same sha256]
- Repack historynone: the archive is as first published [MANIFEST.json, repack_history]
- Upstream repositoryhttps://github.com/keycloak/keycloak [docs/provenance/SOURCE_TREE_HASH.json]
- Upstream ref26.8.2 [docs/provenance/SOURCE_TREE_HASH.json]
- Upstream commite514445f9dcdabc5bdcf67cab56c1e49655de067 [docs/provenance/SOURCE_TREE_HASH.json]
- Source tree hash5dd18d89b866300380e8063e8d776b341a341f81c6b9ca3e3f30ce4313139a78 (files 13524) [docs/provenance/SOURCE_TREE_HASH.json, tree_listing_sha256 (sha256 of the sorted file listing)]
- Kit tree hashsha256:b63d5e798ed2c84e9e273aa1a5bfefcede86ce3b11a5a75818495cca7dd89249 [ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.rebuild.json, inputs.tree_hash]
- SOURCE_DATE_EPOCH1793892444 (utc 2026-11-05T15:27:24Z) [ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.rebuild.json, inputs.source_date_epoch]
- Base images
- ref eclipse-temurin:21-jre-noble@sha256:161310cd5bd41fd549d19cf9f90b614897cb4a1532555c613b43b7e0628fe5d6 · platform digest sha256:db724162e4ff5f71fa0a2815026314d9e5e0e9a139f49be1d4717e6930e93341
- ref maven:3.9.8-eclipse-temurin-21@sha256:de18e4e51396ad9266f76669779ed6d6b49fbb0f45ed6f39169d87378d548d7d · platform digest sha256:6847cbbf21e159f97819f18336cf6bbc24a89f9eb6439317520d93f904e9a916
- BuildKitmoby/buildkit:v0.31.2 (image digest sha256:e0e67ea9c4bb07bdef683e29f70f3b623d1eb9c82274a9ec04e6bb0511449fb0) [ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.rebuild.json, engine]
- Engine commit(s)
- commit 7e5a2688c8bcfd04ea569d762838815cedc04aae · dirty yes · first drive 3523
- commit afffacb9487748928ad6a36852e8cbfd31db1cdb · dirty yes · first drive 3524
- commit 7731c2d195215f968c86d5e1d944a4be776ca4b1 · dirty yes · first drive 3529
- commit e8346c212ee2c26a42693eddd7fa8675be43c1b3 · dirty yes · first drive 3530
- commit cb55e5c3650928dcddd662daf111d57c22c9934b · dirty yes · first drive 3531
Why this release exists
Fully recorded- Chain822 (created 2026-11-06T03:30:13Z · trigger customer_request · upstream version 26.8.2) [chains, chains #822]
- Requestbuild request #503 (rebuild) (requested at 2026-11-06T03:28:42Z · requested by kitforge-agent · version 26.8.2) [build_requests, build_requests #503]
- Reasonretarget to 26.8.2: a newer upstream release (rule 1); PR #173 [build_requests, build_requests #503 request_reason]
- Supersedesreadystack/keycloak:26.8.1-CE-ubuntu24.04-r3 (chain 814) [chains, chains #814]
The path through the harness
Fully recorded1 chain · 5 drives · 18 stages · 2 rewinds
Chain 822 release · ready_to_ship
Created 2026-11-06T03:30:13Z, upstream 26.8.2, build request 503 [chains, chains #822]
| Drive | Started | Minutes | Build host | How it stopped |
|---|---|---|---|---|
| 3523 | 2026-11-06T03:31:22Z | 2.7 | build host 5 withhold-publish | stage_failed at assemble_kit; first failed check exists:first_build_digest; 4 ticks [drive_runs, drive_runs #3523] |
| 3524 | 2026-11-06T06:47:25Z | 22.4 | build host 5 withhold-publish | stage_failed at assemble_kit; first failed check exists:first_build_digest; 1 tick [drive_runs, drive_runs #3524] |
| 3529 | 2026-11-06T14:04:24Z | 67.2 | build host 5 withhold-publish | ready_to_ship at package_archive; 16 ticks [drive_runs, drive_runs #3529] |
| 3530 | 2026-11-06T15:39:45Z | 13.5 | build host 5 withhold-publish | ready_to_ship at package_archive; 2 ticks [drive_runs, drive_runs #3530] |
| 3531 | 2026-11-06T16:04:54Z | — | build host 5 publish-held | not recorded [drive_runs, drive_runs #3531] |
Stages, in order
| Stage | First start | Passed | Attempts | Gate checks passed | Artifacts (SHA-256) |
|---|---|---|---|---|---|
intake |
2026-11-06T03:31:33Z | 2026-11-06T03:31:34Z | 1 | 4
|
order_json da5e488aaee8… |
acquire |
2026-11-06T03:31:44Z | 2026-11-06T03:31:46Z | 1 | 12
|
source_tree 7fe47cd54964…license_file cfc7749b96f6…custody_inputs 5ea1bc70b7c9…source_tree_hash 7f6afb85f068…source_file_manifest dfeac2d3858b… |
plan |
2026-11-06T03:32:44Z | 2026-11-06T03:32:45Z | 1 | 10
|
recon_report fabdc10138f4…input_pin_plan e2025bf8589f…toolchain_lock aa4070dad1d1… |
assemble_kit |
2026-11-06T03:34:03Z | 2026-11-06T14:28:19Z | 3 | 27
|
dockerfile 29fe708a0139…build_recipe a58dbf74684e…system_pinning fa091140511e…build_offline_sh 6633aa31b6b4…generate_sbom_sh ce0f1e6f1e70…first_boot_health f6b01300c32e…verify_offline_sh 3e8184ea230c…base_image_digests d8333cbb49c2…dockerfile_offline 29fe708a0139…first_build_digest efe4fe023c43… |
remediate |
2026-11-06T14:29:03Z | 2026-11-06T14:29:03Z | 1 | 8
|
vendored_apt e3b0c44298fc…remediation_log 763e92b343bd…security_report 49c2c386493a… |
build_kit |
2026-11-06T14:43:45Z | 2026-11-06T14:43:46Z | 1 | 9
|
cosign_stamp 45f25beb7114…locked_digest e6dd4588f7bc…freeze_manifest 36c89181ca6a…offline_rebuild_transcript c5feb73534b8… |
verdict |
2026-11-06T14:46:16Z | 2026-11-06T14:46:16Z | 1 | 8
|
scout_verdict ed91f7717d29… |
publish_image |
2026-11-06T14:47:35Z | 2026-11-06T14:47:36Z | 1 | 7
|
hub_readme 3830c280c425…promotion_record 519cad8b9ea4… |
boot_instance |
2026-11-06T14:48:39Z | 2026-11-06T14:48:43Z | 2 | 3
|
instance_handle c5dcf4960c53… |
sbom |
2026-11-06T14:49:19Z | 2026-11-06T14:49:20Z | 1 | 5
|
sbom_md 113ec2d290df…sbom_json bee7c2576e62… |
schema_discovery |
2026-11-06T14:49:23Z | 2026-11-06T14:49:24Z | 1 | 7
|
schema_hash eeb3d6b3b4fa…dependency_tree 09b63ba164a9…table_classification 5d9d661dcc1b… |
admin_handbook |
2026-11-06T14:49:33Z | 2026-11-06T14:49:33Z | 1 | 7
|
api_map 781d0d05b3cb…admin_handbook dfc350f07c7f… |
db_handbook |
2026-11-06T14:49:46Z | 2026-11-06T14:49:47Z | 1 | 8
|
db_handbook 0a0bc22336e8…seed_isolation 53ce2b5dc035… |
seed_data |
2026-11-06T14:49:53Z | 2026-11-06T14:49:54Z | 1 | 6
|
seed_data_sql efab968dd7ac…seed_cases_json 4ce461f5893c… |
seed_validate |
2026-11-06T14:49:56Z | 2026-11-06T14:49:57Z | 1 | 3
|
seed_data_contract e6a0a94d3873… |
usecase_validate |
2026-11-06T14:50:18Z | 2026-11-06T14:50:19Z | 1 | 10
|
failed_tests b2247b16f5f7…passed_tests d2f6d674ddc7…test_results b6aed7556c37…usecase_contract 11a4455f23b3… |
finalize_docs |
2026-11-06T14:50:26Z | 2026-11-06T14:50:26Z | 1 | 9
|
defects_json a3789e90891f…release_notes e2c820597c59…api_integration_guide cb8509cfcb43… |
package_archive invalidated 2026-11-06T16:04:26Z |
2026-11-06T15:11:29Z | 2026-11-06T15:53:14Z | 2 | 34 (final gate PASS)
|
sale_tar 8bb533e00c98…checksums e4376eeaa2b7…verify_md bfd2c68f6e15…rebuild_md 5f5753c4aac5…manifest_txt 7f69c36fee0a…actions_jsonl 5f8129429fb4…provenance_md 35536f6f2f52…assetchain_log_md e9eccaec0c0f…assetchain_log_json 774ee11f375e… |
[stage_runs]
Rewinds
- 2026-11-06T15:37:37Z:
package_archivetopackage_archiveon docs_redo (scripts/redo-docs.py --stage package_archive) [stage_events, stage_events #23019] - 2026-11-06T16:04:26Z:
package_archivetopackage_archiveon docs_redo (scripts/redo-docs.py --stage package_archive) [stage_events, stage_events #23023]
Model work per stage
Fully recordedRole: writer model. Calls up to 2026-11-06T15:53:14Z.
5 calls over 3 stages
| Stage | Calls | Refused | Errors | Max attempt | Forced commits | Real tokens | Lesson rules shown |
|---|---|---|---|---|---|---|---|
plan | 2 | 0 | 0 | 1 | 0 | 19485 | L-A183, L-A15 |
remediate | 2 | 0 | 0 | 1 | 0 | 19580 | L-A183, L-A15 |
usecase_validate | 1 | 0 | 0 | 1 | 0 | 1842 | L-A59 |
[micro_step_runs] [lesson_recalls]
Review
Fully recordedRole: review model.
2 rounds, 2 counted, $1.00 recorded cost
| Round | Started | Critical | Major | Minor | Verdict | Cost | Cap in force | Archive reviewed |
|---|---|---|---|---|---|---|---|---|
| 1 | 2026-11-06T15:13:23Z | 0 | 3 | 0 | findings to repackage [held_rounds, held_rounds #1413] | $0.55 | 3 rounds, $40.00 | 375d7a9aff13… |
| 2 | 2026-11-06T15:53:59Z | 0 | 0 | 0 | clean to publish [held_rounds, held_rounds #1414] | $0.44 | 3 rounds, $40.00 | 8bb533e00c98… |
Defects
Fully recorded- Ledger entries3 [defects, defects where product_slug=keycloak and this tag or chain]
- Disclosed in the archive3 [docs/defects/defects.json, entries]
3 ledger entries: by severity high 3; by status fixed-before-release 3.
| Defect | Severity | Status | Found by | Fixed in |
|---|---|---|---|---|
RSD-keycloak-c217ce831aAdmin handbook: Names the superseded upstream tag and commit; this release is built from 26.8.2. [defects, defects #157514] | high | fixed-before-release | held review (review model) | — |
RSD-keycloak-7d904e7b27Admin handbook: Tag was updated but the commit is still 26.8.1's; a customer checking the commit against tag 26.8.2 finds a mismatch. [defects, defects #157515] | high | fixed-before-release | held review (review model) | — |
RSD-keycloak-e178817914API guide: Stale upstream tag; contradicts the rest of the guide (tag 26.8.2). [defects, defects #157516] | high | fixed-before-release | held review (review model) | — |
Verification
1 item not recorded- Reproduced before publishingyes (rebuilt digest sha256:9cc6dbf11a53fabf3fb46e70a8b696469ad0caa73eaf44e5831104c94956dd16 · published digest sha256:9cc6dbf11a53fabf3fb46e70a8b696469ad0caa73eaf44e5831104c94956dd16 · digest match yes · builder moby/buildkit:v0.31.2 · build seconds 406) [docs/provenance/REPRO_VERIFICATION.json, verified]
- Final contract gate (G8)PASS (checks artifact_coverage, assetchain_coverage, cosign, cpu_baseline, offline_rebuild, rebuild_manifest, scan_grade, scout_grade_a, script_copies, tag_base_os, trademark_shipped, vex_shipped) [g8_result.json, result]
- Grade at releaseA (percent 94 · docker grade B · docker percent 83 · tool docker scout policy 1.26.0 · config docker-default · org vex no · at 2026-11-06T16:05:29Z · failing Docker Scout counts 118 packages with copyleft licences (GPL, LGPL, MPL), all of them operating-system packages (it counts only packages whose licence it can read; the SBOM lists every component). · corrections No outdated base images) [SCOUT_EVIDENCE.json, docker_scout_policy.corrected]
- Image signatureverified on the index and the linux/amd64 manifest (key fingerprint 04daa92344a52dbc · at 2026-11-06T16:05:04Z) [docs/provenance/IMAGE_EVIDENCE.json, signed]
- Image signature transparency-log entries
- log index 3719338770 · transparency-log entry
- log index 3719341008 · transparency-log entry
- rebuild.json signatureSigstore bundle, release key (key fingerprint 04daa92344a52dbc · log index 3721118093 · transparency-log entry · integrated 2026-11-06T16:18:04Z) [ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.rebuild.json.sigstore, verificationMaterial.tlogEntries[0]]
- Signed attestations
- kind provenance · digest sha256:076f816d3d63872e4106e69342a8da8948d197cd2d62caf80bc18f9b8bee64b2 · state attached · log index 3721129951 · transparency-log entry
- kind sbom · digest sha256:076f816d3d63872e4106e69342a8da8948d197cd2d62caf80bc18f9b8bee64b2 · state attached · log index 3721132529 · transparency-log entry
- kind vsa · digest sha256:076f816d3d63872e4106e69342a8da8948d197cd2d62caf80bc18f9b8bee64b2 · state attached · log index 3721135311 · transparency-log entry
- kind provenance · digest sha256:9cc6dbf11a53fabf3fb46e70a8b696469ad0caa73eaf44e5831104c94956dd16 · state attached · log index 3721137552 · transparency-log entry
- kind sbom · digest sha256:9cc6dbf11a53fabf3fb46e70a8b696469ad0caa73eaf44e5831104c94956dd16 · state attached · log index 3721140201 · transparency-log entry
- kind vsa · digest sha256:9cc6dbf11a53fabf3fb46e70a8b696469ad0caa73eaf44e5831104c94956dd16 · state attached · log index 3721143107 · transparency-log entry
- Pins recorddocs/PINS.md and docs/provenance/PINS.json in the archive (https://readystack.dev/products/keycloak/recipe) [docs/provenance/PINS.json]
Offline clean-room rebuilds
- 2026-11-06T15:13:35Z on build host 5 (Docker-in-Docker daemon with --network none): bit for bit yes, digest match yes, customer verify yes
rebuilt sha256:9cc6dbf11a53fabf3fb46e70a8b696469ad0caa73eaf44e5831104c94956dd16 [clean-room rebuild ledger, runs[591]]
- Not recorded: the policy tool's --result-file itself (its per-policy results are copied into SCOUT_EVIDENCE.json and the archive's IMAGE_EVIDENCE.json; the file is not kept)
Publication
Fully recorded 1 pending at generation- Image pushed (internal tag), publish_image passed2026-11-06T14:47:36Z [stage_runs, stage_runs chain 822 stage publish_image]
- Archive manifests written2026-11-06T16:12:11Z [PUBLISH_MANIFEST.json, published_at]
- Pending at generation: the archive cut-over on prodasset, the release tag's promotion and the site event (this trail was generated after G8 and before them; they are appended as a 'publication' event in History)
Packages and CPU level
Fully recorded- x86-64 level the image needsv1 (used v4 · baseline v2 · elf files 831 · probed 2026-11-06T14:36:32Z · source build_kit) [release_images, isa_level_hard]
History
2 events- 2026-11-06T16:20:54Z generated: by KitForge release/build_trail.py · generator commit cb55e5c3650928dcddd662daf111d57c22c9934b
- 2026-11-06T16:24:25Z publication: promoted at 2026-11-06T16:22:00Z · promoted digest sha256:076f816d3d63872e4106e69342a8da8948d197cd2d62caf80bc18f9b8bee64b2 · promotion method imagetools_create_retag_by_digest_no_rebuild · site event 324 · checklist status complete · checklist at 2026-11-06T16:24:25Z · record workspace: deliverables/provenance/PROMOTION_RECORD.json, RELEASE_CHECKLIST.json
Records
25 records| Record | Where it is | Rows |
|---|---|---|
docs/defects/defects.json | inside the archive (ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.tar.gz) | — |
docs/provenance/IMAGE_EVIDENCE.json | inside the archive (ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.tar.gz) | — |
docs/provenance/LOCKED_DIGEST.txt | inside the archive (ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.tar.gz) | — |
docs/provenance/PINS.json | inside the archive (ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.tar.gz) | — |
docs/provenance/REPRO_VERIFICATION.json | inside the archive (ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.tar.gz) | — |
docs/provenance/SOURCE_TREE_HASH.json | inside the archive (ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.tar.gz) | — |
MANIFEST.json | beside the archive (prodasset /data/production/keycloak/26.8.2-CE-ubuntu24.04-r1/), as staged for publishing | — |
PUBLISH_MANIFEST.json | beside the archive (prodasset /data/production/keycloak/26.8.2-CE-ubuntu24.04-r1/), as staged for publishing | — |
ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.rebuild.json | beside the archive (prodasset /data/production/keycloak/26.8.2-CE-ubuntu24.04-r1/), as staged for publishing | — |
ReadyStack-keycloak-26.8.2-CE-ubuntu24.04-r1.rebuild.json.sigstore | beside the archive (prodasset /data/production/keycloak/26.8.2-CE-ubuntu24.04-r1/), as staged for publishing | — |
SCOUT_EVIDENCE.json | beside the archive (prodasset /data/production/keycloak/26.8.2-CE-ubuntu24.04-r1/), as staged for publishing | — |
clean-room rebuild ledger | the clean-room rebuild ledger (runstate/audit-2026-09/bit4bit.json, not published) | — |
build_requests | sadb, ReadyStack's engine database (not published) | 503 |
chains | sadb, ReadyStack's engine database (not published) | 822 |
defects | sadb, ReadyStack's engine database (not published) | keycloak 26.8.2-CE-ubuntu24.04-r1 |
drive_runs | sadb, ReadyStack's engine database (not published) | chain 822 |
held_rounds | sadb, ReadyStack's engine database (not published) | chain 822 |
lesson_recalls | sadb, ReadyStack's engine database (not published) | chain 822 |
micro_step_runs | sadb, ReadyStack's engine database (not published) | chain 822 |
release_images | sadb, ReadyStack's engine database (not published) | keycloak 26.8.2-CE-ubuntu24.04-r1 |
stage_events | sadb, ReadyStack's engine database (not published) | chain 822 |
stage_runs | sadb, ReadyStack's engine database (not published) | chain 822 |
attestations.json | the chain's workspace on the controller (not published) | — |
deliverables/provenance/PROMOTION_RECORD.json | the chain's workspace on the controller (not published) | — |
g8_result.json | the chain's workspace on the controller (not published) | — |