From 3c58616d77df6a6ae8a19c1c8859b595dd9b77b7 Mon Sep 17 00:00:00 2001 From: EHotwagner Date: Sat, 10 Oct 2026 05:03:07 +0200 Subject: [PATCH] docs: accept managed Portal template adoption --- docs/roadmaps/game-area-portals.md | 67 ++++++++++++++++++++++++----- docs/roadmaps/game-box2d-physics.md | 42 +++++++++++++++--- 2 files changed, 92 insertions(+), 17 deletions(-) diff --git a/docs/roadmaps/game-area-portals.md b/docs/roadmaps/game-area-portals.md index 96684c94..2a228b88 100644 --- a/docs/roadmaps/game-area-portals.md +++ b/docs/roadmaps/game-area-portals.md @@ -4,7 +4,8 @@ Status: P1/P2 source delivered and public installed support accepted in Game `0. 2026-10-05. Game owns topology and traversal; the Box2D adapter owns local-world transfers; Rendering owns portal presentation. fdev integrates their joins. Parent: [GAME-BOX2D-01](game-box2d-physics.md#area-topology-and-portals). -P3 presentation/product adoption and P4 queries remain open. +P3 managed presentation and public Template adoption are qualified for the selected +headless scope; P3 performance release acceptance and P4 queries remain open. ## Local geometry, arbitrary connections @@ -164,7 +165,7 @@ a separately observed runtime profile; P3 product adoption and browser physics r - [x] P1 topology and crossing: source delivered by PR696. - [x] P2 headless whole-body transfer: source delivered by PR698. -- [ ] P3 presentation and installed opt-in: public-installed prerequisite met; explicit product adoption and preserving retained adoption/removal remain open. +- [ ] P3 presentation and installed opt-in: managed presentation and public fresh/retained Template adoption are qualified below; performance release acceptance remains open. - [ ] P4 portal-aware queries: separate follow-up, not selected. Game's [accepted `0.17.0` release and fresh public consumer](game-box2d-physics.md#accepted-public-release-and-installed-example) @@ -181,10 +182,10 @@ Portal assertions confirmed one live `traveller`, one committed traversal, one s local world/tick, transformed pose/momentum and exact fresh-world replay. The destination position was `(9.899999618530273, 5.150000095367432)` and velocity `(-1, 4)`. -This establishes public producer support and P3's installed prerequisite. Presentation, -explicit fresh product/Template opt-in and preserving retained adoption/removal require -their own outcomes; P3 remains open. No browser physics, cross-platform determinism or -hidden-solver restoration is inferred. +This establishes public producer support and P3's installed prerequisite. At that +checkpoint, presentation and fresh/retained Template adoption required their own +outcomes; their subsequent scoped acceptance is recorded below. P3 remains open. +No browser physics, cross-platform determinism or hidden-solver restoration is inferred. ## Later physics and workspace boundaries @@ -219,7 +220,7 @@ replay; presentation mode reported five ticks, twelve frames, twenty-four area n twenty-four points. An invalid argument printed usage and exited with code 2. At this source qualification, public-only rendering-closure qualification remained -pending; the separate fresh receiver below supplies that bounded evidence. P3 remains +pending; the separate fresh receiver below supplies that bounded evidence. At that checkpoint, P3 remained open for runtime performance counters and fresh/retained product adoption. Historical producer `0.17.0` acceptance and the retained resume04 failure/resume05 unrun reservation are unchanged; this source attempt @@ -254,8 +255,8 @@ this duration is an operation observation, not a performance qualification. A se post-terminal census found no remaining member of its owned process group/session; detached descendants and total RSS were not independently measured. This proves the bounded public package rendering closure and copied-source entrypoints, not generated -product installation or retained adoption. P3 remains open for performance and -fresh/retained product adoption. Original resume04/resume05 effects, caches and custody +product installation or retained adoption. At that checkpoint, P3 remained open for +performance and fresh/retained product adoption. Original resume04/resume05 effects, caches and custody are unchanged and were not reused. ### P3 current presentation performance smoke source โ€” 2026-10-10 @@ -302,8 +303,9 @@ in 3.32 seconds; that whole-operation duration is separate from the view samples A separate post-terminal census found no owned process-group/session member; total RSS and detached descendants were not independently measured. Physics stepping, raster/GPU timing and installed-product/adoption are outside the measured scope. -Performance release requirements and fresh/retained product adoption remain open; -P3 is not done. +At that measurement checkpoint, performance release requirements and fresh/retained +product adoption remained open. The later Template acceptance below closes only the +declared adoption contribution; P3 is not done. Original resume04/resume05 effects and custody remain unchanged. Native PR709 checks on Ubuntu and Windows subsequently failed compilation at the @@ -315,6 +317,49 @@ The measured computational body is byte-identical to source `13a8cdeb`; no measu was repeated. The raw observations above remain bound to that original source and assembly, rather than certifying the successor assembly's exact timing. +### P3 managed public Template adoption โ€” 2026-10-10 + +[Templates' accepted Portal integration](https://github.com/FS-GG/FS.GG.Templates/blob/5279f0d98c9f4ff0339fee43af5a3e780e9ab8a7/docs/roadmaps/game-portal-template-adoption.md#actual-public-receiver-qualification--2026-10-10) +completes the fresh and preserving retained adoption contribution. Templates PR689 +merged at `5279f0d98c9f4ff0339fee43af5a3e780e9ab8a7`; required programme projection4369 +merged at `edb6fece332863a28cb402996143ff900ef33133`. This accepts an explicitly +selected managed .NET 10 `PortalExample` inside a genuine `fs-gg-fable-game` workspace. +The browser player, production server and default solution do not reference it; +omitted/default selection excludes it. It is headless managed scene projection, +not browser rendering or server-integrated physics. + +The released public Workspace Template `0.18.2` names producer `20c009bc` and uses +canonical Game example source `49c7f5a`. A fresh independently acquired signed public +archive has SHA256 `496aad0e89496719bc543edc6ffbf829a82307862e630ba4e174e374ac11cc4e`; +all 480 payload entries match the original release except its feed signature. +Direct default/opt-in generations matched outside Portal before build outputs. +The separate installed public SDD `2.1.0` receiver invoked the unchanged public provider +descriptor and actual public template, without a local-archive source override. + +Direct, retained and provider projects independently passed canonical payload checks, +fresh public-only locked restore, the exact seven-package boundary declared above, +Release build and actual default/presentation/invalid entrypoints 0/0/2. These execute +the canonical five-tick traversal/pose/momentum/replay checks and twelve-frame +presentation correctness. The committed lock remained `7769c72f` in all three cases. + +Retained adoption used a newly generated genuine public pre-Portal `0.18.1` workspace, +not the earlier candidate receiver. Inventory/apply, safe removal and both recoveries +preserved all 118 original files, 152 inventory rows, modes and three authored sentinels. +The foreign in-folder sentinel survived; both journals ended rolled back and nine +managed files were absent. Known new Portal build outputs remained. Separate ordinary +`Server.Tests` discovered and passed 20/20 tests, with zero failures or skips and the +original source, configuration, locks and sentinels preserved. New test outputs were +recorded separately; whole-tree equality is not claimed. The first direct private +snapshot failure is retained separately from its admitted fresh successful successor. + +This closes Box2D `.4` for the declared managed-template scope and P3's fresh/retained +adoption contribution. Whole P3 remains Done: No. Existing raw performance smoke is +still bound to `13a8cdeb` and its measured assembly; T4 supplied no new timing evidence +or accepted budget. A genuine Portal-to-Portal version upgrade awaits a separately +needed public successor. Global Wizard acceptance, browser physics/rendering, server +authority and P4 remain separate. Original resume04/resume05 custody and effects were +not reused, retried or accepted by these operations. + A crate straddling an opening and colliding on both sides, or a rope/joint spanning areas, requires a separately designed and measured solver/constraint strategy. Body recreation does not preserve hidden contacts, warm-start state or exact solver rollback. diff --git a/docs/roadmaps/game-box2d-physics.md b/docs/roadmaps/game-box2d-physics.md index 7bc12a48..1c396d2a 100644 --- a/docs/roadmaps/game-box2d-physics.md +++ b/docs/roadmaps/game-box2d-physics.md @@ -2,8 +2,8 @@ Status: runtime/replay source delivered and public package-only qualification accepted, 2026-10-05. FS.GG.Game owns the adapter and qualification; fdev integrates the result. -Explicit product/Template adoption remains open. This track is independent of full-V2 -acceptance and the BAR/SC2 preparation lanes. +Explicit managed Template adoption is qualified for the scope below. This track remains +independent of full-V2 acceptance and the BAR/SC2 preparation lanes. Programme links: [Unified Roadmap ยง9.8](https://github.com/FS-GG/.github/blob/main/docs/2026-09-07-154210-fs-gg-unified-development-roadmap.md#98-feature-parts-and-subroadmap-index) and [V2 roadmap](https://github.com/FS-GG/.github/blob/main/docs/github-substrate-v2-roadmap.md#optional-box2d-game-physics--2026-10-04). @@ -114,7 +114,7 @@ adoption must preview and preserve user-owned files and record rollback/removal - [x] `.1` Runtime and headless example: source delivered in [PR697](https://github.com/FS-GG/FS.GG.Game/pull/697), merged at `75df459ebe7dae755eacba3850a5074eba9ae3c2`. - [x] `.2` Retained snapshots, interpolation and pinned input replay: delivered with the same qualified source. - [x] `.3` Public package and fresh installed example: coherent `0.17.0` publication and public-only two-scene consumer accepted from [release run37237849417](https://github.com/FS-GG/FS.GG.Game/actions/runs/37237849417). -- [ ] `.4` Explicit consumer adoption: not selected. +- [x] `.4` Explicit consumer adoption: public fresh opt-in and preserving retained adoption/removal qualified for the managed PortalExample scope below; browser and production-server integration are outside that scope. The optional project is `src/Game.Physics.Box2D/FS.GG.Game.Physics.Box2D.fsproj`. Its package identity is `FS.GG.Game.Physics.Box2D` and it inherits Game's coherent @@ -254,6 +254,36 @@ observed sensor enter/exit and floor contact, and reported final falling height The five-tick portal scene passed exact replay, one live `traveller`, one traversal and one step per local world/tick. Its rotated destination pose was `(9.899999618530273, 5.150000095367432)` with velocity `(-1, 4)`. -This closes `.3` and supplies Portal P3's public-installed prerequisite. It does not -record `.4` product/Template opt-in, preserving retained adoption/removal, browser support, -solver rollback or cross-platform determinism. +This closes `.3` and supplies Portal P3's public-installed prerequisite. At that +checkpoint it did not record `.4` product/Template adoption; the later managed scope +is accepted below. Browser support, solver rollback and cross-platform determinism +remain separate. + +## Accepted managed Template adoption โ€” 2026-10-10 + +[Templates Portal T4](https://github.com/FS-GG/FS.GG.Templates/blob/5279f0d98c9f4ff0339fee43af5a3e780e9ab8a7/docs/roadmaps/game-portal-template-adoption.md#actual-public-receiver-qualification--2026-10-10) +qualifies `.4` for an explicitly selected managed .NET 10 `PortalExample` in the real +`fs-gg-fable-game` workspace. Public Template `0.18.2`, producer `20c009bc`, copies +canonical Game `49c7f5a` example bytes. Independent direct generation and the installed +public SDD `2.1.0` provider both exercised the actual public template. Default generation +excludes Portal; ordinary browser/server/default-solution behavior remains independent. + +Fresh public-only locked restore proved the declared seven-package rendering closure: +Core, Physics.Box2D and Render `0.17.0`, UI Scene and KeyboardInput `0.31.0`, Box2D.NET +`3.1.654`, and FSharp.Core `10.1.302`. Direct, retained and provider projects built in +Release and passed actual 0/0/2 entrypoints, including canonical five-tick rotated +transfer/replay and managed traversal-safe presentation. This rendering consumer does +not change the adapter's independent four-package headless producer boundary. + +Adoption into a newly generated public pre-Portal `0.18.1` workspace, removal and both +recoveries preserved all 118 original files, 152 rows, modes and three authored sentinels. +A foreign Portal-folder sentinel survived; nine managed files were absent after recovery, +with known new build outputs retained. Ordinary workspace tests then discovered/passed +20/20, zero failures/skips, with original source/configuration/locks still preserved. +Templates PR689 `5279f0d9` and required programme projection4369 `edb6fece` make that +accepted evidence durable. No old retained receiver or interrupted native custody was used. + +This completes `.4` only for that headless managed-template contract. It does not close +whole Portal P3 performance acceptance, qualify a later Portal-to-Portal version upgrade, +activate the global Wizard, add browser physics or integrate the production server. +Hidden-solver rollback and cross-platform determinism remain outside the original profile.