refactor(abstractions)!: break the Core Events↔Abstractions namespace cycle (gh-#445, 2 of 2) - #505
Merged
Conversation
… cycle (gh-#445) NoOpStationEventSink implemented IStationEventSink from the Events namespace while the interface's signature reaches back to StationEvent — the loop is inherent to the split, so the no-op moves beside its interface into GenWave.Core.Abstractions. BREAKING for the published GenWave.Abstractions package surface (public type changes namespace): the next Abstractions release tag must be a major (5.0.0), per the package README's semver contract. Empties the gh-#445 baseline; SEAMS.md regenerated (names the type's new home).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Second half of #445 — closes #445 once both are in. Stacked on the
Api↔StatsPR (merge that first; merge-commit, not squash, per house style).NoOpStationEventSinkis a public type in the published GenWave.Abstractions package (it physically lives in that project despite theGenWave.Core.*namespace — the deliberate pre-extraction-namespace pattern). This PR moves itGenWave.Core.Events→GenWave.Core.Abstractions, which is a breaking surface change under the package README's semver contract — same mechanics as the ContextContent lesson:publish-nugetderives the version from the tag and no CI gate catches it, so the constraint lives here and in the commit message (refactor!).There is no non-breaking shape for this cycle.
IStationEventSink.Publish(StationEvent)must reference Events, so any implementing type in Events closes the loop — and any old-namespace shim would have to implement the interface, recreating the exact edge being removed. Fixing cycle 1 costs a major, full stop.🎚️ Your call, Dean: merge when you're ready to spend v5.0.0 (or want to batch it with other breaking wishes) — or park this PR and the baseline honestly keeps the one Core row until then. The sibling PR is free either way.
🔧 The change: the no-op moves beside its interface (issue's own fix sketch); using/doc-ref ripple across 6 files;
SEAMS.mdregenerated viatools/SeamIndexGenerator(it names the type's home, byte-for-byte drift-checked by Story294); baseline dictionary now empty — the guard runs with a clean slate, ready for the law-promotion /design step the issue records.✅
dotnet build GenWave.slnzero warnings; Architecture.Tests 104/104; Core.Tests 144/144. Final tree verified byte-identical to the single-branch build that also ran Orchestration/Host targeted suites.