|
| 1 | +# symbiont — the golden image |
| 2 | + |
| 3 | +> **THE one and only way the full Ada stack is meant to compile+link as one |
| 4 | +> binary:** lance-graph + lance `=7.0.0` + lancedb `=0.30.0` + the ndarray |
| 5 | +> fork + the ractor fork + surrealdb (kv-lance only) + OGAR. |
| 6 | +
|
| 7 | +A successful build IS the golden image — the known-good foundation for the |
| 8 | +kanban thinking, whose first test workload is the perturbation simulation |
| 9 | +(`perturbation-sim`). The binary itself just prints the linked-stack line and |
| 10 | +exits; the point is that the unified dependency graph **compiles and links**. |
| 11 | + |
| 12 | +It is `exclude`d from the lance-graph workspace (own `[workspace]` table) so |
| 13 | +the default lance-graph build/CI never pulls surrealdb-core + OGAR. |
| 14 | + |
| 15 | +## Build |
| 16 | + |
| 17 | +```bash |
| 18 | +# Local (any session): git-deps resolve from the AdaWorldAPI forks |
| 19 | +cargo build --manifest-path crates/symbiont/Cargo.toml |
| 20 | + |
| 21 | +# Container (build/CI validation) — from the lance-graph repo ROOT: |
| 22 | +docker build -f crates/symbiont/Dockerfile -t symbiont . |
| 23 | +docker run --rm symbiont |
| 24 | +``` |
| 25 | + |
| 26 | +## How it stays portable |
| 27 | + |
| 28 | +- **Same-repo crates** (`lance-graph`, `perturbation-sim`) → path deps. |
| 29 | +- **External forks** (`ractor`, `surrealdb-core`, `ogar-*`) → **git deps** |
| 30 | + pinned to `claude/jirak-math-theorems-harvest-rfii13`. No machine-specific |
| 31 | + paths, so it resolves in any session and on Railway/CI. |
| 32 | +- **One wrinkle:** lance-graph's own `Cargo.toml` path-deps the ndarray fork as |
| 33 | + a sibling (`../../../ndarray`). In a session it's already there; the |
| 34 | + Dockerfile clones it next to the repo. (That's why ndarray isn't a git dep in |
| 35 | + this manifest — it enters via lance-graph's existing path dep.) |
| 36 | + |
| 37 | +## Railway (build validation) |
| 38 | + |
| 39 | +1. Point the service at this repo, root directory = repo root. |
| 40 | +2. Set the Dockerfile path to `crates/symbiont/Dockerfile`. |
| 41 | +3. The build proves the stack links; a green build is the deliverable. |
| 42 | + |
| 43 | +**Auth:** the build fetches the AdaWorldAPI forks. If they're private, provide |
| 44 | +a token to the build (e.g. `git config --global |
| 45 | +url."https://x-access-token:$TOKEN@github.com/".insteadOf |
| 46 | +"https://github.com/"` via a Railway build secret). |
| 47 | + |
| 48 | +## Notes |
| 49 | + |
| 50 | +- ndarray is linked twice (lance-graph's path fork + surrealdb-core's git-rev |
| 51 | + fork) plus the real crates.io `ndarray 0.16.1` that lance-index needs. This |
| 52 | + is accepted as cosmetic — no ndarray type crosses the surrealdb↔lance-graph |
| 53 | + seam, so the duplication never manifests at a call boundary. |
| 54 | +- The local-path variant of this crate (absolute `/home/user/...` paths) lives |
| 55 | + on `claude/perturbation-sim-nan-hardening`; this main version is the portable |
| 56 | + git-deps build. |
0 commit comments