fix(trekresearch): gate Phase 4.5 on VOYAGE_STORM_ENABLED, not effort alone
CLAUDE.md claimed both STORM phases go inert when the flag is unset. Only Phase 5 did: the flag check lives in research-loop-cap.mjs, and Phase 4.5 never invokes the cap — it was gated on effort: high alone. At high effort with the flag unset, discovery still mined Phase-4 output and mutated the dimension list, so `dimensions` diverged from `dimensions_baseline` and the decline branch was unreachable for half the mechanism. The code was the deviator, so the guard is fixed rather than the claim: the Phase 4.5 skip-guard now names both conditions, with the reason inline. Three surfaces scoped the flag to "the loop" and are corrected with it (README, docs/command-modes, docs/architecture), plus the orchestrator phase map. CLAUDE.md's claim is now true, but its stated MECHANISM was not — Phase 4.5's inertness comes from its own guard, not from the cap module — so that sentence is corrected too. New doc-consistency pin: the flag must be documented as gating both phases on all four reference surfaces. Review finding 00a3af1a. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011vPSXe88qp5aqWUqbDNWoF
This commit is contained in:
parent
4c4457f6e9
commit
2e352a7dbb
8 changed files with 55 additions and 9 deletions
|
|
@ -1148,6 +1148,23 @@ test('STORM: VOYAGE_STORM_ENABLED is documented WITH its default-off contract',
|
|||
}
|
||||
});
|
||||
|
||||
// The flag gates BOTH STORM phases, not just the Phase 5 loop. A surface that
|
||||
// scopes it to "the loop" tells an operator that unsetting it still leaves
|
||||
// Phase 4.5 discovery running — which was true until the guard was fixed, and
|
||||
// is the half-off state the decline branch cannot survive.
|
||||
test('STORM: VOYAGE_STORM_ENABLED is documented as gating BOTH phases, not the loop alone', () => {
|
||||
for (const f of STORM_SURFACES) {
|
||||
const t = read(f);
|
||||
const i = t.indexOf('VOYAGE_STORM_ENABLED');
|
||||
const window = t.slice(Math.max(0, i - 400), i + 400);
|
||||
assert.match(
|
||||
window,
|
||||
/4\.5|discovery|dimension discovery|both/i,
|
||||
`${f}: VOYAGE_STORM_ENABLED must be documented as gating Phase 4.5 too, not only the Phase 5 loop`,
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
test('STORM: README research-dimension prose stays at the existing 3–8 ceiling', () => {
|
||||
// Phase 4.5 discovers dimensions UNDER settings.json:16's maxDimensions: 8.
|
||||
// Rewriting this prose upward would raise a ceiling the brief asked us to hold.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue