merging teide with rayforce
summary: the parallel research project and the production system are now one repo. keeping the language. swapping the engine.
Core idea: the Teide merge was an architectural correction: keep Rayfall as the user surface, but move it onto the engine architecture that had become technically stronger.
Keep rayforce's surface. Swap to Teide's engine.
Rayforce has the language people use - the Rayfall VM, two and a half years of library hardening, a stable C ABI, the Python binding, the WASM SDK, real users. Teide has the engine I have wanted underneath that language all along - morsel-driven execution with no scalar fallback path, a multi-pass DAG optimiser, CSR-stored columns that let graph traversal fuse into the same pipeline as everything else.
Today the new repo - rayforce2 - is created with Teide's source tree as the initial commit. The first month is porting the Rayfall VM into it and making the language compile down to Teide's DAG.
This is the kind of decision that, written down, sounds clean. Living it is messier: weeks of API carve-out, primitives that have to be rewritten for the new execution model, a Python binding that has to learn a different memory model, a website that has to be revised to not lie about what is underneath. What I get, if I get it, is one system that has the surface users already know and the engine I have always wanted. What I lose is the comfort of two projects that did not have to know about each other. That comfort was always going to end.