Skip to content

feat: add top-level dependency manifest - #170

Open
galargh wants to merge 3 commits into
mainfrom
galargh/top-level-dependency-manifest
Open

feat: add top-level dependency manifest#170
galargh wants to merge 3 commits into
mainfrom
galargh/top-level-dependency-manifest

Conversation

@galargh

@galargh galargh commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

This PR ntroduces top-level dependencies.toml as the shared source of truth for runtime defaults and CI/scenario dependency profiles.

This removes the split where defaults lived in Rust code while CI had its own JSON profile manifest. The binary now embeds the same manifest that CI resolves, so version bumps and profile changes happen in one place.

dependencies.toml

The manifest has three parts:

  • [dependencies.*] for runtime components used by foc-devnet init, such as Lotus, Curio, filecoin-services, PDP, and multicall3
  • [dev-dependencies.*] for scenario-only/client dependencies, such as Synapse SDK and filecoin-pin
  • [profiles.*] for CI profile selection, where each profile declares a base selection and can override individual components

Each dependency declares its repository with git, plus profile selections such as:

default = { tag = "v1.36.2" }
stability = { tag_pattern = "v*" }
frontier = { branch = "main" }

The resolver infers the strategy from the selected keys, including tag, tag_pattern, branch, commit, npm, pkg_pr_new, submodule_git, and bundled.

Testing

  • cargo fmt --check
  • cargo test config::tests::default_config_uses_manifest_dependency_defaults
  • python3 -m unittest scripts.tests.test_resolve_dependencies scripts.tests.test_scenario_dependencies

@FilOzzy FilOzzy added this to FOC Aug 13, 2026
@github-project-automation github-project-automation Bot moved this to 📌 Triage in FOC Aug 13, 2026
@galargh galargh changed the title Add top-level dependency manifest feat: add top-level dependency manifest Aug 13, 2026
@galargh
galargh force-pushed the galargh/top-level-dependency-manifest branch from e348479 to 5ef958f Compare August 13, 2026 14:01
@BigLep BigLep moved this from 📌 Triage to ⌨️ In Progress in FOC Aug 19, 2026
…endency-manifest

# Conflicts:
#	ci/README.md
#	ci/dependency-profiles.json
#	renovate.json
#	src/config.rs
…endency-manifest

# Conflicts:
#	ci/dependency-profiles.json
#	src/config.rs
@galargh
galargh marked this pull request as ready for review September 4, 2026 22:17
@galargh
galargh requested review from beck-8 and rvagg as code owners September 4, 2026 22:17
base = profile.get("base")
if not isinstance(base, str) or not base:
raise ResolutionError(f"Profile {profile_name!r} base must be a string")

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Prevent input errors, below rollback to default

Suggested change
if not any(base in component for component in components.values()):
raise ResolutionError(
f"Profile {profile_name!r} base {base!r} does not match any "
"known dependency selection"
)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ⌨️ In Progress

Development

Successfully merging this pull request may close these issues.

4 participants