diff --git a/Docs_Dev/superpowers/plans/2026-07-29-enemy-ai-composable-modules.md b/Docs_Dev/superpowers/plans/2026-07-29-enemy-ai-composable-modules.md index a5c17c3f..086113f7 100644 --- a/Docs_Dev/superpowers/plans/2026-07-29-enemy-ai-composable-modules.md +++ b/Docs_Dev/superpowers/plans/2026-07-29-enemy-ai-composable-modules.md @@ -2219,6 +2219,19 @@ namespace BaseGames.Tests.EditMode.AI Object.DestroyImmediate(so); } + [Test] + public void UnconfiguredRecipe_ThrowsClearError_NotSilentlyInert() + { + // 新建的空配方默认用 RushEngagement 但尚未配能力。建图时必须**显式报错**, + // 而不是静默产出一张"永远不会出手"的图——第 6 条:暴露问题,不掩盖。 + // 注:策划建完资产到配好模块之间没有任何东西会调 GetOrBuildGraph(), + // 它只在 EnemyAiBrain.Start() 运行时被调,所以这里报错不影响编辑期体验。 + var so = ScriptableObject.CreateInstance(); + var ex = Assert.Throws(() => so.GetOrBuildGraph()); + StringAssert.Contains("RushEngagement", ex.Message); + Object.DestroyImmediate(so); + } + [Test] public void Graph_BehavesLikeE001() {