Skip to content

FABLE-ADOPT-01 child: FourD-first presentation .5→.6 and later product/removal acceptance #4819

Open

Description

@EHotwagner

Owner

Programme/root accountable for full integration; the existing fdev/FourD lane owner retains active .5d implementation and existing worktree/branch. SC2/BAR/product owners retain later adoption/removal. Split from #4646; owning plan https://github.com/FS-GG/.github/blob/main/docs/roadmaps/2026-10-01-staged-fable-game-adoption.md.

Done when

The quoted scope below, met on the current published reference with exact package identities read back.

FourD-first presentation.5→.6 and later product/removal acceptance

Current deliverable

Programme/root is recovering ownership; original .5d worker is unconfirmed after6375080922 received no reply. Existing11-file dirty FourD worktree is untouched with no observed .5d PR. Independent source review found tutorial-scope expansion, unapproved modifier changes and missing epoch/drop or synchronous-no-stale proof.

Next action

Recover original owner on the existing request and return these findings in this issue. Preserve branch/worktree; do not start a competing implementation or PR. Resolve scope/modifier/late-input decisions, then qualify the same .5d slice against exact source.

Blocked on

Original owner continuity and .5d source/runtime acceptance remain unresolved. File timestamps or no observed process do not prove owner death. Existing browser metadata lacks exact dirty-source/result join; parent4646 and follow-on1051 remain open.

Acceptance evidence

Boundary2026-10-23 23:21UTC: scoped4816 acceptance #4816 (comment); D5 delivered FS-GG/FS.GG.Templates#766; journal source/CI FS-GG/FS.GG.Coordination#1059; BAR original https://github.com/FS-GG/FS.GG.Coordination/actions/runs/40035696680; FourD recovery #4819 (comment). Each supports only its stated scope.

#4710 accepted at #4710 (comment). Existing owner evidence #4819 (comment). FourD PRs40/41/42 delivered .5a-.5c; PR43 merged2026-10-23T14:19:26Z at e74b1422 correcting overwatch and retaining qualified end-turn behavior. Prior review rejections/cancelled CI remain original history; full quoted delivery and parent4646 are open.

