OpenProject v17.9.4-CE-ubuntu24.04-r1 build trail

How ReadyStack built readystack/openproject:v17.9.4-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/openproject:v17.9.4-CE-ubuntu24.04-r1
  • Index digestsha256:551136be2e65844b36b48bc747e83845bdff162532918af621e86e9000b0bc30
  • linux/amd64 digestsha256:20a73b682fada579da523125e0785e3ed152a265d989049ce8c2b8503bf533bf
  • ArchiveReadyStack-openproject-v17.9.4-CE-ubuntu24.04-r1.tar.gz
  • Archive SHA-256 now612a8bd0cde7de7faeec718b2c40b96f94b5e362f136927ec964f7c139884b08
  • 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-openproject-v17.9.4-CE-ubuntu24.04-r1.trail.json.sigstore ReadyStack-openproject-v17.9.4-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
  • ProductOpenProject (openproject) [MANIFEST.json]
  • Release tagv17.9.4-CE-ubuntu24.04-r1 [MANIFEST.json]
  • Imagereadystack/openproject:v17.9.4-CE-ubuntu24.04-r1 [MANIFEST.json]
  • Image index digestsha256:551136be2e65844b36b48bc747e83845bdff162532918af621e86e9000b0bc30 [docs/provenance/LOCKED_DIGEST.txt]
  • linux/amd64 image digestsha256:20a73b682fada579da523125e0785e3ed152a265d989049ce8c2b8503bf533bf [ReadyStack-openproject-v17.9.4-CE-ubuntu24.04-r1.rebuild.json, subject.image_manifest_digest]
  • ArchiveReadyStack-openproject-v17.9.4-CE-ubuntu24.04-r1.tar.gz (bytes 1056021097) [MANIFEST.json]
  • Archive sha256 at publish370bbb0809dd236bcff896480e603bd2db3bccad311a30d3d89ddf76a42e8a12 [MANIFEST.json, repack_history[0].previous_tarball_sha256]
  • Archive sha256 now612a8bd0cde7de7faeec718b2c40b96f94b5e362f136927ec964f7c139884b08 [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 370bbb0809dd236bcff896480e603bd2db3bccad311a30d3d89ddf76a42e8a12 · sha256 612a8bd0cde7de7faeec718b2c40b96f94b5e362f136927ec964f7c139884b08 · replaced BUILD_OFFLINE.sh, docs/docker/BUILD_OFFLINE.sh, docs/offline/BUILD_OFFLINE.sh, rebuild.json
    [MANIFEST.json, repack_history]
  • Upstream repositoryhttps://github.com/opf/openproject [docs/provenance/SOURCE_TREE_HASH.json]
  • Upstream refv17.9.4 [docs/provenance/SOURCE_TREE_HASH.json]
  • Upstream commit7ef4007f9b355c9f1c71e288e9064e65547721e1 [docs/provenance/SOURCE_TREE_HASH.json]
  • Source tree hashc98f965fb73bc18f125beb0b51e2bd7d2bfc596ee7ad84a96671aa0c034990e6 (files 23554) [docs/provenance/SOURCE_TREE_HASH.json, tree_listing_sha256 (sha256 of the sorted file listing)]
  • Kit tree hashsha256:4f8b526d4eff85b4d950551b0a33c60bdbaa6181f4d4e87aca0a3fa4775c7820 [ReadyStack-openproject-v17.9.4-CE-ubuntu24.04-r1.rebuild.json, inputs.tree_hash]
  • SOURCE_DATE_EPOCH1792994405 (utc 2026-10-26T06:00:05Z) [ReadyStack-openproject-v17.9.4-CE-ubuntu24.04-r1.rebuild.json, inputs.source_date_epoch]
  • Base images
    • ref ubuntu:24.04@sha256:24737cef17f4e22b1977df7d9a05e77c4e28b7da5b8911f8d8ccda136bf3573c · platform digest sha256:78d4744ead1f5b19b04d0df558ab182a5300903900755e515b2ca4d10eb2044d
    [ReadyStack-openproject-v17.9.4-CE-ubuntu24.04-r1.rebuild.json, bases]
  • BuildKitmoby/buildkit:v0.31.2 (image digest sha256:e0e67ea9c4bb07bdef683e29f70f3b623d1eb9c82274a9ec04e6bb0511449fb0) [ReadyStack-openproject-v17.9.4-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
  • Chain716 (created 2026-10-27T18:50:21Z · trigger customer_request · upstream version v17.9.4) [chains, chains #716]
  • Requestbuild request #391 (rebuild) (requested at 2026-10-27T04:43:52Z · requested by kitforge-agent · version v17.9.4) [build_requests, build_requests #391]
  • Reasonretarget to v17.9.4: a newer upstream release (rule 1) [build_requests, build_requests #391 request_reason]
  • Supersedesreadystack/openproject:v17.9.2-CE-ubuntu24.04-r1 (chain 552) [chains, chains #552]

The path through the harness

2 items not recorded

1 chain · 5 drives · 18 stages · 3 rewinds

Chain 716 release · shipped

Created 2026-10-27T18:50:21Z, upstream v17.9.4, build request 391 [chains, chains #716]

DriveStartedMinutesBuild hostHow it stopped
2312026-10-27T18:50:57Z91.4build host 1 withhold-publish ready_to_ship [drive_runs, drive_runs #231] rebuilt from a build line's log
2342026-10-28T00:20:04Z10.4build host 1 withhold-publish ready_to_ship [drive_runs, drive_runs #234] rebuilt from a build line's log
2412026-10-28T01:31:32Z0.3build host 1 withhold-publish stage_failed at package_archive [drive_runs, drive_runs #241] rebuilt from a build line's log
2752026-10-29T17:56:56Z25.1build host 1 withhold-publish ready_to_ship [drive_runs, drive_runs #275] rebuilt from a build line's log
2772026-10-29T18:37:11Z15.2build host 1 publish-held shipped [drive_runs, drive_runs #277] rebuilt from a build line's log

Stages, in order

StageFirst startPassedAttemptsGate checks passedArtifacts (SHA-256)
intake 2026-10-27T18:51:02Z2026-10-27T18:51:03Z1
4
  • exists:order_json
  • order_json:json_parses
  • order_json:no_forbidden_placeholders
  • produces_paths_exist
—
acquire 2026-10-27T18:51:24Z2026-10-27T18:51:25Z1
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
—
plan 2026-10-27T18:52:06Z2026-10-27T18:52:06Z1
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
—
assemble_kit 2026-10-27T19:24:11Z2026-10-27T19:24:12Z1
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
—
remediate 2026-10-27T19:25:15Z2026-10-27T19:25:16Z1
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
—
build_kit 2026-10-27T19:47:16Z2026-10-27T19:47:17Z1
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
—
verdict 2026-10-27T19:50:18Z2026-10-27T19:50:18Z1
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
—
publish_image 2026-10-27T19:51:37Z2026-10-27T19:51:38Z1
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
—
boot_instance 2026-10-27T19:53:39Z2026-10-27T19:53:41Z2
3
  • exists:instance_handle
  • instance_handle:json_parses
  • produces_paths_exist
—
sbom 2026-10-27T19:54:29Z2026-10-27T19:54:30Z1
5
  • exists:sbom_json
  • exists:sbom_md
  • sbom_json:json_parses
  • sbom_md:md_min_sections:1
  • produces_paths_exist
—
schema_discovery 2026-10-27T19:54:33Z2026-10-27T19:54:34Z1
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
—
admin_handbook 2026-10-27T19:54:45Z2026-10-27T19:54:46Z1
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
—
db_handbook 2026-10-27T19:55:15Z2026-10-27T19:55:16Z1
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
—
seed_data 2026-10-27T19:55:26Z2026-10-27T19:55:27Z1
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_validate 2026-10-27T19:55:30Z2026-10-27T19:55:31Z1
3
  • exists:seed_data_contract
  • seed_data_contract:json_parses
  • produces_paths_exist
—
usecase_validate 2026-10-27T19:55:53Z2026-10-27T19:55:55Z1
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
—
finalize_docs 2026-10-27T19:56:01Z2026-10-27T19:56:02Z1
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
—
package_archive 2026-10-27T20:22:16Z2026-10-29T18:52:23Z5
33 (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 scout_grade_a
  • G8 script_copies
  • G8 three_way_sha
  • G8 offline_rebuild
  • G8 rebuild_manifest
  • G8 artifact_coverage
  • G8 assetchain_coverage
—

[stage_runs]

Rewinds

  • 2026-10-27T20:48:47Z: package_archive to package_archive on docs_redo (scripts/redo-docs.py) [stage_events, stage_events #2181]
  • 2026-10-28T00:57:52Z: package_archive to package_archive on docs_redo (scripts/redo-docs.py) [stage_events, stage_events #2182]
  • 2026-10-29T18:36:43Z: package_archive to package_archive on docs_redo (scripts/redo-docs.py) [stage_events, stage_events #318]
  • 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 recorded

Role: writer model. Calls up to 2026-10-29T18:52:23Z.

21 calls over 6 stages

StageCallsRefusedErrorsMax attemptForced commitsReal tokensLesson rules shown
plan2001 not recordednot recorded —
remediate2001 not recordednot recorded —
admin_handbook6102 not recordednot recorded —
db_handbook4001 not recordednot recorded —
usecase_validate2001 not recordednot recorded —
finalize_docs5001 not recordednot 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 recorded

Role: review model.

3 rounds, 3 counted, $1.86 recorded cost

RoundStartedCriticalMajorMinorVerdictCostCap in forceArchive reviewed
12026-10-27T20:23:34Z 011 findings to repackage [held_rounds, held_rounds #135] rebuilt from a held-review state file $0.73 not recorded not recorded
22026-10-28T00:30:57Z 002 clean to repackage [held_rounds, held_rounds #136] rebuilt from a held-review state file $0.69 not recorded not recorded
32026-10-29T18:23:40Z 000 clean to publish [held_rounds, held_rounds #137] rebuilt from a held-review state file $0.44 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 entries13 [defects, defects where product_slug=openproject and this tag or chain]
  • Disclosed in the archive7 [docs/defects/defects.json, entries]

13 ledger entries: by severity high 2, low 10, medium 1; by status open 2, fixed-before-release 5, fixed-in-release 6.

DefectSeverityStatusFound byFixed in
RSD-openproject-e6579905f9
Ships a known default credential (admin) [defects, defects #119078]
highopenbuild strategy record—
RSD-openproject-629db79c27
The Docker Hub run example puts POSTGRES_PASSWORD, DATABASE_URL, SECRET_KEY_BASE and OPENPROJECT_SEED_ADMIN_USER_PASSWORD on the command line (-e), where the shell's history keeps them [defects, defects #119222]
lowfixed-before-releaseagent case study—
RSD-openproject-4aca9b408b
API guide: Contradicts the REST API Authentication section and the measured behaviour: the admin user name and password are not accepted by /api/v3. [defects, defects #119697]
highfixed-before-releaseheld review (review model)—
RSD-openproject-3ce89af486
Admin handbook: Re-running the seeder against an existing database without the variable does not reset the administrator to admin; the wording suggests an upgrade can revert the password. [defects, defects #119698]
lowfixed-before-releaseheld review (review model)—
RSD-openproject-17671ec201
Admin handbook: Repeated path list in the upstream comparison table (garbled generated text). [defects, defects #123702]
lowfixed-before-releaseheld review (review model)—
RSD-openproject-a3282c89de
Admin handbook: Repeated path list in the upstream comparison table (garbled generated text). [defects, defects #123703]
lowfixed-before-releaseheld review (review model)—
RSD-openproject-e7e34c58a7
CVE-2026-111497 in libbrotli1 1.1.0-2build2 is on CISA's Known Exploited Vulnerabilities list [defects, defects #136143]
mediumfixed-in-releaseimage scanv17.9.4-CE-ubuntu24.04-r1
RSD-openproject-e5a4f185d6
Database handbook: Contradicts the admin handbook ('A PostgreSQL 16 database server') and API guide ('PostgreSQL 16 is required'); only 16 was run (and 17 recorded in the release notes), so 'or later' is unsupported. [defects, defects #137835]
lowfixed-in-releaseheld review (review model)v17.9.4-CE-ubuntu24.04-r1
RSD-openproject-677c511306
API guide: The sentence implies only the default password triggers the forced change. [defects, defects #137836]
lowfixed-in-releaseheld review (review model)v17.9.4-CE-ubuntu24.04-r1
RSD-openproject-5ff0dd4b27
Admin handbook: curl -f fails only on HTTP >= 400. [defects, defects #137837]
lowfixed-in-releaseheld review (review model)v17.9.4-CE-ubuntu24.04-r1
RSD-openproject-1b3ca7b641
API guide: Same curl -f semantics: a 3xx answer passes the health check. [defects, defects #137838]
lowfixed-in-releaseheld review (review model)v17.9.4-CE-ubuntu24.04-r1
RSD-openproject-77dff964f0
Admin handbook: The 'Starting the Worker Container' example has an elided DATABASE_URL and no --network or --name, so it cannot run as written and does not match the worker command in 'Operating facts'. [defects, defects #137839]
lowfixed-in-releaseheld review (review model)v17.9.4-CE-ubuntu24.04-r1
RSD-openproject-19bdd371c3
Admin handbook: Only the API guide (L954) says the password in DATABASE_URL must be percent-encoded. [defects, defects #137840]
lowopenheld review (review model)—

Verification

2 items not recorded
  • Reproduced before publishingyes (rebuilt digest sha256:20a73b682fada579da523125e0785e3ed152a265d989049ce8c2b8503bf533bf · published digest sha256:20a73b682fada579da523125e0785e3ed152a265d989049ce8c2b8503bf533bf · digest match yes · builder moby/buildkit:v0.31.2 · build seconds 618) [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 716 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-29T18:38:02Z · failing Docker Scout counts 157 packages with copyleft licences (CDDL, GPL, LGPL, MPL), 146 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-29T18:52:40Z · 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 #1560]
  • Image signatureverified on the index and the linux/amd64 manifest (key fingerprint 04daa92344a52dbc · at 2026-10-29T18:37:19Z) [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 3627262140 · transparency-log entry · integrated 2026-11-01T10:45:29Z) [ReadyStack-openproject-v17.9.4-CE-ubuntu24.04-r1.rebuild.json.sigstore, verificationMaterial.tlogEntries[0]]
  • Signed attestations
    • kind provenance · digest sha256:551136be2e65844b36b48bc747e83845bdff162532918af621e86e9000b0bc30 · state attached · log index 3573932845 · transparency-log entry
    • kind sbom · digest sha256:551136be2e65844b36b48bc747e83845bdff162532918af621e86e9000b0bc30 · state attached · log index 3573937179 · transparency-log entry
    • kind vsa · digest sha256:551136be2e65844b36b48bc747e83845bdff162532918af621e86e9000b0bc30 · state attached · log index 3573943051 · transparency-log entry
    • kind provenance · digest sha256:20a73b682fada579da523125e0785e3ed152a265d989049ce8c2b8503bf533bf · state attached · log index 3573946846 · transparency-log entry
    • kind sbom · digest sha256:20a73b682fada579da523125e0785e3ed152a265d989049ce8c2b8503bf533bf · state attached · log index 3573949329 · transparency-log entry
    • kind vsa · digest sha256:20a73b682fada579da523125e0785e3ed152a265d989049ce8c2b8503bf533bf · state attached · log index 3573954936 · transparency-log entry
    (at 2026-10-29T18:48:14Z) [attestations.json, results]

Offline clean-room rebuilds

  • 2026-10-27T20:23:40Z on build host 1 (Docker-in-Docker daemon with --network none): bit for bit yes, digest match yes, customer verify yes
    rebuilt sha256:20a73b682fada579da523125e0785e3ed152a265d989049ce8c2b8503bf533bf [clean-room rebuild ledger, runs[486]]
  • 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-27T19:51:38Z [stage_runs, stage_runs chain 716 stage publish_image]
  • Release tag promoted2026-10-29T18:51:06Z (method imagetools_create_retag_by_digest_no_rebuild · digest sha256:551136be2e65844b36b48bc747e83845bdff162532918af621e86e9000b0bc30 · tag readystack/openproject:v17.9.4-CE-ubuntu24.04-r1) [deliverables/provenance/PROMOTION_RECORD.json, promoted_at]
  • Archive manifests written2026-10-29T18:43:36Z [PUBLISH_MANIFEST.json, published_at]
  • Archive cut over on prodasset, package_archive passed2026-10-29T18:52:23Z [stage_runs, stage_runs chain 716 stage package_archive]
  • Cut-over markerpresent (chain 716) [.cutover.json]
  • Release checklist and site event2026-10-29T18:52:21Z (status complete · site event 284 · 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 image630 (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 1254 · probed 2026-11-02T17:06:52Z · 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
RecordWhere it isRows
docs/defects/defects.jsoninside the archive (ReadyStack-openproject-v17.9.4-CE-ubuntu24.04-r1.tar.gz)—
docs/provenance/IMAGE_EVIDENCE.jsoninside the archive (ReadyStack-openproject-v17.9.4-CE-ubuntu24.04-r1.tar.gz)—
docs/provenance/LOCKED_DIGEST.txtinside the archive (ReadyStack-openproject-v17.9.4-CE-ubuntu24.04-r1.tar.gz)—
docs/provenance/REPRO_VERIFICATION.jsoninside the archive (ReadyStack-openproject-v17.9.4-CE-ubuntu24.04-r1.tar.gz)—
docs/provenance/SOURCE_TREE_HASH.jsoninside the archive (ReadyStack-openproject-v17.9.4-CE-ubuntu24.04-r1.tar.gz)—
.cutover.jsonbeside the archive (prodasset /data/production/openproject/v17.9.4-CE-ubuntu24.04-r1/)—
MANIFEST.jsonbeside the archive (prodasset /data/production/openproject/v17.9.4-CE-ubuntu24.04-r1/)—
PUBLISH_MANIFEST.jsonbeside the archive (prodasset /data/production/openproject/v17.9.4-CE-ubuntu24.04-r1/)—
ReadyStack-openproject-v17.9.4-CE-ubuntu24.04-r1.rebuild.jsonbeside the archive (prodasset /data/production/openproject/v17.9.4-CE-ubuntu24.04-r1/)—
ReadyStack-openproject-v17.9.4-CE-ubuntu24.04-r1.rebuild.json.sigstorebeside the archive (prodasset /data/production/openproject/v17.9.4-CE-ubuntu24.04-r1/)—
SCOUT_EVIDENCE.jsonbeside the archive (prodasset /data/production/openproject/v17.9.4-CE-ubuntu24.04-r1/)—
clean-room rebuild ledgerthe clean-room rebuild ledger (runstate/audit-2026-09/bit4bit.json, not published)—
build_requestssadb, ReadyStack's engine database (not published)391
chainssadb, ReadyStack's engine database (not published)716
defectssadb, ReadyStack's engine database (not published)openproject v17.9.4-CE-ubuntu24.04-r1
drive_runssadb, ReadyStack's engine database (not published)chain 716
held_roundssadb, ReadyStack's engine database (not published)chain 716
image_scanssadb, ReadyStack's engine database (not published)1560
micro_step_runssadb, ReadyStack's engine database (not published)chain 716
release_imagessadb, ReadyStack's engine database (not published)openproject v17.9.4-CE-ubuntu24.04-r1
stage_eventssadb, ReadyStack's engine database (not published)chain 716
stage_runssadb, ReadyStack's engine database (not published)chain 716
attestations.jsonthe chain's workspace on the controller (not published)—
deliverables/provenance/PROMOTION_RECORD.jsonthe chain's workspace on the controller (not published)—
deliverables/provenance/RELEASE_CHECKLIST.jsonthe chain's workspace on the controller (not published)—