Skip to content

Record a CI-reachable theme URL in generated submodules #32

Description

@forkwright

Finding

A default typikon-init run adds the theme submodule from the loopback forge URL, so Git records http://127.0.0.1:7878/forkwright/typikon.git in the new consumer's .gitmodules. The same scaffold generates a GitHub Actions workflow that recursively checks out submodules, where that URL necessarily points at the hosted runner rather than the operator's forge. The declared GitHub theme URL is never used.

Evidence

  • bin/typikon-init:35-36 defines both forge and GitHub theme URLs.
  • bin/typikon-init:78-81 runs git submodule add "$THEME_REPO", which makes the loopback forge URL the portable repository metadata.
  • ci/github-workflow.yml.tmpl:30-32 asks GitHub's checkout action to fetch submodules recursively.
  • THEME_REPO_GH has no productive use in the script.
  • The first consumer encountered the exact failure: ardent-site commit bf66294 records that GitHub Actions could not reach the forge and changes .gitmodules to the public GitHub mirror. It documents the durable local override pattern separately.

Issues #25, #27, and #29 cover stale bootstrap documentation, generated lint violations, and deployed-vs-local browser gates; none covers submodule reachability.

Why this matters

Every freshly generated consumer contains a CI workflow that cannot complete its first checkout. The scaffolder creates contradictory fleet state and pushes a known repair onto every consumer, undermining both idempotent setup and the purpose of owning a substrate.

Desired correction

Store a universally readable, non-loopback mirror URL in .gitmodules—normally the public GitHub HTTPS URL—and configure operator-local clones to override submodule.themes/typikon.url to the forge. Derive both URLs from one typed scaffold configuration, and add a generated-consumer acceptance test that creates a fresh site and proves a clean, network-isolated CI-style clone can initialize the theme without operator state.

Metadata

Metadata

Assignees

No one assigned

    Labels

    severity:highSignificant breakage with no available workaroundtoolingBuild system, CI pipeline, or developer-tooling concern

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions