datalog: cooking-posts canonical demo (Phase 10, 162/162)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 55s

Adds the canonical Phase 10 example from the plan: "Posts about
cooking by people I follow (transitively)." dl-demo-cooking-rules
defines reach over the follow graph (recursive transitive closure)
and cooking-post-by-network joining reach + authored + (tagged P
cooking). 3 new demo tests cover transitive network, direct-only
follow, and empty-network cases.
This commit is contained in:
2026-05-08 09:05:36 +00:00
parent 55286cc5bc
commit d09ed83fa1
5 changed files with 72 additions and 6 deletions

View File

@@ -243,6 +243,9 @@ large graphs.
`(interesting Me P)` joining follows + authored + popular.
- **Permissions**: `(member A G)`, `(subgroup C P)`, `(allowed G R)`
→ `(in-group A G)` over transitive subgroups, `(can-access A R)`.
- **Cooking-posts** (the canonical example): `(reach Me Them)` over
the follow graph, then `(cooking-post-by-network Me P)` joining
reach + authored + `(tagged P cooking)`.
- [ ] Loader `dl-load-from-db!` — out of scope for this loop
(would need to edit `shared/services/` outside `lib/datalog/`).
Programs in `demo.sx` already document the EDB shape expected
@@ -270,6 +273,14 @@ large graphs.
_Newest first._
- 2026-05-08 — Phase 10 demo + canonical query. Added the "cooking
posts by people I follow (transitively)" example from the plan:
`dl-demo-cooking-rules` defines `reach` over the follow graph
(recursive transitive closure) and `cooking-post-by-network` that
joins reach with `authored` and `(tagged P cooking)`. 3 demo
tests cover transitive network, direct-only follow, and
empty-network cases.
- 2026-05-08 — Phase 8 extension: `findall L V Goal` aggregate. Bind
L to the list of distinct V values for which Goal holds (or the
empty list when no matches). Implemented as a one-line case in