ReviewOS

stacks/the-settlers-iii-remake

[S3-023] Demonstrate the shared browser and native settlement

#26
Open chris opened this 8 days ago ·
8 days ago

S3-023: Demonstrate the shared browser and native settlement

Parent and ownership

Parent epic: https://github.com/stacksjs/the-settlers-iii-remake/issues/6 Source owner: stacksjs/the-settlers-iii-remake. Master roadmap: https://github.com/stacksjs/the-settlers-iii-remake/issues/4.

Problem and observable result

Run identical simulation commands on both hosts. Show actual animation and native input. Verify checksums, save/load, and lifecycle.

The current application is a browser prototype. Passing the Riverlands campaign does not establish original-game or native parity. This issue is complete only when its stated behavior has retained evidence.

Evidence and interfaces

Craft owns graphics, native hosting, and platform capabilities. stx owns compilation/reactivity. ts-css owns style semantics. Stacks owns build and release orchestration. The game consumes published contracts.

Pin the inspected revisions and fixture hashes in the implementation evidence. Original-game observations govern rules and timing. JSettlers is implementation evidence, not an authoritative balance specification. Unknown values remain explicitly unverified.

Acceptance criteria

  • Run identical simulation commands on both hosts.
  • Show actual animation and native input.
  • Verify checksums, save/load, and lifecycle.
  • The visible result agrees with the underlying simulation or platform state, including failure paths.
  • Tests exercise the maintained public interface and retain reproducible fixtures or execution receipts.

Test matrix

  • Compare seeded browser/native state hashes.
  • Exercise moving entities, checkpoint, and resume.
  • Exercise invalid input, cancellation or interruption, and repeated execution where this interface permits them.
  • Verify determinism/conservation for simulation changes and resource ownership/disposal for platform changes.
  • Run owning-repository lint, relevant type checks and tests. Capture actual native output for native capability claims.

Scope constraints

Implement this behavior as a complete verifiable slice. Do not silently expand into adjacent tickets or substitute simplified gameplay. Keep the shared TypeScript simulation, shared stx signals, and ts-css conventions. Native gameplay and HUD must not depend on a WebView. HomeOS reuse must not introduce a kernel dependency into the game. Existing unrelated edits and authored guidance must be preserved.

Blocked by

Upstream release and adoption

Application behavior belongs here. If a reproduction identifies a framework defect, repair and release its owning source first, update Stacks where affected, then install the verified packages here.

No node_modules edits, copied runtimes, generated-source string patches, fabricated globals, successful no-op implementations, or skipped release gates. Push tested conventional commits as Chris to the owning origin/main without coauthor trailers or force pushes.

Completion evidence

  • Implementation commits and relevant upstream issue links.
  • Exact checks and results, fixture hashes, and screenshots/native execution evidence where applicable.
  • Published package versions, downstream lockfile identity, and release receipts when affected.
  • Remaining limitations stated explicitly. Partial work does not close this issue.
17 hours ago

Reproduced the native qualification gate on the unchanged game source 4a89e4419592ba3c10c76d0e64c51c44261eec12 with the verified original Craft 0.0.396 executable and Bun 1.4.4. Both the short multi-scenario probe and the unchanged 5,000-tick staffing probe exit with RangeError: evaluation step budget exceeded. The longer Bun reference completes construction, conservation, save/restore and replay at checksum b413c661.

The original release archive matches both GitHub and its release manifest; ZIP CRCs, executable version, exact source and release gates were verified. The interpreter correctly starts a fresh step counter for each real retained host callback. No reset defect or justification for raising limits was found. No fixture window, execution budget or timeout was changed, and no package release is claimed.

The next acceptance work is the actual retained native game host through the maintained PersistentRuntime API, with real tick callbacks and the full construction/save/replay scenario. Existing Craft tests cover simple retained callbacks, buffers, GC and ownership; they do not supply that game integration. This remains open under #26 and #94. A durable failure receipt is being committed with this update.

Retained failure and artifact provenance receipt.

7 days ago

The longer staffing scenario fails in Craft 0.0.341 with 'uncaught error'. It also fails when run independently. Initial world creation works, and the three smaller engine scenarios still match Bun and Chrome.

The failing 5,000-tick scenario is retained under 'bun scripts/native-engine-check.ts --staffing'. Its cause is still unknown; neither the tick window nor execution bound has changed. An unchanged sequential retry of the smaller probe passed after a concurrent attempt timed out.

The browser staffing fix is tracked in #206. This still leaves sustained native execution and presentation to verify.

7 days ago

The failing native case is now available as native-staffing-probe.ts. Run it with 'bun scripts/native-engine-check.ts --staffing' using Craft 0.0.341.

The full 5,000-tick construction/save/replay case exits with 'uncaught error', including when run independently. Initial world creation succeeds. The existing three smaller scenarios still match Bun and Chrome.

Results and reproduction details. The larger failure is not yet explained, and sustained native gameplay remains unverified.

Sign in to comment on this issue.