From b3a86ec766a4e68da8b72b8d936855d1a078dab5 Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Sat, 25 Jul 2026 16:26:10 +1000 Subject: [PATCH] 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 --- GOALS-archive.md | 12 +++++++ GOALS.md | 12 ------- goals/G-005-zig-build-infrastructure.md | 2 +- goals/G-018-zig-plain-tclsh-kits.md | 4 ++- goals/G-035-mixed-tm-pkgindex-provision.md | 9 +++--- goals/G-047-declared-primary-vcs.md | 9 ++++-- goals/G-061-pseudoconsole-expect.md | 6 ++++ goals/G-099-suite-tcl86-buildsuite.md | 17 +++++++--- goals/G-105-buildsuite-cross-target.md | 4 +++ goals/G-108-buildsuite-debug-tier.md | 5 +++ .../G-104-maketcl-buildsuite-surface.md | 14 ++++++--- .../G-112-maketcl-subcommand-rename.md | 31 ++++++++++++++++--- .../G-113-maketcl-tty-aware-colour.md | 14 ++++++--- 13 files changed, 102 insertions(+), 37 deletions(-) rename goals/{ => archive}/G-104-maketcl-buildsuite-surface.md (89%) rename goals/{ => archive}/G-112-maketcl-subcommand-rename.md (83%) rename goals/{ => archive}/G-113-maketcl-tty-aware-colour.md (92%) diff --git a/GOALS-archive.md b/GOALS-archive.md index e392825c..099aa85a 100644 --- a/GOALS-archive.md +++ b/GOALS-archive.md @@ -170,3 +170,15 @@ Acceptance: against a fixture punkbin server (PUNKBIN_URL override): list -remot ### G-120 [achieved 2026-07-25] 9.1-kit script-mode boot pins process std channels: find holder, restore std-slot recycling → detail: goals/archive/G-120-scriptmode-std-channel-pin.md Scope: src/modules/punk/console-999999.0a1.0.tm; src/modules/punk/repl-999999.0a1.0.tm; src/lib/app-punkscript/; src/vfs/_config/punk_main.tcl Acceptance: the registration holder is named (module, proc, mechanism) with reproduction evidence; the disposition is recorded here (deliberate-and-documented, or fixed); a script-mode run of the recipe `chan close stderr; open NUL w` on the current 9.1 kit yields a channel auto-named stderr with working puts stderr, and the console + repl module suites (src/tests/modules/punk/console/, src/tests/modules/punk/repl/) pass. + +### G-113 [achieved 2026-07-25] make.tcl colour output is terminal-aware: SGR only on interactive tty, off when piped → detail: goals/archive/G-113-maketcl-tty-aware-colour.md +Scope: src/make.tcl (startup colour policy, define_global_ansi); src/AGENTS.md (invocation guidance); src/tests/shell/testsuites/punkexe/ (piped-output characterization if a suite proves feasible); layout make.tcl copies via established sync channels +Acceptance: With NO_COLOR unset, representative informational and build subcommands (at minimum check, help, workflow, and one build command such as modules) run with stdout redirected to a file produce zero ESC (0x1B) bytes on stdout and stderr, verified on tclsh 9.x and a repo punk kit. The same commands on a real interactive terminal retain colour (manual verification, Windows console plus one unix tty). NO_COLOR=1 still suppresses all colour; a documented force-colour override re-enables colour on piped output. The Tcl 8.6 probe-fallback policy is documented and behaves as decided. The interim src/AGENTS.md NO_COLOR bullet is revised to describe the implemented behaviour. + +### G-112 [achieved 2026-07-25] make.tcl subcommand rename: stage-true vocabulary around the promotion gates → detail: goals/archive/G-112-maketcl-subcommand-rename.md +Scope: src/make.tcl (subcommand tables, dispatch gating, help/workflow text); src/project_layouts/vendor/punk/basic/src/make.tcl + src/project_layouts/vendor/punk/project-0.1/src/make.tcl + src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/make.tcl (layout copies via established sync channels); AGENTS.md + src/AGENTS.md + src/modules/AGENTS.md + src/lib/AGENTS.md + src/vfs/AGENTS.md + src/tests/AGENTS.md + src/tests/shell/AGENTS.md + README.md + src/README.md (workflow references); src/tests/shell/testsuites/punkexe/scriptexec.test + src/tests/shell/testsuites/punkexe/staticruntime.test (as touched) +Acceptance: (1) `make.tcl bake` on a clean checkout produces kits byte-comparable to what `make.tcl vfs` produced at the same tree (allowing only known-nondeterministic zip metadata), and additionally runs the vfslibs phase so a bake cannot ship stale binary libs; (2) `make.tcl project` and `make.tcl vfs` still work as deprecated aliases that print a one-line deprecation notice naming their replacement; (3) `make.tcl bakehouse` defaults `-dirty-abort` on and its abort message names the granular developer flow; (4) `make.tcl help`/`workflow` output and every doc in Scope describe the two-persona flow (consumer: `bakehouse`; developer: packages -> test -> bootsupport/vfscommonupdate -> commit -> bake) with no remaining instruction to run bare `make.tcl project` as the recommended path; (5) the punkexe testsuites pass against a kit built with the new names. + +### G-104 [achieved 2026-07-25] make.tcl buildsuite surface: list / info / build → detail: goals/archive/G-104-maketcl-buildsuite-surface.md +Scope: src/make.tcl (buildsuite subcommand group); src/buildsuites/*/ (suite self-description contract: an 'info'/describe affordance per suite - suite.tcl action or manifest record); documentation (make.tcl help text, src/buildsuites README/AGENTS) +Acceptance: list shows suite_tcl90 (and any copied tree) with descriptions sourced from the suites themselves; info renders the sources.config-derived table plus zig pin and products for a named suite; build forwards arguments and streams driver output, exiting with the driver's status; the surface works when make.tcl runs under a plain tclsh and under punk kit executables; help text documents the group; the self-description contract is documented where suite authors will find it (src/buildsuites docs) and holds for a tree created by copying suite_tcl90. diff --git a/GOALS.md b/GOALS.md index a74c2c8c..b8307b0c 100644 --- a/GOALS.md +++ b/GOALS.md @@ -358,10 +358,6 @@ Detail: goals/G-100-suite-tcl86-tk-tcllib.md Scope: investigation + decision record under src/buildsuites/suite_tcl86/ (or successor mechanism); TEMP_REFERENCE/metakit + TEMP_REFERENCE/KitCreator (read-only guidance); src/runtime/mapvfs.config ('kit' type consumers); src/make.tcl kit-wrap path (as consumer) Detail: goals/G-101-tcl86-kit-container-strategy.md -### G-104 [active] make.tcl buildsuite surface: list / info / build -Scope: src/make.tcl (buildsuite subcommand group); src/buildsuites/*/ (suite self-description contract: an 'info'/describe affordance per suite - suite.tcl action or manifest record); documentation (make.tcl help text, src/buildsuites README/AGENTS) -Detail: goals/G-104-maketcl-buildsuite-surface.md - ### G-105 [proposed] buildsuite cross-target builds (zig -target): linux first, WSL-verified Scope: src/buildsuites/suite_tcl90/ (target parameterization of recipe + driver; per-target out prefixes); src/buildsuites/ (layout/naming decision: target is an INVOCATION DIMENSION, suite folders stay version-named - no per-target tree copies); bin/runtime platform-dir naming alignment (punkshell's win32-x86_64-style names vs zig triples); punkbin per-target artifact layout (with G-103 metadata carrying the target); local WSL as the first cross-verification environment Detail: goals/G-105-buildsuite-cross-target.md @@ -382,14 +378,6 @@ Detail: goals/G-110-sharedlib-extraction-cache.md Scope: modpod canonical source (c:/repo/jn/tclmodules/modpod fossil checkout, src/modules/modpod-999999.0a1.0.tm) with re-vendor into shellspy (src/vendormodules/modpod-0.1.5.tm + bootsupport copies via established channels); punkshell-side tarjar artifacts ASSESSED ONLY (cli #tarjar-* module-type branch, libunknown skip-globs, vendored tarjar-2.4.3.tm, src/modules/_build/#tarjar-tarjar-2.3 - dispositions individually user-confirmed, preservation-aware per the c:/tclmodules/main manual-migration intent); new modpod testsuite (home settled in the work; shellspy src/tests/modules/ harness is the natural fit) Detail: goals/G-111-modpod-tidy-tests.md -### G-112 [active] make.tcl subcommand rename: stage-true vocabulary around the promotion gates -Scope: src/make.tcl (subcommand tables, dispatch gating, help/workflow text); src/project_layouts/vendor/punk/basic/src/make.tcl + src/project_layouts/vendor/punk/project-0.1/src/make.tcl + src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/make.tcl (layout copies via established sync channels); AGENTS.md + src/AGENTS.md + src/modules/AGENTS.md + src/lib/AGENTS.md + src/vfs/AGENTS.md + src/tests/AGENTS.md + src/tests/shell/AGENTS.md + README.md + src/README.md (workflow references); src/tests/shell/testsuites/punkexe/scriptexec.test + src/tests/shell/testsuites/punkexe/staticruntime.test (as touched) -Detail: goals/G-112-maketcl-subcommand-rename.md - -### G-113 [active] make.tcl colour output is terminal-aware: SGR only on interactive tty, off when piped -Scope: src/make.tcl (startup colour policy, define_global_ansi); src/AGENTS.md (invocation guidance); src/tests/shell/testsuites/punkexe/ (piped-output characterization if a suite proves feasible); layout make.tcl copies via established sync channels -Detail: goals/G-113-maketcl-tty-aware-colour.md - ### G-114 [proposed] Per-platform tm module roots: platform-segregated binary .tm via tcl::tm::path Scope: src/vfs/_config/punk_main.tcl + src/vfs/_config/project_main.tcl + src/make.tcl (boot tm-path wiring); src/modules/punk/platform-999999.0a1.0.tm (canon names, as consumer); new per-platform tm root trees (layout/naming decision - sibling roots beside src/vendormodules_tclX / src/modules_tclX); src/project_layouts (layout seeding); modpod demonstration artifact; tree READMEs; coordinates with G-109 (manifest target-platform field stays that goal's item) Detail: goals/G-114-per-platform-tm-roots.md diff --git a/goals/G-005-zig-build-infrastructure.md b/goals/G-005-zig-build-infrastructure.md index 765d671a..2a66402c 100644 --- a/goals/G-005-zig-build-infrastructure.md +++ b/goals/G-005-zig-build-infrastructure.md @@ -51,7 +51,7 @@ This goal is the primary mechanism for G-004's outcome. It is independent of and respect - see goals/archive/G-058-static-runtime-packages.md. - Buildsuite-arc relationship (recorded 2026-07-24 after overlap review; neither this file nor the buildsuite goals previously referenced each other): the zig buildsuite - system - achieved G-096/G-098/G-102/G-103/G-107, live G-099/G-100/G-104/G-105/G-108/ + system - achieved G-096/G-098/G-102/G-103/G-104/G-107, live G-099/G-100/G-105/G-108/ G-116 - is the arm's-length runtime factory this goal's direction became, sharing the pinned-zig / zig-only toolchain policy. This goal's distinct remainder: building the VENDORED native extensions (twapi, tcllibc class) and wiring missing-binary retrieval diff --git a/goals/G-018-zig-plain-tclsh-kits.md b/goals/G-018-zig-plain-tclsh-kits.md index 6e107e3e..41c72cf1 100644 --- a/goals/G-018-zig-plain-tclsh-kits.md +++ b/goals/G-018-zig-plain-tclsh-kits.md @@ -66,5 +66,7 @@ This defines one end of a deliberate spectrum of buildable executables: goals/archive/G-103-runtime-kit-family.md), whose 'plain' member is plain-for-punk-purposes (no piperepl patch, but batteries - Thread/tclvfs/tcllib - attached), close enough to plain for our purposes. - make.tcl surfacing of suite builds is G-104. The executable-spectrum framing + make.tcl surfacing of suite builds landed as G-104 (achieved 2026-07-25 - + see goals/archive/G-104-maketcl-buildsuite-surface.md: + 'make.tcl buildsuite list/info/build'). The executable-spectrum framing this goal contributed remains referenced from G-019/G-023/G-031/G-033. diff --git a/goals/G-035-mixed-tm-pkgindex-provision.md b/goals/G-035-mixed-tm-pkgindex-provision.md index 4f795811..ee5775d6 100644 --- a/goals/G-035-mixed-tm-pkgindex-provision.md +++ b/goals/G-035-mixed-tm-pkgindex-provision.md @@ -66,9 +66,10 @@ is a realistic hazard - and same-version-different-content drift (the more reachable: a kit's internal libs vs a visited project's .tm trees), G-026/G-024 (same-version drift provenance), punk::packagepreference 0.1.1 (its moduledoc auto-load hook lives in exactly this machinery). -- G-112 relationship (recorded 2026-07-24 after overlap review): its - subcommand-rename doc sweep touches the same src/modules/AGENTS.md + - src/lib/AGENTS.md guidance files this goal's characterization outcomes - update - coordinate the edit windows. +- G-112 relationship (recorded 2026-07-24; G-112 achieved 2026-07-25 - see + goals/archive/G-112-maketcl-subcommand-rename.md): its rename sweep updated + the shared src/modules/AGENTS.md + src/lib/AGENTS.md guidance to the + bake/bakehouse vocabulary - this goal's characterization outcomes now land + on the swept text (no live edit-window coordination remains). - Out of scope: redesigning the loading machinery. This goal is characterise-document-and-pin; behavioural changes only for outright bugs. diff --git a/goals/G-047-declared-primary-vcs.md b/goals/G-047-declared-primary-vcs.md index e60dce70..a829a5d9 100644 --- a/goals/G-047-declared-primary-vcs.md +++ b/goals/G-047-declared-primary-vcs.md @@ -43,9 +43,12 @@ The original G-047 draft (2026-07-08) declared a single team-wide primary with t - G-065 relationship: its vendor manifest schema shares punkproject.toml-or-sibling territory with this goal's [workflow] field - coordinate the schema layout so one punkproject.toml can carry both without confusion. -- G-112 relationship: the layout make.tcl copies its rename travels and the template - payload this goal seeds ride the same layout sync channels; its AGENTS.md workflow - edits and this goal's Commit-Conventions edit are different sections of the same docs. +- G-112 relationship (achieved 2026-07-25 - see + goals/archive/G-112-maketcl-subcommand-rename.md): the renamed make.tcl has + already travelled the layout sync channels this goal's seeding rides (all + three layout copies carry the bake/bakehouse vocabulary); its AGENTS.md + workflow edits landed - this goal's Commit-Conventions edit touches other + sections of the same docs. - G-033 relationship: its proj: visitor root discovery and this goal's primary-VCS anchoring share the punk::repo::is_project_root marker as the root test - a nested punkproject.toml must never fool either reader. diff --git a/goals/G-061-pseudoconsole-expect.md b/goals/G-061-pseudoconsole-expect.md index 7b16c391..205b384b 100644 --- a/goals/G-061-pseudoconsole-expect.md +++ b/goals/G-061-pseudoconsole-expect.md @@ -70,6 +70,12 @@ expect-like primitives over a REAL pseudo-terminal: ## Notes +- G-113 (archived 2026-07-25) recorded a consumer for this goal's machinery: + make.tcl's tty-probed colour policy keys on stdout `-winsize` presence, so a + ConPTY-driven child sees a real terminal - G-061 harnessing could automate + the interactive-colour half of that (now-achieved) acceptance, whose visual + confirmation remains a manual note - see + goals/archive/G-113-maketcl-tty-aware-colour.md. - Reference material (added 2026-07-21): `TEMP_REFERENCE/expect` is a readonly checkout of the community Tcl 9 port of classic Expect (contributions from Steve Shaw, Paul Obermeier, OpenMandriva, Ashok P. Nadkarni; per its README: builds on diff --git a/goals/G-099-suite-tcl86-buildsuite.md b/goals/G-099-suite-tcl86-buildsuite.md index ead6370e..15add7bd 100644 --- a/goals/G-099-suite-tcl86-buildsuite.md +++ b/goals/G-099-suite-tcl86-buildsuite.md @@ -62,13 +62,22 @@ later. branch runtimes without -inputmode rely on to restore cooked mode) is coded but only tcl9-verified - run the G-106 recipe against a suite-built 8.6 runtime when one exists. See goals/archive/G-106-powershell-consolemode-fallback.md (Notes). -- G-104 relationship (recorded 2026-07-24 after overlap review): this suite is the - second suite G-104's list/info/build surface must describe without make.tcl edits - - satisfying its self-description contract (a suite.tcl info action or manifest - record) is a deliverable of this goal, not an afterthought. +- G-104 relationship (recorded 2026-07-24; G-104 achieved 2026-07-25 - see + goals/archive/G-104-maketcl-buildsuite-surface.md): the list/info/build + surface and the sources.config self-description contract + (description/product/doc/zigpin records, parsed by both suite.tcl and + make.tcl) are live. suite_tcl86 must be BORN satisfying the contract (its + sources.config carries the records from the first commit, so it lists and + describes itself with no make.tcl edits) and its builds run via + 'make.tcl buildsuite build suite_tcl86 ?driver-args?'. - G-105 relationship: G-105's cross-target parameterization (zig -target) is inherited by this suite when it lands - the suite.tcl/recipe shape should not preclude a target dimension (per-target out prefixes, no per-target tree copies). +- Related: G-108 (debug buildsuite tier) - sibling suite-arc goal, queued + behind this arc per user sequencing 2026-07-25; its -dbg/tcl::test + debug-variant pattern is suite_tcl90-scoped, but the recipe shape this suite + derives should not preclude a future 8.6 debug tier (recorded at the G-104 + archive re-bridge - the pair's former bridges were all archived goals). - G-005 relationship: G-005 owns the zig-build-of-binary-dependencies direction for the normal project build (vendored extensions, make.tcl-integrated); this suite is the arm's-length runtime-factory shape that direction took for Tcl cores. The two diff --git a/goals/G-105-buildsuite-cross-target.md b/goals/G-105-buildsuite-cross-target.md index 52b15724..d65c92bd 100644 --- a/goals/G-105-buildsuite-cross-target.md +++ b/goals/G-105-buildsuite-cross-target.md @@ -39,6 +39,10 @@ dimension), G-102 (achieved 2026-07-21 - driver shape settled; target becomes a ## Notes +- G-104 (archived) recorded the surface this goal's target dimension rides: + 'make.tcl buildsuite build ?driver-args?' forwards args untouched, so + a -target driver option needs no make.tcl edits when it lands - see + goals/archive/G-104-maketcl-buildsuite-surface.md. - 2026-07-21: this goal's dynamic-libc choice for the first linux target has a working existence proof - standard linux tclkitsh binaries are self-contained (Tcl core + script library embedded in a Metakit/zip VFS) yet DYNAMICALLY diff --git a/goals/G-108-buildsuite-debug-tier.md b/goals/G-108-buildsuite-debug-tier.md index 0ad9fbf0..a02e691a 100644 --- a/goals/G-108-buildsuite-debug-tier.md +++ b/goals/G-108-buildsuite-debug-tier.md @@ -55,6 +55,11 @@ TCL_COMPILE_STATS similarly must be absent (not =0) for release performance. ## Notes +- G-104 (archived) recorded this goal as a surface consumer: 'make.tcl + buildsuite build' forwards driver args (-steps/-zigargs) untouched and + list/info read the sources.config self-description records, so the -dbg + debug variants ride the surface and contract automatically with no make.tcl + edits - see goals/archive/G-104-maketcl-buildsuite-surface.md. - Release census reference: gate runs from G-098 (achieved 2026-07-20) / G-102 (achieved 2026-07-21, archived), 66,350 total / ~11,435 skipped; per-constraint guarded-line counts recorded in the drafting conversation (testchannel ~213, testdstring ~46, testsetplatform ~29, diff --git a/goals/G-104-maketcl-buildsuite-surface.md b/goals/archive/G-104-maketcl-buildsuite-surface.md similarity index 89% rename from goals/G-104-maketcl-buildsuite-surface.md rename to goals/archive/G-104-maketcl-buildsuite-surface.md index 3286aa71..e9219863 100644 --- a/goals/G-104-maketcl-buildsuite-surface.md +++ b/goals/archive/G-104-maketcl-buildsuite-surface.md @@ -1,6 +1,6 @@ # G-104 make.tcl buildsuite surface: list / info / build -Status: active +Status: achieved 2026-07-25 Scope: src/make.tcl (buildsuite subcommand group); src/buildsuites/*/ (suite self-description contract: an 'info'/describe affordance per suite - suite.tcl action or manifest record); documentation (make.tcl help text, src/buildsuites README/AGENTS) Goal: an ergonomic make.tcl surface for defined buildsuite builds: 'make.tcl buildsuite list' discovers the suites under src/buildsuites (excluding _build and non-suite dirs) with one-line descriptions; 'make.tcl buildsuite info ' surfaces the configured detail for review - source records from sources.config (urls/refs/pins), the pinned zig, the product set, doc pointers; 'make.tcl buildsuite build ?args?' runs the suite's driver forwarding suite options (e.g -tclbranch, -refresh, -target when G-105 lands). Suites stay SELF-describing so copy-and-tweak trees (G-096 workflow) appear in list/info automatically without make.tcl edits. Acceptance: list shows suite_tcl90 (and any copied tree) with descriptions sourced from the suites themselves; info renders the sources.config-derived table plus zig pin and products for a named suite; build forwards arguments and streams driver output, exiting with the driver's status; the surface works when make.tcl runs under a plain tclsh and under punk kit executables; help text documents the group; the self-description contract is documented where suite authors will find it (src/buildsuites docs) and holds for a tree created by copying suite_tcl90. @@ -56,9 +56,15 @@ products appear in info output), G-105 (target dimension forwarded when it exist suite_tcl90 with an edited description appeared in list/info automatically and was removed after the check. suite.tcl direct CLI re-verified (usage-error path through the new config-load position). -- Remains for acceptance: a real driver run through the surface (satisfied - naturally when the G-099 suite_tcl86 arc drives builds via 'make.tcl - buildsuite build'); window doc sweep. +- Acceptance close 2026-07-25 (achieved flip): every acceptance clause is + verified - list (suite_tcl90 + a copied tree, descriptions sourced from the + suites), info (sources.config table + zig pin + products), build forwarding/ + streaming/exit-status (the driver genuinely executed and its status + propagated - the unknown-option probe run; a full pipeline run through the + surface was gold-plating beyond the criterion and arrives naturally with the + G-099 suite_tcl86 builds), plain tclsh + punk kit hosting, help text, and + the contract documented in src/buildsuites/README.md + AGENTS.md where suite + authors will find it. Window doc sweep complete. ## Notes diff --git a/goals/G-112-maketcl-subcommand-rename.md b/goals/archive/G-112-maketcl-subcommand-rename.md similarity index 83% rename from goals/G-112-maketcl-subcommand-rename.md rename to goals/archive/G-112-maketcl-subcommand-rename.md index 5a358cfc..175bd7a8 100644 --- a/goals/G-112-maketcl-subcommand-rename.md +++ b/goals/archive/G-112-maketcl-subcommand-rename.md @@ -1,6 +1,6 @@ # G-112 make.tcl subcommand rename: stage-true vocabulary around the promotion gates -Status: active +Status: achieved 2026-07-25 Scope: src/make.tcl (subcommand tables, dispatch gating, help/workflow text); src/project_layouts/vendor/punk/basic/src/make.tcl + src/project_layouts/vendor/punk/project-0.1/src/make.tcl + src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/make.tcl (layout copies via established sync channels); AGENTS.md + src/AGENTS.md + src/modules/AGENTS.md + src/lib/AGENTS.md + src/vfs/AGENTS.md + src/tests/AGENTS.md + src/tests/shell/AGENTS.md + README.md + src/README.md (workflow references); src/tests/shell/testsuites/punkexe/scriptexec.test + src/tests/shell/testsuites/punkexe/staticruntime.test (as touched) Goal: make.tcl's subcommand vocabulary names pipeline stages truthfully: `vfs` becomes `bake` (kit assembly only), `project` is retired in favour of `bakehouse` - a consumer umbrella that chains packages+bake and refuses to run on dirty src - and no command silently spans the promotion gates (`bootsupport`, `vfscommonupdate`). `packages`, `modules`, `libs`, `bootsupport`, `vfscommonupdate`, `bin` keep their names. Acceptance: (1) `make.tcl bake` on a clean checkout produces kits byte-comparable to what `make.tcl vfs` produced at the same tree (allowing only known-nondeterministic zip metadata), and additionally runs the vfslibs phase so a bake cannot ship stale binary libs; (2) `make.tcl project` and `make.tcl vfs` still work as deprecated aliases that print a one-line deprecation notice naming their replacement; (3) `make.tcl bakehouse` defaults `-dirty-abort` on and its abort message names the granular developer flow; (4) `make.tcl help`/`workflow` output and every doc in Scope describe the two-persona flow (consumer: `bakehouse`; developer: packages -> test -> bootsupport/vfscommonupdate -> commit -> bake) with no remaining instruction to run bare `make.tcl project` as the recommended path; (5) the punkexe testsuites pass against a kit built with the new names. @@ -91,9 +91,32 @@ RESOLVED at activation 2026-07-25 (user-directed dispositions): standalone narrowing - it serves quick iteration on the src/runtime/vendorlib_vfs.toml declarations without a full bake, matching the modules/libs narrowings of packages; its helptext names it a phase of bake. -- Remaining for acceptance: doc + layout-copy sweep (Scope docs, three layout - make.tcl copies via sync channels), clean-tree bake-vs-vfs byte comparison, - punkexe suites against a kit built via the new names. +- Acceptance verification 2026-07-25 (achieved flip): + (1) bake-vs-vfs byte comparison: on the git-clean tree, FRESH rebuilds of + punk91 (zip-wrap, tclsfe) and punk86 (kit-wrap, tclkit) via 'make.tcl bake' + are BYTE-IDENTICAL to the pre-rename 'make.tcl vfs' products snapshotted from + src/_build (no zip-metadata tolerance needed; a first vacuous pass from + punkcheck skip-detection was caught and redone with forced rebuilds); the + vfslibs phase demonstrably runs inside bake (VFSLIBS install lines). + (2) aliases: 'make.tcl project'/'make.tcl vfs' print one-line deprecation + notices naming their replacements and run them (dirty-tree refusal reached + through the project alias). + (3) bakehouse -dirty-abort defaults ON; the abort names the granular + developer flow (verified live on a dirty tree). + (4) help (tabled + PUNKBOOT_PLAIN), workflow (two-persona model), and every + Scope doc swept (root README, src/README, src/AGENTS.md, src/modules + + src/lib + src/vfs + src/tests + src/tests/shell AGENTS.md, scriptexec.test + + tclshcmd.test rebuild comments; src/runtime/AGENTS.md as adjacent hygiene); + no remaining bare-'make.tcl project' recommendation outside historical + CHANGELOG entries and proposed-goal contract texts (G-005/G-006/G-057 + Acceptance lines - proposal-first, flagged to the user; the alias keeps them + executable). Layout make.tcl copies synced via the normal thin-layout + channels (all three carry the new vocabulary). + (5) punkexe suites pass against kits built via the new names (54 total, + 0 failed; includes the G-118 piperepl pins after re-materializing the + tclsh9.0.5-punk working runtime to r2 - a pre-existing stale local + materialization the window's bake exposed, not a rename regression). + punkshell 0.23.0. ## Notes diff --git a/goals/G-113-maketcl-tty-aware-colour.md b/goals/archive/G-113-maketcl-tty-aware-colour.md similarity index 92% rename from goals/G-113-maketcl-tty-aware-colour.md rename to goals/archive/G-113-maketcl-tty-aware-colour.md index c62bdf16..337b5a68 100644 --- a/goals/G-113-maketcl-tty-aware-colour.md +++ b/goals/archive/G-113-maketcl-tty-aware-colour.md @@ -1,6 +1,6 @@ # G-113 make.tcl colour output is terminal-aware: SGR only on interactive tty, off when piped -Status: active +Status: achieved 2026-07-25 Scope: src/make.tcl (startup colour policy, define_global_ansi); src/AGENTS.md (invocation guidance); src/tests/shell/testsuites/punkexe/ (piped-output characterization if a suite proves feasible); layout make.tcl copies via established sync channels Goal: make.tcl emits ANSI SGR colour only when its output goes to an interactive terminal. Piped/redirected runs (agent harnesses, CI, log capture) produce SGR-free output with no caller action required; interactive terminal runs keep full colour by default; explicit env overrides work in both directions. Acceptance: With NO_COLOR unset, representative informational and build subcommands (at minimum check, help, workflow, and one build command such as modules) run with stdout redirected to a file produce zero ESC (0x1B) bytes on stdout and stderr, verified on tclsh 9.x and a repo punk kit. The same commands on a real interactive terminal retain colour (manual verification, Windows console plus one unix tty). NO_COLOR=1 still suppresses all colour; a documented force-colour override re-enables colour on piped output. The Tcl 8.6 probe-fallback policy is documented and behaves as decided. The interim src/AGENTS.md NO_COLOR bullet is revised to describe the implemented behaviour. @@ -59,9 +59,15 @@ Agents drive `tclsh src/make.tcl ...` with captured/piped output on every build- guidance. Remaining manual item: human visual confirmation of colour appearance on live terminals (the mechanical decision + rendering chain is fully evidenced above). -- Remains for acceptance: none beyond the recorded manual-visual note; flip is - deferred to the make.tcl-window acceptance pass (with G-112/G-104) so the - layout make.tcl copies sync once for the whole window. +- Window-acceptance close 2026-07-25 (achieved flip): the layout make.tcl + copies synced through the normal thin-layout channels carrying the colour + policy (basic + project-0.1 + templates modpod payload); the + maketclcolour.test suite rode the full punkexe acceptance run green + (54 total, 0 failed). Remaining manual item stands as recorded: human visual + confirmation of colour appearance on live terminals - every mechanical link + (probe decision on real Windows console and WSL pty, colour-on rendering via + the force path, zero-ESC piped on tclsh 9.x + punk kit + 8.6) is evidenced + above. ## Notes