# test632 — honest SSE abandon recovery guidance

Date: 2026-08-09
Issue: #535
Base: f7e854c3e64eee75cf06c4c8c1563c2c2230be3a
Source commit: 35ded55fbaefc213791e4b77b5b97d38114e6e4d
Docker image: anet-test632:dev
Docker image ID: sha256:3a45c156c6cbd5dcff38a2bc3dfba51c52ff8e002982da49dcaa0e3db0f4f416
Embedded TEST632_SOURCE_COMMIT: 35ded55fbaefc213791e4b77b5b97d38114e6e4d
Runner artifact SHA256: b0b4574c044517a889aff3e6ce3b32b50095ead24a786e8af462a1ecf05c87fa

## Result

PASS.

- Helper and production-hook contract: 4 pass, 0 fail, 13 assertions.
- Real agent-node entrypoint bundled successfully (255 modules, 1.92 MB).
- A real child process ran `superviseChild` to the abandon threshold. The
  `onAbandon` hook fired, the promise returned, and the parent then verified
  that the same child PID was still alive before stopping it explicitly.
- Guidance states the lifecycle fact: abandoning SSE leaves the current
  agent-node instance alive.
- Guidance forbids starting a parallel instance with the same alias and
  requires stop-and-replace through the original supervisor/launch path.
- Co-presence recovery explicitly preserves `--copresence` / dedicated
  config shape; it does not recommend generic `anet node start <alias>`.

## Witnessed red

1. Replaced the duplicate-safe sentence with the former generic
   `anet node start <alias>` instruction: test suite rc=1.
2. Bypassed `sseAbandonGuidance` in the production `onAbandon` hook: test
   suite rc=1.

After restoring both mutations, the full suite returned green.

## Scope

This candidate changes only the operator guidance emitted after the existing
one-hour SSE abandon threshold. It does not alter retry timing, process
lifecycle, Hub behavior, runtime selection, or production state.
