| 170 | const repoRoot = path.resolve(__dirname, '..'); |
| 171 | |
| 172 | function loopChildEnv(extra = {}) { |
| 173 | return { |
| 174 | ...process.env, |
| 175 | EVOLVE_LOOP: 'true', |
| 176 | EVOLVE_BRIDGE: 'false', |
| 177 | A2A_HUB_URL: '', |
| 178 | EVOLVER_REPO_ROOT: repoRoot, |
| 179 | EVOLVER_LOCK_DIR: tmpDir, |
| 180 | EVOLVER_SETTINGS_DIR: path.join(tmpDir, '.evolver-settings'), |
| 181 | EVOMAP_PROXY: '0', |
| 182 | EVOMAP_PROXY_AUTO_INJECT: 'off', |
| 183 | CLAUDE_SETTINGS_FILE: path.join(tmpDir, '.claude', 'settings.json'), |
| 184 | EVOLVER_CAFFEINATE: '0', |
| 185 | EVOLVER_SUICIDE: 'false', |
| 186 | EVOLVER_CYCLE_TIMEOUT_ENABLED: 'false', |
| 187 | EVOLVER_CYCLE_TIMEOUT_MS: '2700000', |
| 188 | EVOLVER_MIN_SLEEP_MS: '1', |
| 189 | EVOLVER_MAX_SLEEP_MS: '1', |
| 190 | EVOLVE_PENDING_SLEEP_MS: '1', |
| 191 | // Force immediate exit after first cycle for test predictability. |
| 192 | EVOLVER_MAX_CYCLES_PER_PROCESS: '1', |
| 193 | ...extra, |
| 194 | }; |
| 195 | } |
| 196 | |
| 197 | it('loop child env disables cycle timeout by default', () => { |
| 198 | process.env.EVOLVER_CYCLE_TIMEOUT_ENABLED = 'true'; |