Skip to content

Feat: Add optimistic concurrency semantics to governance storage#13

Merged
rian-be merged 3 commits into
mainfrom
develop
Jun 22, 2026
Merged

Feat: Add optimistic concurrency semantics to governance storage#13
rian-be merged 3 commits into
mainfrom
develop

Conversation

@rian-be

@rian-be rian-be commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Summary

Add optimistic concurrency semantics to governance request storage so lifecycle transitions no longer depend on blind saves.

Added

  • MutationRequest.Revision as the governance concurrency guard
  • IMutationRequestStore.Create(...) and TryStore(..., expectedRevision) for explicit create and guarded update paths
  • MutationRequestAlreadyExistsException for duplicate request creation attempts
  • MutationRequestConcurrencyException for lifecycle transition races
  • runtime helpers for lifecycle transitions and version resolution composition
  • regression coverage for stale lifecycle snapshots and guarded store behavior

Changed

  • governance lifecycle transitions now persist through compare and swap semantics instead of non atomic update flow
  • in-memory governance storage now rejects duplicate creates and stale revision writes
  • governance runtime orchestration is split into smaller helpers for transition validation, execution, and version-resolution result building
  • version resolution persistence characterization uses the new create path

Result

Governance request storage now exposes explicit create and optimistic concurrency update semantics. Concurrent lifecycle transitions no longer both succeed against the same stale snapshot, and the runtime reports a clear concurrency failure when a guarded transition loses the race.

Testing

  • dotnet build src/ModularityKit.Mutator.Governance.csproj -c Release
  • dotnet test Tests/ModularityKit.Mutator.Governance.Tests/ModularityKit.Mutator.Governance.Tests.csproj -c Release
  • dotnet build ModularityKit.Mutator.slnx -c Release

Linked Issues

Checklist

  • runtime contract uses explicit create and guarded update paths
  • stale lifecycle transitions are rejected through optimistic concurrency
  • governance tests cover the redesigned storage semantics

rian-be added 2 commits June 22, 2026 16:55
Added

- Governance test project for request lifecycle and version resolution behavior
- Segregated characterization tests for lifecycle atomicity, store overwrite semantics, and resolution persistence
- Shared test support for seeded requests and stale-snapshot stores

Result

Governance runtime risks now have executable characterization coverage so concurrency, store-contract, and resolution-persistence behavior can be validated before changing the execution model.
@github-actions github-actions Bot added tests Test coverage and test changes performance Performance improvements or regressions labels Jun 22, 2026
# Conflicts:
#	Tests/ModularityKit.Mutator.Governance.Tests/Lifecycle/MutationRequestLifecycleAtomicityTests.cs
#	Tests/ModularityKit.Mutator.Governance.Tests/Lifecycle/MutationRequestStoreContractTests.cs
#	Tests/ModularityKit.Mutator.Governance.Tests/Resolution/MutationRequestVersionResolutionPersistenceTests.cs
#	Tests/ModularityKit.Mutator.Governance.Tests/TestSupport/StaleSnapshotMutationRequestStore.cs
@rian-be rian-be merged commit 3ae6843 into main Jun 22, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

performance Performance improvements or regressions tests Test coverage and test changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Task]: Add optimistic concurrency semantics to governance request storage [Task]: Make governance lifecycle transitions atomic

1 participant