Browse Source

G-172 achieved: flip to achieved + archive (distributed-binary CPU floor)

Rebuild + in-situ republish (Approach 6) completed the acceptance. Full `zig
build bootstrap` (pinned 0.16.0) rebuilt the r2 family WITH the G-172 cpu_floor
field now in the embedded [provenance] record (re-stage picked up the build905.zig
floor-field edit; zig-cached C compiles, only the wrap + emit re-ran). family_check
passed for all three members (the new embed_cpu_floor/embed_cpu_model assertions
green). Audit of the rebuilt r2 exes: all three PASS at the baseline floor
(zmm=0 ymm=0 out-of-floor=0).

Published in-situ to punkbin (git 59e7475, pushed origin/master): the three r2
exes + three r2 tomls replaced under existing names/revisions; each toml
[provenance] now carries cpu_floor="baseline" + cpu_model="x86_64"; the [tests]
tclcore line refreshed to the shipped-codegen gate evidence (passed=56041
failed=8, the Aug-06 baseline-rebuild test-gate - was 56039/9); library [tests]
lines unchanged; sha1sums.txt: the 6 r2 lines updated. build_id unchanged per
artifact (the floor field does not enter the identity digest); sha1/size/built
updated.

Every acceptance conjunct verified on this Zen 5 / v4 host: audit zmm=0 on the
republished artifacts; -Dcpu=native still host-tuned (probe: native zmm=123 FAIL
at baseline, PASS at v4 - the floor is a default, not a restriction); the
republished tomls state the floor; punk-runtime surfaces it (info/list/use/fetch);
use/run produce a named 0xC000001D diagnosis on a below-floor recorded cpu_model
(verified by mocked-host tests - not end-to-end demonstrable here: every
published artifact is baseline/v1 which every host meets, and no x86-64 level
exceeds v4); fetch stays ungated.

