Add a Rowan/Tonel install path (proven identical to the topaz install)#11
Draft
srbaker wants to merge 1 commit into
Draft
Add a Rowan/Tonel install path (proven identical to the topaz install)#11srbaker wants to merge 1 commit into
srbaker wants to merge 1 commit into
Conversation
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.
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 theWebGSsymbol dictionary, matchinginstall.sh.Films/— the Films OpenAPI demo as its own Rowan project. LoadsFilm+FilmsApiinto theFilmssymbol dictionary, matchinginstallFilmsApi.sh. It's a separate project because Rowan applies one symbol dictionary per project, and this keeps the demo inFilmsexactly as the topaz path does.installRowan.sh— the Rowan loader../installRowan.shloads WebGS (theinstall.shequivalent);./installRowan.sh --with-filmsalso loads the demo (theinstallFilmsApi.shequivalent).testRowan.sh— the equivalence proof (below).The topaz
.gsand the Tonel packages are two parallel, independent sources of the same code — neither is generated from the other.testRowan.shis 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 allsrc/*.gsare byte-identical tomain. Same commands, same result. The new Tonel package directories sit undersrc/next to the.gsfiles, butinstall.shonly doesinput ./WebGS.gs, so the topaz path ignores them entirely.How it's proven
./testRowan.shprovisions two throwaway GemStone stones and installs WebGS + the Films demo into each a different way:install.sh+installFilmsApi.sh(input WebGS.gs,Films.gs,FilmsApi.gs)then asserts the two are identical:
WebGSandFilmsdictionaries 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.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
generated/artifact — the sources are maintained in parallel, not generated.GCI/*.gs) is left as-is; it is loaded separately byrunGCI.shand is out of scope here.tests/http.dartfailures (readFile,webSocket, and — already onmain—writeFile) 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.