diff --git a/GOALS.md b/GOALS.md index 4b77c2a6..06c9c865 100644 --- a/GOALS.md +++ b/GOALS.md @@ -402,3 +402,7 @@ Detail: goals/G-143-maketcl-multiform-help.md Scope: src/modules/punk/args-999999.0a1.0.tm (synopsis renderer + usage/arg_error synopsis display); src/tests/modules/punk/args/testsuites/args/ (synopsis pins) Detail: goals/G-144-punkargs-synopsis-name-fallback.md +### G-146 [proposed] Fossil binary-glob seeding for generated projects (initial commit completes) +Scope: src/project_layouts/ (.fossil-settings payloads); src/make.tcl (thin-layout sync, if derivation chosen); src/modules/punk/mix/commandset/project-999999.0a1.0.tm (generation-time fossil commit path) +Detail: goals/G-146-fossil-binary-glob-seeding.md + diff --git a/goals/G-146-fossil-binary-glob-seeding.md b/goals/G-146-fossil-binary-glob-seeding.md new file mode 100644 index 00000000..0bad161e --- /dev/null +++ b/goals/G-146-fossil-binary-glob-seeding.md @@ -0,0 +1,63 @@ +# G-146 Fossil binary-glob seeding for generated projects (initial commit completes) + +Status: proposed +Scope: src/project_layouts/ (.fossil-settings payloads); src/make.tcl (thin-layout sync, if derivation chosen); src/modules/punk/mix/commandset/project-999999.0a1.0.tm (generation-time fossil commit path) +Goal: a project generated from any punkshell layout completes its trailing fossil initial +commit with no binary-content prompt or abort - the layout's .fossil-settings payload +carries a binary-glob setting covering the binary content generation injects (layout-carried +bin/sdx.kit, injected zip-based .tm modules, seeded assets). +Acceptance: dev project.new from each binary-affected layout (project-0.1, plus one +injection-only layout e.g basic) completes its trailing fossil initial commit cleanly +(FOSSIL_HOME diverted, no binary prompt/abort); the generated project's versioned +.fossil-settings carries binary-glob with the recorded value; the seeding path +(hand-authored per layout vs derived via the make.tcl template refresh) is decided and +documented in this file; the G-136 relationship (icon payload is binary - same abort +class) is recorded. + +## Context + +G-087's generation verifications (stages 3 and 4, 2026-07-19 - see +goals/archive/G-087-thin-project-layouts.md): the trailing fossil initial commit of a +punk.project-generated project aborts on binary payload content (bin/sdx.kit from the +layout plus injected zip-based modpod .tm modules) because thin layouts ship no +binary-glob settings; layouts without binaries commit cleanly. Deferred twice since +(G-087 -> G-012 as "designated fix"; G-012 correctly scoped .fossil-settings payloads out +of its inert-storage treatment - they are inert by nature, fossil reads them only at a +checkout root; the missing SETTING is a different problem class). + +Binary sources in generated projects: bin/sdx.kit carried by the punk.project layout +(project-0.1); zip-based .tm modules injected into EVERY generated project by +bootsupport_inject (zip content reads as binary to fossil); the G-136 icon seed (.ico) +when that goal lands. punkshell's own repo already runs binary-glob=* (versioned in +.fossil-settings/, workflow-policy-only per root AGENTS.md) so binary checkins proceed +without prompts. + +## Approach (options - decision recorded in the work) + +- Value: binary-glob=* (mirror punkshell's own - generated projects own their binary + policy) vs a narrow glob (*.tm, bin/*.kit, *.ico - tighter, but maintained as payload + classes grow). +- Seeding path: hand-authored per-layout .fossil-settings payload vs derived from + punkshell's own .fossil-settings/binary-glob via the G-012 template-refresh machinery + (a second derived payload class after gitignore.in). + +## Related + +- G-136 (icon seeding injects binary .ico assets - its acceptance hits the same abort + without this goal's setting; coordinate) +- G-086 (light layout - generated light projects carry the same injected-.tm binary + class; its .fossil-settings needs the setting too) +- G-027 (pull updates - the seeded setting becomes pull-updatable infrastructure payload + once the pull channel exists) +- G-114 (per-platform tm roots - binary .tm segregation shares the "zip .tm reads as + binary" classification fact) +- G-047 (deliberate non-overlap: seeds punkproject.toml workflow defaults, not + .fossil-settings; recorded because both seed layout payload) +- G-087, G-012 (archived - origin of the finding; inert-payload machinery this goal's + derivation option rides) + +Overlap survey 2026-08-01 (goals_xref paths src/project_layouts .fossil-settings +src/make.tcl src/modules/punk/mix/commandset/project-999999.0a1.0.tm + report unlinked +list): relationships as above; G-031 (layout payload, no binary content) and the +project-commandset path-anchor hits (G-016 G-014 G-066 G-063 G-067 G-022) surveyed - +no relationship.