Skip to content

Add repository manifest identity#43

Merged
SamWilsn merged 2 commits into
masterfrom
manifest
Jun 19, 2026
Merged

Add repository manifest identity#43
SamWilsn merged 2 commits into
masterfrom
manifest

Conversation

@SamWilsn

Copy link
Copy Markdown
Contributor

No description provided.

@ritorhymes ritorhymes left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In #17, you pointed out that the design made the system very configurable at the cost of added complexity. My main point was not that we need arbitrary local configurability; it was that proposal-repo identity should stop living as hardcoded preprocessor state. This version keeps that core property with a smaller schema and fewer topology concepts, which makes sense since we don't have an immediate need for the richer topology model. The layering here (private InnerManifest for the raw file shape, Manifest after validation, RepositoryUse for the active/others split) already covers most of what I was thinking about for future schema evolution.

A few things:

  1. Unknown fields. The schema uses deny_unknown_fields, which is great for catching typos, but it means that if we ever add a field later (for example a second pinned dependency alongside theme), older binaries will reject newer manifests in every proposal repo until everyone upgrades. Would you be open to tolerating unknown keys, or adding schema-version handling, so the schema can grow without a lockstep upgrade?

  2. Commit message. The msg should be updated to reflect the current Build.toml schema and the removal of the legacy EIPs/ERCs fallback. Right now it still reads like the #17 implementation.

  3. Conversion point. Manifest currently gets cloned into Fresh::new and then converted to RepositoryUse a second time in build(). Converting once in prepare() and passing RepositoryUse plus Theme downstream would drop the duplicate conversion and keep the Build.toml shape from spreading through call sites. That way, if we ever do need more configurability later, it lands as a change to the manifest layer instead of touching every call site, without making anything more complex today. This would also mean the name in locations invariant only gets re-checked in one place.

Also: Rollout PRs. eips-wg/EIPs#11 and eips-wg/ERCs#11 currently add the old .build-eips.repo.toml shape. Once this lands I'll update both to the Build.toml schema so the manifests are ready whenever you drop a new release.

Comment thread src/config.rs Outdated
Add the .build-eips.repo.toml schema, loader, validation rules, and
manifest tests for active proposal repositories and declared sibling
repositories.

Drop concept of staging/production
@SamWilsn

Copy link
Copy Markdown
Contributor Author
  1. Unknown fields. [...]

The deny_unknown_fields come from your original PR. I do like them though. I'd rather fail and force people to update the tool than potentially building something incorrectly.

  1. Commit message. [...]

Done!

  1. Conversion point. [...]

Moved RepositoryUse into config, and threaded that through everything instead of Manifest directly.

@SamWilsn SamWilsn merged commit 935ddb4 into master Jun 19, 2026
4 checks passed
@SamWilsn SamWilsn deleted the manifest branch June 19, 2026 14:30
@ritorhymes

Copy link
Copy Markdown
Contributor

Awesome! Glad we could lock in this foundation.

I updated the PRs for ERCs and EIPs to add only the repo manifests, if you could merge those while this is fresh:
eips-wg/EIPs#11
eips-wg/ERCs#11

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.

2 participants