agent/php/Services
Snider dea64f4099 fix(agent/brain): walk supersede chain to current head + cycle guard
remember() now resolves a stale supersedes_id to the current live head
before writing — when X has been superseded by Y, a retried call with
supersedes_id=X automatically links the new memory to Y instead of
silently dropping the supersede.

- Walk the chain from supplied supersedes_id to find the active head
- Cap the walk at depth 100 (cycle/runaway protection)
- Throw RuntimeException("Detected cycle while resolving supersede chain")
  on detected cycle, BEFORE any DB write
- Throw InvalidArgumentException("Superseded memory not found") when
  the original supersedes_id never existed
- deleteSupersededMemory no longer silently no-ops once the resolved
  head is expected to exist

Pest coverage extended:
- Direct chain link (X exists, succeeds with X→linked)
- Retry path (X→Y, then retry on X produces Z→Y, walks chain)
- Never-existed target (graceful error)
- Synthetic X↔Y cycle (caps walk + throws, no writes leak)

Co-authored-by: Codex <noreply@openai.com>
Closes tasks.lthn.sh/view.php?id=316
2026-04-25 18:42:52 +01:00
..
Concerns revert fcb9c189e5 2026-04-23 12:32:57 +01:00
AgentApiKeyService.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
AgentDetection.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
AgenticManager.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
AgenticProviderInterface.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
AgenticResponse.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
AgentSessionService.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
AgentToolRegistry.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
BrainService.php fix(agent/brain): walk supersede chain to current head + cycle guard 2026-04-25 18:42:52 +01:00
ClaudeService.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
ContentService.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
ForgejoService.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
GeminiService.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
IpRestrictionService.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
OpenAIService.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
PlanTemplateService.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00