Skip to content

Qt-removal R7.6a: delete the island half#156

Merged
dovvnloading merged 2 commits into
mainfrom
qt-removal/r7-6a-delete-island-half
Jul 27, 2026
Merged

Qt-removal R7.6a: delete the island half#156
dovvnloading merged 2 commits into
mainfrom
qt-removal/r7-6a-delete-island-half

Conversation

@dovvnloading

@dovvnloading dovvnloading commented Jul 27, 2026

Copy link
Copy Markdown
Owner

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

  • Deletes web_ui/src/islands/ (19 islands, 429 island tests).
  • 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 no longer needs an env var.
  • Removes the three tests that read island source files (details below).

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 for islands/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.py and the tokens themselves 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 behind import.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.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 the build.

They are not swapped for tokens here because none is a like-for-like substitution: --gl-shadow-3 is 0 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; and var(--gl-accent, #6ea8fe)'s fallback is load-bearing because --gl-accent isn'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 passed
  • npm run check: 779 frontend tests, 0 lint errors, typecheck/build clean
  • check:schema passes against the intact 25-entry registry
  • Burn-down gate unchanged at 152/84/68 — no Qt file was touched, by design

dovvnloading and others added 2 commits July 26, 2026 20:06
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>
@dovvnloading
dovvnloading merged commit e3696eb into main Jul 27, 2026
2 checks passed
@dovvnloading
dovvnloading deleted the qt-removal/r7-6a-delete-island-half branch July 27, 2026 00:30
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