ZITADEL v4.20.1-CE-ubuntu24.04-r1 build trail

How ReadyStack built readystack/zitadel:v4.20.1-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
  • Imagereadystack/zitadel:v4.20.1-CE-ubuntu24.04-r1
  • Index digestsha256:a304c4761ff5ff1b07b1c4dd8551aea27626b0b348d7c254fd9c4ed16f43832c
  • linux/amd64 digestsha256:6576281188bef2114f3de79649d7ab4ffc46f6e2c7dbcbde258706cda8ef1512
  • ArchiveReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.tar.gz
  • Archive SHA-256 nowe58b4e7b7ebd5310a0b9fa90441e5b5c1e21ce4f8618cff70332b781726afc22
  • Pins recorddocs/PINS.md, docs/provenance/PINS.json in the archive (since generated)
  • Generated2026-11-08T21:41:17Z 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-zitadel-v4.20.1-CE-ubuntu24.04-r1.trail.json.sigstore ReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.trail.json

IdentityWhy this release existsThe path through the harnessModel work per stageReviewDefectsVerificationPublicationPackages and CPU level

Identity

Fully recorded
  • ProductZITADEL (zitadel) [MANIFEST.json]
  • Release tagv4.20.1-CE-ubuntu24.04-r1 [MANIFEST.json]
  • Imagereadystack/zitadel:v4.20.1-CE-ubuntu24.04-r1 [MANIFEST.json]
  • Image index digestsha256:a304c4761ff5ff1b07b1c4dd8551aea27626b0b348d7c254fd9c4ed16f43832c [docs/provenance/LOCKED_DIGEST.txt]
  • linux/amd64 image digestsha256:6576281188bef2114f3de79649d7ab4ffc46f6e2c7dbcbde258706cda8ef1512 [ReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.rebuild.json, subject.image_manifest_digest]
  • ArchiveReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.tar.gz (bytes 966106994) [MANIFEST.json]
  • Archive sha256 at publishe58b4e7b7ebd5310a0b9fa90441e5b5c1e21ce4f8618cff70332b781726afc22 [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/zitadel/zitadel [docs/provenance/SOURCE_TREE_HASH.json]
  • Upstream refv4.20.1 [docs/provenance/SOURCE_TREE_HASH.json]
  • Upstream commit709968cdd4257d7377bb95f22c840ee39ba951c6 [docs/provenance/SOURCE_TREE_HASH.json]
  • Source tree hashb7b7338f620b8aced065fc2dde1bfbbbf9a202dc7002d377a94e2e0202c8d89c (files 9608) [docs/provenance/SOURCE_TREE_HASH.json, tree_listing_sha256 (sha256 of the sorted file listing)]
  • Kit tree hashsha256:cd8be81dbf1a063d1d11f438e426e2a64b2fc1f9feb423c0466a0983a0378a71 [ReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.rebuild.json, inputs.tree_hash]
  • SOURCE_DATE_EPOCH1793630285 (utc 2026-11-02T14:38:05Z) [ReadyStack-zitadel-v4.20.1-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:fe81560990fae86dc4743202b2cb4d3df98d0bcf949173cecef15ce1127ef852 · platform digest sha256:78d4744ead1f5b19b04d0df558ab182a5300903900755e515b2ca4d10eb2044d
    [ReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.rebuild.json, bases]
  • BuildKitmoby/buildkit:v0.31.2 (image digest sha256:e0e67ea9c4bb07bdef683e29f70f3b623d1eb9c82274a9ec04e6bb0511449fb0) [ReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.rebuild.json, engine]
  • Engine commit(s)
    • commit 0ce62a3a548f16cde73a6e8600cacfdd38930d4d · dirty yes · first drive 3870
    • commit 58e9240297aa7166e0dec2e18a9c5ae2e84212bf · dirty yes · first drive 3882
    • commit f5a5de65751a9a2ee38814f31162a0654a970dee · dirty yes · first drive 3887
    [drive_runs, engine_sha]

Why this release exists

Fully recorded
  • Chain898 (created 2026-11-08T19:35:21Z · trigger customer_request · upstream version v4.20.1) [chains, chains #898]
  • Requestbuild request #588 (rebuild) (requested at 2026-11-08T14:11:42Z · requested by kitforge-agent · version v4.20.1) [build_requests, build_requests #588]
  • Reasonretarget to v4.20.1: a newer upstream release (rule 1) [build_requests, build_requests #588 request_reason]
  • Supersedesreadystack/zitadel:v4.20.0-CE-ubuntu24.04-r2 (chain 886) [chains, chains #886]

The path through the harness

Fully recorded

1 chain · 3 drives · 18 stages · 2 rewinds

Chain 898 release · ready_to_ship

Created 2026-11-08T19:35:21Z, upstream v4.20.1, build request 588 [chains, chains #898]

DriveStartedMinutesBuild hostHow it stopped
38702026-11-08T19:36:18Z34.7build host 1 withhold-publish ready_to_ship at package_archive; 19 ticks [drive_runs, drive_runs #3870]
38822026-11-08T21:21:41Z7.9build host 1 withhold-publish ready_to_ship at package_archive; 2 ticks [drive_runs, drive_runs #3882]
38872026-11-08T21:33:18Z—build host 1 publish-held not recorded [drive_runs, drive_runs #3887]

Stages, in order

StageFirst startPassedAttemptsGate checks passedArtifacts (SHA-256)
intake 2026-11-08T19:36:29Z2026-11-08T19:36:30Z1
4
  • exists:order_json
  • order_json:json_parses
  • order_json:no_forbidden_placeholders
  • produces_paths_exist
order_json dbbbaacee08f…
acquire 2026-11-08T19:36:43Z2026-11-08T19:36:44Z1
12
  • exists:source_tree
  • exists:source_tree_hash
  • exists:source_file_manifest
  • exists:custody_inputs
  • exists:license_file
  • source_tree:dir_nonempty
  • source_tree_hash:json_parses
  • source_file_manifest:json_parses
  • custody_inputs:json_parses
  • license_file:file_nonempty
  • produces_paths_exist
  • custody_inputs:json_true:ce_audit.ce_only
source_tree b9aacd9dc0fd…
license_file 4df3c306ddda…
custody_inputs 42a6e59dca0d…
source_tree_hash f81499b70f96…
source_file_manifest 34cb1838ab5f…
plan 2026-11-08T19:37:32Z2026-11-08T19:37:33Z1
10
  • exists:recon_report
  • exists:input_pin_plan
  • exists:toolchain_lock
  • recon_report:md_min_sections:3
  • recon_report:no_forbidden_placeholders
  • input_pin_plan:md_min_sections:2
  • input_pin_plan:no_forbidden_placeholders
  • toolchain_lock:file_nonempty
  • toolchain_lock:no_forbidden_placeholders
  • produces_paths_exist
recon_report 27127ffe4921…
input_pin_plan 3ec9a00d08b4…
toolchain_lock 1d815c523c2c…
assemble_kit 2026-11-08T19:48:39Z2026-11-08T19:48:40Z1
27
  • exists:dockerfile
  • exists:base_image_digests
  • exists:system_pinning
  • exists:build_recipe
  • exists:first_build_digest
  • exists:first_boot_health
  • exists:dockerfile_offline
  • exists:verify_offline_sh
  • exists:build_offline_sh
  • exists:generate_sbom_sh
  • dockerfile:file_nonempty
  • dockerfile:no_forbidden_placeholders
  • base_image_digests:file_nonempty
  • system_pinning:file_nonempty
  • build_recipe:json_parses
  • first_build_digest:file_nonempty
  • first_boot_health:file_nonempty
  • dockerfile_offline:file_nonempty
  • dockerfile_offline:no_forbidden_placeholders
  • verify_offline_sh:file_nonempty
  • verify_offline_sh:no_forbidden_placeholders
  • build_offline_sh:file_nonempty
  • build_offline_sh:no_forbidden_placeholders
  • generate_sbom_sh:file_nonempty
  • generate_sbom_sh:no_forbidden_placeholders
  • produces_paths_exist
  • first_boot_health:file_contains:healthy=True
dockerfile 1f3e890a1674…
build_recipe 73ca76a3997c…
system_pinning fa091140511e…
build_offline_sh 6633aa31b6b4…
generate_sbom_sh ce0f1e6f1e70…
first_boot_health 3e51d052847e…
verify_offline_sh 3e8184ea230c…
base_image_digests ed03d5169100…
dockerfile_offline 1f3e890a1674…
first_build_digest f9f09ba867a9…
remediate 2026-11-08T19:49:24Z2026-11-08T19:49:24Z1
8
  • exists:vendored_apt
  • exists:remediation_log
  • exists:security_report
  • vendored_apt:dir_exists
  • remediation_log:json_parses
  • security_report:md_min_sections:2
  • security_report:no_forbidden_placeholders
  • produces_paths_exist
vendored_apt e3b0c44298fc…
remediation_log 33ee55d18766…
security_report b0d68def428a…
build_kit 2026-11-08T19:56:49Z2026-11-08T19:56:50Z1
9
  • exists:freeze_manifest
  • exists:locked_digest
  • exists:cosign_stamp
  • exists:offline_rebuild_transcript
  • freeze_manifest:json_parses
  • locked_digest:file_nonempty
  • cosign_stamp:file_nonempty
  • offline_rebuild_transcript:json_parses
  • produces_paths_exist
cosign_stamp de0da4fbf70c…
locked_digest 936ba931ad65…
freeze_manifest b7af45aaf5de…
offline_rebuild_transcript c788a35f7712…
verdict 2026-11-08T19:57:45Z2026-11-08T19:57:46Z1
8
  • exists:scout_verdict
  • scout_verdict:json_parses
  • produces_paths_exist
  • scout_verdict:release_check_passed
  • scout_verdict:nonroot_green
  • scout_verdict:zero_fixable_crit_high
  • scout_verdict:osv_clean
  • scout_verdict:no_baked_secrets
scout_verdict c1a4eed120b1…
publish_image 2026-11-08T19:58:26Z2026-11-08T19:58:27Z1
7
  • exists:promotion_record
  • exists:hub_readme
  • promotion_record:json_parses
  • hub_readme:md_min_sections:2
  • hub_readme:no_forbidden_placeholders
  • produces_paths_exist
  • promotion_record:json_true:signed
hub_readme 2b38074fd16c…
promotion_record 022aef4256d4…
boot_instance 2026-11-08T19:58:50Z2026-11-08T19:58:53Z2
3
  • exists:instance_handle
  • instance_handle:json_parses
  • produces_paths_exist
instance_handle 56e75bdc6f5d…
sbom 2026-11-08T19:59:07Z2026-11-08T19:59:07Z1
5
  • exists:sbom_json
  • exists:sbom_md
  • sbom_json:json_parses
  • sbom_md:md_min_sections:1
  • produces_paths_exist
sbom_md b863a6e09fdb…
sbom_json e167818aba65…
schema_discovery 2026-11-08T19:59:10Z2026-11-08T19:59:11Z1
7
  • exists:dependency_tree
  • exists:table_classification
  • exists:schema_hash
  • dependency_tree:json_parses
  • table_classification:json_parses
  • schema_hash:file_nonempty
  • produces_paths_exist
schema_hash f0a84b09d456…
dependency_tree 5f5d86e66d6a…
table_classification edc516a7cfb0…
admin_handbook 2026-11-08T19:59:21Z2026-11-08T19:59:21Z1
7
  • exists:admin_handbook
  • exists:api_map
  • admin_handbook:md_min_sections:10
  • admin_handbook:no_forbidden_placeholders
  • api_map:json_parses
  • produces_paths_exist
  • admin_handbook:command_transcripts_clean
api_map 6e806670b25e…
admin_handbook 0fc808ce7fa4…
db_handbook 2026-11-08T19:59:33Z2026-11-08T19:59:34Z1
8
  • exists:db_handbook
  • exists:seed_isolation
  • db_handbook:md_min_sections:5
  • db_handbook:no_forbidden_placeholders
  • seed_isolation:md_min_sections:1
  • seed_isolation:no_forbidden_placeholders
  • produces_paths_exist
  • db_handbook:command_transcripts_clean
db_handbook bd4a9264dd18…
seed_isolation 0eef2882bd02…
seed_data 2026-11-08T19:59:40Z2026-11-08T19:59:41Z1
6
  • exists:seed_data_sql
  • exists:seed_cases_json
  • seed_data_sql:sql_parses
  • seed_data_sql:no_forbidden_placeholders
  • seed_cases_json:json_parses
  • produces_paths_exist
seed_data_sql 8014efdfa56c…
seed_cases_json 3df1c15e6aae…
seed_validate 2026-11-08T19:59:43Z2026-11-08T19:59:44Z1
3
  • exists:seed_data_contract
  • seed_data_contract:json_parses
  • produces_paths_exist
seed_data_contract b1355b69b2e7…
usecase_validate 2026-11-08T20:00:03Z2026-11-08T20:00:04Z1
10
  • exists:usecase_contract
  • exists:passed_tests
  • exists:failed_tests
  • exists:test_results
  • usecase_contract:json_parses
  • passed_tests:md_min_sections:1
  • failed_tests:md_min_sections:1
  • test_results:json_parses
  • produces_paths_exist
  • test_results:usecase_thresholds:80,70
failed_tests 233ad364d777…
passed_tests 30e8f7a4bd3b…
test_results a2f62ae3a9f7…
usecase_contract 45909d429d98…
finalize_docs 2026-11-08T20:00:10Z2026-11-08T20:00:10Z1
9
  • exists:api_integration_guide
  • exists:release_notes
  • exists:defects_json
  • api_integration_guide:md_min_sections:3
  • api_integration_guide:no_forbidden_placeholders
  • release_notes:md_min_sections:3
  • release_notes:no_forbidden_placeholders
  • defects_json:json_parses
  • produces_paths_exist
defects_json 049a9912f3de…
release_notes bb0d26c06522…
api_integration_guide 23e37a41c48e…
package_archive invalidated 2026-11-08T21:32:50Z 2026-11-08T20:10:58Z2026-11-08T21:29:35Z2
34 (final gate PASS)
  • exists:checksums
  • exists:verify_md
  • exists:rebuild_md
  • exists:provenance_md
  • exists:manifest_txt
  • exists:assetchain_log_md
  • exists:assetchain_log_json
  • exists:actions_jsonl
  • exists:sale_tar
  • checksums:file_nonempty
  • verify_md:md_min_sections:2
  • verify_md:no_forbidden_placeholders
  • rebuild_md:md_min_sections:2
  • rebuild_md:no_forbidden_placeholders
  • provenance_md:md_min_sections:2
  • provenance_md:no_forbidden_placeholders
  • manifest_txt:file_nonempty
  • assetchain_log_md:md_min_sections:1
  • assetchain_log_json:json_parses
  • actions_jsonl:file_nonempty
  • sale_tar:file_nonempty
  • produces_paths_exist
  • G8 cosign
  • G8 scan_grade
  • G8 tag_base_os
  • G8 vex_shipped
  • G8 cpu_baseline
  • G8 scout_grade_a
  • G8 script_copies
  • G8 offline_rebuild
  • G8 rebuild_manifest
  • G8 artifact_coverage
  • G8 trademark_shipped
  • G8 assetchain_coverage
sale_tar a819612b205d…
checksums 2b480e991bfa…
verify_md d15a14bc404d…
rebuild_md c5eb0d4b8b40…
manifest_txt 1e753336f51a…
actions_jsonl 6070c21c4a12…
provenance_md 828f9b21a1cc…
assetchain_log_md e9eccaec0c0f…
assetchain_log_json 71724bf0abef…

[stage_runs]

Rewinds

  • 2026-11-08T20:30:55Z: package_archive to package_archive on docs_redo (scripts/redo-docs.py --stage package_archive) [stage_events, stage_events #27280]
  • 2026-11-08T21:32:50Z: package_archive to package_archive on docs_redo (scripts/redo-docs.py --stage package_archive) [stage_events, stage_events #27427]

Model work per stage

Fully recorded

Role: writer model. Calls up to 2026-11-08T21:29:35Z.

17 calls over 5 stages

StageCallsRefusedErrorsMax attemptForced commitsReal tokensLesson rules shown
plan2001 013637 L-A183, L-A15
remediate2001 013673 L-A183, L-A15
admin_handbook4001 042250 L-A180, L-A181, L-A182, L-A183, L-A184, L-A155, L-A114, L-A25, L-A15, L-A14
db_handbook8102 079611 L-A180, L-A181, L-A182, L-A183, L-A184, L-A114, L-A15
usecase_validate1001 01777 L-A59

[micro_step_runs] [lesson_recalls]

Review

Fully recorded

Role: review model.

2 rounds, 2 counted, $0.85 recorded cost

RoundStartedCriticalMajorMinorVerdictCostCap in forceArchive reviewed
12026-11-08T20:12:12Z 003 clean to repackage [held_rounds, held_rounds #1536] $0.53 3 rounds, $40.00 b60ba96f67ec…
22026-11-08T21:30:06Z 000 clean to publish [held_rounds, held_rounds #1545] $0.32 3 rounds, $40.00 a819612b205d…

Defects

Fully recorded
  • Ledger entries21 [defects, defects where product_slug=zitadel and this tag or chain]
  • Disclosed in the archive5 [docs/defects/defects.json, entries]

21 ledger entries: by severity low 21; by status open 3, fixed-before-release 3, fixed-in-release 15.

DefectSeverityStatusFound byFixed in
RSD-zitadel-90eb99470b
The image refuses to start without ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD, although ZITADEL uses it only to create the first instance [defects, defects #183386]
lowopenruntime check—
RSD-zitadel-3068f71303
Docker 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 #183387]
lowopenheld review (review model)—
RSD-zitadel-fb477a7bd5
Release notes: Release notes print a harness artefact (wrong Host header) as a product failure under Known issues. [defects, defects #183388]
lowopenheld review (review model)—
RSD-zitadel-f3ebcddb30
Database handbook: DB_HANDBOOK.md:1815-1819: the heading appears twice with an empty '##' between; the diff adds the duplicate TOC entry '#modifications-license-compliance-continued-1'. [defects, defects #183585]
lowfixed-before-releaseheld review (review model)—
RSD-zitadel-143187799a
API guide: The cited compare ends at v4.20.0, so it does not cover v4.20.1; gh api compare v4.20.0...v4.20.1 lists no proto/ or server.go file, so the claim is true but its citation is stale. [defects, defects #183586]
lowfixed-before-releaseheld review (review model)—
RSD-zitadel-2eea7268b3
Release notes: ADMIN_HANDBOOK.md:1149 and DB_HANDBOOK.md:1057 state environment.json answers 404 unless Host matches --externalDomain; same class as carried RSD-zitadel-fb477a7bd5. [defects, defects #183587]
lowfixed-before-releaseheld review (review model)—
RSD-zitadel-62c95027bd
Admin handbook: 'Must be passed via --masterkey or --masterkeyFile' contradicts the handbook's own working --masterkeyFromEnv alternative (lines 375, 904, 1353). [defects, defects #186294]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1
RSD-zitadel-ca3927fdca
Admin handbook: States the key must come from --masterkey or --masterkeyFile, then in the next sentence allows an environment variable, which needs the third flag --masterkeyFromEnv. [defects, defects #186295]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1
RSD-zitadel-5177ba0859
Docker Hub README: Incomplete constraint in the published Hub README: a password that begins with ' or ends with a backslash also makes start-from-init fail. [defects, defects #186296]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1
RSD-zitadel-dcd32aa6f2
Admin handbook: Dangling cross-reference: 'password_reset' is an internal fact key, not a section a reader can find, so the reader is not told where the System API token comes from. [defects, defects #186297]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1
RSD-zitadel-3f8afd9128
Database handbook: 'Must be passed via --masterkeyFile or --masterkey' contradicts the handbook's own working --masterkeyFromEnv alternative (line 281). [defects, defects #186298]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1
RSD-zitadel-5e662a244e
Database handbook: Points readers to the API guide for request structures, response formats and verified examples it does not contain. [defects, defects #186299]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1
RSD-zitadel-aa887e22ac
Database handbook: Tells readers to use the PostgreSQL container's name, but the command printed below does not join that network, so the name does not resolve and start-from-init exits. [defects, defects #186300]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1
RSD-zitadel-02f69182d2
Admin handbook: Contradicts the handbook's own backup facts: stopping is not needed for a consistent dump, and the step makes readers take avoidable downtime. [defects, defects #186301]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1
RSD-zitadel-95bf4ef19b
Admin handbook: False default. ZITADEL defaults to TLS enabled; a reader who omits --tlsMode expecting plain HTTP gets a container that exits at start. [defects, defects #186302]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1
RSD-zitadel-67d6003ee8
Database handbook: False default. ZITADEL defaults to TLS enabled; a reader who omits --tlsMode expecting plain HTTP gets a container that exits at start. [defects, defects #186303]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1
RSD-zitadel-a259ac8a49
Database handbook: Omits --masterkey, which line 206 and the First boot fact (line 253) give as a valid way; the 'must' lists contradict each other. [defects, defects #186304]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1
RSD-zitadel-e77d7f5fbc
Admin handbook: The list of unusable password characters is incomplete: a PostgreSQL password that begins with a single quote or ends with a backslash also breaks start-from-init, and the text implies everything… [defects, defects #186305]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1
RSD-zitadel-95330dee32
Admin handbook: Claims the methods were observed on the build's instance; the records show only the /debug probes were exercised. [defects, defects #186306]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1
RSD-zitadel-aa7a541694
Database handbook: False: with no arguments the container does not run the server; it exits with an error. [defects, defects #186307]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1
RSD-zitadel-492b74b058
Database handbook: The API guide has no verified request examples for any API other than the /debug probes. [defects, defects #186308]
lowfixed-in-releaseheld review (review model)v4.20.1-CE-ubuntu24.04-r1

Verification

1 item not recorded
  • Reproduced before publishingyes (rebuilt digest sha256:6576281188bef2114f3de79649d7ab4ffc46f6e2c7dbcbde258706cda8ef1512 · published digest sha256:6576281188bef2114f3de79649d7ab4ffc46f6e2c7dbcbde258706cda8ef1512 · digest match yes · builder moby/buildkit:v0.31.2 · build seconds 203) [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-08T21:33:44Z · 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]
  • Image signatureverified on the index and the linux/amd64 manifest (key fingerprint 04daa92344a52dbc · at 2026-11-08T21:33:33Z) [docs/provenance/IMAGE_EVIDENCE.json, signed]
  • Image signature transparency-log entries [deliverables/provenance/PROMOTION_RECORD.json, sign_stdout_tail]
  • rebuild.json signatureSigstore bundle, release key (key fingerprint 04daa92344a52dbc · log index 3759142101 · transparency-log entry · integrated 2026-11-08T21:39:42Z) [ReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.rebuild.json.sigstore, verificationMaterial.tlogEntries[0]]
  • Signed attestations
    • kind provenance · digest sha256:a304c4761ff5ff1b07b1c4dd8551aea27626b0b348d7c254fd9c4ed16f43832c · state attached · log index 3759142254 · transparency-log entry
    • kind sbom · digest sha256:a304c4761ff5ff1b07b1c4dd8551aea27626b0b348d7c254fd9c4ed16f43832c · state attached · log index 3759142313 · transparency-log entry
    • kind vsa · digest sha256:a304c4761ff5ff1b07b1c4dd8551aea27626b0b348d7c254fd9c4ed16f43832c · state attached · log index 3759142376 · transparency-log entry
    • kind provenance · digest sha256:6576281188bef2114f3de79649d7ab4ffc46f6e2c7dbcbde258706cda8ef1512 · state attached · log index 3759142435 · transparency-log entry
    • kind sbom · digest sha256:6576281188bef2114f3de79649d7ab4ffc46f6e2c7dbcbde258706cda8ef1512 · state attached · log index 3759142492 · transparency-log entry
    • kind vsa · digest sha256:6576281188bef2114f3de79649d7ab4ffc46f6e2c7dbcbde258706cda8ef1512 · state attached · log index 3759142546 · transparency-log entry
    (at 2026-11-08T21:39:43Z) [attestations.json, results]
  • Pins recorddocs/PINS.md and docs/provenance/PINS.json in the archive (https://readystack.dev/products/zitadel/recipe) [docs/provenance/PINS.json]

Offline clean-room rebuilds

  • 2026-11-08T20:12:19Z on build host 1 (Docker-in-Docker daemon with --network none): bit for bit yes, digest match yes, customer verify yes
    rebuilt sha256:6576281188bef2114f3de79649d7ab4ffc46f6e2c7dbcbde258706cda8ef1512 [clean-room rebuild ledger, runs[665]]
  • 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-08T19:58:27Z [stage_runs, stage_runs chain 898 stage publish_image]
  • Archive manifests written2026-11-08T21:37:08Z [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 743 · probed 2026-11-08T19:53:10Z · source build_kit) [release_images, isa_level_hard]

History

2 events
  • 2026-11-08T21:41:17Z generated: by KitForge release/build_trail.py · generator commit f5a5de65751a9a2ee38814f31162a0654a970dee
  • 2026-11-08T21:43:00Z publication: promoted at 2026-11-08T21:41:57Z · promoted digest sha256:a304c4761ff5ff1b07b1c4dd8551aea27626b0b348d7c254fd9c4ed16f43832c · promotion method imagetools_create_retag_by_digest_no_rebuild · site event 391 · checklist status complete · checklist at 2026-11-08T21:43:00Z · record workspace: deliverables/provenance/PROMOTION_RECORD.json, RELEASE_CHECKLIST.json

Records

25 records
RecordWhere it isRows
docs/defects/defects.jsoninside the archive (ReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.tar.gz)—
docs/provenance/IMAGE_EVIDENCE.jsoninside the archive (ReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.tar.gz)—
docs/provenance/LOCKED_DIGEST.txtinside the archive (ReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.tar.gz)—
docs/provenance/PINS.jsoninside the archive (ReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.tar.gz)—
docs/provenance/REPRO_VERIFICATION.jsoninside the archive (ReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.tar.gz)—
docs/provenance/SOURCE_TREE_HASH.jsoninside the archive (ReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.tar.gz)—
MANIFEST.jsonbeside the archive (prodasset /data/production/zitadel/v4.20.1-CE-ubuntu24.04-r1/), as staged for publishing—
PUBLISH_MANIFEST.jsonbeside the archive (prodasset /data/production/zitadel/v4.20.1-CE-ubuntu24.04-r1/), as staged for publishing—
ReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.rebuild.jsonbeside the archive (prodasset /data/production/zitadel/v4.20.1-CE-ubuntu24.04-r1/), as staged for publishing—
ReadyStack-zitadel-v4.20.1-CE-ubuntu24.04-r1.rebuild.json.sigstorebeside the archive (prodasset /data/production/zitadel/v4.20.1-CE-ubuntu24.04-r1/), as staged for publishing—
SCOUT_EVIDENCE.jsonbeside the archive (prodasset /data/production/zitadel/v4.20.1-CE-ubuntu24.04-r1/), as staged for publishing—
clean-room rebuild ledgerthe clean-room rebuild ledger (runstate/audit-2026-09/bit4bit.json, not published)—
build_requestssadb, ReadyStack's engine database (not published)588
chainssadb, ReadyStack's engine database (not published)898
defectssadb, ReadyStack's engine database (not published)zitadel v4.20.1-CE-ubuntu24.04-r1
drive_runssadb, ReadyStack's engine database (not published)chain 898
held_roundssadb, ReadyStack's engine database (not published)chain 898
lesson_recallssadb, ReadyStack's engine database (not published)chain 898
micro_step_runssadb, ReadyStack's engine database (not published)chain 898
release_imagessadb, ReadyStack's engine database (not published)zitadel v4.20.1-CE-ubuntu24.04-r1
stage_eventssadb, ReadyStack's engine database (not published)chain 898
stage_runssadb, ReadyStack's engine database (not published)chain 898
attestations.jsonthe chain's workspace on the controller (not published)—
deliverables/provenance/PROMOTION_RECORD.jsonthe chain's workspace on the controller (not published)—
g8_result.jsonthe chain's workspace on the controller (not published)—