NodeBB v4.16.7-CE-ubuntu24.04-r1 build trail
How ReadyStack built readystack/nodebb:v4.16.7-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/nodebb:v4.16.7-CE-ubuntu24.04-r1 - Index digestsha256:4955596784d53487f91bd24ca253e148d4a7f16dbbd049e19af3c906e91f9957
- linux/amd64 digestsha256:6bd4f55ac2974ef32086cc3e552165c8e3cc89cec350408219779766843f96c3
- Archive
ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.tar.gz - Archive SHA-256 nowa0a5638534fb3bedd0cf652c646765496bf92de16e20210c32985d68cee2e8f2
- Pins record
docs/PINS.md,docs/provenance/PINS.jsonin the archive (since generated) - Generated2026-11-07T11:40:06Z 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-nodebb-v4.16.7-CE-ubuntu24.04-r1.trail.json.sigstore ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.trail.json
IdentityWhy this release existsThe path through the harnessModel work per stageReviewDefectsVerificationPublicationPackages and CPU level
Identity
Fully recorded- ProductNodeBB (nodebb) [MANIFEST.json]
- Release tagv4.16.7-CE-ubuntu24.04-r1 [MANIFEST.json]
- Imagereadystack/nodebb:v4.16.7-CE-ubuntu24.04-r1 [MANIFEST.json]
- Image index digestsha256:4955596784d53487f91bd24ca253e148d4a7f16dbbd049e19af3c906e91f9957 [docs/provenance/LOCKED_DIGEST.txt]
- linux/amd64 image digestsha256:6bd4f55ac2974ef32086cc3e552165c8e3cc89cec350408219779766843f96c3 [ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.rebuild.json, subject.image_manifest_digest]
- ArchiveReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.tar.gz (bytes 411358385) [MANIFEST.json]
- Archive sha256 at publisha0a5638534fb3bedd0cf652c646765496bf92de16e20210c32985d68cee2e8f2 [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/NodeBB/NodeBB [docs/provenance/SOURCE_TREE_HASH.json]
- Upstream refv4.16.7 [docs/provenance/SOURCE_TREE_HASH.json]
- Upstream commite10be67aceaec0581fd130c6ef7b5e2f1e7f64f2 [docs/provenance/SOURCE_TREE_HASH.json]
- Source tree hash6a6d1348fa2fafd76dea0c49bbb9f18ead2fcfc5b36ff252b7b653afd6a45d98 (files 5803) [docs/provenance/SOURCE_TREE_HASH.json, tree_listing_sha256 (sha256 of the sorted file listing)]
- Kit tree hashsha256:6c72eb106752a749308cb5c30e3e3139e7807197a18826817ae07dd26db53597 [ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.rebuild.json, inputs.tree_hash]
- SOURCE_DATE_EPOCH1793478362 (utc 2026-10-31T20:26:02Z) [ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.rebuild.json, inputs.source_date_epoch]
- Base images
- ref ubuntu:24.04@sha256:fe81560990fae86dc4743202b2cb4d3df98d0bcf949173cecef15ce1127ef852 · platform digest sha256:78d4744ead1f5b19b04d0df558ab182a5300903900755e515b2ca4d10eb2044d
- BuildKitmoby/buildkit:v0.31.2 (image digest sha256:e0e67ea9c4bb07bdef683e29f70f3b623d1eb9c82274a9ec04e6bb0511449fb0) [ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.rebuild.json, engine]
- Engine commit(s)
- commit ae45c1d967a795015d2d15ccbbe5e9a73c4f8798 · dirty yes · first drive 3624
- commit 120579f1916582dbd0a42b015d97b8dd63740a06 · dirty yes · first drive 3638
- commit 89d863ac88b135c8b01feee55143a4eb91c606e1 · dirty yes · first drive 3648
- commit 373d3c6436c70a6b11e2c6f6d2aa49fc56a5a5c1 · dirty yes · first drive 3654
Why this release exists
Fully recorded- Chain854 (created 2026-11-07T08:27:38Z · trigger customer_request · upstream version v4.16.7) [chains, chains #854]
- Requestbuild request #530 (rebuild) (requested at 2026-11-07T02:02:59Z · requested by kitforge-agent · version v4.16.7) [build_requests, build_requests #530]
- Reasonretarget to v4.16.7: a newer upstream release (rule 1) [build_requests, build_requests #530 request_reason]
- Supersedesreadystack/nodebb:v4.16.5-CE-ubuntu24.04-r1 (chain 795) [chains, chains #795]
The path through the harness
Fully recorded1 chain · 4 drives · 18 stages · 3 rewinds
Chain 854 release · ready_to_ship
Created 2026-11-07T08:27:38Z, upstream v4.16.7, build request 530 [chains, chains #854]
| Drive | Started | Minutes | Build host | How it stopped |
|---|---|---|---|---|
| 3624 | 2026-11-07T08:28:10Z | 22.8 | build host 2 withhold-publish | stage_failed at verdict; first failed check scout_verdict:osv_clean; 7 ticks [drive_runs, drive_runs #3624] |
| 3638 | 2026-11-07T10:13:56Z | 33.6 | build host 2 withhold-publish | ready_to_ship at package_archive; 16 ticks [drive_runs, drive_runs #3638] |
| 3648 | 2026-11-07T11:08:27Z | 7 | build host 2 withhold-publish | ready_to_ship at package_archive; 2 ticks [drive_runs, drive_runs #3648] |
| 3654 | 2026-11-07T11:31:42Z | — | build host 2 publish-held | not recorded [drive_runs, drive_runs #3654] |
Stages, in order
| Stage | First start | Passed | Attempts | Gate checks passed | Artifacts (SHA-256) |
|---|---|---|---|---|---|
intake |
2026-11-07T08:28:20Z | 2026-11-07T08:28:21Z | 1 | 4
|
order_json 83339b6db62b… |
acquire |
2026-11-07T08:28:28Z | 2026-11-07T08:28:29Z | 1 | 12
|
source_tree a58522fd0581…license_file 8ceb4b9ee5ad…custody_inputs 2476ab37eb71…source_tree_hash 7f4e7b314496…source_file_manifest 1f762ab01c3a… |
plan |
2026-11-07T08:29:00Z | 2026-11-07T08:29:01Z | 1 | 10
|
recon_report a23b7455374a…input_pin_plan e6005348b01a…toolchain_lock 680115d4e123… |
assemble_kit |
2026-11-07T08:37:21Z | 2026-11-07T10:22:24Z | 2 | 27
|
dockerfile d3a157409452…build_recipe c0569f36b097…system_pinning 5b00b1840dc7…build_offline_sh 6633aa31b6b4…generate_sbom_sh ce0f1e6f1e70…first_boot_health d1028567293b…verify_offline_sh 3e8184ea230c…base_image_digests 5931a08867a7…dockerfile_offline d3a157409452…first_build_digest 2b72bd701761… |
remediate |
2026-11-07T08:37:56Z | 2026-11-07T10:22:28Z | 2 | 8
|
vendored_apt e3b0c44298fc…remediation_log c70d3b0833d4…security_report fd9561fab83f… |
build_kit |
2026-11-07T08:48:09Z | 2026-11-07T10:32:11Z | 2 | 9
|
cosign_stamp 23e9ceb6a469…locked_digest 87c80c5d2365…freeze_manifest bf01a44b3fe0…offline_rebuild_transcript 636e8a654c01… |
verdict |
2026-11-07T08:50:57Z | 2026-11-07T10:34:18Z | 2 | 8
|
scout_verdict 099e8cfb898b… |
publish_image |
2026-11-07T10:35:21Z | 2026-11-07T10:35:22Z | 1 | 7
|
hub_readme af32ef095fea…promotion_record 73d450d44734… |
boot_instance |
2026-11-07T10:35:44Z | 2026-11-07T10:35:48Z | 2 | 3
|
instance_handle d1171daa6583… |
sbom |
2026-11-07T10:36:21Z | 2026-11-07T10:36:22Z | 1 | 5
|
sbom_md 36964d1bd64f…sbom_json cc2f493af221… |
schema_discovery |
2026-11-07T10:36:25Z | 2026-11-07T10:36:25Z | 1 | 7
|
schema_hash 997256f51882…dependency_tree f23abccbf315…table_classification 96e373188f98… |
admin_handbook |
2026-11-07T10:36:32Z | 2026-11-07T10:36:32Z | 1 | 7
|
api_map 666d1e70fe40…admin_handbook a7e0a85504f7… |
db_handbook |
2026-11-07T10:36:41Z | 2026-11-07T10:36:42Z | 1 | 8
|
db_handbook dac0b9734abe…seed_isolation c5a6e2ab689b… |
seed_data |
2026-11-07T10:36:50Z | 2026-11-07T10:36:51Z | 1 | 6
|
seed_data_sql 6890e33b00aa…seed_cases_json 9db7117c5bfe… |
seed_validate |
2026-11-07T10:36:53Z | 2026-11-07T10:36:54Z | 1 | 3
|
seed_data_contract e0d2c7a3e5c1… |
usecase_validate |
2026-11-07T10:37:17Z | 2026-11-07T10:37:18Z | 1 | 10
|
failed_tests b2247b16f5f7…passed_tests 819b2d4c5a91…test_results 37a106eb443d…usecase_contract 938da11c0aec… |
finalize_docs |
2026-11-07T10:37:24Z | 2026-11-07T10:37:25Z | 1 | 9
|
defects_json 18844f3e7b58…release_notes 734a744a61b5…api_integration_guide 152fe38b61a8… |
package_archive invalidated 2026-11-07T11:31:19Z |
2026-11-07T10:47:28Z | 2026-11-07T11:15:26Z | 2 | 34 (final gate PASS)
|
sale_tar 4e18368e0885…checksums 6a939ea4e062…verify_md 327682cdc23a…rebuild_md e21f220ed921…manifest_txt 85dbc55c4c48…actions_jsonl 8b188e0aec46…provenance_md 27ce48ac4137…assetchain_log_md e9eccaec0c0f…assetchain_log_json cf834b9004b4… |
[stage_runs]
Rewinds
- 2026-11-07T10:14:00Z:
verdicttoassemble_kiton strategy_changed (strategy changed (f253312ad395 -> 58c858add0a5)) [stage_events, stage_events #24482] - 2026-11-07T11:06:48Z:
package_archivetopackage_archiveon docs_redo (scripts/redo-docs.py --stage package_archive) [stage_events, stage_events #24641] - 2026-11-07T11:31:19Z:
package_archivetopackage_archiveon docs_redo (scripts/redo-docs.py --stage package_archive) [stage_events, stage_events #24746]
Model work per stage
Fully recordedRole: writer model. Calls up to 2026-11-07T11:15:26Z.
5 calls over 3 stages
| Stage | Calls | Refused | Errors | Max attempt | Forced commits | Real tokens | Lesson rules shown |
|---|---|---|---|---|---|---|---|
plan | 2 | 0 | 0 | 1 | 0 | 7310 | L-A183, L-A15 |
remediate | 2 | 0 | 0 | 1 | 0 | 7981 | L-A183, L-A15 |
usecase_validate | 1 | 0 | 0 | 1 | 0 | 1849 | L-A59 |
[micro_step_runs] [lesson_recalls]
Review
Fully recordedRole: review model.
2 rounds, 2 counted, $0.79 recorded cost
| Round | Started | Critical | Major | Minor | Verdict | Cost | Cap in force | Archive reviewed |
|---|---|---|---|---|---|---|---|---|
| 1 | 2026-11-07T10:48:20Z | 0 | 2 | 0 | findings to repackage [held_rounds, held_rounds #1457] | $0.49 | 3 rounds, $40.00 | 0768551a62f5… |
| 2 | 2026-11-07T11:15:58Z | 0 | 0 | 0 | clean to publish [held_rounds, held_rounds #1461] | $0.29 | 3 rounds, $40.00 | 4e18368e0885… |
Defects
Fully recorded- Ledger entries4 [defects, defects where product_slug=nodebb and this tag or chain]
- Disclosed in the archive4 [docs/defects/defects.json, entries]
4 ledger entries: by severity low 2, high 2; by status open 2, fixed-before-release 2.
| Defect | Severity | Status | Found by | Fixed in |
|---|---|---|---|---|
RSD-nodebb-5288888412The image refuses to start without NODEBB_ADMIN_PASSWORD, although NodeBB uses it only when it creates the administrator on an empty database [defects, defects #167998] | low | open | runtime check | — |
RSD-nodebb-1b4c84f9bbNodeBB's asset build writes language files in a run-dependent key order (concurrent mutation in src/meta/languages.js) [defects, defects #167999] | low | open | build strategy record | — |
RSD-nodebb-a4ee6b8e0fDatabase handbook: Upstream Reference names the wrong NodeBB version (v4.16.2), contradicting every other version statement. [defects, defects #168118] | high | fixed-before-release | held review (review model) | — |
RSD-nodebb-449ae7c592Database handbook: Upstream Project bullet gives the stale version v4.16.2. [defects, defects #168119] | high | fixed-before-release | held review (review model) | — |
Verification
1 item not recorded- Reproduced before publishingyes (rebuilt digest sha256:6bd4f55ac2974ef32086cc3e552165c8e3cc89cec350408219779766843f96c3 · published digest sha256:6bd4f55ac2974ef32086cc3e552165c8e3cc89cec350408219779766843f96c3 · digest match yes · builder moby/buildkit:v0.31.2 · build seconds 243) [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-07T11:32:32Z · failing Docker Scout counts 102 packages with copyleft licences (GPL, LGPL, MPL), 96 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-07T11:31:52Z) [docs/provenance/IMAGE_EVIDENCE.json, signed]
- Image signature transparency-log entries
- log index 3735833201 · transparency-log entry
- log index 3735833550 · transparency-log entry
- rebuild.json signatureSigstore bundle, release key (key fingerprint 04daa92344a52dbc · log index 3736994099 · transparency-log entry · integrated 2026-11-07T11:38:44Z) [ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.rebuild.json.sigstore, verificationMaterial.tlogEntries[0]]
- Signed attestations
- kind provenance · digest sha256:4955596784d53487f91bd24ca253e148d4a7f16dbbd049e19af3c906e91f9957 · state attached · log index 3736998705 · transparency-log entry
- kind sbom · digest sha256:4955596784d53487f91bd24ca253e148d4a7f16dbbd049e19af3c906e91f9957 · state attached · log index 3737001296 · transparency-log entry
- kind vsa · digest sha256:4955596784d53487f91bd24ca253e148d4a7f16dbbd049e19af3c906e91f9957 · state attached · log index 3737003682 · transparency-log entry
- kind provenance · digest sha256:6bd4f55ac2974ef32086cc3e552165c8e3cc89cec350408219779766843f96c3 · state attached · log index 3737006296 · transparency-log entry
- kind sbom · digest sha256:6bd4f55ac2974ef32086cc3e552165c8e3cc89cec350408219779766843f96c3 · state attached · log index 3737008881 · transparency-log entry
- kind vsa · digest sha256:6bd4f55ac2974ef32086cc3e552165c8e3cc89cec350408219779766843f96c3 · state attached · log index 3737012108 · transparency-log entry
- Pins recorddocs/PINS.md and docs/provenance/PINS.json in the archive (https://readystack.dev/products/nodebb/recipe) [docs/provenance/PINS.json]
Offline clean-room rebuilds
- 2026-11-07T10:48:25Z on build host 2 (Docker-in-Docker daemon with --network none): bit for bit yes, digest match yes, customer verify yes
rebuilt sha256:6bd4f55ac2974ef32086cc3e552165c8e3cc89cec350408219779766843f96c3 [clean-room rebuild ledger, runs[620]]
- 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-07T10:35:22Z [stage_runs, stage_runs chain 854 stage publish_image]
- Archive manifests written2026-11-07T11:35:11Z [PUBLISH_MANIFEST.json, published_at]
- Pending at generation: the archive cut-over on prodasset, the release tag's promotion and the site event (this trail was generated after G8 and before them; they are appended as a 'publication' event in History)
Packages and CPU level
Fully recorded- x86-64 level the image needsv1 (used v4 · baseline v2 · elf files 762 · probed 2026-11-07T10:27:53Z · source build_kit) [release_images, isa_level_hard]
History
2 events- 2026-11-07T11:40:06Z generated: by KitForge release/build_trail.py · generator commit 373d3c6436c70a6b11e2c6f6d2aa49fc56a5a5c1
- 2026-11-07T11:42:02Z publication: promoted at 2026-11-07T11:40:39Z · promoted digest sha256:4955596784d53487f91bd24ca253e148d4a7f16dbbd049e19af3c906e91f9957 · promotion method imagetools_create_retag_by_digest_no_rebuild · site event 348 · checklist status complete · checklist at 2026-11-07T11:42:02Z · record workspace: deliverables/provenance/PROMOTION_RECORD.json, RELEASE_CHECKLIST.json
Records
25 records| Record | Where it is | Rows |
|---|---|---|
docs/defects/defects.json | inside the archive (ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.tar.gz) | — |
docs/provenance/IMAGE_EVIDENCE.json | inside the archive (ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.tar.gz) | — |
docs/provenance/LOCKED_DIGEST.txt | inside the archive (ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.tar.gz) | — |
docs/provenance/PINS.json | inside the archive (ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.tar.gz) | — |
docs/provenance/REPRO_VERIFICATION.json | inside the archive (ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.tar.gz) | — |
docs/provenance/SOURCE_TREE_HASH.json | inside the archive (ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.tar.gz) | — |
MANIFEST.json | beside the archive (prodasset /data/production/nodebb/v4.16.7-CE-ubuntu24.04-r1/), as staged for publishing | — |
PUBLISH_MANIFEST.json | beside the archive (prodasset /data/production/nodebb/v4.16.7-CE-ubuntu24.04-r1/), as staged for publishing | — |
ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.rebuild.json | beside the archive (prodasset /data/production/nodebb/v4.16.7-CE-ubuntu24.04-r1/), as staged for publishing | — |
ReadyStack-nodebb-v4.16.7-CE-ubuntu24.04-r1.rebuild.json.sigstore | beside the archive (prodasset /data/production/nodebb/v4.16.7-CE-ubuntu24.04-r1/), as staged for publishing | — |
SCOUT_EVIDENCE.json | beside the archive (prodasset /data/production/nodebb/v4.16.7-CE-ubuntu24.04-r1/), as staged for publishing | — |
clean-room rebuild ledger | the clean-room rebuild ledger (runstate/audit-2026-09/bit4bit.json, not published) | — |
build_requests | sadb, ReadyStack's engine database (not published) | 530 |
chains | sadb, ReadyStack's engine database (not published) | 854 |
defects | sadb, ReadyStack's engine database (not published) | nodebb v4.16.7-CE-ubuntu24.04-r1 |
drive_runs | sadb, ReadyStack's engine database (not published) | chain 854 |
held_rounds | sadb, ReadyStack's engine database (not published) | chain 854 |
lesson_recalls | sadb, ReadyStack's engine database (not published) | chain 854 |
micro_step_runs | sadb, ReadyStack's engine database (not published) | chain 854 |
release_images | sadb, ReadyStack's engine database (not published) | nodebb v4.16.7-CE-ubuntu24.04-r1 |
stage_events | sadb, ReadyStack's engine database (not published) | chain 854 |
stage_runs | sadb, ReadyStack's engine database (not published) | chain 854 |
attestations.json | the chain's workspace on the controller (not published) | — |
deliverables/provenance/PROMOTION_RECORD.json | the chain's workspace on the controller (not published) | — |
g8_result.json | the chain's workspace on the controller (not published) | — |