---
id: TASK-0021
title: Привести проект в порядок (asmdef и базовые тесты)
summary: Разнести код по asmdef (Runtime/Editor/Tests), навести структуру каталогов и добавить минимальный набор автотестов, чтобы развитие воксельного мира и сетевого слоя не превращалось в хаос.
priority: High
area: architecture
owner: unassigned
created: 2026-03-31
updated: 2026-03-31
execution_time: 2d
depends_on:
  - TASK-0001
canonical_docs:
  - docs/tasks/Index.md
related_files:
  - Assets/Features/VoxelWorld/Runtime/VoxelWorldGenerator.cs
  - Assets/Features/Tasks/Editor/TaskBoardWindow.cs
---

# TASK-0021 - Привести проект в порядок (asmdef и базовые тесты)

## Status

Статус задачи ведется в `docs/tasks/Index.md` и является каноническим там.

Допустимые значения статуса:

- `BackLog`
- `ToDo`
- `InProgress`
- `Review`
- `Done`

## Why

Сейчас проект развивается сразу в нескольких направлениях (воксельный worldgen, FishNet, AI/NavMesh, спавн/сейвы). Без нормальной структуры сборки и минимальных тестов любые изменения начинают ломать соседние подсистемы, а время на интеграцию растет.

## Expected Outcome

- Код разделен на asmdef по доменам и по границе Runtime/Editor.
- Editor-утилиты не тянут Runtime зависимости и наоборот.
- Есть базовые автотесты, которые фиксируют ключевые контракты (например, детерминизм вычислений и формат времени/парсинг задач можно оставить на потом).

## Current Context

В репозитории уже появились editor-инструменты (`Task Board`) и есть воксельный генератор (`VoxelWorldGenerator`). На текущем этапе важнее обеспечить предсказуемую сборку и быстрый фидбек, чем расширять функционал без контроля.

## Source Of Truth

- текущие канонические задачи в `docs/tasks/Index.md`
- существующие asmdef (если появятся) и фактические зависимости в проекте

## Read First

- `docs/tasks/Index.md`
- `Assets/Features/VoxelWorld/Runtime/VoxelWorldGenerator.cs`

## Scope In

- добавить asmdef для ключевых Runtime доменов: voxel worldgen, networking, gameplay-core, ai
- добавить asmdef для Editor tooling
- добавить test assemblies (EditMode) и минимальные smoke tests
- привести нейминг и папки к стабильной структуре (Runtime/Editor/Tests)

## Scope Out

- полный рефактор всех namespaces
- покрытие тестами всей игры

## Constraints

- не менять поведение runtime систем без отдельного решения и проверки
- не ломать существующий пайплайн Unity compilation

## Suggested Approach

1. Снять карту зависимостей: какие папки и системы действительно связаны.
2. Ввести asmdef минимальным числом сборок, но с четкими границами Runtime/Editor.
3. Добавить 3-5 тестов: сборка, создание генератора, базовый deterministic шаг (если есть чистые функции).
4. Зафиксировать правила добавления новых скриптов в нужные assembly.

## Acceptance Criteria

- проект компилируется без циклических ссылок между asmdef
- Editor скрипты не попадают в Runtime сборки
- тесты запускаются (EditMode) и дают полезный сигнал

## Verification

- Unity compilation без ошибок
- запуск `EditMode` тестов

## Risks / Open Questions

- возможны скрытые зависимости через `Resources`/`AssetDatabase` и прямые ссылки на UnityEditor

## Human Decisions Needed

- none currently

## Decision Log

- `2026-03-31` - задача создана как техническая стабилизация перед расширением worldgen/AI.

## Handoff Notes

Легаси `Assets/Scripts/WorldGen/*` удален. Дальнейшие изменения стоит делать только внутри актуальных feature-папок, не возвращая старую 2D-ветку в общий runtime.
