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:
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
|
||||
|
||||
@@ -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,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,4 +1,3 @@
|
||||
class_name Zone1VigilantRecipe
|
||||
extends RefCounted
|
||||
|
||||
const SiteTerrainBaker = preload("res://tools/site_terrain_baker.gd")
|
||||
|
||||
Reference in new issue
Block a user