ZITADEL v4.20.0-CE-ubuntu24.04-r1 build trail
How ReadyStack built readystack/zitadel:v4.20.0-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/zitadel:v4.20.0-CE-ubuntu24.04-r1 - Index digestsha256:3f9af2e2aaa50db0cc8997819f37c43ba164b9696eec96fd012f89cb26bfd53e
- linux/amd64 digestsha256:7af834957f0ed4bb1a7ab007a0ee63e94812d14f5fbf1ee14f8d14e6fb5da8d8
- Archive
ReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.tar.gz - Archive SHA-256 now99ca50b830b61bf96f6b4a68de87c5ee5c21ec4cfb910413294e977638ee2865
- Generated2026-11-02T23:33:35Z by KitForge release/build_trail.py
- Sections9 sections, 4 fully recorded; 10 items 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-zitadel-v4.20.0-CE-ubuntu24.04-r1.trail.json.sigstore ReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.trail.json
IdentityWhy this release existsThe path through the harnessModel work per stageReviewDefectsVerificationPublicationPackages and CPU level
Identity
1 item not recorded- ProductZITADEL (zitadel) [MANIFEST.json]
- Release tagv4.20.0-CE-ubuntu24.04-r1 [MANIFEST.json]
- Imagereadystack/zitadel:v4.20.0-CE-ubuntu24.04-r1 [MANIFEST.json]
- Image index digestsha256:3f9af2e2aaa50db0cc8997819f37c43ba164b9696eec96fd012f89cb26bfd53e [docs/provenance/LOCKED_DIGEST.txt]
- linux/amd64 image digestsha256:7af834957f0ed4bb1a7ab007a0ee63e94812d14f5fbf1ee14f8d14e6fb5da8d8 [ReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.rebuild.json, subject.image_manifest_digest]
- ArchiveReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.tar.gz (bytes 963256158) [MANIFEST.json]
- Archive sha256 at publishf47b1bc331276f3763e32da1fdf22e29a390b794904cedc9d0454fc06d5a885f [MANIFEST.json, repack_history[0].previous_tarball_sha256]
- Archive sha256 now99ca50b830b61bf96f6b4a68de87c5ee5c21ec4cfb910413294e977638ee2865 [MANIFEST.json, tarball_sha256]
- Archive records agreeyes [MANIFEST.json, PUBLISH_MANIFEST.json and .cutover.json name the same sha256]
- Repack history
- at 2026-11-01 · label kitfix · reason customer kit files brought up to the current engine: BUILD_OFFLINE.sh (kit root, docs/offline, docs/docker); the header of BUILD_OFFLINE.sh no longer says a --provenance rebuild meets a SLSA build level, comment lines only; not image inputs; image and every build input unchanged · previous sha256 f47b1bc331276f3763e32da1fdf22e29a390b794904cedc9d0454fc06d5a885f · sha256 99ca50b830b61bf96f6b4a68de87c5ee5c21ec4cfb910413294e977638ee2865 · replaced BUILD_OFFLINE.sh, docs/docker/BUILD_OFFLINE.sh, docs/offline/BUILD_OFFLINE.sh, rebuild.json
- Upstream repositoryhttps://github.com/zitadel/zitadel [docs/provenance/SOURCE_TREE_HASH.json]
- Upstream refv4.20.0 [docs/provenance/SOURCE_TREE_HASH.json]
- Upstream commit8afa5dd37a8e723efb9eace8d09fd5c1cccef694 [docs/provenance/SOURCE_TREE_HASH.json]
- Source tree hashcd883d5d3de2c513ae9c97140769940baca0ebd6d469f78e3b378ec04acd7e44 (files 9603) [docs/provenance/SOURCE_TREE_HASH.json, tree_listing_sha256 (sha256 of the sorted file listing)]
- Kit tree hashsha256:8c5ee4310d643770c85a49f2c8b6212d98b83a7829e3c025e0e9c315ff9f55bf [ReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.rebuild.json, inputs.tree_hash]
- SOURCE_DATE_EPOCH1792652744 (utc 2026-10-22T07:05:44Z) [ReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.rebuild.json, inputs.source_date_epoch]
- Base images
- ref golang:1.26.10-bookworm@sha256:632dff7351799a5a9954a48dc06670ade72ee44e8c351cdc0e5a57af2fea21af · platform digest sha256:88750ccdd0f2a77fcc00a14b1a48d6409bd8ddb5d7c2dd6ec0b4a2e916daf9d9
- ref ubuntu:24.04@sha256:24737cef17f4e22b1977df7d9a05e77c4e28b7da5b8911f8d8ccda136bf3573c · platform digest sha256:78d4744ead1f5b19b04d0df558ab182a5300903900755e515b2ca4d10eb2044d
- BuildKitmoby/buildkit:v0.31.2 (image digest sha256:e0e67ea9c4bb07bdef683e29f70f3b623d1eb9c82274a9ec04e6bb0511449fb0) [ReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.rebuild.json, engine]
- Not recorded: the engine commit(s) that built it (drive_runs records them for drives from 2026-11-02; this release's drives were rebuilt from line logs, which do not name it)
Why this release exists
Fully recorded- Chain710 (created 2026-10-27T17:04:51Z · trigger customer_request · upstream version v4.20.0) [chains, chains #710]
- Requestbuild request #387 (rebuild) (requested at 2026-10-27T04:41:32Z · requested by kitforge-agent · version v4.20.0) [build_requests, build_requests #387]
- Reasonretarget to v4.20.0: a newer upstream release (rule 1) [build_requests, build_requests #387 request_reason]
- Supersedesreadystack/zitadel:v4.19.5-CE-ubuntu24.04-r1 (chain 569) [chains, chains #569]
The path through the harness
2 items not recorded1 chain · 8 drives · 18 stages · 4 rewinds
Chain 710 release · shipped
Created 2026-10-27T17:04:51Z, upstream v4.20.0, build request 387 [chains, chains #710]
| Drive | Started | Minutes | Build host | How it stopped |
|---|---|---|---|---|
| 802 | 2026-10-27T17:05:30Z | 46.8 | build host 4 withhold-publish | stage_failed at package_archive [drive_runs, drive_runs #802] rebuilt from a build line's log |
| 804 | 2026-10-27T18:45:33Z | 4.1 | build host 4 withhold-publish | stage_failed at package_archive [drive_runs, drive_runs #804] rebuilt from a build line's log |
| 809 | 2026-10-27T19:39:15Z | 5.9 | build host 4 withhold-publish | stage_failed at package_archive [drive_runs, drive_runs #809] rebuilt from a build line's log |
| 831 | 2026-10-28T08:23:17Z | 28.9 | build host 4 withhold-publish | infra_hub_rate_limit at publish_image [drive_runs, drive_runs #831] rebuilt from a build line's log |
| 832 | 2026-10-28T09:10:42Z | 12.8 | build host 4 withhold-publish | ready_to_ship [drive_runs, drive_runs #832] rebuilt from a build line's log |
| 835 | 2026-10-29T17:27:41Z | 10.3 | build host 4 withhold-publish | ready_to_ship [drive_runs, drive_runs #835] rebuilt from a build line's log |
| 838 | 2026-10-29T19:14:18Z | 6.5 | build host 4 withhold-publish | ready_to_ship [drive_runs, drive_runs #838] rebuilt from a build line's log |
| 841 | 2026-10-29T19:53:05Z | 10 | build host 4 publish-held | shipped [drive_runs, drive_runs #841] rebuilt from a build line's log |
Stages, in order
| Stage | First start | Passed | Attempts | Gate checks passed | Artifacts (SHA-256) |
|---|---|---|---|---|---|
intake |
2026-10-27T17:05:36Z | 2026-10-27T17:05:36Z | 1 | 4
|
— |
acquire |
2026-10-27T17:05:48Z | 2026-10-27T17:05:48Z | 1 | 12
|
— |
plan |
2026-10-27T17:06:54Z | 2026-10-27T17:06:55Z | 1 | 10
|
— |
assemble_kit |
2026-10-27T17:18:07Z | 2026-10-28T08:38:34Z | 2 | 27
|
— |
remediate |
2026-10-27T17:19:18Z | 2026-10-28T08:38:40Z | 2 | 8
|
— |
build_kit |
2026-10-27T17:26:22Z | 2026-10-28T08:48:34Z | 2 | 9
|
— |
verdict |
2026-10-27T17:27:24Z | 2026-10-28T08:49:29Z | 2 | 8
|
— |
publish_image |
2026-10-27T17:28:07Z | 2026-10-28T09:11:30Z | 2 | 7
|
— |
boot_instance |
2026-10-27T17:28:30Z | 2026-10-28T09:11:54Z | 4 | 3
|
— |
sbom |
2026-10-27T17:28:45Z | 2026-10-28T09:12:08Z | 2 | 5
|
— |
schema_discovery |
2026-10-27T17:28:49Z | 2026-10-28T09:12:11Z | 2 | 7
|
— |
admin_handbook |
2026-10-27T17:38:45Z | 2026-10-28T09:12:21Z | 2 | 7
|
— |
db_handbook |
2026-10-27T17:50:21Z | 2026-10-28T09:12:33Z | 2 | 8
|
— |
seed_data |
2026-10-27T17:50:26Z | 2026-10-28T09:12:39Z | 2 | 6
|
— |
seed_validate |
2026-10-27T17:50:29Z | 2026-10-28T09:12:41Z | 2 | 3
|
— |
usecase_validate |
2026-10-27T17:50:54Z | 2026-10-28T09:13:06Z | 2 | 10
|
— |
finalize_docs |
2026-10-27T17:51:00Z | 2026-10-28T09:13:12Z | 2 | 9
|
— |
package_archive |
2026-10-27T17:52:19Z | 2026-10-29T20:03:03Z | 7 | 33 (final gate PASS)
|
— |
[stage_runs]
Rewinds
- 2026-10-28T08:23:26Z:
package_archivetoassemble_kiton strategy_changed (chain 710: strategy changed — rewound from 'package_archive' to assemble_kit and dropped the vendored tree so the change actually reaches the build.) [stage_events, stage_events #2345] - 2026-10-28T09:54:23Z:
package_archivetopackage_archiveon docs_redo (scripts/redo-docs.py) [stage_events, stage_events #2303] - 2026-10-29T18:00:06Z:
package_archivetopackage_archiveon docs_redo (scripts/redo-docs.py) [stage_events, stage_events #2304] - 2026-10-29T19:52:36Z:
package_archivetopackage_archiveon docs_redo (scripts/redo-docs.py) [stage_events, stage_events #993]
- Not recorded: each drive's ticks and first failed check (drive_runs records them for drives from 2026-11-02; these drives were rebuilt from line logs)
- Not recorded: the sha256 of each stage's artifacts (stage_events records them for stages passed from 2026-11-02; this chain's events were rebuilt from stage_runs and logs) — the archive's CHECKSUMS.sha256 lists the sha256 of every file it ships
Model work per stage
3 items not recordedRole: writer model. Calls up to 2026-10-29T20:03:03Z.
105 calls over 5 stages
| Stage | Calls | Refused | Errors | Max attempt | Forced commits | Real tokens | Lesson rules shown |
|---|---|---|---|---|---|---|---|
plan | 2 | 0 | 0 | 1 | not recorded | not recorded | — |
remediate | 2 | 0 | 0 | 1 | not recorded | not recorded | — |
admin_handbook | 39 | 9 | 0 | 3 | not recorded | not recorded | — |
db_handbook | 58 | 20 | 0 | 3 | not recorded | not recorded | — |
usecase_validate | 4 | 0 | 0 | 1 | not recorded | not recorded | — |
[micro_step_runs]
- Not recorded: forced commits (micro_step_runs records them for calls from 2026-11-02)
- Not recorded: real token counts (recorded per call from 2026-11-02; earlier rows hold only an estimate, which is not shown)
- Not recorded: the lesson rules shown to the writer model (lesson_recalls holds no rows for this chain: its recorder was silent from 2026-06-06 to 2026-11-02)
Review
2 items not recordedRole: review model.
3 rounds, 3 counted, $7.07 recorded cost
| Round | Started | Critical | Major | Minor | Verdict | Cost | Cap in force | Archive reviewed |
|---|---|---|---|---|---|---|---|---|
| 1 | 2026-10-28T09:23:55Z | 0 | 5 | 10 | findings to repackage [held_rounds, held_rounds #227] rebuilt from a held-review state file | $2.98 | not recorded | not recorded |
| 2 | 2026-10-29T17:38:20Z | 0 | 4 | 10 | findings to repackage [held_rounds, held_rounds #228] rebuilt from a held-review state file | $2.39 | not recorded | not recorded |
| 3 | 2026-10-29T19:21:27Z | 0 | 0 | 7 | clean to publish [held_rounds, held_rounds #229] rebuilt from a held-review state file | $1.70 | not recorded | not recorded |
- Not recorded: the sha256 of the archive each round reviewed (held_rounds records it for rounds from 2026-11-02; these rounds were rebuilt from state files)
- Not recorded: the round cap in force at each round (the state files did not keep it)
Defects
Fully recorded- Ledger entries37 [defects, defects where product_slug=zitadel and this tag or chain]
- Disclosed in the archive35 [docs/defects/defects.json, entries]
37 ledger entries: by severity low 26, medium 2, high 9; by status fixed-in-release 2, open 3, fixed-before-release 32.
| Defect | Severity | Status | Found by | Fixed in |
|---|---|---|---|---|
RSD-zitadel-90d0c3222cRelease notes: The Known issues entry presents a harness artefact (request by Host 127.0.0.1 against an instance whose external domain is localhost) as a product failure; the file is served normally under the… [defects, defects #117950] | low | fixed-in-release | held review (review model) | v4.20.0-CE-ubuntu24.04-r1 |
RSD-zitadel-17f77c09e1The image refuses to start without ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD, although ZITADEL uses it only to create the first instance [defects, defects #117951] | low | open | runtime check | — |
RSD-zitadel-dffabd7d65The Docker Hub run example puts ZITADEL_DATABASE_POSTGRES_USER_PASSWORD, ZITADEL_DATABASE_POSTGRES_ADMIN_PASSWORD and ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD on the command line (export), where the shell's history keeps them [defects, defects #117952] | medium | fixed-before-release | agent case study | — |
RSD-zitadel-f085a837c0Database handbook: The handbook says the OIDC discovery document answers on any hostname. [defects, defects #131285] | high | fixed-before-release | held review (review model) | — |
RSD-zitadel-37f004defbDatabase handbook: Same false claim: discovery 'answers on any Host header' and can be used to 'bootstrap integrations regardless of how the request reaches the container'. [defects, defects #131286] | high | fixed-before-release | held review (review model) | — |
RSD-zitadel-11c5f31151Database handbook: Same false claim, in the same sentence that says discovery gets 404 for other hosts. [defects, defects #131287] | high | fixed-before-release | held review (review model) | — |
RSD-zitadel-5bf87334a1Database handbook: Same false claim; the preceding sentence of the paragraph lists the discovery document among the endpoints that return 404 for other hosts. [defects, defects #131288] | high | fixed-before-release | held review (review model) | — |
RSD-zitadel-35870cb4f0Database handbook: The sentence says that after the first start only the unprivileged role is used. [defects, defects #131289] | high | fixed-before-release | held review (review model) | — |
RSD-zitadel-0147e46f48Database handbook: The discovery document appears in both the unauthenticated and the authenticated lists. [defects, defects #131290] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-5bdd98e7a0Database handbook: A file readable by others is not rejected; only a file unreadable by uid 999 is. [defects, defects #131291] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-82e5de22ceDatabase handbook: The sentence imposes a complexity rule on the database password that no record supports and that the handbook's own typical value (`postgres`) breaks. [defects, defects #131292] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-90525014b2Database handbook: Unsupported specific number. [defects, defects #131293] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-41c76c121dAdmin handbook: Same unsupported thread count as DB_HANDBOOK.md:1147. [defects, defects #131294] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-2cb3074c32Admin handbook: The sentence applies the administrator password's complexity rule to all three passwords and contradicts the next bullet. [defects, defects #131295] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-8deecbaf84Admin handbook: Typo: a doubled slash in the route a customer might paste. [defects, defects #131296] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-f2481f8344Admin handbook: As written the sentence says the Console is never reached at http://localhost:8080, which is exactly the address the local-trial sections tell the customer to use. [defects, defects #131297] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-9f383a6622Admin handbook: Contradicts the preceding section of the same handbook, which lists three modes. [defects, defects #131298] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-c28fa89370Release notes: The line prints a harness artefact (wrong Host header) under Known issues as if the product failed the check; the file is served correctly under the configured external domain. [defects, defects #131299] | low | open | held review (review model) | — |
RSD-zitadel-60bd193892CVE-2026-111497 in libbrotli1 1.1.0-2build2 is on CISA's Known Exploited Vulnerabilities list [defects, defects #135522] | medium | fixed-in-release | image scan | v4.20.0-CE-ubuntu24.04-r1 |
RSD-zitadel-576deb46eeAdmin handbook: The sign-in form does not accept the bare user name zitadel-admin; a customer following the first-login instruction is told the user does not exist. [defects, defects #135701] | high | fixed-before-release | held review (review model) | — |
RSD-zitadel-ea2ce6552dAdmin handbook: Sentence says to sign in with the username zitadel-admin (fails) and then says the login name is the long form; the instruction is wrong. [defects, defects #135702] | high | fixed-before-release | held review (review model) | — |
RSD-zitadel-ad96a933e1Admin handbook: Contradicts line 1849 of the same handbook and the measured behaviour: the bare user name is refused with 'User could not be found'. [defects, defects #135703] | high | fixed-before-release | held review (review model) | — |
RSD-zitadel-2a31294281Admin handbook: The instruction to use localhost for a same-machine PostgreSQL contradicts the handbook's own Network Access section and fails with 'dial tcp 127.0.0.1:5432: connect: connection refused' for the… [defects, defects #135704] | high | fixed-before-release | held review (review model) | — |
RSD-zitadel-a34db48e30Admin handbook: Contradicts the 'Environment Variables' section of the same handbook (three variables). [defects, defects #135705] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-f9d4e930a5Admin handbook: 'Any string' contradicts the restriction stated three lines below it. [defects, defects #135706] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-00aa3a76fdAdmin handbook: Calls all three passwords PostgreSQL passwords although the third is not; the next sections say only two are PostgreSQL passwords with character restrictions. [defects, defects #135707] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-cfc3bfce24Admin handbook: Lists the discovery document among the debug probes that answer on any host (it is host-routed), repeating the discovery-document confusion of round 1. [defects, defects #135708] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-69ec6e4c94Database handbook: Unsupported driver name stated as fact; the connection errors are those of the pgx driver. [defects, defects #135709] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-894096be36Database handbook: States everything held in PostgreSQL is encrypted with the masterkey; contradicts the Password Hashing section. [defects, defects #135710] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-33e5818c3fDatabase handbook: Says the customer must create the database while the same section's later text says ZITADEL creates it. [defects, defects #135711] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-3f451dd63eDatabase handbook: The sentence says the token must be a PAT or OAuth access token, but the documented System API procedure authenticates with a signed JWT. [defects, defects #135712] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-f3bfb84ebeDocker Hub README: The sentence tells the customer to take 'passwords that only set up the first start' out of the env file after setup. [defects, defects #135713] | low | open | held review (review model) | — |
RSD-zitadel-1e9d459379Admin handbook: The handbook's System API procedure (Resetting a forgotten password, step 3, and API tokens) authenticates with a JWT the customer signs with a System API user's key and sends as `Authorization:… [defects, defects #138369] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-7037f88c39Admin handbook: The handbook's System API procedure (Resetting a forgotten password, step 3, and API tokens) authenticates with a JWT the customer signs with a System API user's key and sends as `Authorization:… [defects, defects #138370] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-fac3bff1ceDatabase handbook: The handbook's System API procedure (Resetting a forgotten password, step 3, and API tokens) authenticates with a JWT the customer signs with a System API user's key and sends as `Authorization:… [defects, defects #138371] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-778fa47cb2Database handbook: The handbook's System API procedure (Resetting a forgotten password, step 3, and API tokens) authenticates with a JWT the customer signs with a System API user's key and sends as `Authorization:… [defects, defects #138372] | low | fixed-before-release | held review (review model) | — |
RSD-zitadel-85b7fa95b7Admin handbook: Unsupported claim: under Docker's default settings the unprivileged container user can bind ports below 1024; the image's only listener is 8080 for other reasons. [defects, defects #138373] | low | fixed-before-release | held review (review model) | — |
Verification
2 items not recorded- Reproduced before publishingyes (rebuilt digest sha256:7af834957f0ed4bb1a7ab007a0ee63e94812d14f5fbf1ee14f8d14e6fb5da8d8 · published digest sha256:7af834957f0ed4bb1a7ab007a0ee63e94812d14f5fbf1ee14f8d14e6fb5da8d8 · digest match yes · builder moby/buildkit:v0.31.2 · build seconds 233) [docs/provenance/REPRO_VERIFICATION.json, verified]
- Final contract gate (G8)PASS (checks cosign, scan_grade, tag_base_os, vex_shipped, scout_grade_a, script_copies, three_way_sha, offline_rebuild, rebuild_manifest, artifact_coverage, assetchain_coverage) [stage_runs, stage_runs chain 710 package_archive gate_result.g8.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-10-29T19:53:26Z · failing Docker Scout counts 96 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]
- First own scan of the releaseA (at 2026-10-29T20:03:17Z · score 100 · rubric cerodeo-v1 · fixable critical 0 · fixable high 0 · syft 1.54.1 · grype 0.120.1 · grype db v6.1.10@2026-10-29T06:23:34Z) [image_scans, image_scans #1565]
- Image signatureverified on the index and the linux/amd64 manifest (key fingerprint 04daa92344a52dbc · at 2026-10-29T19:53:15Z) [docs/provenance/IMAGE_EVIDENCE.json, signed]
- Image signature transparency-log entries
- log index 3535491151 · transparency-log entry
- log index 3535491265 · transparency-log entry
- rebuild.json signatureSigstore bundle, release key (key fingerprint 04daa92344a52dbc · log index 3632865735 · transparency-log entry · integrated 2026-11-01T14:49:36Z) [ReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.rebuild.json.sigstore, verificationMaterial.tlogEntries[0]]
- Signed attestations
- kind provenance · digest sha256:3f9af2e2aaa50db0cc8997819f37c43ba164b9696eec96fd012f89cb26bfd53e · state attached · log index 3575280326 · transparency-log entry
- kind sbom · digest sha256:3f9af2e2aaa50db0cc8997819f37c43ba164b9696eec96fd012f89cb26bfd53e · state attached · log index 3575282956 · transparency-log entry
- kind vsa · digest sha256:3f9af2e2aaa50db0cc8997819f37c43ba164b9696eec96fd012f89cb26bfd53e · state attached · log index 3575287179 · transparency-log entry
- kind provenance · digest sha256:7af834957f0ed4bb1a7ab007a0ee63e94812d14f5fbf1ee14f8d14e6fb5da8d8 · state attached · log index 3575290673 · transparency-log entry
- kind sbom · digest sha256:7af834957f0ed4bb1a7ab007a0ee63e94812d14f5fbf1ee14f8d14e6fb5da8d8 · state attached · log index 3575293742 · transparency-log entry
- kind vsa · digest sha256:7af834957f0ed4bb1a7ab007a0ee63e94812d14f5fbf1ee14f8d14e6fb5da8d8 · state attached · log index 3575298784 · transparency-log entry
Offline clean-room rebuilds
- 2026-10-28T09:23:59Z on build host 4 (Docker-in-Docker daemon with --network none): bit for bit yes, digest match yes, customer verify yes
rebuilt sha256:7af834957f0ed4bb1a7ab007a0ee63e94812d14f5fbf1ee14f8d14e6fb5da8d8 [clean-room rebuild ledger, runs[517]]
- 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)
- Not recorded: the pins record (docs/PINS.md is not in this archive as generated; a repack that adds it is appended to this trail's history)
Publication
Fully recorded- Image pushed (internal tag), publish_image passed2026-10-28T09:11:30Z [stage_runs, stage_runs chain 710 stage publish_image]
- Release tag promoted2026-10-29T20:02:01Z (method imagetools_create_retag_by_digest_no_rebuild · digest sha256:3f9af2e2aaa50db0cc8997819f37c43ba164b9696eec96fd012f89cb26bfd53e · tag readystack/zitadel:v4.20.0-CE-ubuntu24.04-r1) [deliverables/provenance/PROMOTION_RECORD.json, promoted_at]
- Archive manifests written2026-10-29T19:56:57Z [PUBLISH_MANIFEST.json, published_at]
- Archive cut over on prodasset, package_archive passed2026-10-29T20:03:03Z [stage_runs, stage_runs chain 710 stage package_archive]
- Cut-over markerpresent (chain 710) [.cutover.json]
- Release checklist and site event2026-10-29T20:03:01Z (status complete · site event 289 · steps grade a verified done · release tag promoted done · cosign signed done · release evidence recorded done · contract gate passed done · archive published done · hub readme live done · reproducibility recorded done · defects ledger published done · catalog available done · build request fulfilled done · seo regenerated skipped · site catalogue refreshed done · site grade recorded done · site queue synced done · customer requests charged done · owners notified done) [deliverables/provenance/RELEASE_CHECKLIST.json, run_at]
Packages and CPU level
Fully recorded- Packages in the image344 (scanned 2026-11-02T06:30:04Z · source backfill:daily-scan) [release_images, package_count]
- x86-64 level the image needsv1 (used v4 · baseline v2 · elf files 743 · probed 2026-11-02T17:09:59Z · source backfill) [release_images, isa_level_hard]
History
1 event- 2026-11-02T23:33:35Z generated: by KitForge release/build_trail.py · generator commit 916780cc218cf013bd623a8c085aaf73d3b053d0 · note backfill: built after the release from its records
Records
25 records| Record | Where it is | Rows |
|---|---|---|
docs/defects/defects.json | inside the archive (ReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.tar.gz) | — |
docs/provenance/IMAGE_EVIDENCE.json | inside the archive (ReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.tar.gz) | — |
docs/provenance/LOCKED_DIGEST.txt | inside the archive (ReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.tar.gz) | — |
docs/provenance/REPRO_VERIFICATION.json | inside the archive (ReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.tar.gz) | — |
docs/provenance/SOURCE_TREE_HASH.json | inside the archive (ReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.tar.gz) | — |
.cutover.json | beside the archive (prodasset /data/production/zitadel/v4.20.0-CE-ubuntu24.04-r1/) | — |
MANIFEST.json | beside the archive (prodasset /data/production/zitadel/v4.20.0-CE-ubuntu24.04-r1/) | — |
PUBLISH_MANIFEST.json | beside the archive (prodasset /data/production/zitadel/v4.20.0-CE-ubuntu24.04-r1/) | — |
ReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.rebuild.json | beside the archive (prodasset /data/production/zitadel/v4.20.0-CE-ubuntu24.04-r1/) | — |
ReadyStack-zitadel-v4.20.0-CE-ubuntu24.04-r1.rebuild.json.sigstore | beside the archive (prodasset /data/production/zitadel/v4.20.0-CE-ubuntu24.04-r1/) | — |
SCOUT_EVIDENCE.json | beside the archive (prodasset /data/production/zitadel/v4.20.0-CE-ubuntu24.04-r1/) | — |
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) | 387 |
chains | sadb, ReadyStack's engine database (not published) | 710 |
defects | sadb, ReadyStack's engine database (not published) | zitadel v4.20.0-CE-ubuntu24.04-r1 |
drive_runs | sadb, ReadyStack's engine database (not published) | chain 710 |
held_rounds | sadb, ReadyStack's engine database (not published) | chain 710 |
image_scans | sadb, ReadyStack's engine database (not published) | 1565 |
micro_step_runs | sadb, ReadyStack's engine database (not published) | chain 710 |
release_images | sadb, ReadyStack's engine database (not published) | zitadel v4.20.0-CE-ubuntu24.04-r1 |
stage_events | sadb, ReadyStack's engine database (not published) | chain 710 |
stage_runs | sadb, ReadyStack's engine database (not published) | chain 710 |
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) | — |
deliverables/provenance/RELEASE_CHECKLIST.json | the chain's workspace on the controller (not published) | — |