Repository navigation
GAME-RENDER-ADOPT-01.8: register the BAR game state with Game.Render RendererSelection behind the SVG surface (Refs FS-GG/.github#5180) - #53
Merged
Conversation
… SVG default (Refs FS-GG/.github#5180) Adds Broker.Browser.Render (portable F#: the BAR observable game-state type mapped from the barc.browser.v1 Observation, a shared Scene projection, an Elmish client over RendererSelection with a replay feed) and Broker.Browser.Render.Host (Fable-only: the retained SVG surface registered as the default adapter). Pixi and Babylon are not registered; selecting them is refused with state intact. FS.GG.Game's RendererSelection and SvgSurface are in no published package, so four byte-exact sources are pinned at d602c2d4 (eng/game-render/pin.env, scripts/check-game-render-pin.py), as in FourD#56. The existing client is unchanged. Decision record and inventory: docs/GAME-RENDER-ADOPT-01.8.md. Refs FS-GG/.github#5179 Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Author
|
Root/fdev: independent review of Fix now:
Held for the live slice (FS-GG/.github#5181 scope):
Document only: the project-wide The home decision (FSBarV2) is accepted. Refs FS-GG/.github#5180 |
…ers, gate on a decoded-value digest (Refs FS-GG/.github#5180) - BarClient accepts the equal-sequence Current-to-Stale frame the broker sends (Gateway.fs envelope: last sequence, no units, empty perspective) and keeps the prior entities, so the veil shows. - BarObservationJson refuses fractional or out-of-range uint32/int32 fields (definitionId, teamId), which .NET and Fable narrowed differently. - The parity gate prints and compares a digest of every decoded value, not only the check count. Refs FS-GG/.github#5179 Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Author
|
Root/fdev: the independent delta re-review APPROVED exact head
Triage, declined: the doc line about stale Merging. FS-GG/.github#5180 continues: the published Game.Render and the #745 kit, which delete the pin bridge. Refs FS-GG/.github#5180 |
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.
GAME-RENDER-ADOPT-01.6 source slice: the SC2 client's tactical game-state type is registered with the
FS.GG.Game.RenderRendererSelectionregistry, and the existing tactical map is the default (and only registered)Svgadapter behind it. Design, inventory and upstream gaps:docs/GAME-RENDER-ADOPT-01.6.md.Refs #50
Refs FS-GG/.github#5179
What changes
src/SC2.Client.Rendering(new, pure, also compiled by Fable):TacticalView(last acceptedTacticalObservationplus the target cursor) is the registered state type; board geometry, allegiance and fills have one definition;TacticalView.sceneis the Scene projection the canvas backends will draw;TacticalRenderer.registryandreport.Tactical.fs: the existing marker code is the Svg adapter'sMount/Present/Dispose(same circle attributes, handlers and labels; the activation closure is lifted toactivateUnit). Present rebuilds markers only for a new observation, so a cursor move never drops marker focus. ARendererDriver<TacticalView>runs the selection;globalThis.SC2Renderer.select(token)and.observe()are the hooks. The unit list, authority, guest and transport paths are unchanged.RendererSelection.fsi/.fs,RendererDriver.fsi/.fsatd602c2d4) undersrc/SC2.Client.Rendering/Upstream/, because no publishedGame.Rendercarries them (0.17.0 is the newest).eng/game-render/pin.envandscripts/check-game-render-pin.py(run byverify.sh;--against-upstreamcompares to the commit) keep them unedited. Same bridge as FourD#56.FS.GG.UI.Scene0.31.0 (what FS.GG.Game main builds against; 0.32.x needs FSharp.Core >= 10.1.401, which the SDK pin forbids). Locked restore passes;package-provenance.jsonandscripts/verify-packages.shrecord and check the archive hash.Review round 1 (REQUEST_CHANGES at 9d2c0f7)
uint32/int32fields are refused (9 probes plus the exact limits).validateObservation, the 64-entity guest limit, generation and validity sequences, duplicate keys. Documented only: project-wideTreatWarningsAsErrors=false, andHandle.selectreturning true for any known token.Not accepted by this PR (held remainder)
Done-when needs the published
Game.Renderand the FS.GG.Game#745 kit; switching to them, deletingUpstream/andeng/game-render/, and the three-backend switch test are held. Live SC2 state needs SC2.Client#49; everything here is recorded or synthetic. This PR does not close #50.Local gates (same commands as CI where the toolchain exists)
dotnet restore SC2Client.slnx --locked-mode: passes;dotnet build SC2Client.slnxDebug and Release: 0 warnings, 0 errors.dotnet run --project tests/SC2.Client.Rendering.Tests: 29 checks, 0 failed. Emitted Fable (rendering-vectors.mjs): 29 checks, 0 failed;verify.shrequires equal counts. Mutation controls (snapshot units drawn, enemy fill changed, Pixi registered) each failed the expected checks.npm --prefix src/SC2.Client.Browser test(includestactical-ui-contract.mjs): passes.npm ... run build: passes.Browser.Tests/renderer-selection.spec.js(real index.html DOM and emitted Tactical module in Chromium): 1 passed; a mutation that rebuilds markers on every present failed it.bash scripts/verify-provenance.sh,verify-packages.sh,check-game-render-pin.py --against-upstream,node --test scripts/lib/qualified-product-retention.test.mjs: pass.verify.shand the existing Playwright suite (no Rust toolchain on this host, guests cannot be built); CI runs them.🤖 Generated with Claude Code