Plan: Driven port interfaces (1.2.2)#13
Draft
lodyai[bot] wants to merge 1 commit into
Draft
Conversation
Add the execution plan for roadmap item 1.2.2 (define the six driven-port interfaces: GameStateRepository, Clock, RandomSource, AudioEventSink, AssetCatalogue, TelemetrySink). The plan was drafted from the HLD, ADR-002/004/005/006/007/008/009/010, and the existing 1.2.1 tooling, then revised after a focused Logisphere community-of-experts design review (verdict: proceed with conditions). Key decisions captured: opaque branded placeholders for not-yet-built aggregates, GameStateRepository segregated into RunIndex/SnapshotStore/EventLog, a pure immutable RandomSource with the snapshot value owned by the model, a new placeholder-honesty CI guard plus an import-hygiene rule, dropped sync AssetCatalogue.has, sink "never throws" invariant with optional Flushable, property-style members, and the no-Result divergence documented. No implementation has begun; the plan awaits approval per the execplans gate. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Adds the execution plan
docs/execplans/1-2-2-define-driven-port-interfaces.mdfor roadmap item 1.2.2 — defining the six driven-port interfaces (GameStateRepository,Clock,RandomSource,AudioEventSink,AssetCatalogue,TelemetrySink) insrc/domain/ports/.This PR contains the plan only. No interfaces are implemented yet — the execplans approval gate requires sign-off before implementation begins. Please review the plan and approve (or request revisions).
How the plan was produced
docs/roadmap.md(1.2.2), the HLD §"Module layout"/§"Domain model", and ADR-002/004/005/006/007/008/009/010, plus the existing 1.2.1 boundary tooling (scripts/import-boundaries.ts,tools/path-aliases.ts, stricttsconfig).pure-rand's immutable generator shape (inspiration only — not a dependency) and theResult-vs-Promiseconvention for ports.Key design decisions captured
unknown/Record), so premature coupling is a compile error.GameStateRepositorysegregated intoRunIndex/SnapshotStore/EventLog, composed via an intersection alias (ADR-004 access patterns/evolution rates).RandomSourceas a pure, immutable, snapshot-serialisable port (sfc32 per ADR-005); the snapshot value the pure tick consumes lives indomain/model.lint:domain-placeholders) plus an import-hygiene rule closing the boundary guard's npm allow-list gap.AssetCatalogue.has; documented the "a sink never throws" invariant with an optionalFlushable; property-style members throughout; the no-Resultdivergence from the ADR-002 sketch and the deferred seventh (self-play report) seam are recorded.Scope note for the approver
This is a types-only slice — it renders no DOM and carries no user-visible strings — so localisation, card-model data, WCAG 2.2 markup, and Playwright/css-view visual validation are recorded as not applicable.
bun ff(including the a11y and e2e suites) must still pass green during implementation to prove no regression. Please confirm you agree with this scoping.References
docs/execplans/1-2-2-define-driven-port-interfaces.md🤖 Generated with Claude Code