From f5dcae5dfa0ba58e51f1356a9b5cd1884fac8001 Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Fri, 24 Jul 2026 03:56:18 +1000 Subject: [PATCH] G-117: staging anatomy recorded (shared trees vs per-member record; build_id determinism fork) build905.zig kit-family: 2 shared payload trees wrap 3 kits via zipfs_mkimg.tcl, so the per-member embedded record needs a per-kit embed argument on the wrap tool; -Doriginurl/-Dpackager join familyrev as b.option()s. build_id fork to decide: random-per-configure (cache-busting) vs uuid-shaped digest of stable identity inputs (reproducible, cache-friendly) - leaning the digest. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com --- goals/G-117-self-describing-runtimes.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/goals/G-117-self-describing-runtimes.md b/goals/G-117-self-describing-runtimes.md index 4dbc4946..b0cc3136 100644 --- a/goals/G-117-self-describing-runtimes.md +++ b/goals/G-117-self-describing-runtimes.md @@ -93,8 +93,20 @@ hosts without a zip reader. exists (fail if absent). Staging generates build_id per member and writes the embedded record WITHOUT sha1/size (finished-binary facts stay sidecar-only). Embedded record filename namespaced per the G-025 reconciliation note. -- Remaining for acceptance: extend the kit-family staging step (embed write; located - 2026-07-24: implemented in build905.zig - build.zig is the G-102 entry shim), +- 2026-07-24 staging anatomy (build905.zig ~2337-2466; build.zig is the G-102 entry + shim): two shared addWriteFiles payload trees (0 = core for plain+punk, 1 = bi) are + wrapped per-kit by tools/zipfs_mkimg.tcl (-infile prefix exe, -indir tree). The + embedded record is PER-MEMBER (variant/working_name/build_id) so it cannot live in + the shared trees: plan is a per-kit record file (small addWriteFiles or generated + arg) handed to zipfs_mkimg.tcl via a new optional embed argument merged into the + image at wrap time. -Doriginurl/-Dpackager become b.option()s beside familyrev + (~2459) and flow to both the record generation and family_artifacts invocation. + BUILD_ID DETERMINISM FORK to decide at implementation: (i) random uuid per + configure - simple but busts the zig cache every run; (ii) uuid-shaped digest + derived from stable identity inputs (working_name | familyrev | source checkout + uuids) - reproducible, cache-friendly, still unique per artifact identity + rev + + source state. Leaning (ii); record the choice + rationale here when implemented. +- Remaining for acceptance: extend the kit-family staging step per the anatomy above, family_artifacts v1 fields + mount-read derivation + '#' field comments + -Doriginurl/-Dpackager plumbing, family_check embedded-record verification, punk-runtime 'info' action (ps1 + bash + cmd rewrap; zip central-directory read,