fix: require bounded loop-status exit-code watch

This commit is contained in:
Affaan Mustafa
2026-04-30 10:06:53 -04:00
parent 6decc41121
commit 5aff158511
3 changed files with 13 additions and 0 deletions

View File

@@ -43,6 +43,8 @@ tool calls that have no matching `tool_result`.
- `ecc loop-status --exit-code` exits `2` when stale loop or tool signals are
found, or `1` when transcripts cannot be scanned.
- `ecc loop-status --watch` refreshes status until interrupted.
- `ecc loop-status --watch --watch-count 3 --exit-code` refreshes a bounded
number of times, then exits with the highest status seen.
- `ecc loop-status --watch --watch-count 3` emits a bounded watch stream for
scripts and handoffs.

View File

@@ -116,6 +116,10 @@ function parseArgs(argv) {
}
}
if (options.exitCode && options.watch && options.watchCount === null) {
throw new Error('--exit-code with --watch requires --watch-count so the process can exit');
}
return options;
}

View File

@@ -444,6 +444,13 @@ function runTests() {
assert.strictEqual(payload.errors.length, 1);
})) passed++; else failed++;
if (test('exit-code mode rejects unbounded watch mode', () => {
const result = run(['--watch', '--exit-code']);
assert.strictEqual(result.code, 1);
assert.match(result.stderr, /--exit-code with --watch requires --watch-count/);
})) passed++; else failed++;
if (test('getStatusExitCode prioritizes attention signals over scan errors', () => {
const payload = {
errors: [{ message: 'unreadable' }],