Tree:
6558a32e7e
master
v0.1a
${ noResults }
37 Commits (6558a32e7e44be430424138e8b7bd6c033841cf5)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
2c1dec100e |
CRLF hygiene ahead of the fossil catch-up: glob the vendored sdx patches, LF two strays
The catch-up checkin aborted on CRLF in files outside crlf-glob. Five real offenders, in two classes needing opposite treatment: - src/buildsuites/suite_tcl86/patches/* (three files) is vendored sdx source by Matt Newman and Jean-Claude Wippler plus the patch derived from it. Upstream CRLF, and the patch must stay byte-exact to apply. Added to crlf-glob, which is what .fossil-settings/AGENTS.md prescribes for a payload tree that trips the prompt - explicitly in preference to reaching for --no-warnings. - src/modules/oolib-buildversion.txt and src/buildsuites/suite_tcl86/src/main.zig are authored punkshell files (4 lines each, fully CRLF) that the root AGENTS.md LF preference governs. Converted rather than globbed; globbing src/modules would suppress the warning across authored territory. punkzip's hamlet.txt was a false positive in the first scan - already covered by the crlf-glob entry for its fixtures directory, where it is deliberately CRLF byte-exact test data. Converted in git first so the fossil checkin records identical content; a content fix applied only fossil-side would desynchronise the two mirrors in the middle of a catch-up. Note oolib-buildversion.txt is build-generated, so a future regeneration may reintroduce CRLF there. Claude-Session: https://claude.ai/code/session_01YNjnq6oDzecknLg7AuWZgU Assisted-by: harness=claude; primary-model=claude-opus-5[1m]; api-location=anthropic.com |
2 weeks ago |
|
|
f4031b209f |
G-101 pre-activation survey: reference inventory + sdx wrap.tcl provenance capture
Notes-only on the goal; the new tracked material is the sdx patch capture. G-101 gains four sections and an extended Scope line naming the surveyed trees and bin/sdx.kit: a reference-material inventory giving the metakit boot chain in reading order with file:line anchors (kbskit kitInit.c pre-init -> boot.tcl raw mk::select bootstrap -> setupvfs.tcl -> mk4tcl.cpp Mk4tcl_Init, with KitCreator's storage-switch variant as the comparison reference for scoping cookfs/zipvfs); sdx provenance; the self-mount shadowing gotcha; and metakit-under-Tcl-9 feasibility. Two findings bear on the container choice: 8.6's core zlib cannot do mk4vfs streaming (kbskit boot.tcl states it - forces whole-blob decompression, relevant to a battery-carrying kit), and TEMP_REFERENCE/metakit is UNPATCHED upstream while KitCreator carries eight 8.x-era fixes. Self-mount shadowing verified live rather than inferred: inside a running tclkit [file type [info nameofexecutable]] is 'directory', so a kit cannot read or copy itself as a file and cannot be handed to sdx as -runtime (wrap.tcl LoadHeader is a plain file read). make.tcl:4995-5005 already works around this with _BUILDCOPY; recorded as a requirement to preserve. Container-agnostic - zipfs has the same shape via its /app anchor. src/buildsuites/suite_tcl86/patches/ captures the bin/sdx.kit delta into tracked form. bin/sdx.kit is tracked and is what make.tcl resolves for the 'kit' wrap path, but it is NOT stock sdx: unwrapping it and stock 2011-03-17 sdx gives 64 identical files except lib/app-sdx/wrap.tcl, whose entire difference is a two-line binary-mode read of tclkit.inf before stringfileinfo patches the PE version resource. That evidence previously existed only in gitignored scratch/ and TEMP_REFERENCE/ copies - one git clean from gone. Stock baseline, patched file and diff are all byte-exact (hashes in the README); the patch round-trips to the patched file byte for byte under 'patch --binary'. The stock baseline is kept in full because upstream (svn://svn.equi4.com/sdx/trunk) no longer exists. Both .tcl files are CRLF and must stay CRLF - vendored fidelity artifacts, exempt from the repo's LF-on-edit preference. Scope-limiting facts recorded rather than assumed: the patched path is DORMANT for present builds (fires only with -runtime + a .exe runtime + a tclkit.inf in the source .vfs, and no tclkit.inf exists in this repo), and the fix itself is UNVERIFIED - plausible as a CRLF-corruption fix but no reproducer was recorded with it. Confirming or retiring it is part of this goal's characterization work, alongside the bootstrap circularity noted in the goal (sdx.kit is itself a metakit starkit, so wrapping a suite-built 8.6 runtime currently needs a prebuilt third-party tclkit of exactly the kind G-101 exists to replace). Of the two proposed acceptance riders, this commit discharges the first (capture the patch before any sdx rebuild). The second stands: the end-to-end demonstration must wrap a SEPARATE COPY of the runtime so the shadowing path is exercised rather than accidentally avoided. A back-pointer to these findings was added to TEMP_REFERENCE/AGENTS.md so the survey is not repeated; that tree is VCS-ignored, so it is not part of this commit. Claude-Session: https://claude.ai/code/session_014UkdFjhuEdfCNDp4f8V6Xe Assisted-by: harness=claude; primary-model=claude-opus-5[1m]; api-location=anthropic.com |
2 weeks ago |
|
|
f89bd58c31 |
G-100 achieved: suite_tcl86 dependency set (Tk 8.6, tklib, tcllib + tcllibc) and an 8.6 runtests census
Extends the 8.6 buildsuite with the remaining pieces punkshell's Tcl 8 testing
depends on, all built from source with the pinned zig 0.16.0 toolchain only.
Tk 8.6.17 (build_tk86/build_tk86.zig) is a RE-DERIVATION from the staged 8.6
win/makefile.vc + rules.vc, not a port of suite_tcl90's build_tk.zig:
- no generic/tkPkgConfig.c in 8.6 -> no CFG_* defines at all
- rules.vc TCL_MAJOR_VERSION==8 arm -> tk86t.dll + lib/tk8.6 (vs tcl9tk90.dll)
- @TK_WIN_VERSION@ substitutes $(DOTVERSION).0.0, not the tcl-style
<dotversion>.<releaselevel>.<patchlevel> formula
- 8.6 TKOBJS carries no tkIcu/tkImgListFormat/tkImgSVGnano/tkWinGDI/tkWinIco/
tkWinSysTray; XLIBOBJS is a first-class makefile macro here (the 9.0
derivation had to recover those files by hand)
USE_TCL_STUBS + USE_TCLOO_STUBS against libtclstub86.a is the stock rules.vc
arrangement and keeps the dll loadable by both suite shells. tkMain.c is
compiled twice per makefile.vc, the ansi copy forced with -UUNICODE/-U_UNICODE
(verified the pinned zig cc defines neither for x86_64-windows-gnu, so the 8.6
core's ANSI/TCHAR arrangement is matched exactly).
tklib 0.9 and tcllib 2.0 install via their own installer.tcl (batch, packages
only, explicit -pkg-path so the installer's tcl_pkgPath-derived default can
never write off-tree); tcllibc is built by critcl 3.3.1 driving zig cc (tracked
critcl_zig.config, target pinned win32-x86_64-zig - critcl otherwise probes PATH
and falls back to its builtin msvc target). critcl compiles against its own
bundled headers chosen by the driving shell's version, which is why one config
serves both generations.
New evidence tools, run on every build:
tools/tk_smoke.tcl maps a real toplevel with classic + themed widgets,
updates, then destroys it - a load-only check passes
even with no usable display
tools/accel_bench.tcl same payload through sha1's critcl and pure-Tcl
implementations with the digests compared:
4MB -> critcl 5.7ms vs pure-tcl 2736ms = 477x
Test tiers (G-107 policy pattern): test-tcllib/test-tklib on the record tier
inside test-libraries, plus an opt-in test-tk (winDialog/winMsgbox excluded by
default - their message-injection automation blocks on a human under a batch
shell). First censuses on tclsh86ts.exe 8.6.18:
thread 142 run / 0 failed GATE PASS
tklib 796 run / 0 failed record
tcllib 64259 run / 41 failed record (names in the summary artifact)
tclvfs 51 run / 4 failed GATE PASS after baseline extension
The tclvfs baseline grew vfsFtp-1.1..1.3: they sit behind an 'ftp' constraint
needing tcllib's ftp package - absent at the G-099 capture, satisfied now that
the suite installs tcllib - so they run and reach the retired ftp.tcl.tk, the
same external-service class already baselined for vfsUrl-1.2/2.1.
punkshell runtests census (both runs 2026-07-26, identical flags, default
single-process sequential - 8.6 has no tcl::process so -jobs re-convoys):
native Tcl 8.6.17 1003 total / 986 passed / 10 skipped / 7 failed
suite tclsh86ts 1003 total / 987 passed / 10 skipped / 6 failed
runtests_parity.tcl finds exactly ONE difference: punkcheck
concurrency_two_writers_no_corruption failed in the BASELINE run and passed on
the suite runtime - a full-suite-load flake (6/6 twice in isolation on both
runtimes). Zero suite-runtime-only failures. Tk-dependent suites ran unskipped
(repl consolebackends 3/3, including the tkconsole backend on the suite Tk).
Two defects fixed in passing:
- scrubTclEnv never cleared TCL<major>_<minor>_TM_PATH, so suite shells
silently preferred machine/repo tm modules over what the suite had just
installed (a repo-built sha1-2.0.4.tm shadowed tcllib's 2.0.5, md5 2.0.8
shadowed 2.0.9) - any census through such a shell measures the machine. The
scrub list now covers TCL8_0..8_7 + TCL9_0/9_1 in all three sites (per-step,
suite.tcl process-level, bootstrap nested build). suite_tcl90 has the same
exposure via TCL9_0_TM_PATH and is deliberately untouched here (out of this
goal's scope) - pointers recorded in G-108 and G-116.
- build.zig.zon's .fingerprint was hand-authored, so 'zig build' from the
tracked suite dir died with 'invalid fingerprint' - the no-tclsh bootstrap
flow could never have run. Corrected to zig's computed value (its low half
is a checksum of the package name); 'zig build stage' now verified.
Goal flipped to achieved 2026-07-26 and archived; reference sweep updated G-005,
G-101, G-105 and ARCHITECTURE.md, and the archive-time xref pair G-101 <-> G-116
(whose only bridges were the archived G-100/G-103) gained a direct Related
pointer. No project-version bump - arm's-length build tooling, not shipped shell
behaviour.
Assisted-by: harness=claude; primary-model=claude-opus-5[1m]; api-location=anthropic.com
|
2 weeks ago |
|
|
a20a64a2a1 |
G-099 achieved: suite_tcl86 zig buildsuite for Tcl 8.6 (runtime, thread 2.8, tclvfs, core-test gate)
Builds a Tcl 8.6.18 windows runtime from core-8-6-branch sources with the
pinned zig 0.16.0 toolchain only (no MS toolchain), forked from suite_tcl90
(duplication-with-a-note posture). Products (stock threaded-release naming -
rules.vc keeps the 't' SUFX on 8.6):
bin/tcl86t.dll + tcl86t.lib shared core (static zlib compiled in; no zlib1.dll)
bin/tclsh86ts.exe static shell (kit-class; dde/registry static)
bin/tclsh86t.exe dynamic shell against the dll
lib/libtclstub86.a stub lib for extensions
lib/tcl8.6/... script library tree (dde/reg dlls inside)
lib/tcl8/{8.5,8.6}/... tm modules; lib/thread2.8.13, lib/vfs1.4.2
Companions: thread 2.8.13 (thread2813t.dll, TEA installed shape from the
checkout's own pkgIndex.tcl.in) and tclvfs 1.4.2 (vfs142t.dll) build and load;
registry 1.3.5 / dde 1.4.6. No zipfs in 8.6 - exe+dll+on-disk lib tree only,
resolved hermetically (exe/dll-relative, TCLLIBPATH/TCL_LIBRARY unset in all
child runs).
Recipe: build86.zig + build_common.zig + build_zlib86/build_tclthread86/
build_tclvfs86 helpers; tools/ and src/main.zig copied verbatim (suite-agnostic).
Two load-bearing 8.6 findings recorded in the README DERIVATION and recipe
comments: MP_FIXED_CUTOFFS (the in-core libtommath ships no bn_cutoffs.c) and
TCL_BROKEN_MAINARGS + console subsystem for the gcc-class main() entry.
Test gates (suite.tcl test -> zig build test-gate/test-libraries) parse all.tcl
totals (exit codes untrusted) and gate against tracked dispositioned baselines.
First census + two-consecutive-run deterministic PASS (machine SuperBee):
core 46525 run / 2 failed (filename-16.12/16.13 admin-share self-globbing)
thread 142 run / 0 failed (empty baseline)
tclvfs 51 run / 2 failed (vfsUrl-1.2/2.1 external ftp.tcl.tk dependency)
Goal flipped to achieved 2026-07-26 and archived; reference sweep updated G-005,
G-100 (now unblocked), G-101 and ARCHITECTURE.md. No project-version bump
(arm's-length build tooling, not shipped shell behaviour).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
|
2 weeks ago |
|
|
81f69d913f |
G-099 active: suite_tcl86 born on the G-104 contract - sources pinned, staging live, derivation started
Activation gated on the G-112 rename core + G-104 contract (both achieved
today); score re-run recorded. First increment:
- suite_tcl86/: sources.config (source + self-description records - lists and
describes itself via 'make.tcl buildsuite list/info' with no make.tcl
edits), suite.tcl fork (folder-derived naming, {tcl tclthread tclvfs}
requireds, build86.zig recipe file), build86.zig pending-derivation skeleton
(staging succeeds, recipe fails with a clear message), build.zig.zon with
real zig-fetch hashes, README with the DERIVATION record.
- Thread 2.8 selection: thread-2-8-branch @ e14fa771ae (tagged thread-2-8-13,
2.8.13); configure.ac TCL_MAJOR_VERSION==8 guard confirms the pairing.
- 8.6 source records in BOTH flows: dev refs (core-8-6-branch -> tcl86,
thread-2-8-branch, tclvfs trunk 1.4.2-era) + zon per-checkin pins
(tcl 1d1d5cbd91 = 8.6.18 era).
- First staging run through 'make.tcl buildsuite build suite_tcl86' (a real
driver run through the G-104 surface): checkouts staged from the shared
hermetic store, TCL_PATCH_LEVEL 8.6.18 read from the tree.
- makefile.vc derivation findings recorded incl. two Context corrections:
8.6.18 DOES generate tclUuid.h; zlib is prebuilt-import in stock nmake
(zig-only recipe will compile compat/zlib statically).
Core-test census + baseline deliberately pending until a built tclsh86 exists
(recorded in Progress).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
|
2 weeks ago |
|
|
889d3cd1c7 |
G-104: make.tcl buildsuite list/info/build + sources.config self-description contract
buildsuite group added as a declared passthrough (punk::args + fallback paths): list discovers suites (dirs carrying suite.tcl; _build excluded), info renders the manifest-derived detail, build forwards driver args untouched streaming output and exiting with the driver's status (punk-kit-hosted runs launch the driver via the kit's script subcommand, selected by the G-058 marker). Self-description = manifest option: sources.config gains description/product/ doc/zigpin records parsed by both suite.tcl (strict; pinned-zig default now reads zigpin - one source of truth) and make.tcl (tolerant). suite_tcl90 seeded with its records. Copied trees appear automatically (verified with a throwaway copy). Contract documented in new src/buildsuites/README.md + AGENTS.md, indexed from src/AGENTS.md. CHANGELOG extended under 0.23.0. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
2 weeks ago |
|
|
a015ada542 |
G-117 achieved: flip, archive, reference sweep; reopened pin; G-118 items 1+7 verified
Acceptance evidence in the archived detail file: embed verified in all three family members (family_check), sidecar derived from embed with identical build_id, 'info' identifies sidecar-paired/renamed-stray/pre-v1 files without execution and flags doctored-sidecar disagreements, punkbin AGENTS.md schema docs, roundtrip pin green, record survives make.tcl kit wrapping (punk9_beta reads its runtime's r2 record in-kit), r2 re-emitted with full v1 records. Sweep: achieved markers in G-025/G-057/G-108/G-116/G-118/G-119 (G-025's survival expectation updated to confirmed). tclshcmd.test pins ::tclsh(reopened) publication on the rebuilt patched kits (G-118 items 1+7 landed+verified; Progress updated). build905.zig: packager git-identity leg judges success by output not out_code (resolved 'unrecorded' on this host - effective at next emission). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
2 weeks ago |
|
|
f41a8dd6b7 |
G-117 emission + verification: sidecar derives from the embedded record; family_check embed probe
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 |
2 weeks ago |
|
|
05eebe1750 |
G-117 staging: per-member embedded artifact record (schema v1) in the kit-family trees
build905.zig: payload trees become per-member (shared content + the member's base/punkbin-artifact.toml embedded record - namespaced for G-025 coexistence, survives make.tcl kit wrapping). Record carries schema=1, artifact identity (name/-rN/variant/working_name/target), build_id (uuid-shaped sha1 digest of stable identity inputs - deterministic, zig-cache-friendly; correlation key, not integrity), origin (-Doriginurl, default punkbin repo url), packager (-Dpackager > env PUNKBIN_PACKAGER > git identity > unrecorded), project/ project_url (-Dprojecturl, default unrecorded), license summary, build_host_platform, [runtime] piperepl facts + batteries, [provenance] checkout uuids - with '#' comments on the non-obvious fields. sha1/size/built stay sidecar-only (embed-then-hash, no circularity). familyrev + checkout-uuid declarations hoisted to the staging section (records need them); wrap loop indexes per-member trees. Configure-compiled clean under pinned zig 0.16.0 (environ_map / StdIo lowercase API fixes). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
2 weeks ago |
|
|
e4e515652c |
piperepl patch rev: TCLSH_PIPEREPL_DEBUG-gated reopen notice on stderr; publish ::tclsh(reopened) (G-118 items 1+7)
In-source rev of tclMain_piperepl_905.c, effective at the next suite rebuild (the G-117 cycle): the '? reopen stdin from console' notice prints only when TCLSH_PIPEREPL_DEBUG is set truthy; all reopen-path messages (gated notice + genuine failure messages) move from stdout to stderr; ::tclsh(reopened) published as an unlinked fact (0 at gate-open startup, republished 1 after a successful console reopen). 2024-era artifacts (tclMain_piperepl.c, .patch) stay unmodified per the recovery policy. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
2 weeks ago |
|
|
e61411c19a |
tclsh subcommand review: tclshcmd.test suite + contract doc corrections
- new punkexe suite (17 tests): dispatch contract (script-arg argv0/argv/ info-script state, honest exit codes, piped no-arg eval, stock arg forms, lib: refusal) plus the piperepl launch-state contract on patched kits (istty/dorepl/evalinput published, piped script-arg state all-zero, unconsumed-piped-input safety default, evalinput opt-in ordering, script consuming stdin itself) and the unpatched degraded-mode notice - hang rule baked in: no test or fixture may set ::tclsh(dorepl) (the console-reopen path blocks under a piped harness; G-106-recipe territory) - patched-kit resolution: env PUNK_PIPEREPL_TEST_EXE, else the punkexe if it probes patched, else bin/punk9_beta.exe / punk9bi_beta.exe - encoding coverage is byte-level (utf-8 vs iso8859-1 fixture; [format %c 233] keeps the .test file pure ascii, runner-encoding-proof) - patches/README.md: corrected the tcl_interactive divergence note (console script-arg runs READ 1 where stock reads 0 - piped launches identical; the early link stays load-bearing for the piped prompt opt-in) and recorded the '? reopen stdin from console' stdout residue as known - shell/AGENTS.md: tclshcmd bullet; stale runtime.bash names corrected to punk-runtime.bash/punk-runtime.cmd Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
2 weeks ago |
|
|
a7ca13bf53 |
suite_tcl90: tclvfs -> forTcl9 branch (1.5.0); version-derived vfs names; familyrev default 2
User direction: the BAWT-shipped tclvfs 1.5.0 comes from the forTcl9 branch of the same core.tcl-lang.org/tclvfs repo our trunk ref trailed at 1.4.2 - tcl9 suites move to it (a future suite_tcl86 keeps trunk; recorded in sources.config). Both flows updated: sources.config ref + build.zig.zon per-checkin tarball pin (75a2672991). build_tclvfs_shared.zig gets the G-107 derivation treatment: every version-derived name (package dir, dlls, rc fields, configured vfs.tcl/pkgIndex.tcl) now follows the checkout's AC_INIT via versionInfo() - the hardcoded 1.4.2 was the same stamped-mismatch class as the thread 3.0.1 case. build905 consumers use the derived info (szip staging, family staging, family_check args, artifact metadata). forTcl9 build glue: export guard is now lowercase BUILD_vfs; HAVE_SYS_STAT_H defined; and an include-order shim TU works around zig's mingw headers defining __stat64 as a MACRO for _stat64 - tcl.h's 'typedef struct __stat64 Tcl_StatBuf' parsed before <sys/stat.h> binds a forever-incomplete tag and forTcl9's direct Tcl_StatBuf field access fails (MSVC has a real tag; upstream never sees this; -include trips zig cc CacheCheckFailed, hence the generated-TU overlay). Verification: all three family members PASS self-containment with vfs 1.5.0 incl the functional zip-mount round-trip; tclvfs test gate PASS 51/42/9/0 twice-deterministic - the branch CLEARED the whole 1.4.2-era baseline (glob-nomatch drift entries now pass, network vfsFtp/vfsUrl now skip) - baseline re-established empty. familyrev default bumped to 2 (r1 published+immutable; r2 emitted locally + staged to the runtime store; r2 publication is a user decision). Wrapped kits confirm the resolution skew the user found is gone: punk9bi_beta script-mode 'package require vfs' now 1.5.0 (boot loads the runtime's copy - both tiers now agree). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
2 weeks ago |
|
|
3ca7d1a8ad |
suite.tcl: materialize manifest.uuid in every fossil checkout (provenance completeness)
The published r1 artifact metadata recorded 'unrecorded' checkout uuids for tclvfs/tcllib/tklib: fossil only writes manifest.uuid when the REPOSITORY enables the versioned 'manifest' setting, which those upstreams do not (tcl/tk/thread do). The checkout-scoped setting is ours to control: 'fossil settings manifest u' materializes manifest.uuid immediately and keeps it current across updates - now applied idempotently to every staged checkout on each build. Verified on the live stage (tclvfs f082c47f, tcllib c784f6fd, tklib 2d53beaf now recorded); future emissions carry full provenance (r1 stays immutable as published). Zon-flow tarballs share the upstream limitation - their checkin uuids are derivable from the per-checkin pin URLs; recorded in the comment as the not-yet-wired follow-up. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
2 weeks ago |
|
|
61cf903dd9 |
G-103: punk-runtime list/use surface artifact metadata; use materializes -rN artifacts
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 |
3 weeks ago |
|
|
6a92d63cf5 |
G-103: runtime kit family assembly - kit-family + kit-family-artifacts steps, all members verified
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 |
3 weeks ago |
|
|
b5206fa7c4 |
suite_tcl90: -notfiles exclusion knob; Tk census excludes native-dialog files
The Tk opt-in census surfaced that the full suite cannot run unattended in
the batch/suite-built shell: winDialog.test (72 cases) and winMsgbox.test (19)
pop real OS dialogs whose message-injection automation does not drive them
here, so each blocks waiting on a human. The first attempt hung there and the
engine correctly reported no-totals/fail.
Adds a dedicated file-exclusion mechanism: tools/test_gate.tcl gains -notfiles
(a Tcl list of test-file globs passed to the driver as one -notfile list
value - a flat -testargs cannot carry a multi-file list through the option
chain, since -notfile takes a single list arg), and build905.zig gains a
per-library -Dtestnotfiles-<lib> knob defaulting to each LibSuite's
default_notfiles. tk defaults to excluding winDialog.test + winMsgbox.test so
its census completes hands-off; -Dtestnotfiles-tk="" re-includes them for a
manual interactive run. The exclusion is recorded in the evidence summary
(notfiles key). Empty for every other library (no behaviour change).
Verified: tk census now completes unattended (9865 run / 8127 passed / 1711
skipped / 27 failed, result pass; log shows winDialog/winMsgbox in the driver
skip list); thread gate still PASS with notfiles {} recorded.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
|
3 weeks ago |
|
|
f5f2fe7d83 |
G-107: per-library testsuite steps with gate/record/skip policy tiers
The external libraries the suite builds and ships now run their own testsuites under the suite-built shell as named recipe steps - evidence for the exact zig-built combinations nobody upstream tests. tools/test_gate.tcl generalized into the shared engine: -mode gate|record (gate = parsed totals diffed against the tracked dispositioned baseline, the core-gate mechanism; record = run must complete, failures recorded not fatal), -driver selection (tcllib-family trees run via their own support/devel/all.tcl - sak's underlying driver, standard aggregate totals, per-file child interps), -summaryfile/-library line-record evidence summaries for the G-103 artifact-metadata consumer (shape documented in the goal detail file), file-error evidence capture (@+ blocks, runAllTests error-exit sections). A run with no parseable totals FAILS the step in every mode - infrastructure breakage must never masquerade as recorded results. Core gate semantics unchanged; the core gate step now also writes out/testreports/tclcore.summary. build905.zig: steps test-thread test-tclvfs test-tcllib test-tklib test-tk + composite test-libraries (tk excluded - opt-in: interactive desktop, maps windows, tens of minutes; intended before publishing bi-family artifacts). Per-library -Dtestpolicy-<lib>=gate|record|skip and -Dtestargs-<lib> invocation overrides - no recipe edits needed. Baselines staged in both flows (suite.tcl item list + bootstrap recipe_items). suite.tcl: test action takes -steps (default test-gate) and a -zigargs passthrough (both actions); passes -j1 so combined test invocations serialize (zig runs independent steps concurrently; thread's suite is timing-sensitive). Census results (suite tclsh90s.exe 9.0.5, zig 0.16.0): thread 143/0 failed, EMPTY baseline, GATE PASS x3 identical consecutive runs; tclvfs 51/7 failed, all dispositioned (3x tcl9 glob-nomatch semantics through vfs handlers, 4x dead-FTP network tests), GATE PASS x3 identical; tcllib WITH tcllibc accelerators engaged (E tcllibc markers, crc32-critcl-* variants running) RECORDED 62328/54 failed; tklib RECORDED 796/18 failed (widgetPlus drift under Tk 9). No-totals failure path verified in both modes. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
10128952aa |
suite_tcl90: derive thread version from the checkout (was hardcoded 3.0.1)
Found by G-107's first library-test census: build_tclthread.zig compiled thread trunk 3.0.7 sources with -DPACKAGE_VERSION="3.0.1", so the dll self-reported the wrong version, and the pkgIndex declared only capital-T Thread 3.0.1 - the thread testsuite's 'package require -exact thread 3.0.7' could never load the package (nothing previously load-tested thread at all). The version now derives from the tree's AC_INIT (new build_common helpers acInitVersion/stripChars) and flows into every version-derived name: dll tcl9thread<nodots>.dll, install dir lib/thread<version>, PACKAGE_VERSION/ PACKAGE_STRING defines, rc resource fields, and a pkgIndex declaring BOTH 'Thread' and 'thread' (threadCmd.c provides both; the testsuite requires lowercase, existing punkshell consumers the capitalized name). Dead zip-related consts riding the stale version removed. Note for the next kit/vfs refresh: the punk905 kit payload (src/vfs/punk9wintk905.vfs/lib_tcl9/thread3.0.1/) still carries the old self-consistent 3.0.1-stamped copy - refresh to the derived naming then. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
4d9c8a2626 |
G-102 follow-up: drop echo banner steps - scrubbed-env transitive failure
The five decorative 'echo --Installing package X--' addSystemCommand steps (2024-era) spawned 'echo' as a program - a cmd BUILTIN that only resolved when a coreutils echo.exe happened to be on PATH. In the PATH-scrubbed bootstrap environment the spawns failed and took the tm installs, install-libraries and (transitively) make-zipfs down with them - the reason the zip-wrapped shells never landed in scrubbed composite runs while every package step was green. zig's own step reporting makes the banners redundant. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
acc6ab409c |
G-102: build.zig entry shim; deterministic critcl target; zig pin in comptime gate
Three deltas surfaced by the PATH-scrubbed clean-checkout demonstration: - build.zig: default-entry re-export of build905.zig's build so the documented plain 'zig build stage|bootstrap' works from the tracked suite dir (the recipe keeps its versioned filename; staged flows still invoke it via --build-file). - critcl_zig.config + recipe: settings move under an EXPLICIT target (win32-x86_64-zig) and the tcllibc step passes -target win32-x86_64-zig. critcl otherwise chooses its build target by probing PATH for compilers - with a gcc visible the config defaults engaged (why G-098's flow worked), but the scrubbed environment fell back to critcl's builtin msvc 'cl' target and all 25 accelerator modules failed with "couldn't execute cl". Verified green in BOTH environments (scrubbed and normal PATH). - build905.zig comptime gate: the stale 0.13-dev minimum becomes the actual suite pin (0.16.0) with a message pointing at punk-getzig and the README (acceptance: the recipe records the zig version it is written against). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
e5db051389 |
G-102 M3+M4: post-tclsh phases as recipe steps; suite.tcl reduced to dev wrapper
The whole pipeline now lives in the zig recipe; Tcl remains the tool exactly
where a tclsh is guaranteed to exist - run by the FRESHLY BUILT suite shell
as build steps:
- New steps (native-host builds): smoke (static shell patchlevel; zip shell
patchlevel + attached tzdata/autoload), tklib / tcllib (their own installers,
batch, -pkg-path as a cached output dir installed into the prefix, + package
smokes incl withdrawn-Tk tooltip), tcllibc (critcl driving zig cc via the
tracked critcl_zig.config, module list parsed from tcllib's version.tcl,
pinned-zig dir prepended to PATH, + accel smoke), test-gate (tools/
test_gate.tcl - the parsed-totals gate vs expected_test_failures.txt,
-Dtestargs passthrough).
- Package landing moves into the recipe proper: thread pkgIndex.tcl
(build_tclthread), tk pkgIndex.tcl (build_tk), and the tclvfs script package
incl .in-template substitution + dll (build_tclvfs_shared
install_tclvfs_package) - all hooked to the install step.
- Step scripts: tools/test_gate.tcl, tools/suite_smoke.tcl, tools/pkg_smoke.tcl
(run under the built shell; assertions live in Tcl).
- Two windows-childproofing findings encoded: built-shell Runs execute the
CACHED artifact (no ../lib/tcl9.0 beside it) so each such Run gets
TCL_LIBRARY pointed at the source tree's script library (the zip smoke
deliberately excluded - its attached library is the thing under test); and
cached (non-side-effect) Runs spawn with stdout IGNORED, leaving the tcl
child without a stdout channel ('can not find channel named "stdout"',
critcl's logging) - such runs capture stdout to give the child a real pipe
while keeping caching.
- suite.tcl: thinned to the fossil dev flow - fetch live checkouts (git kind
now handled in the main loop for critcl's pin), stage the recipe, delegate
to the staged steps (run_zig_steps; 'test' delegates to test-gate). Default
-steps and the bootstrap default grow to the full pipeline short of
test-gate. critcl_zig.config + expected_test_failures.txt join both staging
lists. Docs updated (README two-flow section, sources.config two-surface
header, overlay section); .gitignore learns .zig-cache/ and zig-pkg/ (zig
0.16 extracts fetched packages into zig-pkg/ beside the manifest).
Verified (fossil flow): full pipeline PASS - suite_smoke static+zip, tklib
tooltip:2.0.4 under withdrawn Tk, tcllib md5/sha1/cmdline, tcllibc:2.0 with
md5-critcl-accel:1; 'suite.tcl test -testargs {-file http.test}' delegates to
the gate step (528/519/9/0 GATE PASS).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
|
3 weeks ago |
|
|
51fc727fe2 |
G-102 M2: build.zig.zon pinned manifest + zig-native bootstrap staging
suite_tcl90 gains the no-tclsh source path: - build.zig.zon: content-hashed manifest pinning each source as a fossil per-checkin tarball (tcl 1a9c3b9d96 / thread caa1d3aa30 / tclvfs f082c47f9b / tk effef6c657 / tklib 2d53beafc0 / tcllib c784f6fda4 - the exact checkouts the promoted punk905 runtime was built from) plus critcl 3.3.1 as a github archive. All lazy: the fossil dev flow never triggers a fetch. Refresh = bump a pin (zig fetch --save). Verified honored under --build-file build905.zig. - build905.zig mode split: from the staged recipe copy the full graph registers as before; from the TRACKED suite dir (sources.config present, no ../tcl905) only the staging steps register. 'zig build stage' materializes pinned sources + a recipe copy into ../_build/<suite> (the same layout suite.tcl's fossil staging produces - both flows share the staged invocation, and the stage dir derives from the suite folder name so copy-and-tweak isolation holds). 'zig build bootstrap' chains the staged build: nested zig invocation with suite.tcl-parity cwd (parts of the recipe resolve sources cwd-relative), forward-slash prefix (the prefix flows into -DTCL_PACKAGE_PATH as a C string literal - backslashes broke the stubs compile), per-zig-version shared cache dir, hermetic-child env scrub, ReleaseFast default. - tools/stagetree.zig: host-compiled materializer. Pinned mode keys a .stage-materialized marker on the dependency's content-addressed cache path (pin bump = invalidation, stale trees deleted so orphans cannot survive); always-mode for recipe items; fossil/git checkouts at the destination are never touched (tested). Verified: 'zig build stage' against the fossil-populated stage refreshes only the recipe copy (checkouts untouched, fossil changes empty); a full copy-and-tweak suite copy (suite_tcl90zt) ran 'zig build bootstrap' from nothing but the tracked tree + pinned zig - all 7 sources fetched/staged from the manifest, all four shells built; tcl::build-info reports the same 9.0.5+1a9c3b9d... as the fossil-flow build and the zip shell boots its attached library (tzdata + autoload). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
84a1b22515 |
G-102 M1: suite_tcl90 configure-products as zig overlays; source trees read-only
Generation of the configure-products a fresh checkout lacks moves from suite.tcl tree-writes into the zig recipe as build-cache overlays: - tclUuid.h / tkUuid.h / threadUuid.h: wrapfiletofile Run outputs consumed via overlay include dirs added FIRST per module (stale tree copies from pre-G-102 flows can never shadow; the LazyPath also carries the step dep). The unused addUpdateSourceFiles tree-write variants (build905 prepare-source, build_tclthread) are removed. - tclsh.exe.manifest: configure-time substitution (tcl.h parsed by the new build_common.zig helpers); tclsh.rc compiled from an overlay COPY beside the generated manifest because rc resource references resolve rc-file-relative before include paths. Both tclsh exes switch to .include_paths LazyPaths. - wish.exe.manifest: overlay dir first in tk.rc include_paths (RT_MANIFEST resolves through rc include paths - the arrangement the tk build already relied on). tk.rc itself stays tree-compiled (lives in win/rc, no stale risk). - thread.rc: compiled from an overlay copy with the tcl.h include inserted (the historical checkout edit is normalized if a mutated tree is staged); the staged tclthread checkout's thread.rc edit has been fossil-reverted. - build905.zig: redundant configure-time top-level library install loop removed (install_library_tree already covers it); dead zlib stage copy and the suite.tcl generation blocks removed (read-only version parsing kept for smokes/logging). Verified: full staged-mode rebuild PASS (all smokes incl tklib/tcllib/tcllibc); built binaries carry the overlay products (tcl::build-info reports 9.0.5+1a9c3b9d..., tclsh manifest version 9.0.2.905, tk dll manifest + tk checkout uuid, thread dll uuid; thread dll's empty FileVersion matches the pre-change binary - upstream quirk). Source checkouts stay pristine (fossil changes empty). Core test gate: 69783 run, 12 failed - 11 baselined plus http-4.14.2, a network-timing flake that passes on isolated rerun (528/519/9/0). tclsh90sprzip.exe install into out/bin is currently blocked by an open user application holding the file; the product builds identically into the zig cache and installs on next run once released. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
d74752a935 |
G-103: punk-in-name requirement for patched runtimes; punkbin push deferred to family artifacts
User direction 2026-07-21 recorded in G-103: piperepl-patched runtime executables must carry 'punk' in the name (e.g tclsh905punk.exe) so patched and unpatched are never confusable - now an Acceptance item, with the open design questions captured (how to encode tcl patchlevel + punk version, separator choice; existing sub-namespaces punkNNN kits / tclsh-runtimes / punk- utilities; metadata carries authoritative versions so filenames stay human-distinguishing). The suite's tclsh90spr/sprzip are flagged as internal working names in patches/README.md pending the scheme. Also noted: punkbin pushes of suite runtimes are deferred until family members carry Thread etc in the attached zip and the punk-named pr variants exist - publication follows G-103's artifacts, not the interim tclsh905/punk905 shapes. goals_lint clean. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
cae1483b73 |
G-096 clean-checkout re-verification PASS; suite tools quieted (zig stderr-warning cosmetics)
Fresh clone (shallow path + core.longpaths - the deep-path first attempt hit windows MAX_PATH on the modpod template trees, caveat recorded) -> the clone's own punk-getzig fetched 0.16.0 (mirror chain, minisign, versioned dir) -> cold-cache suite build PASS: 9.0.5 static/zip/pr/przip shells with recipe-generated configure-products, zip shell smoked, all tk/tklib/tcllib/tcllibc legs green. Cold-log 'failed command:' blocks diagnosed as BENIGN zig 0.16 behaviour (build_runner prints that block for any step with nonempty result_stderr even on success) triggered by our own tools' informational stderr prints - zipfs_mkzip/mkimg call echoes now go to stdout and wrapfiletofile's octet count is removed; rebuild shows zero occurrences, PASS. All G-096 acceptance items are now met - achieved flip pending user confirmation. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
5be8f2fb77 |
G-096 piperepl rebased onto 9.0.5, gate flipped to G-103 policy; tclsh90spr + tclsh90sprzip products, matrix PASS
The recovered 2024 TCLSH_PIPEREPL patch applies cleanly to current core-9-0-branch tclMain.c (8 hunks, offset 4). Tracked as patches/tclMain_piperepl_905.c = stock 9.0.5 + patch + gate-default flip: ENABLED unless TCLSH_PIPEREPL=0 (2024 was opt-in set-and-not-"0") per the G-103 punk-kit policy - the goal's Goal/Acceptance were aligned to that policy first at user request. Era files kept unmodified as recovered artifacts; patches/README updated (status, gate semantics, known tcl_interactive early-link divergence when the gate is open). build905.zig gains tclsh90spr (per-source construction mirroring tclsh90s with both tclMain compiles - unicode + TCL_ASCII_MAIN ansi - swapped to the patched file; stock products stay byte-for-byte unpatched) and tclsh90sprzip (zipfs_mkimg wrap of the pr exe, -infile form). patches/ added to suite.tcl's staged recipe items. Full suite build PASS. Behaviour matrix recorded in the goal: 9/9 stock-equivalence rows IDENTICAL (script-arg / script-consuming-stdin / piped-commands x unset/0/1 - open-gate plain scripts behave stock; unread piped payload never eval'd); feature row proves buffering verbatim into ::tclsh(inputbuffer) (write-trace capture), console reopen success and repl landing; =0 feature row identical to stock; przip variant identical to pr - the G-103 punk-kit precursor works. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
c62eda362f |
suite_tcl90: declarative sources.config + folder-derived stage for copy-and-tweak retargeting
A developer (no llm assistance, no punkshell modules - the driver stays dependency-free plain tclsh) can now copy the suite tree and retarget sources declaratively: urls/refs/pins live in sources.config (plain line records 'source <name> <kind> <url> <ref> <dir>', parsed never executed; fossil sources + the critcl git pin), and the build stage derives from the suite FOLDER name so a copied tree stages into its own _build/<name> isolated from the original. -tclbranch becomes a per-run override of the declared tcl ref. Depth limit documented where the tweaker will read it: same-major url/ref changes are config-only; version-class changes ripple into build905.zig (checkout dir names, version-derived tm/dll/manifest names). README gains a Retargeting/copying section; its Sources section corrected (stale per-stage fossil-store location from before the ~/.punkshell/fossils move, and the G-098 sources were missing from the table). Direction recorded in G-096 notes (2026-07-20): toml requirement DROPPED for binary-build buildsuites; long-term intent is bootstrapping without a pre-existing tclsh (zig acquisition = accepted root dependency; the freshly built tclsh is the legitimate intermediate for tcllib/tklib installers and critcl); zig-driver-vs-polyglot question recorded with the current recommendation (zig hybrid; polyglot counselled against). Verified: suite.tcl test -testargs '-file assocd.test' passes through config load + fetch skip-logic + gate on the existing stage; stage derivation for a copied name resolves to _build/<copyname>. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
df9fdbd1d6 |
G-098 test gate: parsed totals vs tracked baseline (GATE PASS); thread/registry/vfs runtime plumbing
suite.tcl 'test' is now a gate: full tcltest output logged, totals parsed (all.tcl's exit code does not reflect failures), failed test names compared against expected_test_failures.txt - unexplained failures fail the action; stale baseline entries are noted on full runs. Totals on core-9-0-branch 9.0.5 / zig 0.16.0: 67281 run / 55835 passed / 11435 skipped / 11 failed, GATE PASS, deterministic across two full runs. The 11 are dispositioned in the baseline: 6 fCmd (OS username vs profile-dir machine trait), 2 filename (admin-share self-globbing), 2 safe-stock (install-layout accessPath tokens), 1 console-bug-f10d91c2 (powershell driver yields empty result in batch context; semantics verified independently by G-076 kill procedure). Runtime package plumbing gaps closed (built artifacts without install wiring): thread pkgIndex generated (lib/thread3.0.1 -> bin dll), registry dll install artifact hooked to install-libraries (was orphaned - registry 1.3.7 + dde 1.4.6 now load), tclvfs script package installed with vfs.tcl + pkgIndex.tcl generated from .in templates (vfs 1.4.2 + vfs::zip 1.0.4). punkshell runtests under the suite runtime: checkbugs 5/5, opunk backends.test PASS (Tk-widget console suite runs unskipped on the suite-built Tk), repl consolebackends 2/3 - repl_console_backend_tkconsole open (code-interp console_pending_out junction init missing; DRIVER-DONE timeout-failsafe). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
48a1d0a97f |
G-098 increment 3: tcllib installed; tcllibc via critcl 3.3.1 + zig cc; sha1 248x evidence
tcllib pure side via its own installer (explicit -pkg-path; driver now unsets TCLLIBPATH/TCL_LIBRARY/TK_LIBRARY for hermetic child shells after the default libdir followed inherited TCLLIBPATH to C:/TCLPKGS - additive pollution verified and removed). install-libraries now installs the whole tcl library tree (its own pkgIndex references msgcat/opt/... subdirs the piecemeal install missed). critcl pinned 3.3.1 (git) + tracked critcl_zig.config (zig cc -target x86_64-windows-gnu); driver replicates sak's direct critcl invocation over the 21 declared files -> tcllibc.dll at out/lib/tcllibc (provide 2.0). Evidence: md5 accel(critcl)=1; sha1 5MB critcl 12.3ms vs pure 3.06s (~248x) - the punkcheck hashing pain quantified and fixed. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
32bb7c17e8 |
G-098 increment 2: tklib installed via its own installer (batch, suite shell); tooltip smoke
Installer behaviour checked first per user caveat: module exclusions, app-script generation, doc options, and the aggregating top-level pkgIndex.tcl (gen_main_index) - not a straight copy; critcl DSL stubbed to no-ops (pure-tcl). Driver runs it with the suite-built tclsh in batch mode, packages only, landing out/lib/tklib0.9. Smoke: package require Tk + tooltip -> 2.0.4 in the suite shell. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
440bd029d8 |
G-098 increment 1: hermetic fossil clone store (~/.punkshell/fossils) + Tk extension builds and smokes
Clone dbs are caches, not build output: punkshell-owned machine-level store at ~/.punkshell/fossils (independent of personal ~/.fossils, outside deletable _build dirs), read-only seeding from ~/.fossils, -repofolder / PUNK_FOSSIL_STORE override (registered in punk::config for 'help env'), -refresh pulls clones. Verified seed->open->build->smoke from empty store, then migrated + re-verified. Sources wired: tk core-9-0-branch (9.0.2, stale clone pulled current), tklib + tcllib trunk. build_tk/build_tk.zig (0.16 API): tcl9tk90.dll from stock sources per makefile.vc object inventory (+ xlib emulation set), ansi/UNICODE tkMain pair with forced -U ansi guard, CFG_* defines, win/rc/tk.rc with explicit rc include paths, oleaut32 et al; tk library -> lib/tk9.0 with driver-generated tkUuid.h, wish.exe.manifest and pkgIndex.tcl. SMOKE PASS: package require Tk -> 9.0.2, screen queried, widget packed/updated, clean destroy, in the suite-built tclsh90s. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
4b87720328 |
G-096: zig 0.16.0 adopted - recipe ported to 0.16 build API, suite pin repointed, punk-getzig pin 0.16.0
The build016 experiment port lands in the tracked recipe (root_module/ createModule creation, addLibrary+linkage, .root_module.* method sweep, linkSystemLibrary options arg, array_list.Managed, Io.Dir dir-walks with b.graph.io, wrapfiletofile ported to the 0.16 entry/Io idiom). 0.14 support deprecated per user direction; 0.14.1 remains archived on punkbin. Verified on the pinned default (bin/tools/zig-x86_64-windows-0.16.0): build PASS, shells 9.0.5, tcl-test parity 557/357/200/0 identical to the 0.14.1 build. punk-getzig payload pins -> 0.16.0 (windows zip + linux tarball), re-wrapped checkfile ERROR-free, ps1 twin refreshed. punkbin commit 54714d7 holds the 0.16.0 archive; push pending gitea recovery (server currently 500s). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
1664e9ba91 |
G-096: vqtcl/vlerq removed from suite; 'suite.tcl test' runs the Tcl core testsuite; tm names synced
vqtcl was an old-tclkit experiment with no confirmed public upstream - wiring, helper module, staging and docs removed (future tclkit work: TEMP_REFERENCE/ metakit + KitCreator). New 'test' action runs tests/all.tcl on the suite-built static shell with -testargs passthrough; verified assocd/util/lindex: 557 run, 357 passed, 200 constraint-skipped (no C test commands in a release shell), 0 failed. install-libraries tm filenames synced to the tree's provided versions (tcltest-2.5.11, http-2.10.2, platform-1.1.1) - the 2024-era names made 'package require tcltest' fail on a filename/provide version conflict. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
a12cdcd2b8 |
G-096: suite pinned to official zig 0.14.1 (punkbin-hosted); recipe compat deltas keep dev.2074 working
Recipe: b.host -> b.graph.host; redundant second UNICODE tclMain add into the objs lib removed; exe's ansi tclMain compiled with -UUNICODE -U_UNICODE -DTCL_ASCII_MAIN (zig cc windows-default defines made it a duplicate UNICODE compile under 0.14.1 - lld duplicate Tcl_MainExW/commons). Driver: per-item recipe staging, per-zig-version local caches (.zig-cache-<ver>; caches must not be shared across zig versions), zig resolution -zig > PUNK_ZIG > pinned bin/tools/zig-x86_64-windows-0.14.1 > PATH. Verified: PASS on 0.14.1 AND regression PASS on 0.14.0-dev.2074; pinned-default no-option run PASS. Pinned archive minisign-verified and published to punkbin (abcd87c). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
52ef884162 |
G-096: track remaining samplesuite1 sketch placeholders
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
120f03085d |
G-096: suite_tcl90 - tracked zig recipe + driver build Tcl 9.0.5 end-to-end; piperepl patches recovered
First real buildsuite: build905.zig (verbatim G-076-validated recipe) + helper modules + tools, driven by suite.tcl which stages the recipe into src/buildsuites/_build/suite_tcl90, arranges sources (tcl fossil core-9-0-branch --nested with FOSSIL_HOME isolation; thread/tclvfs trunk; zlib from the tcl tree's compat/zlib; vqtcl from a local dir), generates the configure-products fresh checkouts lack (tclUuid.h, tclsh.exe.manifest, thread.rc include), builds and smoke-tests. Verified PASS: static + zip shells report 9.0.5 (checkout 1a9c3b9d96), Thread 3.0.1 builds from current trunk (new generated-include fix in build_tclthread) and loads. The 2024 TCLSH_PIPEREPL/tclZipfs/tclCmdIL patches are now tracked under suite_tcl90/patches with a semantics README (not applied by default builds). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
5943b2c3ef |
G-096 activated: src/buildsuites tracked (ignore flip both VCSes); samplesuite1 vendorbuild residue reconciled
Blanket /src/buildsuites ignores removed from .gitignore and .fossil-settings/ignore-glob; retired /vendorbuilds/ ignores removed with them. src/buildsuites/_build remains ignored via the existing _build globs. samplesuite1 sketch marked as such, buildprefix moved to the _build convention (vendorbuild concept retired per user decision 2026-07-20). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |