---
name: avtero_paired_sides
description: "Автеро — детали с разными лев/прав номерами (трос ручника) теперь выдают ОБА номера, а не один+оговорку"
metadata: 
  node_type: memory
  type: project
  originSessionId: b11e39bd-4f6f-47c9-ba7b-680ccf041a5b
---

**Автеро v0.7.37 (2026-07-05):** детали, у которых заводские ЛЕВ/ПРАВ номера различаются (`_PAIRED_SIDE_CATS`, пока только `handbrake_cable` — трос стояночного тормоза), при запросе БЕЗ явной стороны (вкл. «оба») теперь раскрываются в ДВЕ позиции (лев+прав), каждая резолвится своим номером. Раньше (v0.7.36) отдавался один + оговорка «показан один вариант» — юзер, просивший «оба троса ручника», получал один (Kia Cerato 2013: было только 597601M300, стало 597601M300 лев + 597701M300 прав).

**Как устроено (`orchestrator.py`):** `_expand_paired_sides()` в `_requested_parts` (раскрытие до резолва, имя с суффиксом (лев)/(прав) → `resolve_by_name` берёт разные OEM) + `side_ok` расширен на `_PAIRED_SIDE_CATS` (явная сторона «трос левый» сохраняется, не разворачивается). Проверено реальным `/api/ask`: оба→2, одна сторона→1.

**Схлопывание одинаковых (v0.7.38):** если каталог даёт для лев и прав ОДИН и тот же номер (бывают такие авто) — `_collapse_paired_hits()` (в strict+enforce путях) сводит в одну строку «(лев+прав)»; разные/отсутствующие → две.

**Расширять** `_PAIRED_SIDE_CATS` новыми категориями по мере находок (детали, где каталог реально даёт разные номера по сторонам). Грабли: `_confident_name_match` флажит `confident=False` на синониме «трос»↔«кабель» (detailname каталога) — номера верные, note в canonical-пути очищается. Связано: [[avtero_correctness_audit_v0733]] [[avtero_named_canonical_gate]] [[avtero_validation_audit_axle]].
