Tree:
b757d183e8
master
v0.1a
${ noResults }
8 Commits (b757d183e8feac8fe96d1ffd7b65eb802faf1879)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
176f2ad702 |
punk-runtime list/use stop offering support files as runtimes (punkshell 0.27.3)
'bin/punk-runtime.cmd list -platform win32-ix86' listed a LUCK.url shortcut and a tclsh8.6.10-luck-zip.cfg build request as if they were selectable runtimes. Both payloads already filtered support files - .txt/.toml/.tm/.tmp/.log - so the mechanism existed and only the recognised set was too narrow. It was also duplicated across NINE filter sites in three syntaxes (a powershell array, a bash case pattern, a bash grep -E regex), and two of them had already drifted: the "not a selectable runtime" guard omitted .log and matched *_BUILDCOPY without a trailing wildcard. The set is now defined ONCE per payload - $PunkRuntimeSupportExt / Test-PunkRuntimeSupportName in the ps1, punk_support_ext_re / is_punk_support_name in the bash - and every site consults it, so the two payloads cannot drift apart. Their listings are required to agree byte-for-byte and now do so by construction. Recognised support files, by category: docs/text (.txt .md .html .htm .pdf .url), config/metadata (.toml .json .xml .yml .yaml .ini .cfg), dev leftovers (.tm .tmp .log .bak .old), checksums/signatures (.sha1 .sha256 .asc .sig) and archives (.zip .tar .gz .bz2 .xz .7z), plus any *_BUILDCOPY* name. Anything else is still treated as a runtime candidate - deliberately, so a stray binary is visible rather than silently hidden. Verified: the win32-ix86 listing drops from 6 entries to the 4 real runtimes; the bash helpers produce the identical four (the polyglot routes msys bash to the ps1 payload on windows, so the bash side was exercised directly). Re-wrapped per bin/AGENTS.md with checkfile ERROR-free; runtimecmd_roundtrip (byte-identity), runtimecmd_checkfile, runtimecmd_freshness (10/10, both payloads against the fixture server) and runtimebash_wsl (8/8) all pass, as does the full suite at its documented baseline. bin/runtime/README.md now states what a platform folder is FOR (a store tier keyed by the platform a runtime is for, not by this machine) and what is tolerated in it, with the recognised-support-file table and the warning that anything else will be offered as a runtime. It is force-added to git: /bin/* is ignored and a ! negation cannot re-include a file inside an excluded directory, so git add -f is the only mechanism - recorded in the .fossil-settings/AGENTS.md force-tracked one-off list, whose fossil counterpart is an explicit 'fossil add' at the next catch-up checkin. Also records in G-101 a survey of TEMP_REFERENCE/androwish for the zipfs-on-8.6 question the developer raised (non-contract findings; pointer added to TEMP_REFERENCE/AGENTS.md per its contract so the survey is not repeated). The undroidwish zipfs backport is ADDITIVE - generic/zipfs.c (6586 lines) + zipfs.h + a library/zipfs1.0 dir + one object line in the win and unix Makefiles - so it is carryable as a suite patch rather than a fork; it is C rather than C++ like mk4tcl; Tcl_StaticPackage registration is gated on ZIPFS_IN_TCL / ZIPFS_IN_TK, i.e. designed to compile into tcl or tk; and it is Christian Werner's, under the tree's Tcl-style license.terms. Its capability delta against Tcl 9 zipfs is recorded (no 'root', no ::zipfs ensemble, and not registered in child or thread interps), as is the exe-path mount convention that motivates G-129. Provenance of our specimen is established: LUCK is a CGI repacker that selects packages out of a prebuilt vanillatclsh binary's ZIP, so bin/runtime/win32-ix86/tclsh8.6.10-luck-zip.exe is a repack of androwish's own build - a working existence proof of zipfs-on-8.6 rather than a claim. Three open questions are recorded rather than guessed: whether it applies to 8.6.18 (the tree is 8.6.10), whether it builds under the pinned zig, and where the boot-time self-mount hook lives - stock tclAppInit calls Tclzipfs_Init only under #ifdef TCL_TEST, so it is in the vanillatclsh/undroidwish application main, which is also the hook a dual-container autodetecting boot would need. Assisted-by: harness=claude; primary-model=claude-opus-5[1m]; api-location=anthropic.com |
4 days ago |
|
|
75cffe21f3 |
punk::args 0.12.6 + punk::ns 0.9.0: LLM-oriented usage output; tcl-whatis agent skill
punk::ns 0.9.0: cmdhelp (i) gains -return text - plain-text argument
documentation for machine/LLM consumption: no ANSI, no table layout, the
argument section of every command form rendered in one output under a common
header ('i -return text after' shows all six forms), G-041 form selection
still honoured when argument words are supplied, no advisory-parse error
preamble (-return dict remains the parse-status surface). Implementation
delegates resolution to the -return dict recursion and renders per-form via
the string renderer.
punk::args 0.12.6 (user direction; string-form layout explicitly not frozen -
no external consumers yet):
- arg_error renders the error message + per-form match detail exactly once,
BELOW the usage display (was above and below); bottom append suppressed for
empty messages.
- string renderer argument rows are single-line
'name TYPE:type(constraints) ?DEFAULT:'val'? ?MULTI:yes?' - type
constraints parenthesize onto the base type instead of line-breaking
mid-row; empty DEFAULT/MULTI labels and whitespace-only help blocks omitted.
- choices render as markdown-subset bullets '- `choice` - label' with label
continuations at a fixed deeper indent - choice names are now
machine-distinguishable from label text without ANSI. Structural contract:
column-0 lines bearing TYPE: are argument rows, indented lines are
documentation, backticked bullets are choices. Table cells unchanged.
New scriptlib/developer/whatis.tcl (runtime command introspection for
agents): resolved name, subcommand-chain resolution via punk::ns::cmdinfo
('whatis string is'), kind, providing package + loaded version, origin file,
proc definition file:line, punk::args synopsis; -body appends the runtime
body with file-relative line numbers, -doc the full plain-text argdoc via
cmdhelp -return text (with fallback for older punk::ns). Backing the
cross-framework tcl-whatis agent skill: canonical .agents/skills/tcl-whatis/
(Agent Skills standard - pi/OpenCode/Codex) with byte-identical copy in
.claude/skills/ for Claude Code; .gitignore gains !.claude/skills/ with the
fossil ignore-glob comment + exception-set docs updated per the dual-VCS
contract (fossil adds staged). Root AGENTS.md: .agents/skills index entry,
whatis pointer in Repo-wide Notes, scriptlib/developer example.
Tests: new pins cmdhelp_return_text_all_forms/_argword_form_selection/
_single_form_plain_marker (cmdhelp.test), rendering_stringmode_singleline_argrows
+ rendering_stringmode_choice_bullets (rendering.test); deliberate-change pin
updates: errorselection.test message matches gained leading * and cmdhelp.test
message pins sample the last line (message placement). Full source-tree suite
963/979 pass, sole failure the pre-existing exec-14.3 baseline; make.tcl
modules clean.
Project version 0.12.42 -> 0.13.0 with CHANGELOG.md entry.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
|
2 weeks ago |
|
|
bac12a1bb7 |
fossil settings: crlf-glob extended to src/vendorlib/* and src/vfs/*
Vendored library payloads and vfs kit payloads legitimately carry CRLF endings (upstream files are kept as-is; the LF preference governs authored text). Without the globs, large vendor/vfs checkins block on fossil''s interactive CRLF prompt - the tablelist 7.11 catch-up (fossil 3316d3c7) had to use --no-warnings. Policy documented in .fossil-settings/AGENTS.md alongside the binary-glob rationale. crlf-glob is fossil-only (no .gitignore-style counterpart), so no dual-VCS derivation applies. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
2 weeks ago |
|
|
ce5108cb09 |
DOX: ignore-rule changes in one VCS must be mirrored in the other
Root AGENTS.md User Preferences gains the binding agent-agnostic rule (an agent editing .gitignore discovers it at the root without walking into .fossil-settings/): .gitignore canonical, ignore-glob hand-derived, same work unit, semantic differences translated per .fossil-settings/AGENTS.md. That child doc's sync procedure is retitled from "when asked" to mandatory for any ignore-rule change, with the one-sided-change prohibition stated. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
06db38be46 |
agent guardrails: tclsh has no -e one-liner flag - AGENTS.md pitfall entry + claude PreToolUse deny hook
Stock tclsh treats any leading-dash arg other than -encoding as argv for an interactive/stdin session: on a console it hangs at a prompt, with piped stdin it exits 0 silently ignoring the supposed one-liner. Agents habitually reach for -e (perl/python/node reflex), wasting time waiting on hung processes. - root AGENTS.md User Preferences: document the misparse, the correct patterns (temp .tcl file or script via stdin) and the defensive stdin-redirect habit - .claude/settings.json: PreToolUse hook denying Bash/PowerShell invocations of tclsh with -e, anchored to command position (start/pipe/semicolon/paren) so prose mentions in commit messages or grep args do not false-positive; corrective guidance returned to the agent - .gitignore: narrow the .claude ignore so shared settings.json is tracked while session-local files stay ignored - .fossil-settings: ignore-glob hand-derived per the no-negation rule (.claude/* wholesale + explicit fossil add of settings.json), exception set in AGENTS.md updated; fossil extras under-ignore check verified empty Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
ab0d7c7345 |
workflow: fossil binary-glob '*' + LF-conversion guidance in AGENTS.md
- .fossil-settings/binary-glob set to '*': binary checkins (e.g zips) proceed without fossil warnings/prompts; the aim of an eventually binary-free tree (G-004/G-005/G-006) is agent/workflow policy, deliberately not enforced at the local VCS layer - .fossil-settings/AGENTS.md: new "Commit warning suppression" contract documenting the above - root AGENTS.md: LF preference clarified - converting CRLF text files to LF when editing is correct (no CRLF preservation for diff-minimisation; preserve only deliberately mixed-ending files or on explicit instruction); binary-checkin bullet notes the VCS-layer carve-out Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |
|
|
633616bad2 |
dual-VCS contract: record nested-.gitignore and case-sensitivity asymmetries
Two git/fossil divergence classes discovered during the tracked-set verification: nested .gitignore files (e.g. in the project-layout templates) are honoured by git as nested ignores of the outer repo but invisible to fossil, leaving template content untracked in git yet managed by fossil; and git ignore matching is case-insensitive on Windows (core.ignorecase) while fossil globs are case-sensitive (a todo.txt pattern hits vendored TODO.txt in git only). Both recorded in the coexistence contract with the prescribed treatment. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
4 weeks ago |
|
|
fc537c9456 |
dual-VCS coexistence contract: untrack fossil-generated manifests, add .fossil-settings/AGENTS.md
git tracked fossil's generated checkout artifacts (manifest, manifest.tags, manifest.uuid - regenerated on every fossil checkin/checkout per the versioned 'manifest' setting value 'rut'), which would churn as soon as fossil commits begin. They are now untracked and git-ignored with root-anchored patterns (nested manifest-named files elsewhere are real content and stay tracked). Fossil control files (.fslckout/_FOSSIL_/ *.fossil) were already correctly git-ignored, and .fossil-settings/ .fossil-custom correctly git-tracked. New .fossil-settings/AGENTS.md is the canonical home of the git+fossil contract: which files each system must not track, the ignore-glob derivation rules (no negation -> wholesale-ignore + explicit fossil add of tracked exceptions; directory pruning; * crossing /; */ variants for match-anywhere patterns; default dotfile skipping), and the verification procedure any future "sync the ignores" request must follow (fossil extras against git check-ignore, and a tracked-set comparison bounded to the documented exceptions). The ignore-glob header now points there instead of duplicating the rules; root AGENTS.md Child DOX Index gains the entry. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
4 weeks ago |