server

software/server · 0 open · 11 done

Cleanly layered and now fully covered. connect/disconnect/rename validate their endpoints and fail loudly; the unreachable svg branch is gone; README + CMakeLists track kinogaki-core only (codecs merged in); the JSON-RPC error surface and the previously-untested tools have tests. 30/30 checks green.

server_1connect/disconnect report success without validating endpointsDone MED
bug · completeness

Resolved 2026-06-20. connect now requires both endpoints to exist; disconnect checks findIncoming and fails on a no-op.

server_2rename_element reports success on a rejected/no-op renameDone MED
bug · completeness

Resolved 2026-06-20. rename_element compares the final path to the request and returns a failure on a rejected/self-descendant/no-op rename.

server_3JSON-RPC error surface and ~9 tools still untestedDone MED
task · tests

Resolved 2026-06-20. Added test.sh cases for the -32700/-32600 error surface, missing-tool-name, connect/disconnect/rename validation, remove-subtree, and a JSON round-trip.

server_5README tools table uses dropped 'prim' vocabulary, omits 6 tools, and keys the example 'prisma'Done MED
bug · organization

Resolved 2026-06-20. README tools table renamed prim->element, added the six missing tools, and re-keyed the .mcp.json example.

server_10README and CMakeLists still require a separate kinogaki-codecs dependency that was merged into coreDone MED
task · organization

Resolved 2026-06-20. CMakeLists links only Kinogaki::Core and the README states the single core dependency; matches build.sh.

server_4no initialize-ordering enforcementDone LOW
task · completeness

Resolved 2026-06-20. Documented the intentional initialize-ordering leniency at the dispatch site (single-document server, no per-session state).

server_11codecFor has an unreachable duplicate 'svg' branchDone LOW
task · completeness

Resolved 2026-06-20. Removed the unreachable duplicate 'svg' branch in codecFor.

server_6stale rename-era binaries in the (gitignored) build dirDone LOW
task · organization

Resolved 2026-06-20. Removed the stale prism/prisma rename-era binaries from build/; only kinogaki-server remains.

server_7separation: cleanDone LOW
task · separation

Where: src/main.cpp (transport: stdio loop + HTTP serve loop), src/HttpServer.h (the loopback HTTP transport), src/Dispatch.cpp (JSON-RPC protocol), src/Tools.cpp (domain handlers), src/Doc.h (Reader/Builder message marshalling), src/Log.h (sink-swappable log).

Clean. Transport (now two flavors, both feeding the one dispatch(Session&, line) seam), JSON-RPC protocol, domain tool dispatch, the eat-our-own-food Document message layer, and logging are each in their own unit; main.cpp wires a mutex around dispatch for the HTTP path. No god files. The Dispatch.h:3 / Log.h:4 comments about "the editor calls it per HTTP request" / "Phase 3" are now partly realized by HttpServer.h though still slightly aspirational — cosmetic only.

server_8naming: cleanDone LOW
task · naming

Where: all src/.

Clean. Functions read as verbs: dispatch, callTool, buildToolCatalog, addTool, readFile/writeFile, parsePath, parentExists, childrenOf, coerce, valueText, dtypeShort, buildArrayValue, endsWith, lowerExt, codecFor, confine, runCmd, logln; HttpServer's start/stop/acceptLoop/serve/send/ctEqual/header. Reader/Builder/Session/ToolResult/Log/HttpServer/Param are types (exempt); port() is a bare-noun accessor (fine).

server_9filesize: cleanDone LOW
task · filesize

Where: all src/.

Clean. Largest file is src/Tools.cpp at 487 lines; no file approaches 1000. Counts: Tools.cpp 487, HttpServer.h 153, main.cpp 107, Dispatch.cpp 91, Doc.h 74, Log.h 39, Tools.h 34, Dispatch.h 14 (~999 total).