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

How ReadyStack built readystack/openproject:v17.9.6-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.6-CE-ubuntu24.04-r1
  • Index digestsha256:0740219dde321210d6bb8a3a2043751370fd10f1accd187b01a039df6c704abe
  • linux/amd64 digestsha256:86871afdd2f05cd2be21a058efec80b08b43d042e242512176b457f6a2ee015a
  • ArchiveReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.tar.gz
  • Archive SHA-256 now0f5f9aa0aa6155677a50cfb35c3ab40769d5fa5d6cd1ee55a99419e0ab3c8244
  • Pins recorddocs/PINS.md, docs/provenance/PINS.json in the archive (since generated)
  • Generated2026-11-07T11:01:43Z 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-openproject-v17.9.6-CE-ubuntu24.04-r1.trail.json.sigstore ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.trail.json

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

Identity

Fully recorded
  • ProductOpenProject (openproject) [MANIFEST.json]
  • Release tagv17.9.6-CE-ubuntu24.04-r1 [MANIFEST.json]
  • Imagereadystack/openproject:v17.9.6-CE-ubuntu24.04-r1 [MANIFEST.json]
  • Image index digestsha256:0740219dde321210d6bb8a3a2043751370fd10f1accd187b01a039df6c704abe [docs/provenance/LOCKED_DIGEST.txt]
  • linux/amd64 image digestsha256:86871afdd2f05cd2be21a058efec80b08b43d042e242512176b457f6a2ee015a [ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.rebuild.json, subject.image_manifest_digest]
  • ArchiveReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.tar.gz (bytes 1058761567) [MANIFEST.json]
  • Archive sha256 at publish0f5f9aa0aa6155677a50cfb35c3ab40769d5fa5d6cd1ee55a99419e0ab3c8244 [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/opf/openproject [docs/provenance/SOURCE_TREE_HASH.json]
  • Upstream refv17.9.6 [docs/provenance/SOURCE_TREE_HASH.json]
  • Upstream commitdb9e2056bba1cb3d899dee00704cdce463ea8527 [docs/provenance/SOURCE_TREE_HASH.json]
  • Source tree hashc6518920eed798e9f4226018ce0e930de14e06c08c04746e66c0bc470654fbd8 (files 23567) [docs/provenance/SOURCE_TREE_HASH.json, tree_listing_sha256 (sha256 of the sorted file listing)]
  • Kit tree hashsha256:0cec1ac3e4396161b0521eed02542964722b84d6fce0d16aabdfe95cff03aad2 [ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.rebuild.json, inputs.tree_hash]
  • SOURCE_DATE_EPOCH1793367091 (utc 2026-10-30T13:31:31Z) [ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.rebuild.json, inputs.source_date_epoch]
  • Base images
    • ref ubuntu:24.04@sha256:fe81560990fae86dc4743202b2cb4d3df98d0bcf949173cecef15ce1127ef852 · platform digest sha256:78d4744ead1f5b19b04d0df558ab182a5300903900755e515b2ca4d10eb2044d
    [ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.rebuild.json, bases]
  • BuildKitmoby/buildkit:v0.31.2 (image digest sha256:e0e67ea9c4bb07bdef683e29f70f3b623d1eb9c82274a9ec04e6bb0511449fb0) [ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.rebuild.json, engine]
  • Engine commit(s)
    • commit 0185b65902e7de72275f275e796ced5f2061c824 · dirty yes · first drive 3621
    • commit 1965bb7c468fd301b7164e27ef82448632bd34f4 · dirty yes · first drive 3641
    [drive_runs, engine_sha]

Why this release exists

Fully recorded
  • Chain852 (created 2026-11-07T08:19:16Z · trigger customer_request · upstream version v17.9.6) [chains, chains #852]
  • Requestbuild request #528 (rebuild) (requested at 2026-11-07T02:02:21Z · requested by kitforge-agent · version v17.9.6) [build_requests, build_requests #528]
  • Reasonretarget to v17.9.6: a newer upstream release (rule 1) [build_requests, build_requests #528 request_reason]
  • Supersedesreadystack/openproject:v17.9.4-CE-ubuntu24.04-r1 (chain 716) [chains, chains #716]

The path through the harness

Fully recorded

1 chain · 2 drives · 18 stages · 1 rewind

Chain 852 release · ready_to_ship

Created 2026-11-07T08:19:16Z, upstream v17.9.6, build request 528 [chains, chains #852]

DriveStartedMinutesBuild hostHow it stopped
36212026-11-07T08:19:56Z109.7build host 5 withhold-publish ready_to_ship at package_archive; 19 ticks [drive_runs, drive_runs #3621]
36412026-11-07T10:44:57Z—build host 5 publish-held not recorded [drive_runs, drive_runs #3641]

Stages, in order

StageFirst startPassedAttemptsGate checks passedArtifacts (SHA-256)
intake 2026-11-07T08:20:06Z2026-11-07T08:20:07Z1
4
  • exists:order_json
  • order_json:json_parses
  • order_json:no_forbidden_placeholders
  • produces_paths_exist
order_json 0313f3141ee6…
acquire 2026-11-07T08:20:40Z2026-11-07T08:20: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 ac5edef2c980…
license_file 8ceb4b9ee5ad…
custody_inputs d7b1c85ee788…
source_tree_hash 66f9a8929c19…
source_file_manifest 132ad87509e7…
plan 2026-11-07T08:21:20Z2026-11-07T08:21:21Z1
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 436b43fd768b…
input_pin_plan e4dafccbbb1e…
toolchain_lock cc43d0983cca…
assemble_kit 2026-11-07T08:58:31Z2026-11-07T08:58:31Z1
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 843956a25404…
build_recipe f60f02e5e5f3…
system_pinning fabe19a297e1…
build_offline_sh 6633aa31b6b4…
generate_sbom_sh ce0f1e6f1e70…
first_boot_health 84da61ae80e3…
verify_offline_sh 3e8184ea230c…
base_image_digests f6b682f401cc…
dockerfile_offline 843956a25404…
first_build_digest 336fa721d317…
remediate 2026-11-07T08:59:04Z2026-11-07T08:59:05Z1
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 bb8cefdc9f25…
security_report 338c7e635383…
build_kit 2026-11-07T09:28:47Z2026-11-07T09:28:48Z1
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 e0592c37002f…
locked_digest 3880082390c1…
freeze_manifest 3bb61822f703…
offline_rebuild_transcript 9b60add1de90…
verdict 2026-11-07T09:33:18Z2026-11-07T09:33:19Z1
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 0bb0c4467a24…
publish_image 2026-11-07T09:35:14Z2026-11-07T09:35:15Z1
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 a771245dd132…
promotion_record 223137a49626…
boot_instance 2026-11-07T09:38:02Z2026-11-07T09:38:06Z2
3
  • exists:instance_handle
  • instance_handle:json_parses
  • produces_paths_exist
instance_handle fdeced32ff3d…
sbom 2026-11-07T09:39:13Z2026-11-07T09:39:14Z1
5
  • exists:sbom_json
  • exists:sbom_md
  • sbom_json:json_parses
  • sbom_md:md_min_sections:1
  • produces_paths_exist
sbom_md 10a818f013b3…
sbom_json 905d950e612f…
schema_discovery 2026-11-07T09:39:16Z2026-11-07T09:39:17Z1
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 5cbb51d66fd3…
dependency_tree 7f488bcfa3bc…
table_classification 498e5868e34b…
admin_handbook 2026-11-07T09:39:24Z2026-11-07T09:39:25Z1
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 5f1aeb6c0929…
admin_handbook a3b21ec0a6af…
db_handbook 2026-11-07T09:39:35Z2026-11-07T09:39:36Z1
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 11959582898b…
seed_isolation 4336cb14e5d3…
seed_data 2026-11-07T09:39:41Z2026-11-07T09:39:42Z1
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 403d148cad26…
seed_cases_json 1a0e25bf0c41…
seed_validate 2026-11-07T09:39:44Z2026-11-07T09:39:45Z1
3
  • exists:seed_data_contract
  • seed_data_contract:json_parses
  • produces_paths_exist
seed_data_contract 04324a78a9ff…
usecase_validate 2026-11-07T09:40:06Z2026-11-07T09:40:07Z1
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 b2247b16f5f7…
passed_tests 7081a5a3bcde…
test_results 3ec1dd160d6c…
usecase_contract 2c4e0150bc5b…
finalize_docs 2026-11-07T09:40:13Z2026-11-07T09:40:14Z1
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 122726f79c15…
release_notes ba29f1eaa04c…
api_integration_guide 58d864be4b36…
package_archive invalidated 2026-11-07T10:44:27Z 2026-11-07T10:09:33Z2026-11-07T10:09:36Z1
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 78fb9f48b4a5…
checksums 9a98bd1d6cad…
verify_md 398d91e550ab…
rebuild_md 5659c2c712b8…
manifest_txt 1833b4065d9c…
actions_jsonl 8ed85a374e68…
provenance_md 9ea3c0771fd4…
assetchain_log_md e9eccaec0c0f…
assetchain_log_json abac3d84caad…

[stage_runs]

Rewinds

  • 2026-11-07T10:44:27Z: package_archive to package_archive on docs_redo (scripts/redo-docs.py --stage package_archive) [stage_events, stage_events #24574]

Model work per stage

Fully recorded

Role: writer model. Calls up to 2026-11-07T10:09:36Z.

5 calls over 3 stages

StageCallsRefusedErrorsMax attemptForced commitsReal tokensLesson rules shown
plan2001 09269 L-A183, L-A15
remediate2001 09272 L-A183, L-A15
usecase_validate1001 01558 L-A59

[micro_step_runs] [lesson_recalls]

Review

Fully recorded

Role: review model.

1 round, 1 counted, $0.43 recorded cost

RoundStartedCriticalMajorMinorVerdictCostCap in forceArchive reviewed
12026-11-07T10:10:55Z 000 clean to publish [held_rounds, held_rounds #1456] $0.43 3 rounds, $40.00 78fb9f48b4a5…

Defects

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

2 ledger entries: by severity high 1, low 1; by status open 1, fixed-before-release 1.

DefectSeverityStatusFound byFixed in
RSD-openproject-abdcb7732c
Ships a known default credential (admin) [defects, defects #167376]
highopenbuild strategy record—
RSD-openproject-1f3438f371
Admin handbook: Only the API guide (L954) says the password in DATABASE_URL must be percent-encoded. [defects, defects #167377]
lowfixed-before-releaseheld review (review model)—

Verification

1 item not recorded
  • Reproduced before publishingyes (rebuilt digest sha256:86871afdd2f05cd2be21a058efec80b08b43d042e242512176b457f6a2ee015a · published digest sha256:86871afdd2f05cd2be21a058efec80b08b43d042e242512176b457f6a2ee015a · digest match yes · builder moby/buildkit:v0.31.2 · build seconds 812) [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-07T10:46:20Z · 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]
  • Image signatureverified on the index and the linux/amd64 manifest (key fingerprint 04daa92344a52dbc · at 2026-11-07T10:45:07Z) [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 3736271754 · transparency-log entry · integrated 2026-11-07T10:59:45Z) [ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.rebuild.json.sigstore, verificationMaterial.tlogEntries[0]]
  • Signed attestations
    • kind provenance · digest sha256:0740219dde321210d6bb8a3a2043751370fd10f1accd187b01a039df6c704abe · state attached · log index 3736277078 · transparency-log entry
    • kind sbom · digest sha256:0740219dde321210d6bb8a3a2043751370fd10f1accd187b01a039df6c704abe · state attached · log index 3736280520 · transparency-log entry
    • kind vsa · digest sha256:0740219dde321210d6bb8a3a2043751370fd10f1accd187b01a039df6c704abe · state attached · log index 3736283283 · transparency-log entry
    • kind provenance · digest sha256:86871afdd2f05cd2be21a058efec80b08b43d042e242512176b457f6a2ee015a · state attached · log index 3736285802 · transparency-log entry
    • kind sbom · digest sha256:86871afdd2f05cd2be21a058efec80b08b43d042e242512176b457f6a2ee015a · state attached · log index 3736288277 · transparency-log entry
    • kind vsa · digest sha256:86871afdd2f05cd2be21a058efec80b08b43d042e242512176b457f6a2ee015a · state attached · log index 3736291586 · transparency-log entry
    (at 2026-11-07T10:59:45Z) [attestations.json, results]
  • Pins recorddocs/PINS.md and docs/provenance/PINS.json in the archive (https://readystack.dev/products/openproject/recipe) [docs/provenance/PINS.json]

Offline clean-room rebuilds

  • 2026-11-07T10:11:03Z on build host 5 (Docker-in-Docker daemon with --network none): bit for bit yes, digest match yes, customer verify yes
    rebuilt sha256:86871afdd2f05cd2be21a058efec80b08b43d042e242512176b457f6a2ee015a [clean-room rebuild ledger, runs[619]]
  • 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-07T09:35:15Z [stage_runs, stage_runs chain 852 stage publish_image]
  • Archive manifests written2026-11-07T10:53:17Z [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 1254 · probed 2026-11-07T09:14:57Z · source build_kit) [release_images, isa_level_hard]

History

2 events
  • 2026-11-07T11:01:43Z generated: by KitForge release/build_trail.py · generator commit 1965bb7c468fd301b7164e27ef82448632bd34f4
  • 2026-11-07T11:04:43Z publication: promoted at 2026-11-07T11:02:22Z · promoted digest sha256:0740219dde321210d6bb8a3a2043751370fd10f1accd187b01a039df6c704abe · promotion method imagetools_create_retag_by_digest_no_rebuild · site event 346 · checklist status complete · checklist at 2026-11-07T11:04:43Z · record workspace: deliverables/provenance/PROMOTION_RECORD.json, RELEASE_CHECKLIST.json

Records

25 records
RecordWhere it isRows
docs/defects/defects.jsoninside the archive (ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.tar.gz)—
docs/provenance/IMAGE_EVIDENCE.jsoninside the archive (ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.tar.gz)—
docs/provenance/LOCKED_DIGEST.txtinside the archive (ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.tar.gz)—
docs/provenance/PINS.jsoninside the archive (ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.tar.gz)—
docs/provenance/REPRO_VERIFICATION.jsoninside the archive (ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.tar.gz)—
docs/provenance/SOURCE_TREE_HASH.jsoninside the archive (ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.tar.gz)—
MANIFEST.jsonbeside the archive (prodasset /data/production/openproject/v17.9.6-CE-ubuntu24.04-r1/), as staged for publishing—
PUBLISH_MANIFEST.jsonbeside the archive (prodasset /data/production/openproject/v17.9.6-CE-ubuntu24.04-r1/), as staged for publishing—
ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.rebuild.jsonbeside the archive (prodasset /data/production/openproject/v17.9.6-CE-ubuntu24.04-r1/), as staged for publishing—
ReadyStack-openproject-v17.9.6-CE-ubuntu24.04-r1.rebuild.json.sigstorebeside the archive (prodasset /data/production/openproject/v17.9.6-CE-ubuntu24.04-r1/), as staged for publishing—
SCOUT_EVIDENCE.jsonbeside the archive (prodasset /data/production/openproject/v17.9.6-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)528
chainssadb, ReadyStack's engine database (not published)852
defectssadb, ReadyStack's engine database (not published)openproject v17.9.6-CE-ubuntu24.04-r1
drive_runssadb, ReadyStack's engine database (not published)chain 852
held_roundssadb, ReadyStack's engine database (not published)chain 852
lesson_recallssadb, ReadyStack's engine database (not published)chain 852
micro_step_runssadb, ReadyStack's engine database (not published)chain 852
release_imagessadb, ReadyStack's engine database (not published)openproject v17.9.6-CE-ubuntu24.04-r1
stage_eventssadb, ReadyStack's engine database (not published)chain 852
stage_runssadb, ReadyStack's engine database (not published)chain 852
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)—