Browse Source

Goals: draft G-146 (user-approved proposal)

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
master
Julian Noble 1 week ago
parent
commit
6f1d020690
  1. 4
      GOALS.md
  2. 63
      goals/G-146-fossil-binary-glob-seeding.md

4
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

63
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.
Loading…
Cancel
Save