Problem
Some tests create, update, rename, or remove classes and methods while exercising MCP mutation tools. Even when the tests restore the final source state, Iceberg can keep repository packages marked dirty because it observed transient source changes through image announcements.
This makes local image state noisy after test runs: the repository can appear modified even when the actual change list is empty. It also increases the chance that later repository tooling enters expensive or fragile Iceberg diff paths.
Preferred direction
Use generated dummy packages/classes for mutation-heavy tests instead of mutating versioned MCP fixture packages directly.
A possible model:
- keep
MCP-Tests-Resources as immutable source-of-truth fixtures;
- copy required fixture classes and methods into a generated dummy package during
setUp;
- run mutation tests against the generated package;
- remove the generated package/classes in
tearDown;
- assert the generated package is gone afterward.
Non-goals
- Do not make
test_run refresh or clean Iceberg state.
- Do not hide the problem by marking Iceberg packages clean in
tearDown.
- Avoid broad announcement suppression as the primary strategy; announcements are opaque and may be behavior under test.
Acceptance criteria
- Mutation-heavy tests no longer leave versioned MCP packages dirty when their final source state is unchanged.
- Immutable fixture packages remain stable source-of-truth data.
- Generated dummy packages/classes are cleaned up after tests.
- Announcement-sensitive tests, such as history/debugger behavior, are not masked by global announcement suppression.
- The approach is documented in shared test helpers so future mutation tests use the same pattern.
Problem
Some tests create, update, rename, or remove classes and methods while exercising MCP mutation tools. Even when the tests restore the final source state, Iceberg can keep repository packages marked dirty because it observed transient source changes through image announcements.
This makes local image state noisy after test runs: the repository can appear modified even when the actual change list is empty. It also increases the chance that later repository tooling enters expensive or fragile Iceberg diff paths.
Preferred direction
Use generated dummy packages/classes for mutation-heavy tests instead of mutating versioned MCP fixture packages directly.
A possible model:
MCP-Tests-Resourcesas immutable source-of-truth fixtures;setUp;tearDown;Non-goals
test_runrefresh or clean Iceberg state.tearDown.Acceptance criteria