build(gate): forbid production code from importing authoring tools

The architecture check scans tools/ for duplicate class names and fails
when game/ or content/ references res://tools/. The three tools scripts
drop their global class_name (every caller preloads them), and ADR 0012
records that tools/ depends on the domain only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
OlivierandClaude Opus 5.5 committed 2026-10-06 20:57:00 +02:00
1 parent 30cc2f635f
commit dbd207ef1b
5 files changed
+11 -4

No files matched your search

@@ -30,7 +30,9 @@ dépôt et sa production.
(plateau, crête, piton, sillon, rupture de pente, rides, rugosité
déterministe par graine). La recette est le document d'auteur versionné ;
le résultat est écrit en `.res` binaire sous `content/sites/`. Le jeu ne
génère jamais de terrain à l'exécution.
génère jamais de terrain à l'exécution. `tools/` dépend du domaine
(`game/domain/`) et de rien d'autre ; aucun code sous `game/` ou `content/`
ne dépend de `tools/`, ce que la barrière d'architecture vérifie.
4. Un PNG 16 bits n'est pas utilisé pour les hauteurs : le chargeur d'images
de Godot ramène les PNG 16 bits en 8 bits, soit des marches de 0,27 m sur
68 m de dénivelé. Un PNG 8 bits de prévisualisation est produit pour la
+8
View File
@@ -38,6 +38,9 @@ source_directories="src tests"
if [ -d game ]; then
source_directories="$source_directories game"
fi
if [ -d tools ]; then
source_directories="$source_directories tools"
fi
duplicate_classes="$(
rg --no-filename -o \
@@ -57,6 +60,11 @@ if [ -d game ]; then
test_imports="$(rg -n 'res://tests/' game --glob '*.gd' || true)"
fail_with_matches "production imports test code" "$test_imports"
tool_imports="$(
rg -n 'res://tools/' game content --glob '*.gd' --glob '*.tscn' --glob '*.tres' 2>/dev/null || true
)"
fail_with_matches "production imports authoring tools" "$tool_imports"
poc_references="$(rg -n 'poc_[ab]|POC_[AB]' game --glob '*.gd' --glob '*.tscn' || true)"
fail_with_matches "production contains a prototype dependency" "$poc_references"
-1
View File
@@ -1,4 +1,3 @@
class_name SiteTerrainBaker
extends RefCounted
const SonarMaterial = preload("res://game/domain/sonar/sonar_material.gd")
@@ -1,4 +1,3 @@
class_name VehicleTestTerrainRecipe
extends RefCounted
const SiteTerrainBaker = preload("res://tools/site_terrain_baker.gd")
-1
View File
@@ -1,4 +1,3 @@
class_name Zone1VigilantRecipe
extends RefCounted
const SiteTerrainBaker = preload("res://tools/site_terrain_baker.gd")