Skip to content

Conversation

@ashwinb
Copy link
Contributor

@ashwinb ashwinb commented Oct 28, 2025

This adds automated backward compatibility testing for run.yaml files. As we evolve StackRunConfig, changes can inadvertently break existing user configurations. This workflow catches those breaks before merge.

We test old run.yaml files (from main and the latest release) against the PR's new code. If configs that worked before now fail, the PR is blocked unless explicitly acknowledged as a breaking change.

Two test layers:

  • Schema validation: Quick pytest checks that configs parse without errors
  • Integration tests: Full test suite execution to catch runtime semantic issues (cross-field validations, provider initialization, etc.)

What we test against:

  • main branch: Breaking changes here block the PR (this is the gate)
  • Latest release: Informational only - shows if we've drifted from what users have

If tests fail, the PR author must acknowledge the breaking change by adding !: to the PR title (e.g., feat!: change xyz) or including BREAKING CHANGE: in a commit message. Once acknowledged, the check passes with a warning.

These jobs are run:

  1. check-main-compatibility - Schema validation of all distribution run.yaml files from main
  2. test-integration-main - Full integration test suite using main's ci-tests run.yaml
  3. test-integration-release - Integration tests with latest release config (informational)
  4. check-schema-release-compatibility - Schema checks against release (informational)

The integration tests catch issues that schema validation alone would miss, like assertion failures in StackRunConfig.validate_server_stores() or provider-specific runtime logic.

Resolves #3311
Related to #3237

Add automated testing to catch breaking changes to StackRunConfig
before they reach users.

- Schema validation: pytest-based test validates old run.yaml files
  parse with current StackRunConfig
- Integration tests: run full test suite with old ci-tests run.yaml
  to catch runtime semantic issues
- Dual baseline: test against both main (blocks PRs) and latest
  release (informational)
- Breaking change acknowledgment: require '!:' in PR title or
  'BREAKING CHANGE:' in commit message to merge breaking changes

Resolves llamastack#3311
Related to llamastack#3237
@meta-cla meta-cla bot added the CLA Signed This label is managed by the Meta Open Source bot. label Oct 28, 2025
Copy link
Contributor

@ehhuang ehhuang left a comment

Choose a reason for hiding this comment

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

awesome!

@ashwinb
Copy link
Contributor Author

ashwinb commented Oct 28, 2025

yay?

image

@cdoern
Copy link
Contributor

cdoern commented Oct 28, 2025

This is awesome, thank you. I had something similar in #3543 but this is more comprehensive. will close in favor of this one!!

@ashwinb ashwinb merged commit e809d21 into llamastack:main Oct 29, 2025
15 checks passed
@ashwinb ashwinb deleted the backward-compat-test branch October 29, 2025 04:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Meta Open Source bot.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Integration test for run.yaml

3 participants