Tree:
5c1e692700
master
v0.1a
${ noResults }
14 Commits (5c1e69270019c3ee04dff846189dbdd132e6de1c)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
a5edfe17b6 |
G-101 Scope: sync both tiers on the survey-extended wording
The pre-activation survey (
|
5 days 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 |
5 days 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
|
5 days 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
|
5 days ago |
|
|
c172912f4b |
G-121 achieved 2026-07-26: flip + archive record + reference sweep
Acceptance verified in full (evidence recorded in the detail file's Progress section): bakelist under plain tclsh + punk902z with per-entry presence and deployed state; selective 'bake punk91' refreshing only that kit's _build/bin artifacts and punkcheck records (stat + punkcheck diffs, negative grep clean); unknown-name no-build errors; bare bake kit-set parity; help/workflow contract updates; maketclbakelist.test 4 PASS; punkshell 0.24.0 minor bump. Index entry moved to GOALS-archive.md. Reference sweep: no pending-tense live-tier mentions existed; mapvfs.config pointer updated to the archive path; forward-pointing notes pushed as back-pointers to the live goals they serve (G-024 parsed-model reader swap, G-023 scheme-expansion entry point, G-115 per-kit payload detail, G-057 single-kit icon verification, G-028 deployed -state reporting sibling, G-101 kit-type non-assumption). Detail-file move to goals/archive/ follows in the adjacent commit as a pure rename (root AGENTS.md Doc Restructures). Claude-Session: https://claude.ai/code/session_01Jz7wkUsknJzyuJ3tgMaL2t Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
5 days ago |
|
|
e1c2c952e4 |
G-120 achieved: flip, archive, reference sweep (std-slot recycling restored)
Acceptance verified on the rebuilt punk91 kit (plain script mode): recipe 'chan close stderr; open NUL w' yields a channel auto-named stderr with working puts stderr; console+repl+libunknown suites 105/105. Detail file archived content-identically with evidence recorded; GOALS-archive record appended; sweep: G-101 launch-ladder item (2) rewritten to reflect achievement (in-place stdio repair now available on the 9.1 kit), G-011 gains a recycled-stderr consumer pointer. goals_xref report shows no orphaned shared-archived-ref bridges for G-120; goals_lint clean. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
6 days ago |
|
|
25340047c3 |
G-101 notes: launch-mechanism ladder + trial-kit naming convention (spike-validated)
Assisted-by: harness=opencode; primary-model=openrouter/moonshotai/kimi-k3; api-location=openrouter.ai |
6 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 |
|
|
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 |
|
|
9651d73b6c |
G-101 notes: the promised G-103 family payload contract now exists - record the 8.6 target shape
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 |
|
|
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 |
|
|
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 |
2 weeks ago |
|
|
67c3cf6ad4 |
G-098 achieved; propose 8.6 arc: G-099 suite_tcl86 buildsuite, G-100 Tk/tcllib set, G-101 kit container strategy
G-098 (suite_tcl90 Tk+tklib, tcllib/tcllibc via critcl, test gating) flipped to achieved 2026-07-20 and archived - all acceptance items recorded in the goal file across increments 1-7 (Tk 9.0.2 + tklib, tcllib+tcllibc ~248x hashing speedup, parsed-totals test gate with dispositioned baseline, full punkshell runtests parity with the Tcl903 baseline including Tk suites unskipped, kit-hosted runs fixed). New proposed goals mirror the arc for fossil core-8-6-branch (8.6 stays punkshell's real Tcl 8 target; current punk86-class kits ride prebuilt third-party tclkits - a provenance gap): - G-099: suite_tcl86 core - zig-only 8.6 runtime + thread 2.8-branch + tclvfs + parsed-totals core-test gate with its own dispositioned baseline. Records expected differences (no zipfs, entry-point/bundled lib divergences, no tcl::process). - G-100: Tk 8.6 + tklib + tcllib/tcllibc via critcl on the 8.6 runtime + punkshell runtests census against a native 8.6 kit baseline. - G-101: kit container strategy without zipfs (metakit/tclkit lineage vs cookfs vs zipvfs boot; TEMP_REFERENCE/metakit + KitCreator guidance) - separated so the well-understood ports stay incrementally landable. Sequencing recorded in each goal: recommendation is to close G-096's remainder and run the punk905_beta trial to promotion before activating the 8.6 arc, so shared suite scaffolding settles before it is forked. goals_lint clean. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
2 weeks ago |