Skip to content

Add a Rowan/Tonel install path (proven identical to the topaz install)#11

Draft
srbaker wants to merge 1 commit into
jgfoster:mainfrom
srbaker:rowanize
Draft

Add a Rowan/Tonel install path (proven identical to the topaz install)#11
srbaker wants to merge 1 commit into
jgfoster:mainfrom
srbaker:rowanize

Conversation

@srbaker

@srbaker srbaker commented Jul 16, 2026

Copy link
Copy Markdown

What this does

Adds a Rowan V3 / Tonel representation of WebGS alongside the existing topaz fileout, so the source can live in git as structured per-class packages and be loaded with Rowan — without disturbing the current install path. It is purely additive: the topaz fileout and every existing script are byte-for-byte unchanged from main.

Layout

  • rowan/ + src/WebGS-Core/, src/WebGS-OpenApi/, src/WebGS-Sample/ — the WebGS Rowan project (Tonel packages). Loads the 19 framework/OpenAPI/Sample classes into the WebGS symbol dictionary, matching install.sh.
  • Films/ — the Films OpenAPI demo as its own Rowan project. Loads Film + FilmsApi into the Films symbol dictionary, matching installFilmsApi.sh. It's a separate project because Rowan applies one symbol dictionary per project, and this keeps the demo in Films exactly as the topaz path does.
  • installRowan.sh — the Rowan loader. ./installRowan.sh loads WebGS (the install.sh equivalent); ./installRowan.sh --with-films also loads the demo (the installFilmsApi.sh equivalent).
  • testRowan.sh — the equivalence proof (below).

The topaz .gs and the Tonel packages are two parallel, independent sources of the same code — neither is generated from the other. testRowan.sh is the guard that they never drift.

Existing users: nothing changes

install.sh, installFilmsApi.sh, sample.sh, sampleFilmsApi.sh, setUnicodeMode.sh, runGCI.sh, README.md, and all src/*.gs are byte-identical to main. Same commands, same result. The new Tonel package directories sit under src/ next to the .gs files, but install.sh only does input ./WebGS.gs, so the topaz path ignores them entirely.

How it's proven

./testRowan.sh provisions two throwaway GemStone stones and installs WebGS + the Films demo into each a different way:

  • topazinstall.sh + installFilmsApi.sh (input WebGS.gs, Films.gs, FilmsApi.gs)
  • rowan — the WebGS + Films Rowan projects

then asserts the two are identical:

  • Structure — every class in the WebGS and Films dictionaries has a byte-identical shape (superclass, format, instance/class variables) and the exact same instance/class method set, and each class lands in the same dictionary. 21 classes compared, not just the tested paths.
  • Behavior — the Dart suite (tests/http.dart) yields identical results on both paths.

The run ends in ✔ PROVEN (exit 0): installing from Rowan and installing from the topaz fileout produce the very same image.

The harness is self-contained and disposable — it stands up its own numeric-NRS stones from a Rowan-enabled extent and tears them down; it never touches a developer's own stones.

Notes / scope

  • No fileout generator and no generated/ artifact — the sources are maintained in parallel, not generated.
  • The GCI subsystem (GCI/*.gs) is left as-is; it is loaded separately by runGCI.sh and is out of scope here.
  • Pre-existing tests/http.dart failures (readFile, webSocket, and — already on mainwriteFile) are unrelated to this change: they stem from missing static fixtures and a stricter Dart WebSocket client, and they fail identically on both install paths, so they don't affect the equivalence result.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant