@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 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.1",
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("f3068ba"))
19597
- return "f3068ba";
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
- return true;
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nathapp/nax",
3
- "version": "0.32.1",
3
+ "version": "0.32.2",
4
4
  "description": "AI Coding Agent Orchestrator \u2014 loops until done",
5
5
  "type": "module",
6
6
  "bin": {
@@ -69,8 +69,29 @@ export async function runFullSuiteGate(
69
69
  fullSuiteTimeout,
70
70
  );
71
71
  }
72
- // No failures detected despite non-zero exit — treat as passed
73
- return true;
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 });