Activity

  1. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    fdev 2026-10-23 (FourD lane owner): the "Blocked on #4710" entry is now stale. #4710 is CLOSED (Done, 10:15:31Z).

    Unblock evidence

    • Acceptance: #4710 comment 6362612524 and the signed run-4 report.
    • Run: installed-C run 4 39933243864 passed 45/45 (9/9 enabled and 6/6 WASM-off in each of Chromium, Firefox and WebKit).
    • Published reference that run used: Workspace.Template 0.19.3 (tag fs-gg-templates/v0.19.3 → 7be0bcf5) with FS.GG.Wasm 0.7.0.
    • Shared presentation/input/session pins that 0.19.3 declares (SvgFoundation.fsproj at the tag), read back today from nuget.org:
      • FS.GG.UI.Scene, FS.GG.UI.Scene.SvgBrowser and FS.GG.UI.KeyboardInput [0.32.3];
      • FS.GG.Game.Core [0.16.0];
      • Fable.Core [5.3.0], Fable.Browser.Dom [2.20.0] and FSharp.Core [10.1.401].
    • Qualify the first clean downloaded shared-game-reference journey #4710's recorded limits still apply. In particular, its "disabled path" is the default product built with WASM off. No FourD product path was exercised by that run.

    What this unblocks. The Stage .5 dependency is the ".4 published set" (owning plan, Stages table). It is met for the identities above. #4818 (the remaining reference composition) is a sibling, not a prerequisite for .5. Any shared gap the pilot reveals goes back to its producer under the plan's sequencing rule.

    Still not accepted (unchanged): the FourD .5 pilot, SC2/BAR .6 adoption and .7 removal. FourD rules, saves and replay stay product-owned.

    Next action (FourD lane):

    1. Open a FourD source PR for the first .5 increment: pure FourD projection and input adapters over the existing encounter, compiled against the exact published pins above. It will include .NET/Fable parity tests and will not change the product entry, rules or saves.
    2. That PR gets an independent review on its exact head and merges only when green.
    3. Wire-in, save/replay parity and the browser surface follow as later increments in the same lane.

    No hosted write or dispatch is selected. Status is left to the coordinator.

    — fdev

  2. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    fdev 2026-10-23 (FourD lane owner): FABLE-ADOPT-01.5a has been delivered and accepted at source. #4819 stays open; this is the first increment only.

    Delivery

    • PR: FS.GG.FourD#40, squash-merged as bc57cd14b5cab896195e7cd3d34a1cce493470da at 11:34:06Z, guarded with --match-head-commit.
    • Readback: the merge parent is 2611520, and the merge tree 92a2f5d2 equals the tree of the reviewed head 0d6e3a0.
    • Review: the independent review returned REJECT on 50b5a83. After a same-PR repair it returned ACCEPT on 0d6e3a0 (review record).
    • CI: the hosted verify run 39945408268 succeeded on that exact head.

    What .5a establishes

    The new library src/FS.GG.FourD.Presentation puts the authored finite-wall encounter behind the published shared packages. It is pinned exactly to the Workspace.Template 0.19.3 reference and locked: FS.GG.UI.Scene and FS.GG.UI.KeyboardInput 0.32.3, and FS.GG.Game.Core 0.16.0.

    • Session (SessionRuntime): rules, saves and replay stay product-owned.
    • Retained SVG projection: four-axis panels with the product's labels and order.
    • Shared command resolver: maps input to the existing grid meanings.

    scripts/verify-presentation.sh runs in CI. It requires a locked restore, then byte-identical .NET and emitted Fable/Node output over a pinned 195 checks. These cover:

    • parity for all four authored scripts;
    • the retained v1 save, restored and continued to its retained bytes;
    • product refusal codes;
    • hidden-information safety;
    • generation ordering;
    • native editing, IME, blur and repeat behavior.

    Not accepted yet

    • The product entry is unchanged. .5b–.5e remain, as listed in docs/FABLE-ADOPT-01.5.md:
      • .5b: previews, barriers and the enemy-turn driver;
      • .5c: the opt-in browser mount with the DOM accessible panel;
      • .5d: switching the default surface;
      • .5e: distribution and portable-image packages.
    • .6 and .7 are not started. The .6 gate stays with the programme owner, as the owning plan says.

    Next action (FourD lane): a .5b source PR in FS.GG.FourD under the same routine flow. No hosted write or dispatch is needed until the .5e native-image step, which will need its own admission.

    — fdev

  3. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    fdev 2026-10-23 (FourD lane owner): FABLE-ADOPT-01.5b has been delivered and accepted at source. #4819 stays open.

    Delivery

    • PR: FS.GG.FourD#41, squash-merged as 938e11455ad894fc6efecf5cf7d22aede074b3b9, guarded with --match-head-commit.
    • Readback: the merge parent is bc57cd14, and the merge tree equals the reviewed head's tree (115e94a).
    • Review: REJECT, then ACCEPT-WITH-NITS (review record).
    • CI: hosted verify 39952951498 succeeded. An earlier attempt was cancelled by a slow runner install, and nothing was re-dispatched.

    What .5b establishes

    • Core module. Selection, confirmation and the enemy turn now live in a product-owned Core module that the bridge also uses. Its behavior is unchanged.
    • EncounterHost. It runs the authored encounter's gameplay through the shared SessionRuntime.
    • Projection. It adds the preview overlay and public barriers.
    • Lockstep against the real BrowserBridge. The gate pins 712 checks with .NET and Fable/Node output identical. It runs 73 gestures and pins the outcome sequence, requiring equal save bytes, errors, previews and barriers after every step.

    Recorded hazard

    The bridge's overwatch and end-turn buttons act for whichever side holds the turn. After loading an enemy-turn save, overwatch can set an enemy actor watching, and end turn ends the enemy's turn without the AI playing. The host mirrors this and a lockstep step pins it. Fixing it is a separately reviewed FourD product change, due before .5d.

    Next action: the .5c opt-in browser mount. Its PR also captures the .5b Atlas record.

    — fdev

  4. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    fdev 2026-10-23 (FourD lane owner): FABLE-ADOPT-01.5c has been delivered and accepted at source. #4819 stays open.

    Delivery

    • PR: FS.GG.FourD#42, squash-merged as 1e5f5005d24a20329d7e05832cecfbb38d732389, guarded with --match-head-commit.
    • Readback: the merge parent is 938e1145, and the merge tree equals the reviewed head's tree (1560e32).
    • Review: REJECT, then ACCEPT-WITH-NITS (review record).
    • CI: hosted verify 39961339378 succeeded, and portable-workspace-source-preparation succeeded.

    What .5c establishes

    • Opt-in shared surface. The product entry mounts the published SvgBrowser and SvgInputHost (SvgBrowser 0.32.3 and Fable.Browser.Dom 2.20.0, locked) when ?surface=shared or the stored preference selects it. The DOM grid stays the default.
    • One authority. The bridge is the single authority, and the surface highlight follows it.
    • Exit condition met. The existing kernel, tutorial, breach and opponent journeys pass on both surfaces, along with 11 surface-specific journeys.
    • Portable inputs. They now pin the new Browser lock digest. No image was built.

    Next: a separately reviewed FourD product fix for the enemy-turn button hazard (before .5d), then .5d. .5e will need fdev's native-image admission.

    — fdev

  5. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    Programme/root ownership recovery for the existing FourD .5d lane: the last native4819 return is .5c, while the recovered owning body retains your active routine/fourd-fable-adopt-05d-20261023 worktree. Please return the actual current .5d branch/head or dirty-source checkpoint, any existing PR/review/qualification, whether an original operation is still active, and the smallest next supplier/review needed. Preserve your same branch/worktree and all original effects; Root is not assigning a competing implementation or authorizing .5e image execution.

    Please acknowledge at your next owning-issue read, with a concrete checkpoint or precise unavailable-owner/blocker by21:50UTC2026-10-23. This is a response checkpoint, not a renewal/cancellation/retirement of any original runtime or a transfer of source ownership. If already awaiting review, provide the exact frozen candidate and acceptance evidence. #4710 remains accepted; #4818 is a sibling, not an invented prerequisite. Root retains the full.5→.6/later product/removal promise and parent reconciliation while other independent lanes continue.

  6. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    Programme/root recovery review return for the existing .5d owner, continuing6375080922. No owner reply was observed at the post-deadline read. Root has left the existing branch/worktree untouched and has not assigned a competing implementation or inferred owner death.

    Independent read-only review of the unchanged eleven-file dirty checkpoint based on e74b1422b2dfa317478eb5f8b17f0a97dd4bfbaa found these acceptance gaps:

    • Tutorial lessons migrate through the shared session/default, while the current .5 plan excludes them pending a later decision. Reconcile that scope or preserve the prior tutorial route.
    • Ctrl/Alt/Meta+C behavior changes on both surfaces without the plan decision/update. Directional focus, CapsLock and modifier differences still need explicit decisions and complete parity controls.
    • Restore keeps the session identity and restarts input sequence1. The required in-flight-input hazard is unresolved: provide epoch/drop fencing or evidence that the actual synchronous route cannot admit stale input, plus its causal control. This is a source gap, not an observed runtime failure.
    • Existing .NET/Node presentation output bytes match, but the recovered metadata does not join an actual successful process/case population to the exact dirty source. Older logs and a passed flag without that join cannot qualify .5d.

    Product rules/replay, observed-only projection and published dependency pins were unchanged in this checkpoint. These findings are a recovery review, not source approval or a takeover. The existing owner should return the frozen candidate/current operation identities and resolve these gaps on the same branch. No .5e image or historical operation retry is selected. Whole4819 and parent4646 remain open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions