From 50df06a3f9725516cb389a49655b53fa89a51e16 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Sun, 28 Jun 2026 11:16:13 -0400 Subject: [PATCH] NEO-151: Fix Bruno helper path for collection-root scripts resolution Move reset-contract-instances-helper.js to neon-sprawl-server/scripts/ and fix encounter-clear bru requires so CI can resolve modules. --- .../contracts/Get contracts after encounter clear.bru | 6 +++--- .../neon-sprawl-server/contracts/Get contracts default.bru | 2 +- .../contracts/Issue prototype contract.bru | 2 +- .../scripts/reset-contract-instances-helper.js | 0 docs/reviews/2026-06-28-NEO-151.md | 3 ++- server/README.md | 2 +- 6 files changed, 8 insertions(+), 7 deletions(-) rename bruno/neon-sprawl-server/{contracts => }/scripts/reset-contract-instances-helper.js (100%) diff --git a/bruno/neon-sprawl-server/contracts/Get contracts after encounter clear.bru b/bruno/neon-sprawl-server/contracts/Get contracts after encounter clear.bru index ca8dc11..077f022 100644 --- a/bruno/neon-sprawl-server/contracts/Get contracts after encounter clear.bru +++ b/bruno/neon-sprawl-server/contracts/Get contracts after encounter clear.bru @@ -10,14 +10,14 @@ docs { script:pre-request { const axios = require("axios"); - const { resetAllContractInstances } = require("./scripts/reset-contract-instances-helper"); - const { resetPrototypeCombatTargets } = require("../encounter-progress/scripts/combat-targets-reset-helper.js"); + const { resetAllContractInstances } = require("./scripts/reset-contract-instances-helper.js"); + const { resetPrototypeCombatTargets } = require("./scripts/combat-targets-reset-helper.js"); const { moveNearPrototypeNpc, PULSE_COOLDOWN_MS, MAX_PULSE_DEFEAT_ATTEMPTS, sleep, - } = require("../encounter-progress/scripts/prototype-npc-bruno-helper.js"); + } = require("./scripts/prototype-npc-bruno-helper.js"); const baseUrl = bru.getEnvVar("baseUrl") || bru.getVar("baseUrl"); const playerId = bru.getEnvVar("playerId") || bru.getVar("playerId"); const jsonHeaders = { headers: { "Content-Type": "application/json" } }; diff --git a/bruno/neon-sprawl-server/contracts/Get contracts default.bru b/bruno/neon-sprawl-server/contracts/Get contracts default.bru index 8e9617f..64cb476 100644 --- a/bruno/neon-sprawl-server/contracts/Get contracts default.bru +++ b/bruno/neon-sprawl-server/contracts/Get contracts default.bru @@ -10,7 +10,7 @@ docs { } script:pre-request { - const { resetAllContractInstances } = require("./scripts/reset-contract-instances-helper"); + const { resetAllContractInstances } = require("./scripts/reset-contract-instances-helper.js"); await resetAllContractInstances(bru); } diff --git a/bruno/neon-sprawl-server/contracts/Issue prototype contract.bru b/bruno/neon-sprawl-server/contracts/Issue prototype contract.bru index bef7147..59e7672 100644 --- a/bruno/neon-sprawl-server/contracts/Issue prototype contract.bru +++ b/bruno/neon-sprawl-server/contracts/Issue prototype contract.bru @@ -9,7 +9,7 @@ docs { } script:pre-request { - const { resetAllContractInstances } = require("./scripts/reset-contract-instances-helper"); + const { resetAllContractInstances } = require("./scripts/reset-contract-instances-helper.js"); await resetAllContractInstances(bru); } diff --git a/bruno/neon-sprawl-server/contracts/scripts/reset-contract-instances-helper.js b/bruno/neon-sprawl-server/scripts/reset-contract-instances-helper.js similarity index 100% rename from bruno/neon-sprawl-server/contracts/scripts/reset-contract-instances-helper.js rename to bruno/neon-sprawl-server/scripts/reset-contract-instances-helper.js diff --git a/docs/reviews/2026-06-28-NEO-151.md b/docs/reviews/2026-06-28-NEO-151.md index 244a192..5b256bf 100644 --- a/docs/reviews/2026-06-28-NEO-151.md +++ b/docs/reviews/2026-06-28-NEO-151.md @@ -51,7 +51,8 @@ None. | Severity | Location | Finding | Status | |----------|----------|---------|--------| -| Low | `reset-contract-instances-helper.js:27` | Reset helper only cleared one capped GET page (active + 10 completed); older rows could survive pre-request cleanup | **Done.** — loop GET → reset until list empty (max 100 passes) | +| Low | `scripts/reset-contract-instances-helper.js` | Reset helper only cleared one capped GET page (active + 10 completed); older rows could survive pre-request cleanup | **Done.** — loop GET → reset until list empty (max 100 passes) | +| Low | `contracts/scripts/` helper path | Bruno resolves `./scripts/` from collection root, not per-folder — CI module not found | **Done.** — moved helper to `neon-sprawl-server/scripts/`; `.js` suffix on requires | ## Verification diff --git a/server/README.md b/server/README.md index ae6b3a4..b91f723 100644 --- a/server/README.md +++ b/server/README.md @@ -152,7 +152,7 @@ Plan: [NEO-141 implementation plan](../../docs/plans/NEO-141-implementation-plan **400** for bad schema; **404** when disabled, player unknown, unknown quest/faction id, or store write fails. Not for production. Bruno: `quest-progress/Accept grid contract faction gate deny.bru` uses **`resetQuestIds`**, **`resetFactionIds`**, and **`completedQuestIds`**; order-independent accept/gather tests use **`resetQuestIds`** via **`scripts/bruno-dev-fixture-helper.js`**. -**Bruno self-reset helpers:** `bruno/neon-sprawl-server/scripts/bruno-dev-fixture-helper.js` centralizes quest progress reset, resource-node restore, inventory clear, and post-reset verification (`resetAllPrototypeQuestProgress`, `resetGatherIntroSpine`, `resetPrototypeResourceNodes`, `clearInventory`). Combat HP/encounter reset remains **`scripts/combat-targets-reset-helper.js`**. +**Bruno self-reset helpers:** `bruno/neon-sprawl-server/scripts/bruno-dev-fixture-helper.js` centralizes quest progress reset, resource-node restore, inventory clear, and post-reset verification (`resetAllPrototypeQuestProgress`, `resetGatherIntroSpine`, `resetPrototypeResourceNodes`, `clearInventory`). **`scripts/reset-contract-instances-helper.js`** clears all contract instances via capped GET loop + quest-fixture reset (NEO-151). Combat HP/encounter reset remains **`scripts/combat-targets-reset-helper.js`**. ## Resource-node catalog (`content/resource-nodes`, NEO-58)