docs(adr): ADR-176 server-owned config & thin clients; ADR-177 weighted incidence topology - #2351
Conversation
…ed incidence topology ADR-172: storage config becomes the serving daemon's alone; host processes reduce to socket clients with identity, the embedded-engine fallback is removed, and config_id demotes from handshake precondition to server-reported fact. ADR-173: graph topology moves to a weighted incidence table; the binary directed edge becomes the two-incidence special case, giving per-node edge weights, hyperedges, and role-qualified n-ary relations from one schema change. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
ohdearquant
left a comment
There was a problem hiding this comment.
Automated review. Posted by this repository's automated pull-request review pipeline; this is not a human read and does not gate the merge by itself.
Verdict on head b70e991: REQUEST-CHANGES, 9 blocking findings. Finding details are delivered to the review's recipients rather than posted here. Do not merge this head while blocking findings are outstanding; a pipeline comment on a newer head supersedes this one.
ohdearquant
left a comment
There was a problem hiding this comment.
Automated review. Posted by this repository's automated pull-request review pipeline; this is not a human read and does not gate the merge by itself.
Verdict on head b70e991: REQUEST-CHANGES, 11 blocking findings. Finding details are delivered to the review's recipients rather than posted here. Do not merge this head while blocking findings are outstanding; a pipeline comment on a newer head supersedes this one.
# Conflicts: # docs/adr/README.md
ohdearquant
left a comment
There was a problem hiding this comment.
Automated review. Posted by this repository's automated pull-request review pipeline; this is not a human read and does not gate the merge by itself.
Verdict on head bae3b7b: REQUEST-CHANGES, 3 blocking findings. Finding details are delivered to the review's recipients rather than posted here. Do not merge this head while blocking findings are outstanding; a pipeline comment on a newer head supersedes this one.
Two architecture decisions from the database-first design pass, decided together because they split one theme: khive treated the way a database server is treated.
ADR-176 — server-owned storage config, thin clients. Today every host process is a full engine with its own config discovery and an embedded fallback that activates on config mismatch (
exec.rs: "a mismatch falls back to local"), which is a structural hole in the single-writer guarantee. Decision: the serving daemon exclusively owns[[backends]]/pack routing/embedder config; clients carry endpoint + identity only; the local fallback is removed;config_iddemotes to a server-reported fact.ADR-177 — weighted incidence as the topology primitive. Edge weight is a property of the (node, edge) pair, not the edge (edge-dependent vertex weights); hyperedges and role-qualified relations are unrepresentable in endpoint columns. Decision:
graph_incidences(namespace, edge_id, node_id, role, weight)carries all topology;graph_edgesdropssource_id/target_id/weight; binary edges become the two-incidence special case; migration is a mechanical two-rows-per-edge backfill.Docs only — no code in this PR. The Python client on
mainalready speaks ADR-177's target shape through a labeled wire translation, so the schema cutover deletes client code rather than adding it.