BUILT.md described a tolerated cycle as a property — "mutually dependent packages simply work" — and NEXT.md still listed a package importing a package as the real gap, which it stopped being some commits ago. Both now say what the code does. Written down with them: what a name imported through an intermediate package is called, and why the inner alias is forced rather than chosen; that the diamond is proven by the numbers pkg-diamond prints rather than by its compiling; and that pkgs is topologically ordered while the declaration list deliberately is not. Package visibility stays on the list. The gap is that a package has no way to mark a name private, which is surface syntax; the predicate and the refusal it would hang off are already there.
Description
Languages
OCaml
67.2%
Emacs Lisp
15.2%
C
10.4%
HTML
2.9%
Standard ML
2.8%
Other
1.5%