# Пути, маркеры правок, доступ macOS — справка

## Пути

- Внешние обработки/отчёты: **`~/Downloads/ОбработкиЭкспорт/`**
  («Загрузки» в Finder = `Downloads`; пути `~/Загрузки` НЕ существует).
- Конфигурация (XML-выгрузка): **`~/Downloads/ОбработкиЭкспорт/НоваяКонфа/`**
  — источник GUID'ов типов, образцов форм/команд. Полезное:
  - `НоваяКонфа/CommonCommands/<Имя>.xml` — общие команды (uuid, Picture,
    CommandParameterType). Напр. `СвязанныеДокументы` →
    uuid `41f87891-ddd5-4e0f-a4f2-8039fb71981b`, картинка
    `CommonPicture.СтруктураПодчиненности`.
  - `НоваяКонфа/Documents/<Имя>.xml` — документы; `<Document uuid="…">` = GUID типа.
    Полезные: `СчетНаОплатуПокупателю2.xml` (uuid `3080554c-…`),
    `ЗаказПокупателя2.xml` (uuid `d002160c-…`).
- Рядом часто лежат уже распакованные `*_src` / `*_unpacked` других обработок —
  готовые образцы (`КомиссияКлиентов`, `АгентскиеУслугиОтчет`, `УстановкаЮрЛиц`,
  `ОтчетПоДаннымЗаказа` — семейство «список счетов», структурно близки).
- Если файл пришёл из иного места (`~/Разработки/` и т.п.) — работай оттуда же,
  не переноси без явной просьбы.

## Маркеры правок (.bsl) — обязательны

Только в текстовых модулях (`*.obj.bsl`, `*.bsl`). Дата — текущая.
`DEVACC-<номер>` — если пользователь назвал задачу (иначе без номера).

- Открывающий: `//+ Бурдуков С.Ю <ДД.ММ.ГГГГ> DEVACC-<номер>`
- Закрывающий: `//- Бурдуков С.Ю <ДД.ММ.ГГГГ> DEVACC-<номер>`
- 1 добавленная строка → только `//+`.
- Целая новая процедура/функция → только `//+` сверху.
- Изменён блок из неск. строк → оба маркера (`//+` до, `//-` после).
- Чужие маркеры не трогать/не объединять/не переносить — это история.
- В ФОРМАХ (бинарная структура) комментариев нет → маркеры туда не ставятся.

## Доступ к ~/Downloads из Claude.app (macOS TCC)

Сессия работает во вложенном бинаре `com.anthropic.claude-code`, отдельном от
`/Applications/Claude.app` (`com.anthropic.claudefordesktop`). TCC выдаёт права
**по bundle ID**, поэтому Full Disk Access на `Claude.app` НЕ покрывает вложенный
бинарь. Симптом: `ls ~/Downloads/... → Operation not permitted` (папка есть).

Чинить:
1. System Settings → Privacy & Security → **Full Disk Access** → `+`.
2. `Cmd+Shift+G` → вставить:
   `~/Library/Application Support/Claude/claude-code/<версия>/claude.app`
3. Включить тумблер → **Cmd+Q** Claude.app → запустить заново (права применяются
   только к перезапущенному процессу).

Проверить bundle id: `codesign -dv --verbose=2 "<путь>/claude.app" 2>&1 | grep Identifier`.

## Чек-лист сдачи

1. `epf.sh roundtrip` — чистый diff.
2. semantic diff orig↔edit — изменилось ровно задуманное.
3. Маркеры в .bsl по правилам.
4. Бэкап оригинала перед перезаписью: `cp -p f.epf f.epf.bak-pre-<задача>-<дата>`.
5. Headless-проверка batch-агентом (порт 8788, см. SKILL.md §6): сборка проходит /
   `log` Конфигуратора чистый. **Визуальный GUI 1С НЕ открывать** — на этом MacBook
   рендерится криво, для проверки бесполезен (правило пользователя, навсегда).
6. Сказать пользователю, что проверить ИНТЕРАКТИВНО в его 1С — кнопка/команда видна
   и нажимается, форма не падает, таблица редактируется. Это его часть, не наша.

## ⚠️ v8unpack может вернуть ЧУЖОЕ содержимое БЕЗ ошибки (кейс РеализацияУслугиПоступлениеБайко, 30.07.2026)

На конкретном `.epf` (после серии правок DEVACC-780) `epf.sh unpack` тихо
распаковал синтаксически валидный, но **семантически не тот** `ObjectModule.bsl`/
`Form.obj.bsl` — текст описывал совсем другой сценарий (организации Эй-энд-Эй
МСК/НН вместо реального «Байко»), никакой ошибки распаковки не было, round-trip
самого v8unpack был бы «чистым» (сравнивает свою же неверную интерпретацию сама
с собой). Поймано ТОЛЬКО кросс-проверкой: `/dump-epf` (платформенный дамп в XML,
`SKILL.md` §6) на том же файле показал совершенно другое, правильное содержимое
(имя объекта, реальные атрибуты ТЧ совпали с независимым бэкапом того же периода).

**Профилактика:** после `epf.sh unpack` — если предстоит содержательная правка
(не только переименование), **сверь ключевые куски** (Наименование в
`СведенияОВнешнейОбработке`, имя первой процедуры, состав атрибутов ТЧ через
`obj_edit.py attrs`) с `/dump-epf`-дампом того же файла ПЕРЕД тем, как доверять
v8unpack-версии. При расхождении — **платформенный XML-дамп побеждает всегда**,
v8unpack для этого файла не использовать вообще (редактируй `.xml`/`.bsl` из
дампа текстом — они human-readable, безопаснее ручной правки `elem.json`), собирай
через `/build`. Причина сбоя v8unpack не выяснена (не 1C-баг — платформа тот же
файл читает верно); considerить как известный, непредсказуемый риск инструмента.