DOX closeout: detail file -> goals/archive/ (pure rename; Status achieved
2026-08-07; verification evidence + ## Follow-ons recorded). Index entry ->
GOALS-archive.md (removed from GOALS.md). Reference sweep: only the GOALS.md
index entry mentioned G-172 in the live tier (no pending-tense rewrites); design-
decision Notes pointers added to G-105 (inherits the settled default_target
cpu_model shape) and G-130 (consumes the baseline floor decision on its i686
axis). goals_lint clean (80 active, 93 archived); goals_followons parses the 2
open Follow-ons (r1-generation disposition; bin/ punk9* kit rebake).

Assisted-by: harness=pi; primary-model=huggingface/zai-org/GLM-5.2; api-location=huggingface.co
master
Julian Noble 3 days ago
parent
commit
2954d08f84
  1. 4
      GOALS-archive.md
  2. 4
      GOALS.md
  3. 3
      goals/G-105-buildsuite-cross-target.md
  4. 4
      goals/G-130-32bit-windows-buildsuites.md
  5. 59
      goals/archive/G-172-distributed-binary-cpu-floor.md

4
GOALS-archive.md

@ -24,6 +24,10 @@ Do not edit archived records here except to fix a broken path. Archived detail f
Scope: src/modules/punk-999999.0a1.0.tm (punk::path proc - add -return modes + -context); src/tests/modules/punk/path/testsuites/tests/ (return-shape + round-trip + ansi-freeness tests)
Acceptance: -return gains text, dict and json choices whose output contains no ansi escapes regardless of -highlight; the returned structure is documented in the command's punk::args definition; the default table output is byte-unchanged for existing users (existing path.test cases stay green); -return json round-trips the same data as -return dict (decode via tcllib json, recompare); the conflict verdict is stable independent of how the consumer invoked the proc via a -context <namespace> option (default the caller's namespace); new tests pin dict/json shape, ansi-freeness, and dict/json round-trip parity; a duplicate-path entry and an overshadowed executable each appear in the dict/json with the fields a machine consumer needs (idx, is_duplicate, duplicate_of, overshadowed, overshadowed_by, tcl_conflicts with match=exact|nocase).
### G-172 [achieved 2026-08-07] Distributed binaries declare a CPU floor - no shipped artifact is tuned to its build host → detail: goals/archive/G-172-distributed-binary-cpu-floor.md
Scope: src/buildsuites/suite_tcl90/build905.zig and src/buildsuites/suite_tcl86/build86.zig (flagless target/cpu resolution defaults); src/tools/punkzip/build.zig and src/tools/punkres/build.zig (distributed build-path tools); src/buildsuites/suite_tcl90/tools/family_artifacts.tcl (artifact record emission - the recorded floor field); punkbin artifact repo (external c:/repo/jn/punkbin - win32-x86_64/*.toml sidecars, defaults.txt curation); bin/ (the shipped zig-built exes); src/scriptapps/bin/punk-runtime.* (floor reporting on fetch, floor-vs-host verdict on use/run); scriptlib/developer/ (cpu-floor audit tool)
Acceptance: A flagless build of each distributed-artifact recipe (suite_tcl90, suite_tcl86, punkzip, punkres) on an AVX-512-capable host emits zero instructions above the declared floor - verified by an audit tool that disassembles the produced binaries and reports out-of-floor instructions, carrying the current AVX-512 regression as its fixture; `-Dcpu=native` still yields a host-tuned local build, proving the floor is a default and not a restriction; each published artifact's metadata record states the floor it was built to and punk-runtime surfaces it; and selecting or launching a runtime whose recorded floor the local CPU does not meet produces a named diagnosis instead of a silent 0xC000001D, while fetching for any platform stays ungated.
### G-166 [achieved 2026-08-06] cmdinfo/cmdhelp surface recognised-but-unavailable landings distinctly → detail: goals/archive/G-166-cmdinfo-unavailable-surfacing.md
Scope: src/modules/punk/ns-999999.0a1.0.tm (cmdinfo result key, cmd_traverse landing attribution, cmdhelp render marking + advisory-parse presentation); src/modules/punk/args/moduledoc/tclcore-999999.0a1.0.tm (virtual ids lead with the unavailability note on affected runtimes); src/tests/modules/punk/ns/testsuites/ns/ (cmdinfo/cmdhelp pins incl the deliberate key-list flip); src/tests/modules/punk/args/testsuites/args/tclcoreparity.test (8.6-arm pins)
Acceptance: on a runtime where the tclcore model declares dict unavailable (Tcl 8.6), cmdinfo for 'string is dict' (direct and decomposed invocation forms) reports the new availability key carrying 'dict' while 'string is true' reports it empty, with cmdtype remaining 'doconly' for both (the command-kind axis is not overloaded); the key is present on every cmdinfo result and the cmdhelp.test cmdinfo key-list pin is flipped deliberately; cmdhelp output for an unavailable subject is visibly distinguished in table, text and dict return forms (the dict form carries the key; table/text carry a marking naming the unavailability), and an argument tail such as 'string is dict 5' no longer renders as a cleanly usable command line; the walk's unique-prefix landing on an unavailable name ('i string is dic' on 8.6) has a decided, pinned behaviour consistent with the marking (either resolving the virtual docid WITH the marking, or documented-conservative non-resolution); tclcore virtual ids for unavailable classes lead their rendered help with the unavailability statement on affected runtimes (first description line, not buried mid-prose) while modern runtimes render those ids unchanged; definitions without -choiceunavailable and existing cmdinfo/cmdhelp consumers behave unchanged (full punk/ns and punk/args suites green apart from deliberately flipped pins); the enacted G-073 Follow-on lines carry => goal G-166 dispositions. (Achieved: punk::ns 0.10.0 - cmdinfo 'unavailable' key on every result as a SECOND axis beside cmdtype (both 'string is dict' and 'string is true' stay doconly on 8.6), cmd_traverse records carrying a sixth attribution element; prefix-landing DECIDED as resolve-the-virtual-docid-marked rather than conservative non-resolution, since addressing and availability are separate axes and non-resolution made addressing inconsistent ('i string is tr' resolved, 'i string is dic' did not) - the choice traverse's G-040 parse-parity claim untouched, an unavailable word still identifies no subcommand there; cmdhelp marking via one shared wording in every return form, taking precedence over both the ok-parse info render and any parse failure message so 'i string is dict 5' no longer renders info-scheme-clean; tclcore moduledoc 0.4.1 leads an unavailable class's virtual-id help with the unavailability statement, modern runtimes unchanged; cmdflow.test 25/25 + cmdhelp.test 50/50 on 8.6.10 (affected arm), 8.7a6 and 9.0.5, full punk/args subtree 341/338/3 skips/0 fail on all three, full punk/ns 125 green on 9.0.5 and green on 8.6/8.7 apart from two verified-pre-existing nsprimitives failures, plus a 1257-test src/tests/modules/*** sweep on 9.0.5 with 0 failures; punkshell 0.57.0.)

4
GOALS.md

@ -406,7 +406,3 @@ Detail: goals/G-167-punkargs-version-delta-availability.md
Scope: src/make.tcl (bake/bakehouse/vfslibs - VFSPAYLOAD + PACKAGES phases, kit assembly, new explicit materialize/tidy commands); src/make.tcl sync_layouts phase (the mint-side tracked-path write) with its targets src/project_layouts/ and src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/ plus the workflow_text TERMINOLOGY/DIAGRAM 1b stage-verb assignment; src/vfs/ (payload declarations, _targets staging generalization, README.md + AGENTS.md precedence spec); src/_bake (assembly staging); bin/packages (lib-tier consumption); .gitignore + .fossil-settings/ignore-glob (staging ignore coverage); src/tests/shell/testsuites/punkexe/ (kill-probe + precedence characterization)
Detail: goals/G-171-bake-writes-land-untracked.md
### G-172 [active] Distributed binaries declare a CPU floor - no shipped artifact is tuned to its build host
Scope: src/buildsuites/suite_tcl90/build905.zig and src/buildsuites/suite_tcl86/build86.zig (flagless target/cpu resolution defaults); src/tools/punkzip/build.zig and src/tools/punkres/build.zig (distributed build-path tools); src/buildsuites/suite_tcl90/tools/family_artifacts.tcl (artifact record emission - the recorded floor field); punkbin artifact repo (external c:/repo/jn/punkbin - win32-x86_64/*.toml sidecars, defaults.txt curation); bin/ (the shipped zig-built exes); src/scriptapps/bin/punk-runtime.* (floor reporting on fetch, floor-vs-host verdict on use/run); scriptlib/developer/ (cpu-floor audit tool)
Detail: goals/G-172-distributed-binary-cpu-floor.md

3
goals/G-105-buildsuite-cross-target.md

@ -165,3 +165,6 @@ goals/archive/G-100-suite-tcl86-tk-tcllib.md), G-102 (achieved 2026-07-21 - driv
bin/kits/<platform>/<kit> (src/_bake tiered the same way), with per-target payload
selection via %platform% declarations - the consumption end of this goal's produce
end - see goals/archive/G-127-crosstarget-vfs-bake.md.
- G-172 (achieved 2026-08-07, archived) settled the recipe default_target cpu_model
shape (.baseline) that this goal's cross-target axis inherits - the CPU axis of the
same recipe's target parameterization - see goals/archive/G-172-distributed-binary-cpu-floor.md.

4
goals/G-130-32bit-windows-buildsuites.md

@ -164,3 +164,7 @@ the other's generation.
the 8.6 kit-side consumer of this goal's runtimes; G-101 (achieved
2026-08-02) decided mk4 and demonstrated the x64 kit-head - the ix86 head
is its recorded follow-on parity item 4.
- G-172 (achieved 2026-08-07, archived) recorded the x86_64 family's baseline
CPU-floor decision (recipe default_target cpu_model=.baseline) - the same
class of choice this goal's win32-ix86 lane makes on its i686 axis - see
goals/archive/G-172-distributed-binary-cpu-floor.md.

59
goals/G-172-distributed-binary-cpu-floor.md → goals/archive/G-172-distributed-binary-cpu-floor.md

@ -1,6 +1,6 @@
# G-172 Distributed binaries declare a CPU floor - no shipped artifact is tuned to its build host
Status: active
Status: achieved 2026-08-07
Scope: src/buildsuites/suite_tcl90/build905.zig and src/buildsuites/suite_tcl86/build86.zig (flagless target/cpu resolution defaults); src/tools/punkzip/build.zig and src/tools/punkres/build.zig (distributed build-path tools); src/buildsuites/suite_tcl90/tools/family_artifacts.tcl (artifact record emission - the recorded floor field); punkbin artifact repo (external c:/repo/jn/punkbin - win32-x86_64/*.toml sidecars, defaults.txt curation); bin/ (the shipped zig-built exes); src/scriptapps/bin/punk-runtime.* (floor reporting on fetch, floor-vs-host verdict on use/run); scriptlib/developer/ (cpu-floor audit tool)
Goal: Every binary this project distributes runs on any CPU meeting a declared instruction-set floor - the floor is a property of the build recipe rather than of whichever machine happened to run it, it travels with the artifact in its metadata record, and neither a build nor a publication can silently ship host-tuned code.
Acceptance: A flagless build of each distributed-artifact recipe (suite_tcl90, suite_tcl86, punkzip, punkres) on an AVX-512-capable host emits zero instructions above the declared floor - verified by an audit tool that disassembles the produced binaries and reports out-of-floor instructions, carrying the current AVX-512 regression as its fixture; `-Dcpu=native` still yields a host-tuned local build, proving the floor is a default and not a restriction; each published artifact's metadata record states the floor it was built to and punk-runtime surfaces it; and selecting or launching a runtime whose recorded floor the local CPU does not meet produces a named diagnosis instead of a silent 0xC000001D, while fetching for any platform stays ungated.
@ -285,3 +285,60 @@ project's first contact with a new user fails with no message at all.
cpu_model - not demonstrable on this v4 host with baseline-floor artifacts
(every host meets v1); the mechanism is verified by the mocked-host tests.
Behind those: r1-generation disposition and the bin/ punk9* kit rebake.
- 2026-08-07: APPROACH 6 executed (rebuild + republish) - the acceptance is met.
Full `zig build bootstrap` (default steps: install, install-libraries, make-zipfs,
smoke, tklib, tcllib, tcllibc, tcllibc-linux, kit-family, kit-family-artifacts,
library-artifacts) with the pinned released 0.16.0 rebuilt the r2 family WITH the
Approach 3 floor field now in the embedded [provenance] record (re-stage picked up
the 2026-08-07 build905.zig edit; zig-cached C compiles, only the wrap + emit
re-ran). family_check passed for all three members (the new
embed_cpu_floor/embed_cpu_model assertions are green). Audit of the rebuilt r2
exes: all three PASS at the baseline floor with zmm=0 ymm=0 out-of-floor=0.
Published in-situ to punkbin (git 59e7475, pushed to origin/master): the three
r2 exes + three r2 tomls replaced under their existing names/revisions; each
toml [provenance] now carries cpu_floor="baseline" + cpu_model="x86_64"; the
[tests] tclcore line refreshed to the shipped-codegen gate evidence
(passed=56041 failed=8, the Aug-06 baseline-rebuild test-gate - was 56039/9);
library [tests] lines unchanged; sha1sums.txt: the 6 r2 lines (3 exes + 3 tomls)
updated. build_id unchanged per artifact (the floor field does not enter the
identity digest - intended); sha1/size/built updated (the embedded record text
changed). The [tests] refresh folded in (the record-honesty residual from the
prior republish is cleared).
Verification of every acceptance conjunct (2026-08-07, this Zen 5 / v4 host):
- flagless build emits zero instructions above the declared floor: the three
republished r2 exes audit PASS (zmm=0) via scriptlib/developer/cpufloor_audit.tcl
(also re-verified against the punkbin working-tree copies post-republish).
- `-Dcpu=native` still yields a host-tuned local build, proving the floor is a
default not a restriction: a temp probe built `-mcpu=baseline` -> zmm=0 PASS
at baseline; `-mcpu=native` -> zmm=123 FAIL at baseline (out-of-floor=151,
first RVA 140002952) and PASS at the v4 floor. (punkzip/punkres were already
rebuilt+republished at zmm=0 in the prior session - the build-path tools are
clean; suite_tcl86's lib tier (tcllibc.dll) was audited clean then too.)
- each published artifact's metadata record states the floor: the republished
tomls carry cpu_floor/cpu_model in [provenance] (verified by diff vs the prior
ab5611d tomls and by punk-runtime info).
- punk-runtime surfaces it: `info` shows the cpu_floor/cpu_model rows
(embedded = sidecar, sha1 matches); `list` shows floor=baseline in the
metadata summary; `use` selects cleanly on the meets verdict (this v4 host
meets the baseline/v1 floor); `fetch` prints `cpu floor: floor=.. model=..`
and stays ungated (code-verified; cross-platform fetch for another machine
is not gated by a local-CPU verdict).
- selecting/launching a runtime whose recorded floor the local CPU does not
meet produces a named diagnosis instead of a silent 0xC000001D: verified by
the mocked-host tests (2026-08-07, both .ps1 and .bash twins) - a recorded
cpu_model=x86_64_v4 against a mocked v2 host yields the `below` verdict with
the 0xC000001D message and use/run exit 1. NOT demonstrable end-to-end on
this v4 host with a real published artifact: every published artifact is
baseline (v1) which every host meets, and no x86-64 level exceeds v4 (the
host's level), so no real below-floor artifact can exist here. The behavior
is present and verified by the mocked-host tests; the limitation is the test
host, not the implementation.
- fetching for any platform stays ungated: code-verified (fetch prints the
floor as information and never gates on the local CPU; the cross-platform
-platform <p> workflow is a normal cross-machine path).
## Follow-ons
Follow-on: r1-generation artifact disposition (replace vs drop) - the r1 exes remain AVX-512-only (2756 zmm each); under the in-situ alpha dispensation they could be replaced at baseline too, or dropped from defaults curation. No live goal home. => open
Follow-on: bin/ punk9* kit rebake with the new floor-bearing runtime (punkproject version-gate discipline applies - the floor surfacing code shipped in 0.57.1; a rebake stamps it into kits). No live goal home. => open
Loading…
Cancel
Save