agent/php
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
..
Actions fix(brain): close openbrain audit gaps — org scoping + index cleanup + reindex flags + MCP schemas + circuit layer 2026-04-24 08:14:06 +01:00
Agentic feat(agentic): implement §9 Services (FleetService + CreditService + SessionService) (#849) 2026-04-25 05:28:49 +01:00
Configs revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Console/Commands fix(brain): close openbrain audit gaps — org scoping + index cleanup + reindex flags + MCP schemas + circuit layer 2026-04-24 08:14:06 +01:00
Controllers feat(api): implement §3 fleet+credits+subscription+sync+agent-auth routes (#848) 2026-04-25 05:43:51 +01:00
docs revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Facades revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Jobs feat(brain): add DeleteFromIndex job 2026-04-23 12:55:45 +01:00
Lang/en_GB revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Mcp fix(agent/brain): batch — org maxLength + retry semantics + forget index cleanup 2026-04-25 14:55:40 +01:00
Middleware revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Migrations fix(brain): close openbrain audit gaps — org scoping + index cleanup + reindex flags + MCP schemas + circuit layer 2026-04-24 08:14:06 +01:00
Mod/Mcp/Services feat(mcp): implement extended RFC services + transport (#842) 2026-04-25 05:50:16 +01:00
Models fix(brain): close openbrain audit gaps — org scoping + index cleanup + reindex flags + MCP schemas + circuit layer 2026-04-24 08:14:06 +01:00
Pipeline feat(pipeline): add MetaReader contract + Forgejo-backed implementation 2026-04-23 18:09:54 +01:00
resources feat(mcp): implement extended RFC services + transport (#842) 2026-04-25 05:50:16 +01:00
Routes feat(api): implement §3 fleet+credits+subscription+sync+agent-auth routes (#848) 2026-04-25 05:43:51 +01:00
Service revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Services fix(agent/brain): walk supersede chain to current head + cycle guard 2026-04-25 18:42:52 +01:00
Support revert fcb9c189e5 2026-04-23 12:32:57 +01:00
tests fix(agent/brain): walk supersede chain to current head + cycle guard 2026-04-25 18:42:52 +01:00
View revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Website/Mcp/Middleware feat(mcp): implement §4 Middleware (5 middleware classes) (#852) 2026-04-25 05:25:09 +01:00
.DS_Store revert fcb9c189e5 2026-04-23 12:32:57 +01:00
agentic.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
AGENTS.md revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Boot.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
config.php fix(brain): wire Qdrant api-key header from BRAIN_QDRANT_API_KEY 2026-04-24 05:21:15 +01:00
FINDINGS.md revert fcb9c189e5 2026-04-23 12:32:57 +01:00
GEMINI.md revert fcb9c189e5 2026-04-23 12:32:57 +01:00
TODO.md revert fcb9c189e5 2026-04-23 12:32:57 +01:00