@nathapp/nax 0.32.1 → 0.32.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/nax.js +18 -4
- package/package.json +1 -1
- package/src/tdd/rectification-gate.ts +23 -2
package/dist/nax.js
CHANGED
|
@@ -19531,7 +19531,7 @@ var package_default;
|
|
|
19531
19531
|
var init_package = __esm(() => {
|
|
19532
19532
|
package_default = {
|
|
19533
19533
|
name: "@nathapp/nax",
|
|
19534
|
-
version: "0.32.
|
|
19534
|
+
version: "0.32.2",
|
|
19535
19535
|
description: "AI Coding Agent Orchestrator \u2014 loops until done",
|
|
19536
19536
|
type: "module",
|
|
19537
19537
|
bin: {
|
|
@@ -19593,8 +19593,8 @@ var init_version = __esm(() => {
|
|
|
19593
19593
|
NAX_VERSION = package_default.version;
|
|
19594
19594
|
NAX_COMMIT = (() => {
|
|
19595
19595
|
try {
|
|
19596
|
-
if (/^[0-9a-f]{6,10}$/.test("
|
|
19597
|
-
return "
|
|
19596
|
+
if (/^[0-9a-f]{6,10}$/.test("1012b41"))
|
|
19597
|
+
return "1012b41";
|
|
19598
19598
|
} catch {}
|
|
19599
19599
|
try {
|
|
19600
19600
|
const result = Bun.spawnSync(["git", "rev-parse", "--short", "HEAD"], {
|
|
@@ -23625,7 +23625,21 @@ async function runFullSuiteGate(story, config2, workdir, agent, implementerTier,
|
|
|
23625
23625
|
if (testSummary.failed > 0) {
|
|
23626
23626
|
return await runRectificationLoop(story, config2, workdir, agent, implementerTier, contextMarkdown, lite, logger, testSummary, rectificationConfig, testCmd, fullSuiteTimeout);
|
|
23627
23627
|
}
|
|
23628
|
-
|
|
23628
|
+
if (testSummary.passed > 0) {
|
|
23629
|
+
logger.info("tdd", "Full suite gate passed (non-zero exit, 0 failures, tests detected)", {
|
|
23630
|
+
storyId: story.id,
|
|
23631
|
+
exitCode: fullSuiteResult.exitCode,
|
|
23632
|
+
passedTests: testSummary.passed
|
|
23633
|
+
});
|
|
23634
|
+
return true;
|
|
23635
|
+
}
|
|
23636
|
+
logger.warn("tdd", "Full suite gate inconclusive \u2014 no test results parsed from output (possible crash/OOM)", {
|
|
23637
|
+
storyId: story.id,
|
|
23638
|
+
exitCode: fullSuiteResult.exitCode,
|
|
23639
|
+
outputLength: fullSuiteResult.output.length,
|
|
23640
|
+
outputTail: fullSuiteResult.output.slice(-200)
|
|
23641
|
+
});
|
|
23642
|
+
return false;
|
|
23629
23643
|
}
|
|
23630
23644
|
if (fullSuitePassed) {
|
|
23631
23645
|
logger.info("tdd", "Full suite gate passed", { storyId: story.id });
|
package/package.json
CHANGED
|
@@ -69,8 +69,29 @@ export async function runFullSuiteGate(
|
|
|
69
69
|
fullSuiteTimeout,
|
|
70
70
|
);
|
|
71
71
|
}
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
|
|
73
|
+
// BUG-059: Non-zero exit with 0 parsed failures could mean:
|
|
74
|
+
// (a) Environmental noise (linter warning) — safe to pass
|
|
75
|
+
// (b) Bun crashed/OOM mid-run — truncated output, parser found nothing
|
|
76
|
+
// Distinguish by checking if any tests were actually detected in the output.
|
|
77
|
+
if (testSummary.passed > 0) {
|
|
78
|
+
// Tests ran and passed, but exit code was non-zero (environmental noise)
|
|
79
|
+
logger.info("tdd", "Full suite gate passed (non-zero exit, 0 failures, tests detected)", {
|
|
80
|
+
storyId: story.id,
|
|
81
|
+
exitCode: fullSuiteResult.exitCode,
|
|
82
|
+
passedTests: testSummary.passed,
|
|
83
|
+
});
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// No tests passed AND no tests failed — output is likely truncated/crashed
|
|
88
|
+
logger.warn("tdd", "Full suite gate inconclusive — no test results parsed from output (possible crash/OOM)", {
|
|
89
|
+
storyId: story.id,
|
|
90
|
+
exitCode: fullSuiteResult.exitCode,
|
|
91
|
+
outputLength: fullSuiteResult.output.length,
|
|
92
|
+
outputTail: fullSuiteResult.output.slice(-200),
|
|
93
|
+
});
|
|
94
|
+
return false;
|
|
74
95
|
}
|
|
75
96
|
if (fullSuitePassed) {
|
|
76
97
|
logger.info("tdd", "Full suite gate passed", { storyId: story.id });
|