# 8.9 — `X-Service: memory` adapter, extended resources (GREEN) Phase: 8 — ServiceAdapter CRD rollout Stage: BLOCKED — do not start until the upstream note below is resolved Depends on: 8.8 (core `memory` adapter live) Design contract: `~/workplace/Poimen/memory/DESIGN.md` "Distributed API Layer" section. Covers `GET /memory/projects/{id}/notes`, `POST /memory/context`, and the optional `POST /memory/nodes/by-git`/`by-commit`/`by-author` git-aware lookups. **Upstream status, checked against that repo's own task board, not assumed:** - `notes` is listed in the M3.5 task table but **not** in the confirmed-tested set (`query`, `projects`, `projects/{id}/status`, `ingest`, `skills`, `skills/{name}`) - `context` depends on M3.7.7 (signature extraction) and M3.7.8 (symptom vector) — neither is built per that repo's phase ordering - git-aware lookups (M3.5.9) are explicitly marked optional in that repo's own board **Before writing any CR entry here: re-check `~/workplace/Poimen/memory/memory-tasks/INDEX.md` for current status of M3.5.6, M3.7.*, and M3.5.9.** If they are still not shipped, stop and report that instead of building a gateway route with nothing live to call — per this repo's own zero-context-agent rule, a route to a 404 is not verifiable and this task cannot be completed honestly. - [ ] Confirm `notes`, `context`, and `nodes/by-*` are live upstream (curl the Service directly from inside the cluster, not through the gateway, to check) - [ ] `responseSchema` for `context` is defined **from the real response**, not from `DESIGN.md`'s prose description (that doc itself says the exact bundle shape isn't pinned down — "the bundle is a composition" with no worked JSON example) - [ ] Extend `k8s/serviceadapter-memory.yaml` (from 8.8) with these three resources, same `memory:read` capability as `query`/`skill`/`project` - [ ] git-aware resources only added if M3.5.9 is confirmed shipped — otherwise ticket this as follow-up and leave this task's remaining boxes unchecked ## Verify ```bash # from inside the cluster, upstream directly — confirms it exists before routing to it kubectl -n poimen exec deploy/poimen-memory -- curl -s localhost:8080/memory/context \ -X POST -d '{"tool":"kubectl"}' # expected: 200 with a real body, not 404 — if 404, stop, this task is blocked curl -s -H 'Authorization: Bearer ' \ https://api.riotpiao.com/ -H 'X-Service: memory' -H 'X-Resource: notes' \ -G --data-urlencode 'project=poimen' # expected: 200, array of L1/L2 note objects curl -s -X POST -H 'Authorization: Bearer ' \ https://api.riotpiao.com/ -H 'X-Service: memory' -H 'X-Resource: context' \ -d '{"tool":"kubectl"}' # expected: 200, bundled context response ```