Skip to content

Add multi-repo local build system - #9

Closed
ritorhymes wants to merge 3 commits into
eips-wg:masterfrom
ritovision:local-build-system
Closed

Add multi-repo local build system#9
ritorhymes wants to merge 3 commits into
eips-wg:masterfrom
ritovision:local-build-system

Conversation

@ritorhymes

@ritorhymes ritorhymes commented Apr 15, 2026

Copy link
Copy Markdown
Contributor

Important

This PR is part of the coordinated multi-repo local build system series tracked in preprocessor#8. Since opening, this original full preprocessor implementation has been split into the stacked review PRs preprocessor#10, preprocessor#11, preprocessor#12, and preprocessor#13 for easier review. The downstream PRs in EIPs#10, ERCs#10, and template#1 still depend on the build-eips command surface introduced by this implementation and should land only after the stacked preprocessor series is merged and released.

Description

This PR adds a local multi-repo build system to preprocessor.

It makes the full site pipeline practical to run locally across the WG repo stack, adds workspace config and generated task support for that local workflow, introduces explicit separation between site and editorial workflows, and adds both local dev-serving and built-output preview paths.

Architecture

The local system is organized around a few key distinctions:

  • workspace source repos: the real sibling repos in the local workspace, such as EIPs, ERCs, and theme
  • build-time repos: disposable assembled repos under .local-build/.../repo used for site checks, builds, and serving
  • built output: generated site output under .local-build/.../output

Commands are always anchored to an active content repo (EIPs or ERCs). Site commands operate on the assembled build-time repo, while editorial commands target selected proposal files through eipw. serve and preview are also separate paths: serve is the local dev loop, while preview serves already-built output.

Command Surface

  • check: validate the assembled site source tree without producing final output
  • build: build the site and write output under .local-build/.../output
  • serve: run the local dev-serving path
  • preview: serve existing built output without rebuilding it
  • editorial lint: run targeted editorial validation on selected proposal files
  • editorial build: run targeted editorial validation, then the site check path
  • workspace init: create workspace config and clone any missing sibling repos
  • workspace refresh: regenerate generated workspace helper files
  • workspace doctor: validate local workspace readiness

Changes

  • add workspace config and local profile support through .build-eips.toml
  • add local override handling for theme, sibling repo, and build root selection
  • add workspace init, workspace refresh, and workspace doctor
  • generate a workspace justfile for common local commands
  • add explicit site commands for check, build, serve, and preview
  • add explicit editorial commands for lint and build
  • add dirty workflow support for local runtime commands
  • add editorial selectors for explicit paths, batch input, --working-tree, and --against-upstream
  • support active content repos checked out as either standard clones or git worktrees

Validation

Local verification included:

  • clean runtime checks and builds
  • dirty runtime checks, builds, and serve behavior
  • parity profile runtime checks
  • explicit editorial linting
  • editorial --working-tree selection
  • editorial empty-selection skip behavior

Final CI-shaped verification used the rewritten EIPs and ERCs branches with the build-eips binary built from this PR branch.

From those branches, I ran:

  • build-eips --staging editorial build --against-upstream --format github
  • build-eips --staging build

In both repos, the editorial selector resolved no changed proposal files relative to upstream, and the full staging site build completed successfully.

Release Note

The downstream EIPs, ERCs, and template PRs depend on the released build-eips binary from this PR. Those PRs should be merged only after this PR is merged and a release is cut.

Add the local workspace model for the multi-repo build system.

This adds workspace config and profile support, workspace init,
refresh, and doctor commands, generated helper tasks, and the
local site build path against sibling repos and theme inputs.

The site commands support normal local usage, parity checks,
standard clone and git worktree checkouts, and explicit dirty
builds from the active content repo.
Add explicit editorial commands and keep them separate from the
site command surface.

This adds targeted editorial selection, dirty live serving, and
static preview for the local multi-repo workflow.
Document the local multi-repo workflow and command surface.

Describe local workspace setup, dirty workflow, site commands,
editorial commands, parity usage, and the separate serve and
preview paths using stable public-facing terminology.
@ritorhymes

Copy link
Copy Markdown
Contributor Author

I am going to split this PR into a new set of multiple stacked PR's for review for tomorrow. I will leave this one opened for reference of what the consolidated system looks like.

@ritorhymes

Copy link
Copy Markdown
Contributor Author

I split this PR into a new stacked PR series:

@ritorhymes ritorhymes closed this May 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant