| D-01 |
schema.py — реэкспорт канона; планировщик пишет snake_case план, load_plan и plan.schema.json |
shared-py/geoscan_contracts/schema.py:1; planner/planner/pipeline.py:10 |
tests/integration/test_end_to_end_contract.py |
ИСПРАВЛЕНО |
| D-10 |
Фабрика gRPC-клиента без as T, отдельный resolveServiceConstructor |
shared/src/grpc/client-factory.ts:28 |
Статический разбор TS; test_loader_options не покрывает tsc — сборка Node в среде отсутствует |
ИСПРАВЛЕНО |
| D-14 |
ExportPlanRequest: plan_json + ExportFormat, без plan_id |
proto/geoscan/planner.proto:58 |
tests/integration/test_proto_contract.py |
ИСПРАВЛЕНО |
| D-15 |
ValidateRequest/ValidateResponse по SR-RPC-05 |
proto/geoscan/validator.proto:11 |
tests/integration/test_proto_contract.py |
ИСПРАВЛЕНО |
| D-16 |
Модуль json_schema, валидация сценариев и планов |
shared-py/geoscan_contracts/json_schema.py:1 |
tests/integration/test_json_schema_module.py |
ИСПРАВЛЕНО |
| D-35 |
Сценарии s04–s10 и эталонные планы в plans/ (кроме s08 — вход невалиден для MVP) |
scenarios/s04-mixed-fleet.json:1; plans/s01-simple.plan.json |
tests/integration/test_json_schema_module.py |
ЧАСТИЧНО — для s08 эталонного плана нет: сценарий ожидает ошибку валидации входа, планировщик MVP не отклоняет GSD |
| D-49 |
grpcio-tools в dev shared-py, uv run в Makefile, proto-gen в workspace |
shared-py/pyproject.toml:18; Makefile:5; pyproject.toml:4 |
tests/integration/test_proto_gen.py |
ИСПРАВЛЕНО |
| D-50 |
Наполнен common.proto, импорты в planner/validator |
proto/geoscan/common.proto:1 |
tests/integration/test_proto_contract.py |
ИСПРАВЛЕНО |
| D-51 |
Схема сценария: turnaround_time_min, energy_reserve, expected |
schema/scenario.schema.json:84 |
tests/integration/test_json_schema_module.py |
ИСПРАВЛЕНО |
| D-52 |
Схема плана: coverage_frac, float violations, lambda/stop_reason |
schema/plan.schema.json:92 |
test_end_to_end_contract.py |
ИСПРАВЛЕНО |
| D-53 |
Обход репозитория на inline protoLoader.load |
tests/integration/test_loader_options.py:55 |
tests/integration/test_loader_options.py |
ИСПРАВЛЕНО |
| D-54 |
Одна таблица GRPC_TO_HTTP для grpcToHttp |
shared/src/grpc/grpc-to-http.ts:14 |
tests/integration/test_grpc_to_http.py |
ИСПРАВЛЕНО |
| D-66 |
Второй SR-DAT-13 переименован в SR-DAT-14 |
docs/task5/91-system/05-data-model.md:360 |
Ручная сверка grep |
ИСПРАВЛЕНО |
| D-67 |
Отдельные maxReceive / maxSend в опциях канала |
shared/src/grpc/client-factory.ts:10 |
Статический разбор TS (см. D-10) |
ИСПРАВЛЕНО |
| D-68 |
units.json синхронизирован с units.py |
schema/units.json:4 |
tests/integration/test_units_json.py |
ИСПРАВЛЕНО |
| D-69 |
turnaround_min в каталоге не подменяется временем заряда |
shared-py/geoscan_contracts/catalog.py:327 |
tests/integration/test_turnaround_catalog.py |
ИСПРАВЛЕНО |
| D-71 |
Исключения buf lint для известных расхождений имён RPC |
proto/buf.yaml:8 |
Статическая проверка buf.yaml; buf в CI-образе — смежный пакет |
ЧАСТИЧНО — buf lint локально не гонялся (нет бинарника buf) |
| D-99 |
Приоритет HARDWARE_CATALOG_DIR, fallback GEOSCAN_HARDWARE_DIR |
shared-py/geoscan_contracts/catalog.py:33 |
tests/integration/test_catalog_env.py |
ИСПРАВЛЕНО |