# ADR-0002: Мост через delete + defineProperty

**Статус:** ✅ Принято (2026-10) · **Такты:** v10.38+ · **Обновлено:** 2026-10-11

## Контекст

Ящики (ADR-0001) изолируют семьи, но комнаты должны пользоваться вещами семей как обычными глобалями. Присваивание `window.X = ...` порождает две беды: старая копия остаётся (рассинхрон), и кто угодно может перезаписать вещь по дороге.

## Решение

Мост выставляет вещь семьи двумя движениями:

```js
delete window.X;                       // стереть старую копию
Object.defineProperty(window, 'X', {   // закрепить новую
  value: Семья.X, writable: false,    // вещь неизменяема
  configurable: false, enumerable: true
});
```

65 мостов = 65 вещей (8 ящиков, С23–С29). Ни одна строка логики дома при переселении не переписана — мосты кладут семьи в окно как есть. Логика моста доказана тестом `ИНСТРУМЕНТЫ/test_bridge_logic.js`.

## Последствия

- ✅ Вещи иммутабельны: случайная перезапись невозможна.
- ✅ Рассинхрон исключён: старая копия стирается до закрепления.
- ⚠️ Порядок мостов = порядок переселения; ломать порядок — ломать дом.
- ⚠️ Новая семья = новая стопка мостов в такт-патчере (идемпотентно, маркеры-стражи).
- 🎓 Уроки v10.52–v10.54: патчи — анкоры со стражами и цельным текстом; CSP-мета правится только целиком; «new» перечитывается глазами после вставки (дубль директивы уже бывал).
