Completion increment: fork pushed by the user; pin
16d2f460b89dfd819aa08ceb97dfebf37b9fa55a; ready-to-land
sources.config/zon records made concrete for both suites (zig-fetch
hash tclparser_punk-0.1.0-aKPixmovFABEMo61xgv1YjUqdgqe41ZiB-EucAgmM-We);
'zig build dual' re-verified via the lazy zon pins alone; kit-shell
load + parse round trips recorded (punk902z Tcl 9.0.2, punksys Tcl
8.6.13) PLUS beyond-acceptance ix86 runtime verification under the
32-bit verification kits (punkluck86 8.6.10, punk91ix86 9.1b0, WoW64)
- combined dll coverage Tcl 8.6.10/8.6.13/8.6.18 + 9.0.2/9.0.5/9.1b0,
x64 and ix86.
Achieved flip per the GOALS.md maintenance rules (acceptance met in
full, judged against the detail file; flagged in the session report -
the goal went proposed->achieved without an active phase): index entry
moved to GOALS-archive.md; reference sweep applied - G-070 (Scope both
tiers, Context, Related line gain the achieved/archive marker),
G-069/G-101/G-130 Notes gain pointers to the archived file (G-130's
also records the ix86 runtime verification its verification kits
enabled). The detail-file move goals/ -> goals/archive/ lands as the
adjacent pure-rename commit.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
G-154 (proposed): fork-as-upstream tclparser build lane at
c:/repo/jn/tclparser_punk - tcltk-depot parser 1.9 porting baseline
with the aspect chiselapp fossil lineage as a second byte-frozen
snapshot, dual-generation stubs dlls (tcl9tclparser19.dll /
tclparser19t.dll) dual-arch under the pinned zig 0.16.0, upstream
114-case testsuite gate. Seed increment verified green 2026-08-02
(fork commits 7c18555 + 16d2f46): builds via suite-matching lazy zon
tcl pins AND standalone, dual step, gate transcript Total 114
Passed 112 Skipped 2 Failed 0 both generations. Detail file carries
the upstream-landscape survey, draft suite consumption records, and
remaining acceptance items (push+pin, kit-shell load transcript).
G-070: Scope (both tiers), Acceptance reference clause and Context
repointed from the never-materialised TEMP_REFERENCE tclparser tree
to the fork repo (snapshots + dll oracle + corpus seed); Related
note to G-154 added.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Multiform per-form failure statuses (formstatus records, noformmatch errorcode
classes + -formerrors) are now sound suffix-viability verdicts: 'incomplete'
(viable) iff every supplied word was validly consumed as a prefix of the form
and the failure is pure exhaustion at end-of-input; anything already supplied
contradicting the form reports 'invalid'. Mechanism: viability-probe mode on
private::get_dict_form suppressing only the position-guarded pure-exhaustion
raises (count min-shortfalls, missing-required checks, adhoc option value at
end) while final validation of the consumed words stands as the soundness
backstop; multiform candidacy and parse_status's single-form formstatus record
confirm each classify-'incomplete' failure with one probe re-parse. Rendered
noformmatch form lines marked '(viable - needs more arguments)'/'(not viable)'
after the stable "form '<fid>':" anchor. Consumer contract documented in the
parse ('Multiform failure contract') and parse_status argdocs. Documented
conservatism: input ending inside a multi-member type clause reports invalid.
New testsuite formviability.test (acceptance scenarios, option position
guards, single-form record soundness, clause conservatism, message marking);
forms.test verdict pins deliberately updated (ms/idle incomplete->invalid for
type-screen rejections). punkshell 0.41.3 (patch: refined multiform error
classification/reporting at the shell surface).
Goal G-152 activated (user-directed) and flipped achieved 2026-08-02 with
acceptance verified via runtests (args subtree green; full-suite parity with
stashed baseline); entry archived to GOALS-archive.md, detail file to
goals/archive/ with verification evidence; consumer pointers pushed to
G-044/G-150 notes.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Activation-freshness overlap survey (goals_xref score G-153) re-run at
activation: all high-scoring pairs already carried as Related: notes
(G-101, G-130, G-131, G-105, G-116, G-110, G-063, G-026, G-108); no
goals drafted since G-153, no new relationships to record.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
G-153 [proposed]: fork-as-upstream metakit port under the pinned zig -
standalone core + Mk4tcl dll/static shapes, win32-x86_64 + win32-ix86
from day one, KitCreator patch audit vs the 2.4.9.8 baseline, dll smoke
under suite-built tclsh86t (the sdx-circularity probe enabler), mk4
x64<->ix86 interchange check, and ready-to-land sources.config/zon
record text for suite consumption. Non-contract Notes: G-101 records
metakit_punk as the mk4 porting vehicle superseding the TEMP_REFERENCE
metakit trees; G-130 gains the measured UCRT linkage + OS-floor
statement (Win10 zero-prereq, Win7/8.x need KB2999226, XP/2000
structurally out), the Windows 2000 placement with the luck-specimen
Win2k-clean import measurement, the SSE2 (pentium4) cpu-baseline rider,
and the lane-mechanics inventory (standardTargetOptions present;
critcl/baselines/punkres-PE32/punkbin-folder/twapi-x86 gaps); G-131
points at G-153 for its metakit arm. goals_lint clean.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
G-152 punk::args form-failure suffix-viability verdict: a candidate form
is marked viable iff every supplied word is a valid prefix and the
failure is pure exhaustion - fixing the witnessed false positive
(parse {frobnicate} classes the info form 'incomplete' identically to
parse {info}), documenting the noformmatch errorcode/formstatus class
vocabulary as a stable consumer contract, and marking viability in the
rendered per-form report. Enabler for G-044 completion; runtime
counterpart of the achieved G-074 static formcheck. Probe evidence in
the detail file. goals_lint clean.
Assisted-by: harness=claude; primary-model=claude-opus-5[1m]; api-location=anthropic.com
G-149 punk::args configurable multi-form synopsis hint labels (the
hard-coded ' i -form N ...' column, repl-centric and unreachable for
(script) ids - identified during G-143).
G-150 punk::ns cmdhelp form narrowing + selection-sound auto_exec::hash
declaration (-regexprefail {^-} on the plain name value - the verified
fix for the latent 'Ambiguous arguments' on bare parse-withid; brings
the make.tcl help dry-run contract to 'i').
G-151 punk::args annotated success render (received-args landing
report - the punk::args-level supersession of make.tcl's interim
'dry-run: line accepted' line).
All proposed status; overlap surveys recorded per goal (punkargs family
via goals_xref; G-044/G-050/G-056 named as related, G-149<->G-151
cross-linked). goals_lint clean.
Assisted-by: harness=claude; primary-model=claude-opus-5[1m]; api-location=anthropic.com
tool/buildsuite/help are multi-form punk::args definitions (one @form per
action, literal single-choice action leaders + choicelabels): 'help tool' /
'help buildsuite' render one synopsis line per action; 'make.tcl help
<subcommand> <action>' - equivalently '<subcommand> <action> -help', or a
0-based form index ('help tool 2') - renders that action's single-form
usage; unknown actions and out-of-range indexes are pointed punk::args
errors (exit 1). tool dispatch parses through the definition (unknown
actions/flags: exit-1 usage errors). User-approved deviation: the declared
positional model puts options before tool names ('tool build -test 0
<name> ...'); docs/agent guidance updated to match and a flag-shaped tool
name earns a stderr hint; the PUNKBOOT_PLAIN degraded scan keeps the
historic flag-anywhere parse. buildsuite driver-arg passthrough unchanged.
G-144 consumer follow-through: all 17 per-subcommand @form -synopsis
overrides retired (automatic @cmd -name bracket-notation synopses;
top-level make.tcl override kept deliberately). Pinned by new
punkexe/maketclhelp.test (12 tests); full punkexe subtree green (114
tests, 0 fail). Goal flipped to achieved and archived; punkshell 0.40.0.
Assisted-by: harness=claude; primary-model=claude-opus-5[1m]; api-location=anthropic.com
Auto-generated synopses for (script)-prefixed constructed definition ids
now lead with the declared @cmd -name (the invocation name - e.g
'make.tcl modules' for (script)::punkboot::modules) instead of the raw
id, across punk::args::synopsis full/summary renders and the
usage/arg_error synopsis sections that funnel through them (punk::args
0.12.7 -> 0.13.0).
The fallback is gated on the (script) prefix only (user-confirmed
narrowing): (autodef) ids are excluded - their id-minus-tag IS the
invocation (arg_error's existing tag strip surfaces it) while their
@cmd -name is a display label ('destroy', 'Object: ::x');
(shared)/(package)/(default)/(widgetcommand) doc ids declare no
invocation-style -name today and render the id as before. Real command
ids render byte-identical (full args testsuite passes with no pin
updates). Six new synopsis.test pins: (script) full/summary/multiform/
surfaces, no-name constructed id, autodef unchanged, real-id
byte-identical.
Goal tiers: index entry archived to GOALS-archive.md, detail file moved
to goals/archive/ (G-143's pending-tense Related line rewritten to
reflect achievement + follow-through pointer: make.tcl's @form
-synopsis overrides are now optional, retirement under G-143 or a
follow-on edit). Docs: @form -synopsis directive known-case text,
synopsis -help, src/modules/AGENTS.md ergonomics bullet. Project
0.39.5 -> 0.39.6 (patch: latent capability, no shipped definition
renders differently today).
Bootsupport refresh (make.tcl modules + bootsupport): snapshot gains
args-0.13.0.tm and picks up two lagging source syncs -
mix/commandset::layout 0.2.0 -> 0.3.0, mix/commandset::project
0.4.0 -> 0.4.1, and the shellfilter 0.2.4 G-145 comment; superseded
copies pruned.
Assisted-by: harness=opencode; primary-model=openrouter/moonshotai/kimi-k3; api-location=openrouter.ai
G-146 [proposed] Fossil binary-glob seeding for generated projects:
the trailing fossil initial commit of a generated project aborts on
binary payload (layout bin/sdx.kit, injected zip-based .tm modules,
incoming G-136 .ico) because thin layouts ship no binary-glob setting.
Deferred twice already (G-087 -> G-012 territory); scoped as its own
goal with the glob-value and seeding-path decisions recorded as open
options and relationships to G-136/G-086/G-027/G-114/G-047 surveyed.
Assisted-by: harness=opencode; primary-model=opencode/kimi-k3; api-location=unknown
Layout .gitignore payloads are now stored inert as gitignore.in and
materialized to .gitignore at project generation, ending the
self-censoring-template hazard (live nested .gitignore files silently
untracked template content in git while fossil managed it fine):
- punk::mix::commandset::layout 0.3.0: layout_materialize_renames map;
layout_stage_chain renames inert payloads after composing all overlay
layers (.anti markers keep targeting store names); layout_materialize
withholds the in-place fast path from inert-payload folders so the
store is never renamed; inert+live name conflict errors loudly
- make.tcl thin-layout sync refreshes every vendor/punk layout's
gitignore.in from the canonical repo-root .gitignore (punkcheck-tracked
sync_layouts events); workflow text updated
- the four vintage payload variants eliminated as drift: all payloads
now byte-identical mirrors of root; modpod copy carried and its stale
.gitignore pruned
- materialize.test +5 G-012 characterization tests (25/25; mix subtree
71 pass / 1 known skip)
Verified end-to-end: generation from each affected layout yields a
byte-identical .gitignore (othersample .anti case yields none); root
edits propagate to payloads via make.tcl libs in both directions; the
fc1c474c force-added template files are back to ordinary git tracking
with no ignore rule matching them; modpod payload README trees are now
visible as ordinary trackable files.
Goal flipped achieved 2026-08-01 (user-confirmed; the custom/_project
acceptance clause is stale - that store level was retired by G-087
stage 5 after drafting; recorded in the archive record and detail
evidence). Reference sweep + archive moves per the flip protocol.
Project version 0.39.5.
Assisted-by: harness=opencode; primary-model=opencode/kimi-k3; api-location=unknown
The Tcl core delivers 'clear' to a transform stack before EVERY write op
(output-buffer flush-down; tclIORTrans.c ReflectOutput, gated on METH_CLEAR -
intentional and test-pinned, but under-documented: doc/transchan.n and TIP 230
scope clear to seek/read-side buffers). ::punkboot::ansistrip::transchan's
clear handler ran 'dict unset carry $chanid', discarding a split sequence's
held ESC tail at every write-chunk boundary: the next chunk's ESC-less
remainder ('0;1m', '1m') passed through unstripped as orphan fragment text in
piped usage tables, while the dropped ESC bytes kept the G-113 zero-ESC pin
green. The transform is write-only with no read-side state, so its
contract-conformant clear is a no-op - it no longer declares the op, the
per-write calls never fire, and the split-sequence carry survives every chunk
boundary. finalize still drops an end-of-stream partial sequence. No change in
textblock/punk::ansi (pre-transform stream verified well-formed during
diagnosis; exonerated).
Pin: maketclcolour.test gains maketcl_colour_help_tables_zero_remnants -
piped 'tclsh src/make.tcl help' for all 20 declared SUMMARIES subjects plus
bare 'help'/'-help', asserting exit 0, zero ESC bytes, zero orphan fragments
(two-step detector: strip complete sequences, then scan for [0-9;]+m not
preceded by ESC or an open bracket - a raw scan false-positives on ';1m' inside complete
multi-parameter SGR). Failing-first evidence: pre-fix the pin names exactly
the 5 fragmenting invocations (help, -help, help libs, help info, help
bootsupport); the 22-invocation NO_COLOR+PUNK_FORCE_COLOR pre-transform
corpus carries no legit text matching the detector.
Verified (tclsh 8.7a6, win32-x86_64): all 22 invocations byte-level clean;
PUNK_FORCE_COLOR=1 output intact (1177 complete sequences, 0 orphans); the 3
G-113 colour-policy pins pass unchanged; shell/testsuites/punkexe family (15
files, 102 tests) and shell/*** (127 tests) green, warnings pre-existing only;
'make.tcl packages' verified, layout + modpod make.tcl copies synced by the
build (punkcheck-managed outputs batched here per the carve-out).
Bookkeeping: goal flipped active -> achieved 2026-08-01, detail file archived
(goals/archive/G-145-piped-usage-ansi-remnants.md), G-056 Notes gains the
exoneration pointer; src/AGENTS.md colour bullet + src/tests/shell/AGENTS.md
suite description updated; project version 0.39.4 (patch) with CHANGELOG
entry.
Assisted-by: harness=opencode; primary-model=opencode/kimi-k3; api-location=unknown
G-143 make.tcl help depth: multi-form tool/buildsuite definitions and
per-action usage - @form sections with literal action leaders so help
shows which actions take <toolname>/-test, 'help <sub> <action>' renders
the single form, tool dispatch becomes fully declared, buildsuite keeps
its passthrough driver-args contract.
G-144 punk::args auto-synopsis @cmd -name fallback for non-command ids -
unblocks dropping make.tcl's hand-written ?...? @form -synopsis lines in
favour of the automatic bracket notation (retires the G-030 workaround
for (script):: ids).
G-145 remnant-free piped usage tables - root-cause and eliminate the
orphan CSI fragments ([0;1m / [0m / lone m) observed beside table borders
in piped help output; extends the G-113 zero-ESC guarantee to zero
sequence-fragment text.
All three born from the 2026-08-01 argdoc restyle evaluation (mechanisms
verified live on bootsupport punk::args 0.12.7). Overlap surveys recorded
in each detail file; goals_lint clean (83 active-index goals); xref score
reviewed per goal - the top term-scored unlinked pairs for G-143 (G-085,
G-021) checked and judged lexical-only, no relation recorded.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Index + detail-file mirror in step: the src/vfs/*.vfs.toml entry now reads
"the achieved G-115 surface carrying the achieved G-127 platform axis" -
same treatment the clause received when G-115 flipped (852d684a precedent).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Scope lines are the index's discovery mechanism (path-grep + goals_xref path
overlap): after the G-024/G-115 migration the old filenames matched nothing on
disk, so agents editing src/runtime/mapvfs.toml or src/vfs/*.vfs.toml would
silently miss these goals. Minimal swaps, index + detail-file mirrors in step:
- G-101/G-131: mapvfs.config -> mapvfs.toml (annotations unchanged)
- G-127: vendorlib_vfs.toml -> src/vfs/*.vfs.toml (the achieved G-115 surface
this goal adds the platform axis to); mapvfs.config -> mapvfs.toml
- G-141: vendorlib_vfs.toml -> src/vfs/*.vfs.toml (the achieved G-115
successor surface; format coordinated with G-127)
Archived G-024/G-115 records deliberately untouched (accurate history).
goals_lint clean; xref path discovery verified resolving to the reworded goals.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
G-024 - kit mapping converted to toml (tomlish-parsed), same-day activation->achieved:
- src/runtime/mapvfs.toml: [kit.<name>] / [group.<name>] / [scheme.<name>] tables
(header comment = user-facing spec). All 12 active line-format mappings migrated
(order preserved - identical bakelist rows vs the legacy parse); historical
comments carried over; mapvfs.config deleted here AND in the project-0.1 layout
(converted to mapvfs.toml there).
- make.tcl reader family under the unchanged G-121 model surface: mapvfs_locate
(toml > legacy; PUNK_MAPVFS_CONFIG env override = characterization seam),
mapvfs_parse dispatching on extension, strict mapvfs_parse_toml, deprecated
mapvfs_parse_config fallback (un-migrated generated projects keep baking, with a
NOTE; toml wins when both files exist). Shared toml helpers hoisted to
punkboot::lib (inline toml_untag copies removed).
- Strict entry-named validation: unknown keys/types/schemes, conflicting targets,
duplicate outputs, parse failures fatal (exit 3 pre-build). Full-bake
unresolvables split by nature: missing vfs folder (repo content) fatal per
entry; missing runtime file (environment - part-populated stores are legitimate)
entry-named recapped BUILD-WARNING + skip.
- Groups: @<group> selection in bake/bakelist, group/default/scheme notes columns
+ detail lines, groups listed in errors and argdoc choices. verify-ix86 wraps
the G-129 kits; bake_default=false excludes entries from full bakes.
- G-023 versioned scheme declared live ([scheme.punk8]/[scheme.punk9], group
versioned, bake_default=false pending G-023 activation): parse-time expansion
from punkproject.toml to punk<gen>-<version> / punk<gen>-dev / release-gated
punk<gen>; kit loop creates the plain name when absent and never overwrites it
on a normal bake. punk9-dev baked end-to-end; punk9 gate skip demonstrated.
- Consumer dedupe fix: several entries may share one runtime on one vfs -
kit-output enumeration and the kit-loop runtimes list process each distinct
runtime once (latent multiplication in the legacy format, unreachable there).
G-115 - declarative .vfs composition with drop-in preservation, same-day
activation->achieved:
- Sibling declarations src/vfs/<name>.vfs.toml ([payload.<name>]: source,
source_root src|packages, target, supersedes, replace) materialized by the new
VFSPAYLOAD phase (bakehouse/bake/vfslibs; selective bakes narrow; strict
entry-named errors). Drop-in-wins precedence via punkcheck -overwrite
synced-targets: undeclared or modified-since-install files preserved and
reported (changed-but-preserved NOTE = files_skipped minus sources_unchanged);
supersedes/replace are the explicit exceptions; an undeclared .vfs is untouched.
- vendorlib_vfs.toml relationship settled: folded/superseded - all six install
entries migrated into per-.vfs files for the 13 participating folders (first
materialization run reproduced every payload with zero tracked-content change);
file deleted; a leftover copy warns and is ignored.
- Demonstration kit punkdeclare (group declare-demo, bake_default=false,
smokerequire udp+tcllibc): VCS carries only the boot fauxlink; the whole
lib_tcl9 payload (tcludp vendor tree + tcllibc consent-gated packages tier)
rematerializes from the declaration - clean-tree rebuild smokes pass in-kit,
and drop-in survival was proven live (a foreign pkgIndex.tcl and an undeclared
note both survived; the foreign file genuinely won until removed, caught by the
G-133 smoke probe as designed). Payload ignored in both VCS (.gitignore +
derived ignore-glob; ignore-sync verification clean).
- Docs: src/vfs/README.md (format + precedence spec), src/vfs + src/runtime +
src + bin AGENTS.md, ARCHITECTURE.md (+lint clean), workflow text and
summaries/helptexts/argdoc; layout store seeds the convention (vfs README +
mapvfs.toml; machinery travels via the established make.tcl sync).
Verification: legacy-vs-toml identical kit rows; punkluck86 force-rebuilt under
both formats content-identical (identical 1.73MB runtime+stamp prefix, identical
2993-member payloads; whole-artifact byte identity is not a pipeline property -
consecutive same-config rebuilds differ in zip timestamp metadata, pre-existing);
punkexe suite 98 tests 0 failures incl. 5 new G-024 characterizations
(maketclbakelist.test: @group filter + PUNK_MAPVFS_CONFIG fixture tests) and
updated pins (payloadcheck declared list + punkdeclare; platform detail wording).
Goals: both flipped achieved 2026-07-31 with evidence in the detail files;
GOALS.md entries moved to GOALS-archive.md; live-tier reference sweep applied
(G-004/G-019/G-023/G-025/G-026/G-035/G-065/G-127/G-131/G-137/G-141) including
the G-127 mapvfs-seam retirement note (PUNK_MAPVFS_CONFIG) and a direct
G-137<->G-127 bridge replacing the archived G-024 one. Detail files move to
goals/archive/ in the follow-up pure-rename commit.
Also included as found: the developer's concurrent G-142 goal addition (GOALS.md
entry + goals/G-142-punkbin-listing-manifests.md), committed unmodified for
git/fossil coherence - not agent-authored.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Per-tier listing manifests with named groups (current/lts/vulnerable/archive) separating the listing surface from the sha1sums integrity ledger; activation assessed as immediately possible (no goal dependencies; G-141 libfetch surface coordination only).
Assisted-by: harness=opencode; primary-model=huggingface/moonshotai/Kimi-K3; api-location=unknown
Both goals flip proposed->active at user direction. Activation-freshness
overlap surveys (goals_xref score) recorded as Related: notes: G-024 gains
G-127/G-131/G-137 pointers, G-115 gains G-127/G-141 pointers (goals drafted
since the 2026-07-24 overlap reviews).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Status active -> achieved 2026-07-31 (acceptance walk in the detail
file); index entry moved to GOALS-archive.md; live-tier sweep: achieved
markers on the G-127/G-130/G-131/G-141 Related lines and the G-006
absorption note (interim trust flags libfetch + punk-runtime named);
actionable-note pushes to G-105 (server surfaces ready for cross-target
artifacts), G-101 (8.6 tier riding the mechanism; tclkit86bi sidecars),
G-067 (provenance/consent patterns to inherit), G-127 (the
no-alternate-mapvfs-seam finding from the e2e demonstration). xref
report: no unlinked pair had G-123 as its only bridge. Detail-file
rename to goals/archive/ follows as its own pure-rename commit.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
proposed -> active in both tiers. Activation-freshness survey re-run
(goals_xref score G-123) per the maintenance rules: strongest pairs
G-127 and interval-drafted G-141; back-pointer Related lines recorded
in the detail file for G-141 (lib-tier selectivity sibling sharing the
server-trust consent surface), G-127 (cross-target kit bakes consume
served tiers), G-130 (32-bit runtimes publish through the per-target
layout) and G-131 (win32-ix86 zipfs specimens are third-party tclkits
the provenance backfill covers).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Index entry + detail file. 'make.tcl libfetch' (G-139) fetches every
declared libpackages.toml artifact regardless of what the host or bake
consumes - already pinching on WSL (win32-x86_64 zips downloaded for a
linux-only bake; G-140 worked around it via the PUNK_LIBFETCH_CONFIG
test seam) and set to grow as G-004 migrates more vendored trees to
the punkbin lib tier. The goal derives the default fetch set from the
consumption declarations already in the tree (PACKAGES host needs +
the kit set's packages-sourced vfslibs targets) with narrow/widen
overrides, derivation reporting, and a VFSLIBS missing-source hint
naming the fetch the failing bake needs. Overlap survey recorded
(strongest live intersections G-127/G-115; relations
G-006/G-065/G-004/G-123/G-027).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
suite_tcl90: critcl_zig.config gains the linux-x86_64-zig cross target
(zig cc -target x86_64-linux-gnu.2.17 - the dynamic-glibc floor decision,
recorded in the goal file and fed to G-105). build905.zig gains the
tcllibc-linux step (critcl driver on the windows suite shell, stubs
linkage, no linux host; uuid.tcl excluded matching upstream's own
native-linux package shape) gated by the new tools/elf_gate.tcl
(G-133-equivalent ELF64/LSB/ET_DYN/x86_64 structural check - the
load-smoke stand-in for cross lanes). library-artifacts emits
lib/linux-x86_64/tcllibc-tcl9-r<N>.zip in the same run: target =
linux-x86_64, build_host_platform = win32-x86_64, full provenance set,
deliberately no [tests] section. build_id seeds now include the tier
path so same-named artifacts in different target tiers get distinct
identity digests (both suites' tool copies kept byte-identical). Step
lists (build905.zig -Dsteps default, suite.tcl) and README document the
lane and invocation.
Consumption: libpackages.toml declares tcllibc-tcl9-linux (target
linux-x86_64); vendorlib_vfs.toml install.tcllibc_tcl9_linux switches
punk9linux.vfs/lib_tcl9 - replace retires the hand-dropped tcllibc,
supersedes removes the stray tcllibc2.0 - so the last provenance-less
accelerator hand-drops in any kit payload are gone. punkshell902 baked
(G-133 payload arch scan: 6/6 match target linux-x86_64) and
WSL-verified: materialized-tier accel smoke plus baked-kit smokes
(default paths + a pinned variant proving the kit's own lib_tcl9
artifact tree loads with the accelerator engaged). Finding recorded:
the tclkit-902 runtime bundles its own lib/tcllibc2.0 which wins
default precedence - the origin of the retired stray folder name.
Determinism: back-to-back re-emission byte-identical for all three
artifacts; the zig Run session-env cache finding extended (FOSSIL_HOME
and invocation mode churn the key; the linux ELF .so observed
bit-stable across critcl re-runs, unlike the windows PE). Goal flipped
achieved with evidence in the detail file; G-105 notes carry the libc
decision as prior art. Docs: buildsuites AGENTS.md child index,
ARCHITECTURE.md buildsuites paragraph, CHANGELOG + punkproject 0.32.2.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
New proposed goal, flagged at the G-139 achieved flip: punk9linux.vfs's
linux-built tcllibc + stray tcllibc2.0 are the last provenance-less
accelerator hand-drops in any kit payload. G-140 commits a narrow zig
-target lane on the existing windows suite: critcl driving zig cc with an
explicit linux target section (stubs linkage - no cross-built runtime, no
linux build host), emitted as lib/linux-x86_64/tcllibc-tcl9-r<N>.zip through
the established G-138 machinery (record target=linux-x86_64,
build_host_platform=actual host), verified by a host-side ELF check +
byte-identical re-emission + a WSL accel smoke under an existing punkbin
linux Tcl 9 runtime, consumed via the G-139 declaration idiom
(libpackages.toml + vendorlib_vfs.toml supersedes/replace + a punkshell902
cross-target bake with in-kit record + WSL kit smoke). The libc/triple
decision (dynamic glibc floor direction) is recorded as direct input to
G-105's dynamic-libc and mapping items - back-pointer added to G-105 Notes
(non-contract). tcl8 generation dispositioned out of the committed set (no
linux tcl8 kit).
Overlap survey run (goals_xref paths across the scope): G-105 the strongest
live intersection (carried as Related with the lands-first framing);
G-116/G-130/G-060/G-123/G-004/G-065 carried; G-108/G-110/G-131 co-location
only. goals_lint clean.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Acceptance met in full (walk in the detail file's Progress): libfetch with
sha1 verification + beside-toml metadata + server-trust consent proven LIVE
against the canonical origin post-publication; PACKAGES_tcl<N> libs-step
materialization with punkcheck provenance; vendorlib_vfs.toml declarations
(source_root=packages + replace) with supersedes removing tcllib1.21 incl.
nested tcllibc 0.4 + md5c from the 8.6-family kits; punk86 kit-hosted
runtests vs the same-day baseline IDENTICAL (zero differences to
disposition); vendored trees removed in their own commit after the proven
bake (70d1838c); the post-removal verification bake shipped kits with
verifiable embedded provenance from the tcllib-vendorless checkout;
derived-project decision recorded (fc2376ca).
Index entry -> GOALS-archive.md record. Reference sweep: G-004's
pending-tense retirement line updated to delivered (+ the remaining
vendored trees named as its outstanding scope with the tcllib pattern as
template); actionable pointers pushed to G-006 (libfetch's trust gate = the
interim consent instance to absorb), G-065 (the artifact-fetch pattern to
absorb/reference), G-027 (derived-project library story via the layout
sync), G-123 (materialization twin + the live interim consent flag to
coordinate with). make.tcl workflow text updated to the landed consumption
shape (fetch -> tier -> PACKAGES phase + vfslibs packages lane); vfslibs
summary/help texts cover both source roots. Project 0.32.0 + CHANGELOG
(user-visible kit payload upgrade). goals_lint clean (82 active, 57
archived). Detail-file move to goals/archive/ follows in the adjacent
pure-rename commit.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Acceptance met in full (walk recorded in the detail file's Progress): emission
step landed in BOTH suites and demonstrated end-to-end - exceeding the
demonstrate-90/record-86-follow-through minimum - with byte-identical
re-emission verified, provenance-complete schema-v2 class=library records,
sidecars + per-tier sha1sums in the same step, publication left a deliberate
user step, punkbin layout docs recording the tier (punkbin repo commit
c38686a), and md5c dispositioned (dropped; tcllib's md5 prefers tcllibc,
which bundles the accelerator).
Index entry -> GOALS-archive.md record (file's established arrow-format
convention retained). Reference sweep: G-139 Context/Alternatives/Related
updated with achieved markers + archive path, and G-138's actionable
outcomes pushed to their consumers - G-139 (settled naming, md5c drop,
staging locations of the emitted r1 artifacts), G-123 (schema v2 landed
first for the library class - runtime-side v2 rides the lineage), G-004
(lib tier = the route for library binaries out of the tracked tree),
G-066/G-067 (zip tier recorded as the interim carrier for the .tm long
game). goals_xref report shows no unlinked pairs bridged only by G-138.
ARCHITECTURE.md buildsuites paragraph gains the lib-tier sentence
(architecture_lint clean); src/buildsuites/AGENTS.md child index updated
(also corrects the stale 'G-100 active' to achieved 2026-07-26).
Detail-file move to goals/archive/ follows in the adjacent pure-rename
commit per the Doc Restructures rule.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Index tags and detail-file Status mirrors flipped proposed -> active.
Activation-freshness overlap surveys re-run (goals_xref score, both goals):
no overlaps beyond the drafting-day survey - drafted and activated same day,
no goals drafted in the interval; survey notes recorded in both detail
files. goals_lint clean.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Motivated by the 2026-07-30 provenance investigation: the vendored tcllib
trees are hand-dropped 2023/2024 local builds whose only machine-readable
provenance is critcl's teapot.txt, while both buildsuites already build
tcllib 2.0 + tcllibc (zig cc) in their default step lists with full
provenance available at build time.
G-138: publish suite-built tcllib/tcllibc as immutable -r<N> <package>.zip
artifacts in a new punkbin lib/ tier - lib/allplatforms for platform-neutral
(user decision 2026-07-30), lib/<target> for binary packages - deterministic
punkzip assembly, embedded class=library artifact record (G-123 schema-v2
lineage), sidecars + sha1sums, deliberate-publish revision discipline (zig
non-reproducibility), md5c disposition required.
G-139: consume the tier - consent-gated make.tcl fetch into an untracked
bin/packages/<target> input tier mirroring bin/runtime/<tier> (user decision
2026-07-30), punkcheck-installed lib_tcl<N> materialization, tcllib/tcllibc
brought under vendorlib_vfs.toml declarations with supersedes removing
tcllib1.21/tcllibc0.4 from 8.6-family kits (kit-hosted runtests validation),
vendored-tree retirement sequenced after a proven artifact-path bake (G-004
payoff), derived-project story: fetch default / in-project suite build
alternative.
Interim-carrier framing recorded: the zip tier does not supersede the
G-066/G-067 .tm direction. Overlap surveys run (goals_xref); strongest live
relation G-123 (runtime-tier sibling) carried in both. Also recorded in
G-139 Context: lib_tcl8|9/test_old orphans moved to
TEMP_REFERENCE/retired_lib_tcl_test_old 2026-07-30 (were untracked).
goals_lint clean.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
The metakit checkout was renamed when the metakit_pooryorick variant arrived
beside it. Update the six reference sites (G-101 scope+detail, G-096 archive
note, suite_tcl90 README/build905.zig/suite.tcl vqtcl-removal comments) to
the new folder name. No functional change - comments and goal text only.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Index entry + detail file written per the draft presented and approved
2026-07-29/30. Status proposed. Carries the 2026-07-10 requirements sketch
from the G-057 archive (copyright carry-over default, ProductName naming the
core Tcl version, toml config direction), the punkres-only-arm decision with
the twapi/sfe BuildVersionResource alternative recorded under Alternatives,
the three-surfaces reconciliation obligation with G-025/G-117, and Related
lines for G-023/G-024/G-025/G-028/G-006/G-004 plus the archived
G-057/G-117/G-128/G-134 anchors. Overlap survey recorded (no live goals
intersect src/tools/punkres or src/make.tcl; bin/ surfaced G-004 + G-023).
Two in-parens punctuation adjustments vs the presented draft (inner '; '
became ' - ') so the Scope line parses as single elements under goals_lint's
'; ' element grammar. goals_lint clean; no dangling references.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Implemented and achieved same day. punkboot::utils 0.6.0 gains
kit_offsetstyle_report (argdoc'd thin classifier over
punk::zip::archive_info), synced via modules + bootsupport (one stale
dead-pid .punkcheck.lock removed per the recorded recovery) and promoted into
_vfscommon. make.tcl: guarded getter, post-assembly probe beside the
smoke-require block (recapped BUILD-WARNING only on a FILE-relative attached
payload; plain/none/unreadable silent; NOTE on stale bootsupport), and the
'check' row (ACTIVE (advisory) + contract lines). Characterization:
offsetstyle.test 7/7 (mkzip -runtime/-offsettype hermetic fixtures for
plain/archive/file, none on text + metakit-magic binary, unreadable detail,
src/_build baseline sweep - no kit image probes file);
maketcl_check_offsetstyle_pin added (payload-check suite 4/4). Full utils
suite 69/69, punkexe suite 81/0, live punkluck86 bake silent as the
acceptance's baseline clause requires. Docs: src/AGENTS.md pin bullet with
does/does-not-guarantee, bin/AGENTS.md deployed-kit section, ARCHITECTURE.md
check-family bullet (architecture_lint clean). Reference sweep: no live-tier
references beyond the index entry; goals_xref shows no pairs bridged solely
by G-134. Archive move follows as a pure-rename commit.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
goals_xref score re-run at activation: no relationships beyond those already
recorded (G-028's overlap is lexical - the probe reads assembled build
images, not deployed exes, so no locked-exe interplay; G-131/G-127 already
carry Related coverage). goals_lint clean.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Post-push verification against the live server: punkres-x86_64-windows-0.3.1.exe
fetched from gitea punkbin, sha1 matches the published sha1sums row and the
staged value (166cd176...), fetched binary runs. Every acceptance clause is
satisfied (full evidence in the detail file's flip entry: post-hoc stamping
with tool-self read-back + twapi cross-check, boots, convergence, both
section shapes, file-relative refusal/consented preserve crc-verified,
zip64/multi-disk refusal, WSL non-windows e2e with host recorded, seam
selection + parity + zig-optional degradation, distribution both ways now
LIVE, RT_VERSION-ready tree handling, licensing/provenance).
Flip mechanics: detail Status achieved 2026-07-29 with evidence appended;
index entry moved to GOALS-archive.md (record format incl. that file's
arrow convention); reference sweep - G-127 cross-host mention, G-134
Related line and G-101's container-review rider gain achieved/archive
markers, PROVENANCE.md's explicit detail path repointed to the archive.
goals_xref: no live pairs were bridged solely by G-128. Archive MOVE of the
detail file follows as a separate pure-rename commit (Doc Restructures
move/edit separation).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
goals_xref score G-128 re-run at activation; two relationships recorded as
Notes: G-105 (host-native punkres build for the e2e non-windows clause;
cross-target builds + naming live there) and G-101 (the 'kit' shape is the
sdx/metakit container - post-hoc stamping of it rides the opaque-overlay
taxonomy, move-safety to be measured). goals_lint clean.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Acceptance verified in full on 2026-07-29 (evidence in the detail file's
Progress section): windows-host bakes embed the default punkshell.ico
into all 10 buildable win32 kits across zip (x64 + ix86), sdx-metakit
and stamped-concat assembly, verified by twapi resource inspection
byte-matching the source ico; override round-trip proven and reverted;
boots for zip, metakit and concat images from scratch copies; linux
cross-target kit gets its sidecar with NOT APPLICABLE; the two
incapable-host conditions produce their distinct notices in REAL bakes
(mingw tclsh86: twapi not loadable; WSL linux cross-bake: cross-host
with the G-128 remedy named - and the cross-baked kit boots on windows,
the recorded known shortcoming live); idempotence converges; runtime
store originals untouched; vendored-twapi no-toolchain arm proven under
tclsh9.0.5-punk.
Index entry moves to GOALS-archive.md (ID position); the detail-file
move to goals/archive/ follows as its own pure-rename commit. Reference
sweep: G-023, G-028, G-127 and G-128 notes gain achieved/archive markers
plus what each consumes from the delivered mechanism (G-128: the seam
now exists - kit_icon_process entry point, sidecar record, cross-host
notice naming it as remedy; G-028: the stub-first ordering concentrates
the locked-target exposure at deploy, punk9_beta observed). AGENTS.md
owning-doc pointers land alongside: src/vfs (override convention),
src/runtime (default-icon role + derivation sidecar), src/assets/logo
(propagation honesty: G-057 consumes the src/runtime copy - syncing the
four build-consumed copies after artwork changes stays deliberate, with
assetorigin stale-detection as the drift signal), and an ARCHITECTURE.md
build-section bullet (architecture_lint clean).
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
User-directed proposed->active flip. Activation freshness survey
(goals_xref score G-057) found no relationships beyond those already
recorded in the detail file (G-128 and G-127 linked bidirectionally;
G-123 referenced with the optional back-pointer absent; higher-scoring
unlinked pairs are lexical coincidence). goals_lint clean.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Acceptance verified in full (evidence in the detail file's new Progress
section): format documented with schema key in src/assets/logo/AGENTS.md;
tolerant reader; six-state checker proven on constructed fixtures under
tclsh 8.6.11, Tcl 9.0.3 and the punk91 kit runtime; generator with no
Windows-only component regenerating all four .icos plus the web rasters
byte-identically before make-ico.ps1 was removed; sidecars exist and
verify for every generated artifact under the four asset directories
(live tree: 8 records, 8 verified).
Index entry moves to GOALS-archive.md; the detail file move to
goals/archive/ follows as its own pure-rename commit (root AGENTS.md
"Doc Restructures": moves separate from edits). Reference sweep:
G-057 and G-136 Related lines gain achieved/archive markers plus
pointers to the concrete deliverables they consume (G-057: record
format, checker, the verified src/runtime/punkshell.ico derived-copy
sidecar, and the still-open kit-shipping user call; G-136: the
committed project-default icon.ico + sidecar pair its injection copies
verbatim). src/assets/logo/AGENTS.md G-135 mentions gain archive paths.
Notes record the implementation-time resolutions: self-contained
flat-toml subset reader + embedded sha256 (no tomlish, no tcllib);
src/runtime/punkshell.ico sidecar written (passive file, nothing
ships); _vfscommon.vfs / mkzipfix.vfs / punk8_statictwapi.vfs copies
stay unrecorded pending the user call on shipping sidecars inside kits.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
User-directed proposed->active flip. Activation freshness survey
(goals_xref score G-135) found no relationships beyond those already
recorded in the detail file (G-136, G-057, G-128, G-133 all referenced;
higher-scoring unlinked pairs are lexical coincidence). goals_lint clean.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Activation and achievement same day at user direction ('activate and
start on it'). Activation freshness survey (goals_xref score G-033)
recorded in the detail file: G-043's one-directional reference is the
only unlinked real relationship; G-123/G-127/G-131 overlap by
punk_main.tcl/bin co-location only.
Detail file gains the Progress record (option (a) inline-walk
decision, verification evidence on the rebaked punk91 kit, the
moduledoc-0.1.1 live-help note and the pending vfscommonupdate
promotion) and moves content-identical to goals/archive/; index entry
moves GOALS.md -> GOALS-archive.md.
Reference sweep: G-016/G-047 relationship notes point at the archive
and the ::punkboot::proj_root_find delivery; G-032's Approach now
says the packagemode leader text is LIVE and its remaining lane is
rendering/parse wiring; G-089's Related note records that the visitor
root walk it rides is live, remains defined post-boot, and that the
boot-interface packagemode hint it needs is still absent; G-031 gains
the fork-drift datapoint (proj: landed in punk_main.tcl only,
project_main.tcl still lacks src mode and proj:); G-018/G-035/G-043
mentions gain achieved/archive markers.
goals_lint clean (85 active, 51 archived), architecture_lint clean.
Claude-Session: https://claude.ai/code/session_0156PuejSCGjgeGb7jiABrDU
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Pre-activation review outcome (user-approved wording): G-135's record
shape pivots from one assetorigin.toml per directory to a per-asset
sidecar, <asset-filename>.assetorigin.toml beside the asset it
describes.
G-135 contract: Scope (both tiers, mirror-identical) names per-asset
*.assetorigin.toml sidecars. Acceptance rebuilt - records are bound by
the sidecar's own filename (suffix stripped, same directory; files
ending in the suffix are records, never assets; reader tolerance kept);
the checker's state model is repaired to six states evaluated in table
order with first match winning (artifact-absent added for records whose
paired asset is gone; verified now requires every hash the sidecar
records to match, so a hash-only sidecar verifies on the artifact hash
alone; fixtures must distinguish stale / replaced / artifact-absent);
the generator clause requires byte-identity per the invocation profile
that produced each .ico and that the generator (re)writes each produced
artifact's sidecar, so regeneration cannot leave a stale record; the
final clause requires sidecars to exist and verify for every generated
artifact under the four asset directories.
G-135 body: Approach carries the pairing rationale (no path key, file-
pair lifecycle, survives wholesale and single-asset copies, composes
under merge_over same-path replacement) and the hash-required minimum;
the six-row state table gains the evaluation-order and unhashed-claims
notes. Alternatives inverted: the per-directory [[asset]] record is now
the rejected shape (shared-state writers - the punkcheck G-094/G-095
lesson; file-level clobber at a .vfs root under overlay merges;
invisible dangling entries; single-asset copies lose their record), and
a fauxlink-carried record is recorded as considered-and-rejected (the
filename would encode a mutable fact; overlay pairing would need a
nominal-keyed composition invariant in every composer), preserving the
nominal-keyed idea as fauxlink hardening independent of this goal (71
fauxlinks in tree, zero same-directory nominal collisions, surveyed
2026-07-28). Notes add the override-without-sidecar kit behaviour
(travelled common sidecar truthfully reads replaced), the eased checker
parsing posture, and the open pre-activation items (which of the four
build-consumed punkshell.ico copies get sidecars; whether a
_vfscommon.vfs sidecar shipping inside every baked kit is the intent).
G-136: acceptance names icon.ico.assetorigin.toml and the per-asset
dependency; Approach/Notes reworded to match. G-057: one Notes sentence
disambiguates its per-kit icon sidecar from G-135's record sidecars.
goals_lint clean (index/detail mirrors exact, archived-goal references
markered); goals_xref score G-135 re-run - G-136 and G-057 linked.
G-135 stays proposed; activation is the user's flip.
Claude-Session: https://claude.ai/code/session_014wNGMsdNFFrU1duADeirgm
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
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
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 91fa500e. The Ownership bullet in
src/assets/logo/AGENTS.md said "do not repoint build consumers at this directory
on your own initiative" and then, in the next sentence, instructed re-copying
them by hand after regeneration - so whichever half an agent read first would
win. It now states the dated fact and names G-057 as the owner of future
propagation. Distribution machinery does not belong in an AGENTS instruction,
and drift wants a check rather than a standing manual obligation.
Stale punk1.ico copies were also swept from the untracked build trees
(src/_build x12, bin/test, bin/test2, scratch, testsdx) so the next bake cannot
merge both names into a kit payload.
Claude-Session: https://claude.ai/code/session_01YNjnq6oDzecknLg7AuWZgU
Assisted-by: harness=claude; primary-model=claude-opus-5[1m]; api-location=anthropic.com
Every acceptance clause is met: vendored source green under the pinned
zig 0.16 toolchain via the make.tcl tool step (zig optional), upstream
extract-to-directory + pinned porcelain listing, punk::zip accelerator
with the parity suite (identical names/bytes/mtimes both engines over
the G-124 shapes and the file-relative piperepl kit; pure path proven
when absent), recorded benchmark (crossover ~15-20 members, material
from ~50, x2.3-2.6 native / x3.8-4.9 kit-hosted), and PROVENANCE.md
origin/re-vendor/licence records.
Index entry moved to GOALS-archive.md; detail Status flipped (the file
moves to goals/archive/ in the adjacent pure-rename commit). Reference
sweep: G-101's pending-tense accelerator mention rewritten as achieved
with the archive path; G-128's Depends-on gains the archive pointer
plus the now-existing pattern surface and the zig-0.16 traps its port
should read first.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Status proposed -> active in the index with the detail-file mirror
updated. Pre-activation baseline is recorded in the detail file Notes;
first work item is the zig 0.16 port of the upstream checkout.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Two halves of one file-relative policy decision. G-134 (new, proposed): advisory
post-assembly punk::zip::archive_info probe at the G-133 seam pins make.tcl's own
kit outputs archive-relative - by-construction property becomes a checked contract;
mkzip -offsettype file and modpod stay available for deliberate manual creation.
G-128: the straight file-relative refusal becomes default-refuse with a consent-flag
preserve (central-directory offset fix-up by the shift delta, zip64/multi-disk still
refused), plus Notes recording the rationale, the Authenticode sign-after-stamping
rule, and the convention-conversion parking. goals_lint clean (85 active, 49
archived).
Assisted-by: harness=opencode; primary-model=openrouter/moonshotai/kimi-k3; api-location=openrouter.ai
Activation (user-directed this session) through achieved flip in one lifecycle
change-set: index entry moved to GOALS-archive.md (Scope relocated verbatim;
title preserved with the [achieved] status transform; Detail: line becomes the
archive detail pointer - the standard flip transformations), detail file gains
the activation survey Related: notes (G-114 prevention-side sibling, G-128
sibling PE surface), the advisory-as-drafted open-decision resolution, and the
full Progress/verification records (live bake evidence on
punkluck86/punk91ix86/punk86/punkshell902, the zint real finding, 92.6ms avg
scan cost, suite results). Reference sweep pushes the archived file's
actionable notes to G-024 (toml schema home), G-131 (one-vocabulary +
runtime_caps), G-127 (target-addressing adoption), G-130 (subdir exemption for
32-bit growth), G-123 (publication citation), G-114 (detection-side sibling).
Detail file moves to goals/archive/ in the following pure-rename commit.
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
Candidate goal from the G-129 aftermath (user-observed 32-bit kit breakage):
an advisory binary-architecture scan over the merged tree at the G-125 gate
seam (platform-subdir aware, covers cross-target kits) plus a per-kit
post-bake smoke-require probe through the artifact's own tclsh subcommand
(plain package require - the only observer of version-preference shadowing).
Overlap survey named G-024/G-131/G-127/G-028/G-130/G-123, non-overlap G-115,
precedent G-125/G-129. Advisory-vs-gate for smoke failures recorded as the
open decision at activation.
Claude-Session: https://claude.ai/code/session_01UEgomWq6kA6c4A8GswqqGW
Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com