# Архитектура Package-first Route Wizard v0.3.6

## Catalog

`data/services.json` содержит 41 service row, 5 package anchors, fixed-price extras, external-cost notes и draft `routeStages` labels.

## Initialization

- `mode=package + sourcePackage` → `selectedServiceIds` инициализируются tier set;
- `mode=custom` → `selectedServiceIds = []`.

`sourcePackage` используется только как provenance для diff и исходной package price.

## Configuration state

Шесть configuration stages:
`core → relocation_life → prenatal_medical → birth_postpartum → wellness_premium → addons`.

`result` не входит в configuration counter.

## Edit transaction

При `data-edit-stage` renderer сохраняет snapshot `selected + addons`. Save удаляет snapshot, Cancel восстанавливает его.

## Pricing

- exact tier set → `exact_package`;
- custom set → `benchmark_range` по package anchors;
- fixed-price extras → deterministic addition;
- empty custom → manual/individual handoff state.

Benchmark никогда не позиционируется как арифметическая сумма service unit-prices.

## Multi-channel

Website / Assistant / Telegram / WhatsApp используют один state contract. Custom mode инициализируется пустым selection во всех адаптерах.
