Skip to content

Implement transactional type-pack contract evolution - #39

Merged
callumalpass merged 2 commits into
mainfrom
agent/contract-evolution
Aug 3, 2026
Merged

callumalpass merged 2 commits into
mainfrom
agent/contract-evolution

Conversation

@callumalpass

Copy link
Copy Markdown
Owner

What changed

  • Replaces the prerelease install-only type-pack path with first-class assess/apply APIs.
  • Computes immutable canonical pack digests and writes exact portable lock provenance.
  • Plans install, upgrade, downgrade, reconfigure, adoption, preservation, deletion, and conflict actions.
  • Rechecks assessment digests inside the write transaction so stale plans cannot apply.
  • Applies contract setup and managed resources atomically while preserving user divergence.
  • Includes mdbase.lock.yaml in canonical collection snapshots.
  • Adds command-layer integration and cross-version/conformance coverage.

Why

Contract changes previously left SDK consumers to infer collection state from failing operations. The engine now owns compatibility assessment and produces a deterministic migration plan that callers can explain before any write occurs.

Impact

This is intentionally breaking prerelease API work. The old install types/functions are removed in favor of structured assessment and application results.

Depends on mdbase-spec#44.

Validation

  • full Rust workspace tests
  • v0.3 conformance and migration fixtures
  • runtime/integration tests
  • package and snapshot regressions, including portable lock resources

@callumalpass
callumalpass marked this pull request as ready for review August 3, 2026 09:15
@callumalpass
callumalpass merged commit 12bda28 into main Aug 3, 2026
7 checks passed
@callumalpass
callumalpass deleted the agent/contract-evolution branch August 3, 2026 10:10
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