Qt-removal R7.6a: delete the island half#156
Merged
Merged
Conversation
First of three cutover sub-increments. Removes the 19 pre-SPA island frontends and everything that existed only to serve them, leaving graphlink_app/ in place for R7.6b. - Deletes web_ui/src/islands/ (19 islands) and the 14 island-only generated type/schema pairs. - Prunes the codegen registry from 25 entries to the 11 the SPA actually imports, and regenerates topics.ts accordingly. - Simplifies vite.config.ts to a single build target: the GRAPHLINK_ISLAND switch, the 19-entry ISLANDS registry, and the per-island outDir had nothing left to select between. `npm run dev` now needs no env var. The 11 surviving codegen entries were derived by grepping real import sites rather than from naming. Five of them - drag-speed, font-control, grid-control, notification, token-counter - look island-shaped but are imported by the SPA, so pruning to "the app_* entries" would have deleted types still in use. Two coupled fixes: - no-raw-colors.test.ts scanned islands/**, which no longer exists. It now scans app/**, bringing the SPA under the design-token guard for the first time. That surfaced 8 pre-existing literals in app/styles.css, pinned rather than excluded - same idiom as qt_burndown.json, so the count can only go down and any new literal fails. They are not swapped for tokens here because none is a like-for-like substitution and doing it correctly changes rendered output; that belongs in a design pass. - Frontend test count drops 1208 -> 779 because 429 island tests were deleted with their islands. 885 backend / 779 frontend tests pass, typecheck/lint/build clean. Burn-down gate unchanged at 152/84/68 - no Qt file was touched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ests CI runs `python -m pytest -q` over the whole repo; the R7.6a verification used a narrowed `pytest backend/ tests/test_no_qt_anywhere.py`, which never collected graphlink_app/tests/ at all. 71 tests were failing there. 61 of those failures were one mistake: pruning GENERATED_ARTIFACTS from 25 entries to 11 while the payload dataclasses that feed it still live in graphlink_app/. The repo deliberately couples the two - every payload has a committed generated artifact and a staleness test asserting they match, and the codegen CLI's own drift tests use a generated file as their fixture. Pruning one side of that pair broke an invariant the repo enforces on purpose. The registry is restored to 25 entries. The prune belongs in R7.6b, where the payload dataclasses, the codegen, and their tests are deleted together as the one unit they actually are. This keeps 28 unimported generated files alive for one more increment, which is the cheaper error. The remaining 10 failures were real and unavoidable: tests that read island SOURCE files R7.6a deletes. - test_composer_token_retrofit.py + its pre-retrofit fixture: the whole file is coverage for islands/composer/styles.css. Its 7 still-passing tests only assert internal consistency of --gl-composer-* tokens, which now have no consumer. Removing it drops the guard keeping those tokens out of the Tailwind theme block for one increment; graphlink_styles.py and its tokens go in R7.6b. - test_gl_vars_dev_css.py::test_it_is_imported_behind_the_dev_flag: asserted islands/composer/main.tsx guards the import. The sibling whole-tree scan (which has an SPA carve-out) still passes and is the guard with teeth. - test_composer_model_controls.py::test_composer_footer_has_stable_model_ width_and_no_status_dot: pure island CSS/TSX assertion. Verified with the command CI actually runs: 2505 backend tests pass, 779 frontend, 0 lint errors, build clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
First of three cutover sub-increments. Removes the 19 pre-SPA island frontends and everything that existed only to serve them.
graphlink_app/stays in place for R7.6b.Change
web_ui/src/islands/(19 islands, 429 island tests).vite.config.tsto a single build target — theGRAPHLINK_ISLANDswitch, the 19-entryISLANDSregistry, and the per-islandoutDirhad nothing left to select between.npm run devno longer needs an env var.The codegen registry is deliberately left whole at 25 entries. An earlier revision of this PR pruned it to the 11 the SPA imports, which broke CI. The payload dataclasses that feed the codegen still live in
graphlink_app/, and the repo deliberately couples them: every payload has a committed generated artifact plus a staleness test asserting they match, and the codegen CLI's own drift tests use a generated file as their fixture. Pruning one side of that pair violated an invariant the repo enforces on purpose — 61 tests said so. The prune belongs in R7.6b, where the dataclasses, the codegen, and their tests are deleted together as the one unit they actually are. Cost: 28 unimported generated files survive one more increment.Removed tests, and what each costs
test_composer_token_retrofit.py+ its pre-retrofit fixture. The whole file is coverage forislands/composer/styles.css. Its 7 still-passing tests only assert internal consistency of--gl-composer-*tokens, which now have no consumer. This does drop the guard keeping those tokens out of the Tailwind theme block for one increment;graphlink_styles.pyand the tokens themselves go in R7.6b.test_gl_vars_dev_css.py::test_it_is_imported_behind_the_dev_flag— assertedislands/composer/main.tsxguards the import behindimport.meta.env.DEV. The sibling whole-tree scan (which carries an explicit SPA carve-out) still passes and is the guard with actual teeth.test_composer_model_controls.py::test_composer_footer_has_stable_model_width_and_no_status_dot— a pure island CSS/TSX assertion.Coupled fix
no-raw-colors.test.tsscannedislands/**, which no longer exists. It now scansapp/**, bringing the SPA under the design-token guard for the first time. That surfaced 8 pre-existing literals inapp/styles.css, pinned rather than excluded — same idiom asqt_burndown.json, so the count can only go down and any new literal fails the build.They are not swapped for tokens here because none is a like-for-like substitution:
--gl-shadow-3is0 8px 28px rgba(0,0,0,0.55), which shares geometry with one offender and alpha with another but equals neither;rgba(0,0,0,0.43)is a scrim with no token; andvar(--gl-accent, #6ea8fe)'s fallback is load-bearing because--gl-accentisn't defined in the generated token files. Doing it correctly changes rendered output and belongs in a design pass, not an island deletion.Test plan
python -m pytest -q(what CI runs, whole repo): 2505 passednpm run check: 779 frontend tests, 0 lint errors, typecheck/build cleancheck:schemapasses against the intact 25-entry registry