family_artifacts.tcl and the build905.zig embedded-record literal move
schema 1 -> 2, adding [provenance] class = "suite-built" with the
lib-tier ordering-caveat comment (G-138 lineage - [artifact] class stays
the first 'class =' line; whole-text single-key scanners see that one).
The embedded-vs-sidecar consistency gate expects v2, and
family_check.tcl asserts embed_schema 2 plus the literal
'class = "suite-built"' line (its flat scanner would see [artifact]
class first, per the caveat). Verified: zig ast-check clean, both tools
parse; functional family-build proof is the next step - published v1
records stay valid pre-v2 records, v2 appears from the next family
revision.
Companion punkbin commit 1f10390 (local, unpushed): 12 retroactive
schema-v2 sidecars covering every pre-family runtime artifact across
the five tiers, evidence-based classes (binary markers, punkbin git
history, live kit probes), additive-only (artifact bytes + sha1 rows
unchanged), AGENTS.md runtime-v2 section + README refresh.
Goal Progress records the baseline survey findings (tier argument
already present on fetch/list/use; bash 'info -platform' defect; no
client-side server-trust gate; ps1 Scope path correction pending user
approval).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
family_artifacts.tcl: reads the embedded record back out of each finished kit
(exec with a piped //zipfs:/app/punkbin-artifact.toml reader - another
executes-self-contained proof), verifies it against the invocation (schema/
name/variant/working_name/revision/target/tcl_patchlevel/batteries - stale-
staging tripwire), and derives the sidecar's identity fields from it
(build_id/origin/packager/project/project_url/license/build_host_platform -
identical build_id by construction). Sidecar carries schema = 1, '#' comments
on the non-obvious fields, and keeps sha1/size/built as its finished-binary
additions.
family_check.tcl: new embedrecord probe (record exists in the attached image;
schema/variant/patchlevel/working_name/piperepl/batteries MATCH probed facts;
v1 fields present; -expectrev asserts revision + the -r<N> artifact name) and
the gate probe now asserts ::tclsh(reopened) publication (0 at gate-open
start, absent on plain/opt-out - G-118 item 7 patch-rev verification).
build905.zig passes -expectrev; configure-compiles clean, both tools parse.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Scriptset extension (ps1 + bash payloads in parity, rewrapped polyglot,
layout-shipped copy + untracked .ps1 twin refreshed, roundtrip pin PASS):
- list: per-runtime summary parsed from the <rootname>.toml metadata record
beside each runtime (variant, tcl patchlevel, revision, piperepl on/off,
from=<artifact> on materialized working copies).
- use <artifact-r<N>-name>: materializes the immutable artifact into its
WORKING name (minus -r<N>) with the metadata toml copied alongside, then
selects it - the G-103 naming decision's artifact->working mapping, so
republishing never churns consumers. use <workingname> unchanged.
- fetch of -r<N> artifacts also retrieves the metadata toml from punkbin
(absence tolerated for pre-family runtimes).
- rootname handling strips only .exe (dotted patchlevels break last-dot
stripping for extensionless unix names); same exe_split fix applied to
family_artifacts.tcl artifact/toml naming for the G-105 cross-target
future. Candidate listing excludes directories and .log files (parity
cleanup; bash side previously listed directories).
Verified on the wrapped bin/punk-runtime.cmd (powershell 5 branch) and the
bash payload under git-bash: all three family members materialized from
their -r1 artifacts with metadata shown in list, and 'punk-runtime run'
launched the active punk family runtime (9.0.5, piperepl machinery,
//zipfs:/app/tcl_library). Project 0.17.7.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
suite_tcl90 now assembles and verifies the G-103 family as part of the
default pipeline:
- kit-family: two staging trees (core, bi) wrap into working-name products
tclsh9.0.5.exe / tclsh9.0.5-punk.exe / tclsh9.0.5-punk-bi.exe under
out/family. Attached image mirrors the installed prefix - tcl_library/ at
the app root (stock C-boot position, no main.tcl - falls through to the
interactive shell), tm tree at tcl9/<ver>, batteries under lib/ with their
installed-shape pkgIndexes (../../bin -> /app/bin), dlls under bin/, plus a
one-line stock pkgIndex hook at lib/pkgIndex.tcl extending auto_path (the
tclPkgUnknown mid-scan growth mechanism tcllib's own index uses).
- tools/family_check.tcl: per-member self-containment verification from a
scratch dir with scrubbed env - patchlevel, zipfs tcl_library, tzdata/
encodings, attached tm modules, functional Thread (cross-thread eval), vfs
zip-mount round-trip, tcllib md5 + tcllibc accel engaged, piperepl
default-ON/opt-out per variant (::tclsh(istty) discriminator), Tk
create/destroy + tklib for bi. All three members PASS.
- kit-family-artifacts + tools/family_artifacts.tcl: punkbin-layout emission
(immutable -r<N> names via -Dfamilyrev, per-artifact toml metadata with
variant/sha1/versions/provenance/G-107 evidence, sha1sums.txt), run UNDER
the plain family kit itself. punkbin publication stays a user step.
- build_tclthread/build_tk return pkgidx+version facts; tclvfs configured
package generation shared between prefix install and family staging;
tm-module install list single-sourced; manifestUuid helper tolerates
repos without the fossil manifest setting.
- consumers: mapvfs.config entries punk9_beta (punk + punk9wintk905.vfs) and
punk9bi_beta (punk-bi + punk9win_for_tkruntime.vfs); working names copied
to bin/runtime/win32-x86_64 (untracked). src/runtime/AGENTS.md stale
runtime.cmd references updated to punk-runtime (G-097).
Full pipeline suite.tcl build PASS end-to-end; verification evidence
recorded in the goal Progress section. Remaining: punk-runtime list/use
metadata surfacing, kit-wrap trial of the new mapvfs entries.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com