AGENTS.md: lib-tier layout contract (lib/allplatforms + lib/<target>, per-target
sha1sums, never in platforms.txt) and a "Library artifacts - lib tier (schema
v2)" section: generation-tagged immutable names
(<folder>-<tcl8|tcl9>-r<N>.zip), embedded class=library record at the package
root (embed-then-hash - finished-zip facts sidecar-only), schema-v2 field
delta ([artifact] package/package_version/folder/tcl_generation, [library]
driving_tcl_patchlevel, [provenance] class=suite-built + checkout uuids +
critcl) with the v2-superset and class-ordering caveats for line-based
consumers, punkzip determinism + deliberate-publish revision discipline (zig
dlls are not bit-reproducible), md5c disposition (not published - tcllib's md5
prefers tcllibc, which bundles the accelerator), emission tooling pointers and
the publication flow. README.md: tier mention.
src/build_sha1sums.tcl: processes lib/<target> subfolders (own sha1sums.txt
each; warns on a target that is neither allplatforms nor platform-named); lib
excluded from platform enumeration so it can never enter platforms.txt.
Verified against the current repo: all existing artifacts SAME, lib/ absent =
clean no-op, platforms.txt unchanged.
No artifacts are published by this change - publication remains a deliberate
maintainer step (the emitted zips live in the punkshell suites'
out/library/punkbin staging until then).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Embedded-vs-sidecar record relationship (embed-then-hash; sidecar + sha1sums
stay the integrity authority; record survives kit wrapping), per-field
semantics incl origin's built-for-not-hosted-on meaning, packager's
declarative-not-verified status with minisign sidecars as the verification
complement, build_id as deterministic correlation key, and the comment-
documented extension point (G-116 tls fields extend v1). Also: stale
bin/runtime.cmd consumer reference corrected to bin/punk-runtime.cmd.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
The default a no-name 'punk-runtime fetch' retrieves is a release
DECISION, so it lives on the artifact server as hand-curated data
(never generated) - updated in the same change-set that publishes the
artifact it points at, taking effect for every deployed punk-runtime
immediately with no punkshell release. src/build_sha1sums.tcl validates
entries (warns on unknown platforms / missing artifact files) so the
publish and the recommendation cannot drift silently.
Seeded from the values previously baked into punk-runtime's payloads,
with one correction those baked values got WRONG: linux-arm's actual
artifact is tclkit-9.0.2-Linux64-arm-dyn (dotted), not the baked
tclkit-902-Linux64-arm-dyn - a no-name fetch on linux-arm has been
broken until now, which is the config-in-code failure mode this file
removes. freebsd-x86_64 deliberately has no line (its only artifact is
a legacy 8.5-era kit, not a recommendation). Documented in AGENTS.md
Local Contracts with the release process.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Raw-file consumers (punk-runtime 'platforms -remote'; third-party mirrors
using this layout) have no directory-listing capability - platforms.txt
lists the served platform folders, one canonical punkshell platform-dir
name per line ('#' comments/blanks ignored). Generated and kept current
by src/build_sha1sums.tcl (rewrite-on-change, matching the sha1sums
behaviour); os_list extended with openbsd/msys per the punkshell platform
canon, and the skip-message stale-variable reference fixed ($f ->
$dirtail). Documented in AGENTS.md Local Contracts.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com