Grove Compatibility Tree

The top-level grove/ directory contains the converted library ecosystem plus historical applications and examples. All 218 library directories now have a final G01–G22 disposition; applications outside grove/libs still require individual compatibility verification.

Current status

The operational compiler and its automatically staged libraries live under:

seed/compiler/llvm/
├── build/seed
└── libs/

The current library set is documented in Library Reference. Those packages use clean lower-snake syntax, produce current .sdi interfaces, and participate in the compiler's gate suites.

Every grove/libs package has a current manifest and a gate case. Retained library sources contain no legacy hash comments, capitalized nominal declarations, or direct FFI. A package may still be deliberately archived: its current interface validates configuration/ownership boundaries while the old execution capability remains unavailable.

Therefore:

Repository layout

The compatibility tree is organized as:

grove/
├── libs/      # G01–G22 classified library corpus
├── apps/      # mixed-generation applications and tools
└── examples/  # examples that require individual compatibility verification

For libraries, disposition plus gate evidence proves the declared support boundary. Directory presence alone remains insufficient for apps and examples.

The recovered Ridge command family lives in grove/apps/ridge/. Its seven programs compile against the ridge package. The reconstructed embedded stack includes ridge_sql, whose bounded relational core has executable typed projection, range, join, aggregate, subquery, index, constraint, transaction, and SQLite/PostgreSQL differential coverage. The loopback pgwire daemon supports simple queries and a bounded prepared-query subset. grove/apps/ridge/ROADMAP.md separates historical evidence from current capability: v0.2 is frozen with incomplete waived P13 evidence, while the v0.3 V3-G0-G17 local MVCC/relational, transaction, SQL, and index/planner/spill path is complete and expansion is active at V3-G18. v0.4 cluster work is blocked through V3-G25 and has not started. Its SQLite/PostgreSQL comparison harness lives beside the apps under grove/apps/ridge/benchmarks/.

The consolidated user and operator guide is Ridge Database.

Porting a Grove package

Use this sequence when moving a package to the clean language:

  1. Run ./seed/seed check path/to/src/lib.sd and retain the diagnostics as the initial compatibility inventory.
  2. Replace legacy syntax: lower-snake nominal names, ret, //, current ADTs, and ordinary library channels instead of historical built-ins.
  3. Replace implicit runtime helpers with current safe compiler operations or an ordinary package under seed/compiler/llvm/libs.
  4. Make allocation, panic, blocking, FFI, ownership, clone, and provenance effects explicit.
  5. Put raw pointers, syscalls, FFI, unions, atomics, volatile operations, and raw memory behind narrow unsafe wrappers.
  6. Add a seed.toml; packages with extern declarations must list platforms and provide a root INSTALL.md.
  7. Verify direct source compilation and source-elided .sdi consumption.
  8. Add positive and negative compiler regressions before documenting the package as operational.

Porting should preserve behavior where useful, but archived syntax and runtime contracts are not compatibility requirements for the clean compiler.

Imports

Current compiler-staged packages use bare package imports:

use "io"
use "parse"
use "vec"

Prefer package imports backed by manifests and .sdi interfaces. A repository source-path import bypasses that package boundary and should not be introduced into converted Grove code.