## MODIFIED Requirements ### Requirement: Импорт CSV-пакета `jira-hub import <папка admin/jira-sync>` SHALL прочитать `tasks.csv`, `new_tasks.csv`, `epics.csv` и заполнить `issue_note` (ключ Jira; для строк без ключа — `new:<номер строки>`): статус по факту, вид работы, что сделано, что осталось, внутренние колонки. `links.csv` SHALL импортироваться как сверочный набор в отчёт импорта (ожидаемые связи против зеркала после первого `refresh`), не как команды. Связь, которой в зеркале нет как `source→target` того же типа, но есть как `target→source` того же типа, SHALL попадать в `reversed_links`, а не в `missing_links`. Импорт идемпотентен: повтор обновляет заметки, не дублирует. #### Scenario: Импорт и первая синхронизация - **WHEN** выполнены `init`, `import`, запущены хаб и агент, `refresh full` завершён - **THEN** число задач зеркала ≥ числа строк `tasks.csv` + созданных из `new_tasks.csv`; отчёт импорта перечисляет ключи из CSV, которых нет в зеркале, связи из `links.csv`, которых нет в `issue_link`, и связи, которые есть в обратную сторону #### Scenario: Связь в обратную сторону - **WHEN** в `links.csv` строка «AURORA-1445 → AURORA-1446, связанные», а в зеркале есть только «ASUPR_Связанные» 1446→1445 - **THEN** связь в `reversed_links`, в `missing_links` её нет