Tree:
9cfeaaadb2
master
v0.1a
${ noResults }
6 Commits (9cfeaaadb2fa01f5ef9abd9dd91ae1439bfc679c)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
ab4fd7f89d |
update bootsupport,vfs,project_layouts for recent changes
|
3 weeks ago |
|
|
ed7ed009b4 |
superseded-module pruning with punkcheck DELETE events + virtual version sources
Resolves the build-maintenance TODO: built module trees no longer accumulate superseded intermediate versions, and .punkcheck state stays consistent because every deletion is recorded through punkcheck's event mechanism. punkcheck (0.3.0): - installsource_add_virtual + installevent method targetset_addsource_virtual: 'virtual' named-value SOURCE records (-type virtual -path virtual:<id> -value <v>) compared by stored value, participating in targetset_source_changes. Needed because successive module versions are built from the same physical source files - the recorded virtual module_name/module_version identify which product of the source fileset a target is, at install and delete time. punk::mix::cli (0.5.0): - lib::prune_superseded_target_modules: deletes lower-version .tm siblings only when records prove the same module line (virtual module_name match, or legacy fallback: recorded sources share the keep-version's source folder(s) and name prefix). Unrecorded files are never deleted - reported to stderr instead. - lib::prune_sourcevanished_targets: mirror-prune of recorded targets whose recorded source files no longer exist (layout bootsupport copies, vendormodule copies) - intentional multi-version vendoring is preserved. - build_modules_from_source_to_base prunes after each module install/skip and records virtual module identity sources on installs. make.tcl: - bootsupport: non-glob include_modules.config entries track only the latest version - superseded recorded snapshot versions pruned; project-layout copies mirror-pruned; virtual identity recorded on snapshot installs. Calls guarded (info commands) so a stale bootsupport snapshot degrades to a warning and the two-pass modules+bootsupport bootstrap self-heals. - vendormodule copies in root modules*/ mirror-pruned after install. docs/config: - include_modules.config headers now document the entry format (non-glob = latest-only + prune; glob chars = keep all matches; unrecorded never pruned) - src/AGENTS.md TODO replaced with the durable prune contract; src/bootsupport/AGENTS.md + src/tests/modules/AGENTS.md updated tests: src/tests/modules/punk/mix/testsuites/cli/prune.test (19 tests) covering virtual source recording/comparison and prune identity/safety rules. Suites: punkcheck 64/64, full suite under Tcl 9.0.3 green except pre-existing exec-14.3. payload sync: bootsupport snapshots, project layouts and _vfscommon.vfs pruned of superseded intermediates (~570k lines of stale .tm copies removed). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
4 weeks ago |
|
|
c5f17a6447 |
size mechanisms as overridable Console methods (subclass dispatch from punk::console)
opunk::console (0.3.0): - base size method resolution order: -winsize fast path -> capability gate (settled or heuristic can_respond; unresponsive consoles get default_size with no query emission) -> pluggable ::opunk::console::size_query_provider -> default_size. The provider hook follows the waiting-store pattern: the class carries no punk::console dependency, and non-channel subclasses (tk widget / channel-environment terminals) simply override size. punk::console (0.1.7): - get_size dispatches object-governed calls through the virtual ::opunk::Console::size method after first-use settling - subclass size overrides are honoured from every punk::console call site - ANSI/tput mechanisms + per-pair timing cache factored into size_via_query_mechanisms, shared by the legacy channel-pair path and the registered provider (console_size_provider) - integration wiring consolidated into once-latched ensure_object_integration (probe-byte store redirect + provider registration, respecting customised providers), invoked from default_console, console_spec_resolve lazy-require sites and the get_size object path - legacy path returns the documented 80x24 fallback instead of erroring when undetermined tests: WidgetishConsole subclass override returned through punk::console::get_size for both anchored-name and object-value specs; class-level provider consultation/capability-gating with a counting fake provider; provider registration assert. Console suites 27/27 + 10/10; punkexe 6/6, goals 8/8; full suite green except pre-existing exec-14.3. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
4 weeks ago |
|
|
c6ead68a89 |
probe-byte store unification + first-use settling for all query paths
opunk::console (0.2.0): - probe-byte waiting store changed from dict to array (::opunk::console::waiting_chunks) and made pluggable via waiting_chunks_arrayvar: integrating layers redirect it to their established cooperative store so bytes consumed by opunk::Console probe reads stay visible to active readers. The class remains free of punk::console dependencies - redirection is the integrator's act. punk::console (0.1.6): - default_console redirects the opunk::console store to punk::console::input_chunks_waiting (closing the split-store hazard that previously made opunk-level probes invisible to the punk repl reader) - get_ansi_response_payload performs first-use active settling for persistable console specs, guarded by a recursion latch around settle_can_respond's own probe: every query path (get_cursor_pos, get_device_status, ...) now pays at most one settling probe instead of a fresh timeout per call on unsettled ambiguous consoles punk::repl (0.1.6): - repl::init routes default console construction through punk::console::default_console (deduplicates creation logic and gains the store unification) tests: store-unification and get_cursor_pos first-use settling cases in consolespec.test (zero-emission and persistence asserts); consoleclass.test store assertions converted to array form. Console suites 25/25 + 9/9; punkexe 6/6, goals 8/8; full suite green except pre-existing exec-14.3. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
4 weeks ago |
|
|
f6ed50eb0c |
punk::console active settling probe (settle_can_respond) + raw-mode cycling guard
punk::console (0.1.5): - settle_can_respond: layered active settling of a console's response capability, persisted on the anchored opunk::console instance. Layer 1 certainty (input eof -> 0, no emission), layer 2 strong-negative heuristic (plain pipe, no terminal hints -> 0, no emission - piped/CI output streams stay clean), layer 3 active CSI 6n probe with timeout, only in the ambiguous zone (real consoles / pipe-presenting terminals such as mintty without winpty). -force unsettles and re-probes; -timeout_ms overrides can_respond_probe_timeout_ms (default 500). Unmatched input consumed while waiting is preserved via input_chunks_waiting. - get_size triggers first-use settling for persistable specs only (anchored instance name or the auto-attached default) so unanchored object values cannot cause per-call probes - get_ansi_response_payload only cycles console raw mode when the input channel is a console/tty: pipe-targeted probes no longer flip the real console's mode as a side effect, and a repeat-cycle deadlock under captured-channel environments (runtests runx) is fixed. (Latent enableRaw_twapi/disableRaw_twapi restore asymmetry noted for future attention.) punk::repl (0.1.5) / opunk::console (0.1.1): docs reference the active settling mechanism (no behaviour change; probe machinery stays in punk::console so the class remains free of that dependency) tests: 5 new settle_can_respond cases in consolespec.test - certainty and clean-pipe settling with zero-emission asserts, ambiguous probe timeout with emission and input-preservation asserts, response arrival settling 1 with realistic event-loop delivery then -force transition to 0, and get_size first-use settling. Console suites 23/23; full suite green except pre-existing exec-14.3. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
4 weeks ago |
|
|
f0c712543a |
repl shutdown/eof fixes, PUNK_PIPE_EOF policy, console query guards, opunk::console voo class, test framework fixes
punk::repl (0.1.4):
- cancel the deferred (after idle) stdin reader registration when the repl finishes - a stale
registration could re-attach a reader to a completed repl (piped stdin racing shutdown produced
'error2 in repl_process_data: invalid thread handle ""')
- repl_process_data drops input arriving after codethread teardown instead of erroring
- repl::init constructs the process-default console object (anchored opunk::console instance
'default') and settles can_respond 1 for interactive stdin
app-punkshell:
- eof on the input channel now follows env(PUNK_PIPE_EOF): exit | interactive | unset=heuristic
(reopen console if available, else terminate) - replaces the unconditional CONIN$/dev-tty repl
restart that hung automated callers forever; documented in punk::config punk_env_vars_config
('help env')
punk::console (0.1.4):
- input_at_eof (certainty, with non-blocking probe read for deferred pipe eof) and
is_input_console_or_tty (heuristic incl. mintty-without-winpty env hints)
- get_size skips ANSI cursor-report mechanisms for non-terminal input (tput then 80x24 default)
- removed erroneous repl-restart attempts from get_ansi_response_payload eof handling (re-entrancy,
bypassed eof policy; one call was a typo repl::reopen)
- console_spec_resolve: -console (and legacy positional inoutchannels) accepts a channel pair, an
anchored opunk::console instance name, or an ::opunk::Console object value; settled can_respond 0
refuses query emission and supplies the object's default size; default_console proc + auto-attach
of the anchored 'default' instance for matching channel pairs
opunk::console (new, 0.1.0):
- voo-based -virtual class ::opunk::Console: console as an in/out channel pair with settled
capability facts; canonical instances anchored at ::opunk::console::instances::<name> with
value semantics as snapshots; subclass dispatch via slot-0 tag for future channel-environment
consoles (ssh, tk-widget terminals); added to bootsupport (with voo) for boot-level use
tests:
- src/tests/shell/testsuites/punkexe: hang-proof punk_run/punk_run_expect_alive harness; termination
guards, exitcode propagation, help-env render with piped stdin, default-console smoke test,
PUNK_TEST_GOALS-gated interactive drop-in goal tests
- src/tests/modules/punk/console: probe helper and console-spec/integration suites
- src/tests/modules/opunk/console: Console class suite incl. virtual dispatch
- runtests.tcl testinterp: 'package prefer latest' (dev 999999 alpha modules no longer shadowed by
stable bootsupport copies) and src/vendormodules on the module path (voo etc resolvable)
AGENTS: punk::args usage policy, -console migration contract, bootsupport update workflow
correction, opunk voo conventions, testinterp contracts
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
|
4 weeks ago |