Skip to content

Commit d31b968

Browse files
committed
docs(epiphany): E-CYPHER-IS-THE-KANBAN-AST — a kanban board is a graph, so Cypher is its AST; board-ops + ontology-traversal + thinking-styles + SurrealQL egress are ONE AST
A kanban board IS a graph: card=GUID node, column/phase=state, move=edge rewrite, dependency=edge, WIP=count constraint, transition rules=graph schema. Cypher is the AST for graph patterns, so Cypher is the board's native query/mutation language. The planner already shares one AST across Cypher/Gremlin/SPARQL/GQL front-ends + SurrealQL adapter/egress + thinking-style dispatch + kanban phases - odoo's ontology traversal through the SurrealQL AST adapter is the existence proof. These are one AST seen from four sides, not four subsystems. Refines E-GUID-IS-THE-GRAPH correction #2 (the lifecycle state-machine IS a graph; "kanban is not traversal" was a false dichotomy). Scope: "Cypher is the AST" = surface lowering to the shared IR/SurrealQL AST, not a claim the nom parser emits SurrealQL today (DataFusion now; SurrealQL lowering is the lite-unified gate #540). Wiring = Backend::MailboxSoa router variant + Cypher->SurrealQL lowering behind lite-unified. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
1 parent 1263c27 commit d31b968

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

.claude/board/EPIPHANIES.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,30 @@
1+
## 2026-06-18 — E-CYPHER-IS-THE-KANBAN-AST — a kanban board IS a graph, so Cypher is its AST; board-ops + ontology-traversal + thinking-style dispatch + SurrealQL egress collapse to ONE shared AST
2+
3+
**Status:** FINDING (convergence; odoo is the existence proof — ontology traversal already runs through the SurrealQL AST adapter). Refines `E-GUID-IS-THE-GRAPH` correction #2: "kanban is lifecycle, not traversal" was a false dichotomy — the lifecycle state-machine IS a graph, and that's the whole point.
4+
5+
**The collapse:** a kanban board is a graph, full stop —
6+
- **card → GUID node** (`E-GUID-IS-THE-GRAPH`),
7+
- **column / phase → state** (a `Column` node the card has an `:IN` edge to, or a `classid`/property),
8+
- **move → edge rewrite** (`(c)-[:IN]->(Doing)` ⇒ `(c)-[:IN]->(Done)`),
9+
- **dependency / blocks → edge**, **WIP limit → a count constraint** (a Cypher `MATCH … RETURN count` guard), **swimlane → basin/label**.
10+
- the Rubicon transition rules (`KanbanColumn::can_transition_to`) **ARE the graph schema** (which edges are legal).
11+
12+
So the board's queries and mutations are graph patterns, and **Cypher is the AST for graph patterns**. Driving the board with Cypher is not a metaphor — it is the board's native query/mutation language.
13+
14+
**Why it's the obvious move (the four-into-one):** the planner already holds all the pieces, and they share one AST/IR —
15+
1. **Cypher/Gremlin/SPARQL/GQL → one planner IR** (front-end parsers).
16+
2. **SurrealQL AST** = the shared adapter/egress hub that IR lowers into and the substrate runs (`ExecTarget::SurrealQl` + `ogar-adapter-surrealql`). odoo's **ontology traversal already goes through this adapter** — the existence proof.
17+
3. **Thinking styles + MUL** dispatch over that IR (planner `thinking/`, 12 styles, NARS, sigma chain).
18+
4. **Kanban phases** (`KanbanColumn`) are the lifecycle the cards move through.
19+
20+
These are not four subsystems to be bridged — they are **one AST seen from four sides**: Cypher is the surface syntax, SurrealQL is the adapter/egress, thinking-styles are the planner layer over it, kanban is the board the patterns mutate. **Cypher AS the kanban-board AST unifies them.** Not doing so means re-expressing board moves in a second language while the graph AST sits right there — the dumb path.
21+
22+
**Concretely:** a board move = a Cypher mutation → planner IR → thinking-style/MUL plan → `ExecTarget::SurrealQl` (or `Native`/`Jit`) over the GUID-keyed substrate; a board query (cards in a column, blocked cards, WIP count) = a Cypher `MATCH` → prefix-route on `classid` + `EdgeBlock`-slot deref, zero-value-decode (`E-GUID-IS-THE-GRAPH`). The `KanbanColumn` lifecycle is the *mailbox cognitive-cycle* instantiation of the same structure; an odoo project board / woa work-order board / q2 case board are *domain* instantiations — **same AST, same substrate, different `classid` + edge schema.**
23+
24+
**Scope guard (truth-architect):** "Cypher is the AST" = Cypher is the surface that lowers to the shared IR/SurrealQL AST — NOT a claim that the core's nom Cypher parser already emits SurrealQL (it lowers to DataFusion today; the SurrealQL lowering is the `lite-unified` gate #540, default-OFF, process-not-switch). The unification is the architecture; the wiring is the `Backend::MailboxSoa` router variant + the Cypher→SurrealQL lowering behind `lite-unified`. Cross-refs: `E-GUID-IS-THE-GRAPH`, `E-AR-DO-WIRING` (ontology→DO consumers), `lite-unified-surrealql-lance-v1`, planner `thinking/` + `strategy/cypher_parse.rs`, `kanban::{KanbanColumn, ExecTarget}`.
25+
26+
---
27+
128
## 2026-06-18 — E-GUID-IS-THE-GRAPH — the substrate IS a graph already: GUID-key = node, EdgeBlock-slot = edge, traversal = prefix-route + slot-deref, all zero-value-decode; SurrealQL is egress, kanban dispatches
229

330
**Status:** FINDING (grounded in shipped `canonical_node.rs` / `soa_view.rs` / `kanban.rs` / planner polyglot strategies). Written to stop the q2-rewire session from hallucinating a node/edge/Cypher layer that already exists.

0 commit comments

Comments
 (0)