Tree:
03306be068
master
v0.1a
${ noResults }
10 Commits (03306be068d68531a61184b1b9b808fb527dd102)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
164687d260 |
G-135 + G-136: asset provenance records and generated-project icon seeding
Two proposed goals from the src/assets/logo work, split rather than combined: "the master-to-derived chain is verifiable anywhere" and "generated projects arrive with an icon" are separate outcomes with separate acceptance, and the second merely consumes the first. G-135 - asset provenance records. Nothing currently states that src/runtime/punkshell.ico came from punk-mark.svg, so one failure is undetectable: edit the SVG, forget to regenerate, and the committed .ico silently stops depicting the master. An optional directory-scoped assetorigin.toml records the derivation; a plain-Tcl checker classifies each asset as unrecorded / verified / source-absent / replaced / stale, advisory only. Absence of a record is the DEFAULT and stays silent - a record is an opt-in claim, and every field but path is optional, so "I know this file, I don't know where it came from" is expressible. The same goal retires the Windows tie in make-ico.ps1. The dependency is one line - System.Drawing, decoding PNG to raw BGRA - since pwsh and rsvg-convert are both cross-platform and Tcl core ships zlib. G-136 - generated projects seeded from src/assets/logo/project-default/ at generation time, as a sibling to bootsupport_inject with punkcheck install records, rather than storing artwork in layout trees. Layout storage would mean three copies with no master (project-0.1, basic, and the punkcheck-managed modpod-templates copy), reversing G-087's thin-layout achievement. Because G-135's record is directory-scoped with relative paths it copies verbatim and reads `verified` at the destination. Scope for G-135 separates the two tools rather than bundling them: the generator is replaced in place under src/assets/logo/ (it operates on the files beside it and is already documented there), while the checker is a lint in the shape of goals_lint and architecture_lint and belongs in scriptlib/developer/ - with the home explicitly revisited if it becomes a bake step, since scriptlib/ is user-only and make.tcl must not depend on it. That deferral follows G-057's existing "helper proc location decided in the work" pattern. Both goals record the workflow questions deliberately kept OUT of their acceptance: when the checker runs (bake step vs subcommand), and which layouts declare an icon slot. G-057 gains a Related pointer to G-135 per the dependency-direction convention - its per-kit sidecar is specified to carry "source .ico identity and provenance", which these records are the natural source for. goals_lint clean (86 active-index goals, 50 archived); the G-133 reference carries its archive marker in Notes per the Archive rules. Claude-Session: https://claude.ai/code/session_01YNjnq6oDzecknLg7AuWZgU Assisted-by: harness=claude; primary-model=claude-opus-5[1m]; api-location=anthropic.com |
3 days ago |
|
|
7280739204 |
Project icon: punk1.ico -> punkshell.ico, artwork from the src/assets/logo master
The four build-consumed copies are renamed and their artwork replaced with
src/assets/logo/punk-mark.ico (all four byte-identical to the master):
src/runtime/punk1.ico -> src/runtime/punkshell.ico
src/vfs/_vfscommon.vfs/punk1.ico -> .../punkshell.ico
src/vfs/mkzipfix.vfs/punk1.ico -> .../punkshell.ico
src/vfs/punk8_statictwapi.vfs/punk1.ico -> .../punkshell.ico
Recorded as delete+add rather than renames: the content is entirely different,
so git's similarity detection finds no link and --follow will not trace through.
The pre-2026-07 artwork keeps its own lineage under src/assets/logo/legacy/,
now the only place the punk1 name survives.
No code referenced the old name - every mention was documentation or goal prose,
checked before renaming.
G-057's contract lines are updated for the new path (Scope in both tiers, plus
Goal and Acceptance): pure path substitution, no semantics changed. Its Context
gains a dated note recording the rename and artwork swap, and its _vfscommon.vfs
override-detection wrinkle now names punkshell.ico. goals_lint clean.
Adds src/assets/logo/project-default/, a frozen monochrome placeholder - a blank
screen wearing the crest - held as the single copy for seeding generated
projects. Unbranded so it reads "replace me" rather than as a product identity.
Bezel and crest are ONE union path (drawn as two shapes the bezel's top edge
cuts a visible line across the mohawk) and the screen is filled rather than
outlined (a solid mass survives 16px where nested thin strokes merge). It shares
only the crest with punk-mark.svg and must not be re-derived from it: tracking
the real mark would churn every generated project on every logo tweak.
Also corrects a defect introduced in
|
3 days ago |
|
|
78b6f47805 |
G-127/G-128 drafted + G-057 amended (user-approved): cross-target vfs bake, portable PE stamping, icon sidecar and mechanism seam
Follow-on goals from the G-122 host/target split, each drafted with its overlap survey
and approved before writing. The G-057 contract edit (title, Scope, Goal, Acceptance) was
shown clause-by-clause and approved per the proposal-first rule.
G-057 amended - the goal was drafted before G-122 separated host from target, so its skip
condition read as one host-shaped test ("non-Windows platform skips") while its Notes used
target language. Split in two: a target with no PE resources is NOT APPLICABLE, a windows
target on a host that cannot run twapi is a distinct shortcoming. Both still emit a text
sidecar, now produced for every kit on every target and defined so the parked RT_VERSION
follow-on extends the same file rather than adding a second. Embedding sits behind a
single mechanism seam, and the twapi arm is explicitly PERMANENT - the seam selects
between mechanisms, it does not replace one: twapi is vendored and git-tracked
(src/vendorlib_tcl8|9/win32-x86_64/twapi-5.0b1) and reachable from make.tcl's auto_path,
so a fresh windows checkout that fetches a runtime and bakes gets icons with no build
toolchain (probed under a stock tclsh 9.0.3 and a fetched plain family runtime). The
per-vfs override is settled as shared across a kit definition's targets with no target
dimension.
G-127 - cross-target bake of a custom .vfs. G-122 made the build READ the right runtime
for a target; this makes it WRITE the right kit for one. Three measured gaps: output is
flat, so two POSIX targets of one kit collide (within a run the duplicate guard renames by
RUNTIME not platform; across selective runs exe_names_seen resets and the second
overwrites the first); the payload model is one hand-curated folder per target
(punk9linux.vfs, not a vfslibs participant, with vendorlib_vfs.toml hardcoding the
platform into its source path - a shape inherited from G-037 when there was one target);
and nothing verifies payload against target. Non-native kits go to bin/kits/<platform>/
with native staying at bin/<name>; /bin/* already ignores it so no dual-track ignore work.
Records that G-114 and G-115 overlap yet never reference each other - the platform axis
and the payload axis have never been connected.
G-128 - portable PE resource stamping via a vendored zig tool, plugging into G-057's seam
without retiring its twapi arm. Feasibility measured: zig rc (resinator, bundled in the
0.16 toolchain) is a resource COMPILER supplying the RT_GROUP_ICON/RT_ICON structure
reference, not a patcher - we never link these runtimes, so patching an existing PE is the
work. In our runtimes .rsrc is not the last section (.reloc follows), so the
implementation appends a section and repoints the resource data directory, which shifts
the overlay: safe for an archive-relative zip, not for a file-relative one, so the unsafe
case is refused rather than corrupted. The payoff beyond portability is post-hoc stamping
of a finished kit, which removes G-057's icon-before-append ordering constraint. Its
distribution is settled as buildable from vendored source AND publishable as a punkbin
artifact, so the no-toolchain route need not depend on the committed twapi (the G-004
tension).
Also adds non-contract Related back-pointers in G-057 to G-122/G-127/G-128.
Assisted-by: harness=claude; primary-model=claude-opus-5[1m]; api-location=anthropic.com
|
4 days ago |
|
|
c172912f4b |
G-121 achieved 2026-07-26: flip + archive record + reference sweep
Acceptance verified in full (evidence recorded in the detail file's Progress section): bakelist under plain tclsh + punk902z with per-entry presence and deployed state; selective 'bake punk91' refreshing only that kit's _build/bin artifacts and punkcheck records (stat + punkcheck diffs, negative grep clean); unknown-name no-build errors; bare bake kit-set parity; help/workflow contract updates; maketclbakelist.test 4 PASS; punkshell 0.24.0 minor bump. Index entry moved to GOALS-archive.md. Reference sweep: no pending-tense live-tier mentions existed; mapvfs.config pointer updated to the archive path; forward-pointing notes pushed as back-pointers to the live goals they serve (G-024 parsed-model reader swap, G-023 scheme-expansion entry point, G-115 per-kit payload detail, G-057 single-kit icon verification, G-028 deployed -state reporting sibling, G-101 kit-type non-assumption). Detail-file move to goals/archive/ follows in the adjacent commit as a pure rename (root AGENTS.md Doc Restructures). Claude-Session: https://claude.ai/code/session_01Jz7wkUsknJzyuJ3tgMaL2t Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
5 days ago |
|
|
232f2f6096 |
contextual sweep: deprecated make.tcl subcommand references (user-directed, incl. contract lines)
Each site read in context, not grep-replaced; bakehouse vs bake chosen per meaning, and missing invocation arguments supplied where the reference describes an unattended flow: - G-005 Approach + Notes, G-006 Acceptance + body: 'make.tcl project' -> 'make.tcl bakehouse' (the full consumer build these goals integrate with; no flags - conceptual references on a clean checkout, not recipes). - G-057 Acceptance: 'make.tcl project' -> 'make.tcl bake' (icon embedding lives in the kit-wrap stage and must hold for a bare bake; bakehouse inherits). - G-028 Context DELIBERATELY UNCHANGED: dated 2026-07-07 incident narrative - the command actually run; history stays verbatim (alias keeps it readable). - src/runtime/mapvfs.config todo: 'vfs' -> 'bake' wish, re-annotated - G-104 achieved WITHOUT the single-kit-by-name/list-kits item (still open). - src/runtime/vendorlib_vfs.toml header: vfslibs now runs as a phase of bake (G-112 fold), not 'as part of project'. - shellexit.test + staticruntime.test rebuild comments: 'project' -> 'bake' AND stale '(interactive y confirmation)' / bare vfscommonupdate corrected to '-confirm 0' (piped y retired since G-030) - the missing-arguments class. - punk.project layout store vfs READMEs (lib + modules): 'make.tcl vfs' -> 'make.tcl bake'; modpod template twins propagated via the punkcheck layout->modpod sync (make.tcl modules run), never hand-edited. Variant-phrasing sweep confirmed non-hits: G-115 '(vfs assembly)' names the src/vfs payload tier (name retained), G-047 'make.tcl/project.new' is the dev project.new command. Archive tier + CHANGELOG history untouched. goals_lint + goals_xref refs clean. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
5 days ago |
|
|
d3dcc31dc4 |
goals system v2: semicolon Scope delimiters, version marker, lint delimiter check
- GOALS.md: "Goals-system: v2" front matter; canonical "Goals system versions" section; Scope structure rule (elements separated by '; ' at top level, commas only inside parens/braces); Child DOX Index note in root AGENTS.md - goals_lint.tcl: new finding for top-level commas in Scope lines (paren/brace depth-aware) - goals_xref.tcl: repo-local configuration via goals/xref.conf (path roots, stop words, file extensions, reference containers, module dirs, bare_path_roots, prefix_anchors); defaults byte-identical to previous behaviour (verified on this tree) - goals/AGENTS.md: cross-repo goal references drop the G- prefix; xref.conf documented in Verification - Scope delimiter normalisation across GOALS.md, GOALS-archive.md and all detail files, live and archived: 224 lines, top-level commas only; conservation verified (goals_xref report byte-identical pre/post, diff hunks are Scope lines only). Archived tier converted under explicit user approval; sanctioned exception recorded in GOALS-archive.md. Assisted-by: harness=opencode; primary-model=openrouter/moonshotai/kimi-k3; api-location=openrouter.ai |
6 days ago |
|
|
a015ada542 |
G-117 achieved: flip, archive, reference sweep; reopened pin; G-118 items 1+7 verified
Acceptance evidence in the archived detail file: embed verified in all three family members (family_check), sidecar derived from embed with identical build_id, 'info' identifies sidecar-paired/renamed-stray/pre-v1 files without execution and flags doctored-sidecar disagreements, punkbin AGENTS.md schema docs, roundtrip pin green, record survives make.tcl kit wrapping (punk9_beta reads its runtime's r2 record in-kit), r2 re-emitted with full v1 records. Sweep: achieved markers in G-025/G-057/G-108/G-116/G-118/G-119 (G-025's survival expectation updated to confirmed). tclshcmd.test pins ::tclsh(reopened) publication on the rebuilt patched kits (G-118 items 1+7 landed+verified; Progress updated). build905.zig: packager git-identity leg judges success by output not out_code (resolved 'unrecorded' on this host - effective at next emission). Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
7 days ago |
|
|
6a69cbf85c |
goals: xref reconciliation - kit/launcher/modpod cluster (G-019 G-023 G-028 G-029 G-031 G-057 G-077 G-089 G-109 G-111, recorded 2026-07-24)
Assisted-by: harness=opencode; primary-model=openrouter/moonshotai/kimi-k3; api-location=openrouter.ai |
7 days ago |
|
|
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 |
3 weeks ago |
|
|
72d7fa80b2 |
GOALS: add G-057 [proposed] Windows kit icon embedding (twapi resource replacement, per-vfs override)
- default icon src/runtime/punk1.ico, per-kit override from the kit's .vfs; mechanism per tcl-sfe (TEMP_REFERENCE/tcl-sfe, Ashok P. Nadkarni): RT_ICON/RT_GROUP_ICON replacement via twapi resource-update APIs, ordered so the appended vfs payload stays intact (icon stub before append, or sfe-style split/update/reattach) - detail file records the _vfscommon.vfs override-detection wrinkle (common punk1.ico merges into every built vfs - consult the custom pre-merge folder or an explicit mapvfs.config element), idempotence via delete-then-write, twapi/non-Windows skip path, and resource-inspection acceptance - follow-on candidate flagged (detail file only): RT_VERSION stamping - copyright defaulting to the input runtime's own version-resource copyright, Product Name indicating the core Tcl version by default, both configurable via punkproject.toml and/or per-vfs config Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com |
3 weeks ago |