Tree:
e1711a7b2a
master
v0.1a
${ noResults }
14 Commits (e1711a7b2aa248ace5d06e12fd26d353b3fb74ad)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
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
|
4 days ago |
|
|
b3a86ec766 |
make.tcl window achieved: G-113 + G-112 + G-104 flips, archives, reference sweep
Acceptance evidence recorded in each detail file before the content-identical archive moves: - G-112: fresh-rebuild bake products BYTE-IDENTICAL to pre-rename vfs products (punk91 zip-wrap + punk86 kit-wrap; vacuous punkcheck-skip pass caught and redone), vfslibs phase runs inside bake, aliases + bakehouse dirty-refusal verified live, docs/layout copies swept, punkexe suites 54/0 green. - G-113: zero-ESC piped on tclsh90 + punk kit + 8.6, force overrides, real Windows-console and WSL-pty mode=tty evidence, maketclcolour.test green; manual-visual note recorded. - G-104: list/info/build + self-description contract verified incl. a copied tree; punk-kit hosting; docs in place. Sweep: G-005/G-018/G-035/G-047/G-099 pending-tense references rewritten with archive pointers; forward-notes pushed to G-108/G-061/G-105; G-099<->G-108 re-bridged with a direct Related line (their bridges were all archived). Also: tclsh9.0.5-punk working runtime re-materialized to r2 (stale local materialization exposed by the window's bake - G-118 piperepl pins green again). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
5 days ago |
|
|
d3dcc31dc4 |
goals system v2: semicolon Scope delimiters, version marker, lint delimiter check
- GOALS.md: "Goals-system: v2" front matter; canonical "Goals system versions" section; Scope structure rule (elements separated by '; ' at top level, commas only inside parens/braces); Child DOX Index note in root AGENTS.md - goals_lint.tcl: new finding for top-level commas in Scope lines (paren/brace depth-aware) - goals_xref.tcl: repo-local configuration via goals/xref.conf (path roots, stop words, file extensions, reference containers, module dirs, bare_path_roots, prefix_anchors); defaults byte-identical to previous behaviour (verified on this tree) - goals/AGENTS.md: cross-repo goal references drop the G- prefix; xref.conf documented in Verification - Scope delimiter normalisation across GOALS.md, GOALS-archive.md and all detail files, live and archived: 224 lines, top-level commas only; conservation verified (goals_xref report byte-identical pre/post, diff hunks are Scope lines only). Archived tier converted under explicit user approval; sanctioned exception recorded in GOALS-archive.md. Assisted-by: harness=opencode; primary-model=openrouter/moonshotai/kimi-k3; api-location=openrouter.ai |
6 days ago |
|
|
9ebc10ffa5 |
goals: xref reconciliation - buildsuite/zig/binary-provenance cluster (G-005 G-006 G-099 G-100 G-104 G-105 G-108 G-110 G-114 G-116 G-117, recorded 2026-07-24)
Assisted-by: harness=opencode; primary-model=openrouter/moonshotai/kimi-k3; api-location=openrouter.ai |
7 days ago |
|
|
49f14060e1 |
G-103 achieved: runtime kit family - flip, archive, reference sweep (wrap trial PASS)
Final acceptance item closed by the punk9_beta/punk9bi_beta kit-wrap trial (user go-ahead; quiet tree): make.tcl project wrapped both kits over the family runtimes (the user's own earlier same-day build agreed - punkcheck no-change), and probes UNDER each kit verified 9.0.5, //zipfs:/app/tcl_library, PIPEREPL MACHINERY PRESENT, Thread 3.0.7 winning over the vfs payload's legacy thread3.0.1, vfs/tcllib/tcllibc engaged, punk::args from the vfs side, and Tk create/destroy in both - punk9bi_beta's Tk necessarily from the runtime's attached image (punk9win_for_tkruntime.vfs carries none). Every acceptance clause is now met; evidence recorded in the detail file. Flip mechanics: Status achieved 2026-07-22; detail file to goals/archive/ (content-identical move after edits); index entry to GOALS-archive.md; reference sweep across 13 live goal files (archive markers per the G-058 precedent - non-contract text only, Scope lines untouched; pending-tense updates in G-099 arc-unblocked, G-108 family production landed, G-018/G-023 naming-authority pointers). Forward pointers pushed to live goals: G-101 (8.6-family deferral target), G-067 (family -rN artifacts exist; publication user-gated with the defaults.txt flip process). Flagged (completion report): tcltls bi-battery line loses its goal home with this archive - candidate goal on request; punk9wintk905.vfs legacy thread3.0.1 payload cleanup can ride a future payload refresh; beta promotion is the user's interactive trial per the *_beta convention. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
1 week ago |
|
|
5d3950799b |
Platform matrix: win32-ix86 - supported for third-party hosting, buildsuite candidate
User direction: 32-bit windows joins the canon marked for what it is - status supported with runtime+lib tiers (hosting for available third-party runtimes/libs), buildsuite CANDIDATE (zig can target it; whether we add a buildsuite is undetermined) - the hosting-vs-building axis expressing exactly that split. Name win32-ix86 = platform::generic's own 32-bit x86 token (no normalization needed); normalize additionally folds hand-typed i386/i486/i586/i686. - vendorlib_tcl8/9 gain win32-ix86 dirs per the tree sync contract. - punk-runtime local detection: ps1 returns win32-ix86 on genuine 32-bit windows hosts (PROCESSOR_ARCHITECTURE x86 without ARCHITEW6432 - a 32-bit shell on a 64-bit OS keeps the x86_64 default: the runtime store serves what the OS can run); bash MINGW32/CYGWIN prongs key off the i*86 machine arch. Rewrapped; roundtrip pin PASS; twins + layout copy refreshed. Project 0.18.4. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
1 week ago |
|
|
3a49aa4c48 |
punk::platform buildsuite axis; record binary-.tm platform-segregation constraints (G-109)
- platform records + 'help platforms' gain buildsuite
(supported|planned|candidate|none): whether OUR zig buildsuites produce
runtimes for a platform. Deliberately a separate axis from tiers -
punkbin-structured repos (or third-party equivalents) can host runtimes
built by any mechanism, so runtime-tier hosting coexists with
buildsuite=none (netbsd/dragonflybsd-class examples, per user review).
openbsd/netbsd/dragonflybsd records now carry the runtime tier.
Current values: win32-x86_64 supported (suite_tcl90), linux-x86_64
planned (G-105), linux-arm64/linux-arm/macosx/freebsd-* candidate,
rest none.
- G-109 notes record the binary-.tm platform reality the user's fat-tm
experience established (retracting this survey's earlier
'tm-are-cross-platform' shorthand): multi-platform fat .tm are the
wrong shape (oversized downloads; same-version shadowing leaves no
drop-in path), platform segregation must ride tcl:™️:path via
per-platform TM ROOTS selected by boot - and platform dirs cannot nest
inside an existing tm root (subdirs are namespace components), so those
roots must be sibling trees. Candidate manifest field: declared target
platform so libunknown can skip wrong-platform binary .tm.
Project 0.18.1.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
|
1 week ago |
|
|
cae9f36d3e |
Canonical punkshell platform names: punk::platform module, help topic, tree sync (G-105 groundwork)
Survey outcome (punkbin vs punkshell platform folders): five naming sites had drifted - punkbin folders, bin/runtime, vendorlib_tclX dirs, the punkboot platform_generic snips (an old platform::generic copy), and the Tcl platform package itself whose outputs vary by version (1.1.x renamed modern macOS to 'macos', aarch64/amd64 pass through unmapped). Canon: <os>-<cpu> punkshell platform-dir names, cpu normalized amd64->x86_64 and aarch64->arm64 (arm = 32-bit; on macosx arm folds to arm64 - Apple silicon is 64-bit only), os macos->macosx. The universal 'macosx' name is the runtime-tier convention (punkbin + bin/runtime keep one macOS folder, per make.tcl's existing collapse); per-arch macosx-x86_64/macosx-arm64 serve the lib tier. - new module punk::platform 0.1.0: platforms (canonical records with status supported/dormant/recognized + tiers), normalize, local ?-tier lib|runtime? - full PUNKARGS argdocs. Tcl's platform package stays the raw identifier underneath. - punk 0.2.7: 'help platforms' topic (alias 'platform'; all prefixes mutually ambiguous so they fall through to command lookup, per the env/environment precedent) - canon table with the local interpreter marked and raw platform-package identifiers for comparison. - boot: punkboot platform_punk (inline normalization copy, sync-comment contract with the module) in punk_main.tcl/project_main.tcl/make.tcl; all platform-dir call sites switched to it. make.tcl exercised live; main.tcl copies brace-verified. - vendorlib_tcl8/9 synchronized to canon: freebsd-amd64 -> freebsd-x86_64 (READMEs updated), freebsd-arm64/linux-arm64/macosx-arm64 added, tcl8's untracked-empty linux-arm now tracked + tcl9 gains linux-arm, stray untracked macosx-arm empties removed, msys-x86_64 marked dormant pending a utility decision, top-level READMEs state the canon contract. - punk-runtime bash prongs emit canonical names: aarch64 -> linux-arm64 (no fetch default until punkbin carries that folder), arch-aware freebsd/openbsd/netbsd/dragonflybsd via normalized cpu tokens. Rewrapped; roundtrip pin PASS; layout copy + .ps1 twin refreshed. Flagged for user decisions (recorded in G-105 Notes): punkbin linux-arm holds an arm64-named kit (recommend linux-arm64 folder at next arm publish; artifacts immutable), msys-x86_64 disposition, optional platform-1.1.x re-vendor, src/vfs stays mapvfs-categorized (recommend a mapvfs platform column when cross-wraps land, not a .vfs tree restructure). Project 0.18.0. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
1 week ago |
|
|
d3bfc4484c |
G-103/G-105 groundwork: punk-runtime -platform surface, help action, no-args usage
Cross-build staging surface (both payloads in parity, rewrapped polyglot, layout copy + .ps1 twin refreshed, roundtrip pin PASS): - fetch/list/use accept -platform <p> (punkbin platform-DIR names, never zig triples); resolution: -platform arg > PUNK_RUNTIME_PLATFORM env > detected local platform; shape-only lowercase validation (server URL paths are case-sensitive - ps1 uses -cnotmatch; default -notmatch is case-insensitive and passed Win32-X86_64-class typos in testing). - foreign fetch requires an explicit runtime name (fetch defaults only make sense for the platform you stand on). - use -platform manages that folder's active.toml/materialization - the marker travels with the folder when deployed (provisioning story; unix exec bits restored at deploy time). - list flags !TARGET-MISMATCH when a runtime's metadata target disagrees with the folder it sits in (cross-fetch misfiling guard). - run stays LOCAL ONLY: rejects a leading -platform, ignores the env override, later args pass through to the runtime untouched. - new 'help' action (actions, options, env vars, examples) and a real usage block on no-args invocation (was a bare action list). - bash FreeBSD platform dir aligned to punkbin's actual freebsd-x86_64 (was freebsd-amd64; the G-105 platform-dir naming-alignment item). Verified on both payloads directly and through the wrapped cmd: noargs, help, local list unchanged, foreign use-materialization + mismatch flags, foreign-fetch refusal, run guard, env override (and run's immunity to it), bad-name validation. Project 0.17.9. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
1 week ago |
|
|
e2a6803ca5 |
goals: mark archived G-058 references (lint reference-sweep warnings)
The G-101/G-105 notes added earlier today referenced G-058 without its achieved/archive marker - goals_lint flagged both. Marked per the sweep-rule form (achieved 2026-07-10, archive path). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
1 week ago |
|
|
3c735af2e4 |
goals: characterize modpod binary-.tm load location + record multi-name/punkbin intent
Characterized (windows tcl 9.0.5) how a binary inside a zip-based .tm (modpod) loads, per user request. All three loading locations - dll direct in a kit's zipfs, a standalone .tm on disk, and a .tm nested inside a kit's zipfs (zip-in-zip, mounts in place, no .tm pre-extraction) - converge on the same copy-to-temp path: the binary extracts to %TEMP%\TCL<hex>\ with the same TIP-741 non-cleanup/accumulation flaw (verified with a #modpod-mybintest wrapping a real tcl9thread307.dll built via modpod::lib::make_zip_modpod). - G-066 (substantive): the characterization + the multi-package-name design - manifest-at-well-known-location read by libunknown (not yet implemented); multi-name .tm are punkshell/libunknown-only, not plain-tclsh loadable, which is acceptable if clearly documented; TIP 590 lowercase single-name is the plain-tclsh-loadable happy path; complex mechanisms OK with extensive tests. - G-103: TIP-741 thread extended - windows flaw now confirmed for BOTH direct-kit and modpod-.tm binary loads. - G-105: linux leg BLOCKED - local WSL is tcl 8.6.14 (no zipfs); needs a linux tcl9 runtime. Windows done; linux expectation (no accumulation) unverified. - G-067: binary modpod .tm as a publish payload; cross-refs. Temp reclaim also done this session: 15,596 orphaned %TEMP%\TCL* dirs removed. Notes only; no contract changes. goals_lint clean. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
1 week ago |
|
|
8a91679b2b |
goals: record tclkit dynamic-libc insight + TIP 741 temp-cleanup characterization
Self-contained-but-loads-binaries (the tclkit model) resolved: tclkitsh binaries are self-contained via an embedded Metakit/zip VFS yet DYNAMICALLY linked to libc - that dynamic libc is what makes dlopen/'load' work; extensions reach Tcl via the stubs table handed through the interp (no host symbol export needed). "Self-contained" and "static libc" are orthogonal. - G-105 (Notes were empty): the dynamic-libc first-linux-target choice is the tclkit model; fully-static-musl 'load' limitation stands; compiled-in alternative is G-058. - G-101 (Notes were empty): the prebuilt tclkit86bi/tclkit-win64-dyn runtimes it replaces are dynamic-libc Metakit kits; loadable binary batteries imply a dynamic-libc runtime; container choice is orthogonal to libc linking. - G-103: temp-copy dll cleanup wart the family runtimes inherit - Tcl core TIP 741 (DRAFT, windows-framed: TclpFinalizeLoad; extract-to-temp preserved vs TIP 709). Requirement (user): test on ALL target platforms (windows, linux/WSL, G-060 guests) that temp-dll/dir accumulation does not happen or is characterized. Applies to G-101's Metakit kits too. - G-060: one-line cross-platform test item pointing at the G-103 requirement. Notes only; no contract changes. goals_lint clean. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
1 week ago |
|
|
8f331c72d5 |
G-102 achieved: no-tclsh buildsuite bootstrap - flip, archive, reference sweep
Acceptance evidence recorded in the archived detail file: PATH-scrubbed clean-clone demonstration (c:/T/g102, env probed tclsh/fossil/git-free) ran 'zig build bootstrap' end-to-end - zon-pinned sources materialized, runtime + piperepl variants built, smokes green (static/zip shells, Tk tooltip, tcllib, tcllibc accelerators via critcl+zig cc), demo shell's tcl::build-info identical to the fossil-flow build; scrubbed test gate 69552/56075/13468/9 with 8 baselined + fCmd-30.3 proven a SystemDrive scrub artifact (single-file rerun with the var: GATE PASS), matching the same-day fossil-flow delegated gate (69552/56040/13503/9 GATE PASS). Environment findings (critcl target probing, windows Run-step stdio, testsuite base-env needs, firewall consent on first socket listen) recorded in the detail file for future suite work. Flip mechanics: detail file to goals/archive with Status achieved 2026-07-21, GOALS.md entry removed, GOALS-archive record appended (Scope+Acceptance verbatim), pending-tense G-102 references in G-099/G-103/G-104/G-105 annotated with the achievement and the settled driver shape. goals_lint clean (77 active-index goals, 29 archived). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
1 week ago |
|
|
64e912aa88 |
G-103..G-105 [proposed]: runtime kit family, make.tcl buildsuite surface, cross-target builds
User requirements batch 2026-07-20 integrated: - G-103 runtime kit family: buildsuites produce self-contained kits whose info library and batteries live in the initially attached zip - PLAIN tclsh kit (Thread + tclvfs/vfs::* + tcllib/tcllibc), PUNK kit (piperepl applied, ENABLED BY DEFAULT with env opt-out - gating review agreed; the plain kit serves stock semantics), BI kits adding libraries we build (Tk now; sqlite3/tdom easy/moderate futures; twapi flagged needs-investigation under the zig-only policy). tcllib+tcllibc in all members (user lean, agreed). Artifact metadata in punkbin (+compatible repos) surfaced by the runtime scriptset list/use. G-018 flagged as substantially subsumed. 8.6 variant deferred through G-101 (static-vfs/metakit questions noted there). - G-104 make.tcl buildsuite surface: list / info <suite> / build <suite> with suites SELF-describing (info contract survives the G-102 driver migration; copied trees appear automatically). mapvfs single-kit/list wishes noted as sibling ergonomics. - G-105 cross-target builds: -target as an invocation dimension (suite folders stay version-named), linux x86_64 first verified via local WSL with its own test baseline; zig tier findings VERIFIED and recorded - the freebsd asymmetry suspicion is inverted (freebsd AS TARGET was the gap, closed in zig 0.16 for FreeBSD 14+ with CI-tested x86_64/aarch64; building FROM freebsd was already fine); macOS-as-target (SDK/frameworks) recorded as the hard case; fully-static-musl dlopen limitation drives a dynamic first linux target. Cross-edits: G-096 piperepl matrix gains the kit-default policy update (punk kits opt-out not opt-in); G-101 records the 8.6 kit-family dependency; G-102 notes the family/target/surface as build-graph products. goals_lint clean. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
1 week ago |