You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

3.8 KiB

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).
  • 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.