feat(voyage): surface iterations_remaining signal in trekexecute
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e34082d79a
commit
65a51b2667
2 changed files with 51 additions and 0 deletions
|
|
@ -118,3 +118,33 @@ test('trekexecute — every recovery/retry loop bounded + 3-axis cap hierarchy (
|
|||
assert.match(section, /recovery_depth/, 'hierarchy must name per-session recovery_depth axis');
|
||||
assert.match(section, /TREKEXECUTE_MAX_RECOVERY_ITERATIONS/, 'hierarchy must name the global budget axis');
|
||||
});
|
||||
|
||||
// --- S38 loop-discipline hardening: iterations_remaining budget signal (Step 4) ---
|
||||
|
||||
test('trekexecute — iterations_remaining surfaced in progress schema + summary JSON, no (if wired) (SC c)', () => {
|
||||
const text = read();
|
||||
assert.ok(text.includes('iterations_remaining'), 'iterations_remaining must be present (SC c)');
|
||||
assert.ok(!/iterations_remaining[^\n]*\(if wired\)/.test(text),
|
||||
'no "(if wired)" conditional — field present in the spec at minimum');
|
||||
const schemaIdx = text.indexOf('### Progress file schema');
|
||||
assert.ok(schemaIdx >= 0, 'progress schema section missing');
|
||||
assert.match(text.slice(schemaIdx, schemaIdx + 1400), /iterations_remaining/,
|
||||
'progress schema must include iterations_remaining');
|
||||
const sumIdx = text.indexOf('"trekexecute_summary": {');
|
||||
assert.ok(sumIdx >= 0, 'summary JSON block missing');
|
||||
assert.match(text.slice(sumIdx, sumIdx + 900), /iterations_remaining/,
|
||||
'summary JSON must include iterations_remaining (observable)');
|
||||
});
|
||||
|
||||
test('trekexecute — iterations_remaining decrement + backfill + gate cross-check documented (SC c)', () => {
|
||||
const text = read();
|
||||
assert.match(text, /decrement[^.\n]*iteration|every recovery\/retry iteration/i,
|
||||
'decrement-per-iteration rule must be documented');
|
||||
assert.match(text, /backfill|seed (it )?to (the )?cap/i,
|
||||
'backfill-on-absent (legacy resume) rule must be documented');
|
||||
const gateIdx = text.indexOf('machine-verifiable completion gate');
|
||||
const gate = text.slice(gateIdx, gateIdx + 2200);
|
||||
assert.match(gate, /iterations_remaining/, 'gate must cross-check iterations_remaining');
|
||||
assert.match(gate, /recovery_depth/, 'gate cross-check must reconcile against recovery_depth');
|
||||
assert.match(gate, /attempts/, 'gate cross-check must reconcile against attempts');
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue