# design notes

## core model

- OutgoingRegistry (Variant)
  исходящая конфигурация
  - [provider] configuration
  - [container, live] slots
    набор вариантов (слотов)
  - [property] primarySlot
- AssemblyRegistry (Varaint, Slot)
  содержимое слота может быть добавлено после появления слота в OutgoingRegistry
  - assembleTask
    - inputs
      - compile unit output (CompileUnit, String)
      - direct object (task, file collection, etc.)
    - artifact: directory
  - customTask
    - artifact: FileSystemLocation
  - when, all - replayable hooks для получения содержимого сборки

## extension

- adapter
  - whenFinalized
- dsl
  - variant(name)
    - slot(name)
    - from***
  - whenFinalized
  - whenOutgoingConfiguration
  - whenOutgoingSlot

- ArtifactAssemblyBridge
  связывает содержимое ArtifactAssembly и исходящей конфигурации OutgoingVariant
- VariantArtifactsHandler
  управляет состоянием ArtifactAssembly, используется для DSL сборки
  - configureVariant конфигурирует  VariantArtifactsSpec