Skip to content
This repository was archived by the owner on Sep 11, 2026. It is now read-only.

feat(plugin-lang-js): T0-фіксер js-run/runtime у гості - #522

Merged
vitaliytv merged 1 commit into
mainfrom
feat/plugin-lang-js-js-run-runtime-fix
Aug 28, 2026
Merged

vitaliytv merged 1 commit into
mainfrom
feat/plugin-lang-js-js-run-runtime-fix

Conversation

@vitaliytv

Copy link
Copy Markdown
Member

Summary

  • Портовано js-run-jsconfig-create (fix-runtime.mjs) — єдиний T0-патерн концерну js-run/runtime, чий детект уже цілком портований (Зріз 7 контракту v3.1). Для кожної діагностики «є src/, немає jsconfig.json» витягує workspace анхореним парсингом (jsconfig_missing_ws, точний порт JSCONFIG_MISSING_WS_RE) і пише канонічний <ws>/jsconfig.json, якщо файла ще немає. Канон вшито через include_str! з анти-дрейф-тестом (той самий прецедент, що KNIP_CANONICAL_JSON).
  • Спершу знято характеризаційний JS-гейт (plugins/lang-js/rules/js-run/runtime/tests/fix-runtime.test.mjs, 11 тестів) — файл tests/ для цього фіксера ніколи не існував.
  • js-run/runtime — другий whole-batch концерн у репо (жодна діагностика не несе file), тому парність доведено через РЕАЛЬНИЙ napi-міст (runWasmConcern → runWasmConcernFix), а не прямий виклик гостя — новий describe у wasm-plugin-parity.test.mjs (той самий snapshot/restore-прийом, що js/check T0-фікс).
  • Заразом виправлено застарілу тезу доккомента «Зріз 7» — на момент того запису вона стверджувала, що фіксер лишається текстовим патчем package.json#imports; насправді файл уже спрощено до одного FS-патерну задовго до цього порту.
  • JS-фіксер СВІДОМО НЕ видалено — спершу парність; диспетчер run-fix.mjs (T0Pattern.guestFix) автоматично пріоритезує гостя, без змін у JS-шарі.
  • Запис у реєстр — docs/plans/2026-08-05-open-questions-register.md, §2.53.

Numbers

  • Розмір гостя plugin_lang_js.wasm: 2 261 653 → 2 262 700 байт (+1 047, 0.04% бюджету 2 621 440; лишилось 358 740 байт запасу).
  • cargo test -p plugin-lang-js: 396 → 405 (+9).
  • wasm-plugin-parity.test.mjs: 260 → 263 (+3).
  • Новий fix-runtime.test.mjs: 11/11.
  • Дві незалежні red→green мутації fix-логіки (dedup, ідемпотентність) + одна bridge-мутація (fix_js_run_runtime → порожній план) — усі підтвердили ізольовані, очікувані набори червоних тестів; поверталось назад, стан чистий.

Test plan

  • cargo test -p plugin-lang-js — 405 passed
  • npx vitest run scripts/lib/lint-surface/tests/wasm-plugin-parity.test.mjs (з npm/) — 263 passed
  • Характеризаційний fix-runtime.test.mjs — 11 passed
  • Red→green перевірка трьох незалежних мутацій (dedup, ідемпотентність, bridge-план)

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5 noreply@anthropic.com

Портовано `js-run-jsconfig-create` (fix-runtime.mjs) — єдиний T0-патерн
концерну js-run/runtime, чий детект уже цілком портований. Для кожної
діагностики «є src/, немає jsconfig.json» витягує workspace анхореним
парсингом і пише канонічний jsconfig.json, якщо файла ще немає.

Спершу знято характеризаційний JS-гейт (файл tests/ для цього фіксера
ніколи не існував) — plugins/lang-js/rules/js-run/runtime/tests/fix-runtime.test.mjs,
11 тестів, зелений на теперішньому JS-каноні. js-run/runtime — другий
whole-batch концерн у репо (жодна діагностика не несе file), тому парність
доведено через реальний napi-міст (runWasmConcern → runWasmConcernFix), а
не прямий виклик гостя — новий describe у wasm-plugin-parity.test.mjs.

Заразом виправлено застарілу тезу доккомента «Зріз 7» про те, що фіксер —
текстовий патч package.json#imports: файл спрощено до одного FS-патерну
задовго до цього порту.

JS-фіксер свідомо НЕ видалено — спершу парність; диспетчер run-fix.mjs
пріоритезує гостя автоматично, без змін у JS-шарі.

Розмір гостя: 2 261 653 → 2 262 700 байт (+1 047, 0.04% бюджету 2 621 440).
Тести: cargo plugin-lang-js 396 → 405 (+9), wasm-plugin-parity.test.mjs
260 → 263 (+3), fix-runtime.test.mjs 11/11.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vitaliytv
vitaliytv force-pushed the feat/plugin-lang-js-js-run-runtime-fix branch from fae027f to f9e50a8 Compare August 28, 2026 08:39
@vitaliytv
vitaliytv merged commit 2683e54 into main Aug 28, 2026
1 of 6 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant