httpapi: форма провода читающих маршрутов объявлена транспортом
- доменные типы internal/catalog лишились json-тегов и MarshalJSON; типы metricWire/layerWire/aggregationWire и перевод catalogWire живут в транспорте, тело отказа тоже получило объявленный тип — байты ответа не изменились - заведён сторож: обход графа типов ответа утверждает, что домен не доезжает до сериализации, плюс требование json-тега на полях транспортных структур и заведомо красные случаи к обоим правилам - решение с ценой обеих сторон записано в architecture.md и ADR; шаг lint в гейте получил свой кеш — общий на машину красил прогон находками из чужого worktree
This commit is contained in:
+16
-1
@@ -102,7 +102,22 @@ def main() -> int:
|
||||
step("build", ["go", "build", "./..."], "не собирается")
|
||||
step("vet", ["go", "vet", "./..."])
|
||||
if shutil.which("golangci-lint"):
|
||||
step("lint", ["golangci-lint", "run"])
|
||||
# Кеш линтера — СВОЙ на дерево, а не общий на машину.
|
||||
#
|
||||
# Общий `~/.cache/golangci-lint` отдаёт замечания, привязанные к
|
||||
# путям ЧУЖОГО worktree того же модуля: конвейер задач работает в
|
||||
# `tmp/wt-*`, и прогон в одном дереве красил соседнее сообщением про
|
||||
# файл, которого в нём нет (воспроизведено дважды за одну задачу,
|
||||
# оба раза `../…/internal/store/store.go: time.Now forbidden` — а
|
||||
# исключение `^internal/(ident|store)/` на такой путь не
|
||||
# распространяется). Краснота по причине, не связанной с
|
||||
# изменением, приучает не читать красноту — та же цена, что у
|
||||
# записи 2026-08-04 в docs/review.md.
|
||||
step(
|
||||
"lint",
|
||||
["golangci-lint", "run"],
|
||||
env={"GOLANGCI_LINT_CACHE": str((OUT_DIR / "golangci").resolve())},
|
||||
)
|
||||
else:
|
||||
record(SKIP, "lint", "golangci-lint не установлен (task setup)")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user