refactor(js): podziel selects.js i cursor.js, domknij hook o .js (faza 7)#72
Merged
Conversation
…a 7)
Ostatnia faza. Dwa wstrzykiwane skrypty init pod limit 600 linii — przy
zachowaniu bajtowej identyczności sklejanego skryptu, bo kolejność i sposób
wstrzykiwania są load-bearing (cursor/slide/desktop przed chrome.js).
selects.js 1427 → 3 fragmenty (470 / 479 / 478)
selects.js + selects_options.js + selects_observer.js
cursor.js 792 → 2 fragmenty (462 / 330)
cursor.js + cursor_effects.js
Oba to pojedyncze IIFE dzielące jedno domknięcie, więc nie stają się osobno
ładowanymi modułami — to ciągłe fragmenty źródła sklejane z powrotem
W TEJ SAMEJ KOLEJNOŚCI. Sklejanie w Pythonie (Selects.__init__,
Overlay.__init__), wzorem istniejącego shape_prelude()+visibility.js.
DOWÓD BAJTOWEJ IDENTYCZNOŚCI: SHA-256 w pełni sklejonego _script przed i po
podziale — identyczne dla Selects(), Selects(native), Overlay(),
Overlay(viewport). Skrypt podziału asertował "".join(fragmenty) == oryginał
przed zapisem. Zero przestawień, zero reformatowania, zero zmienionego bajtu.
Skoro sklejony skrypt jest bajtowo identyczny, mechanizm wstrzykiwania,
kolejność i kontrakt role-gating są niezmienione Z KONSTRUKCJI.
Pięć modułów testowych/pomocniczych czyta surowe ciało bezpośrednio (nie przez
kontrolery Pythona) — zrekonstruowały pełne ciało z fragmentów w tej samej
kolejności. To nie zmiana zachowania.
DOMKNIĘCIE HOOKA: skoro .js są już pod limitem, hook długości plików z fazy 6
rozszerzony o guidebot_recorder/**/*.js. Zweryfikowane: przechodzi na obecnym
drzewie, łapie plik .js 700-liniowy (exit=1). Limity są teraz egzekwowane
maszynowo dla .py ORAZ .js.
Trzy nowe .js shipują bez zmiany pyproject — hatchling packages=["guidebot_
recorder"] bierze wszystko z katalogu pakietu; importlib.resources je znajduje.
Testy: selects+overlay 122, tknięte pakiety 521, reszta unit 1003,
integracyjne 51 — wszystkie przechodzą. ruff (z bramką C901) czysto.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0134rSCftVxsMVL8sngceT7A
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.
Ostatnia faza. Dwa wstrzykiwane skrypty init pod limit 600 linii — przy zachowaniu bajtowej identyczności sklejanego skryptu, bo kolejność i sposób wstrzykiwania są load-bearing (cursor/slide/desktop przed chrome.js).
selects.jsselects.js470 +selects_options.js479 +selects_observer.js478cursor.jscursor.js462 +cursor_effects.js330Oba to pojedyncze IIFE dzielące jedno domknięcie, więc nie stają się osobno ładowanymi modułami — to ciągłe fragmenty źródła sklejane z powrotem w tej samej kolejności. Sklejanie w Pythonie (
Selects.__init__,Overlay.__init__), wzorem istniejącegoshape_prelude() + visibility.js.Dowód bajtowej identyczności
SHA-256 w pełni sklejonego
_scriptprzed i po podziale — identyczne dlaSelects(),Selects(native),Overlay(),Overlay(viewport):Skrypt podziału asertował
"".join(fragmenty) == oryginałprzed zapisem. Zero przestawień, zero reformatowania, zero zmienionego bajtu.Skoro sklejony skrypt jest bajtowo identyczny, mechanizm wstrzykiwania, kolejność i kontrakt role-gating są niezmienione z konstrukcji —
add_init_scriptdostaje bit w bit ten sam string; podział dotyka tylko tego, jak tekst źródłowy leży na dysku.Pięć modułów testowych/pomocniczych czyta surowe ciało bezpośrednio (nie przez kontrolery Pythona) — zrekonstruowały pełne ciało z fragmentów w tej samej kolejności. To nie zmiana zachowania.
Domknięcie hooka
Skoro
.jssą już pod limitem, hook długości plików z Fazy 6 rozszerzony oguidebot_recorder/**/*.js. Zweryfikowane: przechodzi na obecnym drzewie, łapie plik.js700-liniowy (exit=1).Limity są teraz egzekwowane maszynowo dla
.pyORAZ.js.Testy
selects+overlay122, tknięte pakiety 521, reszta unit 1003, integracyjne 51 — wszystkie przechodzą.ruff check .(z aktywną bramką C901) czysto.Trzy nowe
.jsshipują bez zmianypyproject— hatchlingpackages=["guidebot_recorder"]bierze wszystko z katalogu pakietu;importlib.resourcesje znajduje.🤖 Generated with Claude Code
https://claude.ai/code/session_0134rSCftVxsMVL8sngceT7A