Repository navigation
tooling: drop Chrome for Testing — it was never the browser this ships to - #22
Merged
Merged
Conversation
…s to
The CDP lane ran a DIFFERENT BROWSER at a DIFFERENT VERSION against a
throwaway profile, so whatever it proved was not what a reader gets. That is
not verification; it is a demo that happens to be scriptable.
It was measured drifting. A feature was reported "verified on all five hosts"
against Chrome for Testing 154 on a machine whose actual browser is Chromium
152 — and two of those five hosts turned out to be scroll-locked in ways the
rig papered over. thumbwall's own WHY block had recorded its original
measurements on "Chromium 152.0.7977.64" all along: the real browser. The 154
lane was the newer, wrong thing layered on top.
The browser here is ungoogled-chromium 152.0.7977.64 with Violentmonkey 2.48.0
from the Chrome Web Store, and the only channel into a page is the manager's
own install path. Testing a change means installing it.
Removed in full: nix/chrome-for-testing.nix, nix/violentmonkey.nix,
scripts/cdp.mjs, scripts/userscript-watch.mjs, scripts/userscript-verify.mjs,
scripts/watch-daemon.mjs, the browser / watch / verify / watch-status /
watch-stop / browser-bump commands, the two Claude Code hooks that kept the
loop alive, and the 470 MB .nix-browser/ profile. 474 MB -> 3.8 MB on disk.
Two things fell out with it:
- allowUnfreePredicate is gone. It admitted exactly one package, Chrome for
Testing; nothing unfree is left, so a contributor no longer needs an
unfree allowance to get a dev shell.
- Five ESLint globals — fetch, WebSocket, AbortController, setTimeout,
clearTimeout — which only the CDP client used. scripts/ is meta-lint.mjs
alone now, so no-undef keeps meaning something.
What replaces the tooling is the rule it used to enforce mechanically.
selector-verify.mjs returned a GENERATED verdict; CONTRIBUTING.md now carries
it in prose — anchor on ARIA roles, href values and data attributes, never a
generated class and never aria-label or link text, both of which are
localised. Log the count from the script itself behind a debug flag that ships
off, and break the selector on purpose to prove the failure mode.
Two findings kept as page facts, not rig facts: xhamster ships
body.xh-scroll-disabled (overflow-y: hidden) on a clean profile with no dialog
behind it, and pornhub holds scrollHeight === innerHeight behind its age
modal. Both measured 2026-09-29 identical with a script armed and with it torn
down, so neither is the script's doing.
CHANGELOG history is untouched; it was true when it was written.
izzykatt-ci Bot
added a commit
that referenced
this pull request
Sep 29, 2026
…ke (#23) Restores every file to its state at f481e36 — the commit before "nix: pin the whole toolchain and mechanise the maintenance it guards" (#14). This undoes #14 through #22: the flake, the pinned browser, the CDP watch/verify tooling, the Claude Code setup, and the docs written around them. WHAT THIS DOES NOT TOUCH, and it is the whole reason a revert is safe here: neither userscript changed at any point in that range. thumbwall.user.js and leolist-listings-only.user.js are byte-identical at f481e36 and at main (e6804e698a52 and 4d9db4aa33bd). thumbwall stays at 5.0.0, leolist at 1.65.0. No published behaviour changes and no script work is lost. CI still gates. Both required checks are defined in the restored lint.yml under the same names branch protection asks for — "eslint + meta" and "node --check" — and scripts/meta-lint.mjs predates the range, so `npm run lint` remains the publish gate it always was. Removed: flake.nix, flake.lock, nix/mermaid-ascii.nix, .envrc, .claude/, CLAUDE.md, .github/workflows/nix.yml, the markdownlint configs and _typos.toml. Restored: .gitignore, eslint.config.mjs, lint.yml, CHANGELOG.md, CONTRIBUTING.md and README.md to their pre-flake content. A revert rather than a force-push: main is public and carries 22 merged pull requests, and rewriting that history would break every clone and branch taken from it. The tree is what matters and the tree is exact. Co-authored-by: Izzy Katt <hi@izzykatt.ca>
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.
The CDP lane ran a DIFFERENT BROWSER at a DIFFERENT VERSION against a
throwaway profile, so whatever it proved was not what a reader gets. That is
not verification; it is a demo that happens to be scriptable.
It was measured drifting. A feature was reported "verified on all five hosts"
against Chrome for Testing 154 on a machine whose actual browser is Chromium
152 — and two of those five hosts turned out to be scroll-locked in ways the
rig papered over. thumbwall's own WHY block had recorded its original
measurements on "Chromium 152.0.7977.64" all along: the real browser. The 154
lane was the newer, wrong thing layered on top.
The browser here is ungoogled-chromium 152.0.7977.64 with Violentmonkey 2.48.0
from the Chrome Web Store, and the only channel into a page is the manager's
own install path. Testing a change means installing it.
Removed in full: nix/chrome-for-testing.nix, nix/violentmonkey.nix,
scripts/cdp.mjs, scripts/userscript-watch.mjs, scripts/userscript-verify.mjs,
scripts/watch-daemon.mjs, the browser / watch / verify / watch-status /
watch-stop / browser-bump commands, the two Claude Code hooks that kept the
loop alive, and the 470 MB .nix-browser/ profile. 474 MB -> 3.8 MB on disk.
Two things fell out with it:
Testing; nothing unfree is left, so a contributor no longer needs an
unfree allowance to get a dev shell.
clearTimeout — which only the CDP client used. scripts/ is meta-lint.mjs
alone now, so no-undef keeps meaning something.
What replaces the tooling is the rule it used to enforce mechanically.
selector-verify.mjs returned a GENERATED verdict; CONTRIBUTING.md now carries
it in prose — anchor on ARIA roles, href values and data attributes, never a
generated class and never aria-label or link text, both of which are
localised. Log the count from the script itself behind a debug flag that ships
off, and break the selector on purpose to prove the failure mode.
Two findings kept as page facts, not rig facts: xhamster ships
body.xh-scroll-disabled (overflow-y: hidden) on a clean profile with no dialog
behind it, and pornhub holds scrollHeight === innerHeight behind its age
modal. Both measured 2026-09-29 identical with a script armed and with it torn
down, so neither is the script's doing.
CHANGELOG history is untouched; it was true when it was written.