Cook execute 2/N: Iskra memory-sidecar client #50

Merged
pdurlej merged 1 commit from claude-cook2-sidecar into main 2026-05-30 13:16:27 +02:00
Collaborator

Second execute step for Cook. Pure transport + tests, no live calls.

What

SidecarClient — thin stdlib client for the memory sidecar on vps1000:18791 (the same broker obsidian-write.py uses). Cook reaches evidence and writes its grounding note through this one localhost service; the sidecar brokers Honcho on rs2000, so judging-claw never talks to rs2000 directly.

  • Evidence reads: search_events/v1/events/search, query_honcho/v1/honcho/query, continuity_pack/v1/continuity/pack.
  • Staging write: write_grounding_note/v1/obsidian/write, matching the real {title, noteType, root, filename, body} shape. base_url from ISKRA_MEMORY_SIDECAR_URL, default http://127.0.0.1:18791.

ADR-0023 boundaries baked in

  • Writes default to the staging root 01 Projects/Judging Claw/Cook; write_grounding_note refuses a gold/Włóczykij-looking target defensively (gold isn't reachable through this sidecar anyway).
  • has_hard_deny_marker / drop_deny_marked let the runner drop any evidence carrying a hard-deny frontmatter marker (private: true, iskra_access: deny, …) before it enters prompt context.

Boundaries

Pure transport — request() is overridable, so tests cover paths/payloads/guards with no live sidecar call. Not wired into nightly. The runner (3/N) and nightly wiring + ration (4/N) are the production-touching, operator-gated steps.

Suite: 157 tests OK (149 + 8), py_compile clean.

🤖 Generated with Claude Code

Second execute step for Cook. **Pure transport + tests, no live calls.** ## What `SidecarClient` — thin stdlib client for the memory sidecar on `vps1000:18791` (the same broker `obsidian-write.py` uses). Cook reaches evidence and writes its grounding note through this one localhost service; the sidecar brokers Honcho on rs2000, so judging-claw never talks to rs2000 directly. - **Evidence reads:** `search_events` → `/v1/events/search`, `query_honcho` → `/v1/honcho/query`, `continuity_pack` → `/v1/continuity/pack`. - **Staging write:** `write_grounding_note` → `/v1/obsidian/write`, matching the real `{title, noteType, root, filename, body}` shape. `base_url` from `ISKRA_MEMORY_SIDECAR_URL`, default `http://127.0.0.1:18791`. ## ADR-0023 boundaries baked in - Writes default to the **staging** root `01 Projects/Judging Claw/Cook`; `write_grounding_note` **refuses a gold/Włóczykij-looking target** defensively (gold isn't reachable through this sidecar anyway). - `has_hard_deny_marker` / `drop_deny_marked` let the runner drop any evidence carrying a hard-deny frontmatter marker (`private: true`, `iskra_access: deny`, …) before it enters prompt context. ## Boundaries Pure transport — `request()` is overridable, so tests cover paths/payloads/guards with **no live sidecar call**. Not wired into nightly. The runner (3/N) and nightly wiring + ration (4/N) are the production-touching, operator-gated steps. Suite: **157 tests OK** (149 + 8), `py_compile` clean. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Add Iskra memory-sidecar client (Cook execute 2/N)
All checks were successful
CI / test (pull_request) Successful in 21s
9a6192212d
Thin stdlib client for the broker on vps1000:18791 — the same service
obsidian-write.py uses. Cook reaches evidence and writes its grounding note
through this one localhost sidecar; it brokers Honcho on rs2000, so we never
talk to rs2000 directly.

- SidecarClient: evidence reads (search_events -> /v1/events/search,
  query_honcho -> /v1/honcho/query, continuity_pack -> /v1/continuity/pack) and
  the staging grounding-note write (write_grounding_note -> /v1/obsidian/write,
  matching obsidian-write.py's {title,noteType,root,filename,body} shape).
  base_url from ISKRA_MEMORY_SIDECAR_URL, default http://127.0.0.1:18791.
- ADR-0023 boundaries: writes default to the staging root
  '01 Projects/Judging Claw/Cook'; write_grounding_note refuses a gold/Wloczykij
  target defensively. has_hard_deny_marker / drop_deny_marked let the runner
  drop any evidence carrying a hard-deny frontmatter marker before ingest.
- Pure transport: request() is overridable, so tests cover paths/payloads/guards
  with no live sidecar call.

Scope: code landing only. No live calls, not wired into nightly. The runner
(3/N) and nightly wiring (4/N) are the production-touching, operator-gated steps.

Suite: 157 tests OK (149 + 8), py_compile clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
pdurlej deleted branch claude-cook2-sidecar 2026-05-30 13:16:27 +02:00
Sign in to join this conversation.
No description provided.