Tree:
2c919d9e4b
master
v0.1a
${ noResults }
1 Commits (2c919d9e4b9f60993d54cefc321850ed4089189b)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
ae04b3f8c9 |
GOALS: two-tier index restructure - summary-only GOALS.md, canonical Goal/Acceptance in detail files, archive-on-flip
- GOALS.md collapsed to summary entries (ID/status/title/Scope/detail pointer): 104.6KB -> 23KB so a full read stays cheap; Scope lines kept verbatim so path-grep goal discovery still works - canonicality split: index canonical for ID/status/title/Scope, detail file canonical for Goal:/Acceptance:; all 61 detail-file headers reconciled from the index (fixes stale copies, e.g. G-036 detail acceptance predated the achieved rework), bodies preserved untouched - detail files created for the three index-only goals G-017, G-034, G-054; every goal now has one - 10 achieved goals (G-007 G-015 G-036 G-037 G-040 G-046 G-049 G-054 G-058 G-059) archived: summary records appended to GOALS-archive.md, detail files moved to goals/archive/; archive-on-flip replaces the ~30-achieved-entries trigger - GOALS.md preamble/rules reworked: read workflow (read index in full, then detail files of scope-intersecting goals before editing), contract spans both tiers with proposal-first unchanged, next-free-ID counts the archive, achieved flip judged against the detail-file Acceptance and includes archiving - progress convention codified from G-001 increment-1 practice: index entries carry status only, never progress; incremental progress lives in the detail file's ## Progress section (landed/remaining); achieved flip requires the remaining-work list resolved - a partial increment never flips a goal - goals/AGENTS.md rewritten for the split (required 4-field header, one detail file per goal, orphan rules covering archive/); root AGENTS.md Child DOX Index + Repo-wide Notes updated; GOALS-archive.md preamble updated - stale detail-file paths updated to goals/archive/ in src/lib/app-punkscript/punkscript.tcl (comment), runtimebash_wsl.test, wslprobe.tcl and the G-042 detail file; propagated copies (root lib/, src/vfs/_vfscommon.vfs, src/_build) left to refresh via normal build steps - no project version bump: governance docs and source comments only, no user-visible shell behaviour Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
5 days ago |
|
|
528d1eca72 |
punk::console 0.7.1: fix tcl 8.6 windows console misdetection - one root cause, three sites
Tcl 8.6 windows console channels expose no -inputmode configure key, so punk::console guards testing -inputmode/-mode classified a real 8.6 console as a pipe. A twapi console handle for stdin is now treated as definitive console detection at all three affected sites (stdin only - pipe probes still never touch the process console; mintty-as-pipes has no console handle and falls through to the env heuristics as before): 1. get_ansi_response_payload's raw-cycling gate (introduced 0.1.5) skipped the raw cycle for 8.6 line-mode queries. 2. is_input_console_or_tty returned a false negative, making settle_can_respond's layer-2 heuristic settle a real 8.6 console as unable to respond. 3. input_at_eof (introduced 0.1.2) took the pipe branch and performed its probe read on the drained console channel. This was the line-mode query killer: verified empirically against clean tclkits 8.6.13 and 8.6.17, a read on a drained 8.6 console channel makes the channel driver park a blocking cooked-mode ReadConsole; driver reads sample the console mode when issued, not when data arrives, so the query's subsequent raw flip cannot rescue it and the terminal response is swallowed until Enter. Since get_ansi_response_payload calls input_at_eof immediately before its raw cycle, every 8.6 line-mode query timed out (~500ms) with the response later leaking to the line reader as phantom input - also the source of increased ANSI artifacts (e.g. 'help env') once 0.7.0 brokering made code-interp queries actually reach the terminal. Interactively verified on punksys (tcl 8.6.13, src launch): line-mode get_cursor_pos and dec_get_mode succeed mid-command, brokered query loops run clean, and typed-ahead lines are recovered without phantom input. Known residue (documented in the G-007 detail notes): queries fired while the repl reader is armed and idle at a line-mode prompt (including some repl-init detection queries) still hit the parked-read limitation on 8.6 - repl init ordering is a follow-up; raw mode is unaffected. Tests: probes.test gains constraint-gated wiring tests for the twapi console branch of is_input_console_or_tty and input_at_eof (skip in piped runs, engage on a real console). Full suite passes at baseline (exec-14.3 only) under Tcl 9.0.3; probes suite also verified under Tcl 8.6. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
1 week ago |
|
|
0d4d5aa036 |
G-007 achieved: interactive acceptance verified on tcl 8.6 and tcl 9
Flip G-007 (location-transparent punk::console) to achieved 2026-07-05 in the
GOALS.md index and detail file. Interactive verification on built punksys
(tcl 8.6) and punk902z (tcl 9) kits (punk::console 0.7.0, opunk::console
0.4.0; punk902z also rerun via src launch against dev modules): fact parity
and immediate cross-context visibility in both directions; brokered terminal
queries from the code interp succeed and cooperate with the repl reader in
raw mode with typed-ahead preserved; a chan-pipe console anchored from the
code interp registers its codethread as owner, operates locally, and clears
its registry entry on forget.
Detail-file Notes record the verification and characterize line-mode reader
cooperation (out of scope, no routing regression - brokered and owner-side
queries behave identically): on tcl 9, complete typed-ahead lines survive
with cosmetic garbling while incomplete typed-ahead starves the query raw
window and leaks responses as phantom input; on tcl 8.6 every line-mode
query fails that way, owner-side included (repro:
repl eval {punk::console::get_cursor_pos}) - candidate owner-side regression
to investigate separately. Also noted: the leaked stderr diagnostics are the
traffic G-011's per-console err channel would house.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
|
1 week ago |
|
|
aca967e1a5 |
punk::console 0.6.0: G-007 slice 1 - tsv-backed console facts + ownership registry
Per-console facts are now visible to every thread of a punk session: the
default console {stdin stdout} keeps its legacy namespace variables as
authoritative local storage, with write traces mirroring every write
(including direct variable writes) into tsv punk_console_facts; non-default
consoles store facts only in tsv with owner-qualified keys (non-std channel
names are thread-local and would otherwise alias). console_fact_set from a
non-owner thread forwards to the owning thread (vt52-alias transport) and
always writes the tsv mirror itself (covers unreachable or older-version
owners). New console_fact_clear for tests/maintenance.
New console ownership registry (console_owner_register/get/forget, tsv
punk_console_owners keyed by canonical {in out} pair): ownership is captured
when an opunk::console instance is anchored - via the new pluggable
::opunk::console::lifecycle_callback (opunk::console 0.4.0, base class
unchanged) wired by ensure_object_integration - and by default_console.
Consult-time liveness validation clears entries for exited threads. For
{stdin stdout} first registration wins and only the owner's forget releases
the entry, so a thread anchoring a local view cannot steal ownership.
dec_has_mode/ansi_has_mode caches moved to tsv punk_console_modecache
(single-key atomic entries shared process-wide).
Infrastructure tsv arrays are now punk_-prefixed to avoid collisions with
application tsv usage in subshells: console -> punk_console (is_raw), with
call-site patches in punk::repl 0.2.1, punk::lib 0.2.1, punk::basictelnet
0.1.1 (rule recorded in src/modules/AGENTS.md; legacy repl/codethread_*/
zzzload_pkg* arrays left for a coordinated follow-up).
punk::console is now loadable in secondary threads without ::argv0
(powershell consolemode fallback guarded).
Tests: consolefacts gains ownership-registry and cross-thread visibility
coverage (worker-thread punk::console load, trace-mirror, forwarded set with
deadline-polled sync - see comments re runtests child-interp topology);
cleanups use console_fact_clear / tsv instead of poking removed internal
stores. Full suite passes (baseline exec-14.3 only).
G-007 flipped proposed -> active (user-confirmed); remaining acceptance work
is the choke-point brokering slice.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
|
2 weeks ago |
|
|
b67a8f7b5f |
add goals G-007 to G-010: console location transparency, scoped console state, themed subshell profiles, subshell tree navigation
Index entries in GOALS.md plus detail files, all proposed: - G-007 location-transparent punk::console across repl and code interps: punk-side tsv-backed ownership registry, fact/cache visibility, choke-point brokering generalising the vt52 alias; detail records rejected alternatives (audience namespace split, owner field on ::opunk::Console, opunk-package-namespace registry) - G-008 scoped console state for same-console subshells: activatable per-subshell state sets (journal-on-write, re-emit on activation) rather than a LIFO undo stack, so later tree switching works; restore of tabstops/modes/palette on quit; opt-in, shared behaviour stays default - G-009 themed subshell profiles: poshinfo schemes bound to restriction aspects (G-003 limits/hidden commands, punk::island) so restricted subshells are visually distinct; terminal effects ride the G-008 state set - G-010 subshell suspend/resume and tree navigation: switch to any live subshell (grandparent, cross-branch) via attachment handoff + G-008 state activation; navigation commands governed by G-003 hide/expose; depends on G-002's non-nested model Sequencing: G-007 -> G-008 -> G-009/G-010, with G-002 prerequisite for G-010. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
2 weeks ago |