Browse Source

make.tcl window active: G-112 + G-104 + G-113 flips (user-confirmed)

Activation-freshness scores re-run per the maintenance rules and recorded in
each detail file's Notes; new Related lines: G-104 -> G-108 (debug-tier
variants ride the same driver/self-description contract), G-113 -> G-061
(ConPTY could automate the interactive-colour verification). G-112 open
decisions resolved at activation (user-directed): vfslibs folds into bake
(standalone-narrowing survival decided in-session), project/vfs alias
deprecation window = until the 8.6 arc completes.

Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
master
Julian Noble 6 days ago
parent
commit
3fe688135f
  1. 6
      GOALS.md
  2. 9
      goals/G-104-maketcl-buildsuite-surface.md
  3. 20
      goals/G-112-maketcl-subcommand-rename.md
  4. 10
      goals/G-113-maketcl-tty-aware-colour.md

6
GOALS.md

@ -358,7 +358,7 @@ 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) 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 Detail: goals/G-101-tcl86-kit-container-strategy.md
### G-104 [proposed] make.tcl buildsuite surface: list / info / build ### 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) 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 Detail: goals/G-104-maketcl-buildsuite-surface.md
@ -382,11 +382,11 @@ 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) 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 Detail: goals/G-111-modpod-tidy-tests.md
### G-112 [proposed] make.tcl subcommand rename: stage-true vocabulary around the promotion gates ### 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) 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 Detail: goals/G-112-maketcl-subcommand-rename.md
### G-113 [proposed] make.tcl colour output is terminal-aware: SGR only on interactive tty, off when piped ### 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 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 Detail: goals/G-113-maketcl-tty-aware-colour.md

9
goals/G-104-maketcl-buildsuite-surface.md

@ -1,6 +1,6 @@
# G-104 make.tcl buildsuite surface: list / info / build # G-104 make.tcl buildsuite surface: list / info / build
Status: proposed Status: active
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) 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 <name>' 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 <name> ?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. 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 <name>' 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 <name> ?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. 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.
@ -34,6 +34,13 @@ products appear in info output), G-105 (target dimension forwarded when it exist
## Notes ## Notes
- Activation freshness 2026-07-25: goals_xref.tcl score G-104 re-run at the
proposed->active flip - G-099/G-105/G-112 relations already recorded; new
Related recorded from the re-run: G-108 (debug buildsuite tier) - its -dbg<n>
suite variants ride the same suite.tcl driver this surface's build action
forwards to, and appear in list/info via the same self-description contract
(no make.tcl edits by construction). Activated together with G-112 + G-113
as one make.tcl-surface window.
- 2026-07-21 (user-approved pairing): G-112 (stage-true subcommand rename) edits the same - 2026-07-21 (user-approved pairing): G-112 (stage-true subcommand rename) edits the same
make.tcl subcommand surface - SUBOPTS/SUMMARIES/HELPTEXTS tables, help/workflow output. make.tcl subcommand surface - SUBOPTS/SUMMARIES/HELPTEXTS tables, help/workflow output.
Ordering: G-112 lands first, or the two run together as one make.tcl-surface window, so Ordering: G-112 lands first, or the two run together as one make.tcl-surface window, so

20
goals/G-112-maketcl-subcommand-rename.md

@ -1,6 +1,6 @@
# G-112 make.tcl subcommand rename: stage-true vocabulary around the promotion gates # G-112 make.tcl subcommand rename: stage-true vocabulary around the promotion gates
Status: proposed Status: active
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) 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. 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. 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.
@ -59,12 +59,24 @@ act rather than an input folder.
## Open decisions ## Open decisions
- `vfslibs` final disposition: fold into bake only, vs also/instead treat binary libs as RESOLVED at activation 2026-07-25 (user-directed dispositions):
promoted payload under `vfscommonupdate` (provenance argument).
- Deprecation window length for the `project`/`vfs` aliases. - `vfslibs` disposition: folds into bake (binary libs are build outputs, per the
G-004/G-103 direction) - the provenance-argument alternative (promote under
`vfscommonupdate`) is not taken. Whether `vfslibs` survives as a standalone
narrowing command is decided in-session during the rename work and recorded
in Progress.
- Deprecation window for the `project`/`vfs` aliases: keep until the 8.6 arc
(G-099/G-100/G-101 era) completes - revisit removal when that arc closes.
## Notes ## Notes
- Activation freshness 2026-07-25: goals_xref.tcl score G-112 re-run at the
proposed->active flip - top pairs are the already-recorded window partners
(G-113, G-104) and linked G-047/G-035; remaining unlinked hits (G-090, G-031,
G-086) are shared-file/term noise with no substantive rename relationship.
Activated together with G-104 + G-113 as one make.tcl-surface window
(ordering per the 2026-07-21 pairing note below).
- CI-check candidate (independent value, could be split out): `vfscommonupdate` on a clean - CI-check candidate (independent value, could be split out): `vfscommonupdate` on a clean
checkout must produce zero diff - nonzero means forgotten promotion or a checkout must produce zero diff - nonzero means forgotten promotion or a
build-reproducibility bug. build-reproducibility bug.

10
goals/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 # G-113 make.tcl colour output is terminal-aware: SGR only on interactive tty, off when piped
Status: proposed Status: active
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 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. 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. 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.
@ -25,6 +25,14 @@ Agents drive `tclsh src/make.tcl ...` with captured/piped output on every build-
## Notes ## Notes
- Activation freshness 2026-07-25: goals_xref.tcl score G-113 re-run at the
proposed->active flip - G-112/G-104 window relations already recorded; new
Related recorded from the re-run: G-061 (pseudoconsole expect-alternative) -
a ConPTY-driven child presents a real tty to this goal's stdout probe, so
G-061 machinery could later automate the interactive-colour half of the
acceptance (the piped-characterization suite covers only the SGR-free
direction). Activated together with G-112 + G-104 as one make.tcl-surface
window.
- 2026-07-22: interim src/AGENTS.md Work Guidance bullet landed (agents set NO_COLOR=1 for captured make.tcl runs) ahead of this goal's implementation; revise it to describe the auto-detection + overrides when this goal lands (tracked in Acceptance). - 2026-07-22: interim src/AGENTS.md Work Guidance bullet landed (agents set NO_COLOR=1 for captured make.tcl runs) ahead of this goal's implementation; revise it to describe the auto-detection + overrides when this goal lands (tracked in Acceptance).
- Existing machinery: NO_COLOR -> colour_disabled (make.tcl:5-7); punk::ansi honours colour_disabled dynamically with a -forcecolour in-module override (src/modules/punk/ansi-999999.0a1.0.tm); PUNKBOOT_PLAIN is the env-switch precedent (make.tcl:1655); stdin probe precedent at make.tcl:319. - Existing machinery: NO_COLOR -> colour_disabled (make.tcl:5-7); punk::ansi honours colour_disabled dynamically with a -forcecolour in-module override (src/modules/punk/ansi-999999.0a1.0.tm); PUNKBOOT_PLAIN is the env-switch precedent (make.tcl:1655); stdin probe precedent at make.tcl:319.
- Related: G-030 (achieved - prompt-free flags + the stdin probe this mirrors), G-011 (console stderr semantics - loose relation), G-104/G-112 (both touch make.tcl subcommand surfaces - coordinate if either goes active first). - Related: G-030 (achieved - prompt-free flags + the stdin probe this mirrors), G-011 (console stderr semantics - loose relation), G-104/G-112 (both touch make.tcl subcommand surfaces - coordinate if either goes active first).

Loading…
Cancel
Save