Kirin documentation¶
The internal documentation for the Kirin autonomous chess system: the C++ engine, the hardware layer the robot ships, the services around them, and the fleet they run on.
This site carries two kinds of page, and the difference matters when they disagree:
The manual is hand-written and owns the reasoning — why a thing is built the way it is. It is the intent.
The API reference is generated from the sources under
kirin/srcon every push and owns the surface — what a symbol is and where it lives. It is current.
When the two disagree, that gap is worth a bug report either way.
Note
The manual is mid-migration from LaTeX (docs/docsite-docs/PLAN.md U2). Its
prose and all 70 decision records are here and searchable; docs/manual/kirin.pdf
remains the typeset article until the cutover.
Where to start¶
If you want to… |
Go to |
|---|---|
Understand how the system fits together |
|
Know why something is built the way it is |
|
Understand search, evaluation, or move generation |
|
Work on motion, sensing, or the physical board |
|
Follow a game, puzzle, or review session |
|
See how a run mode is selected |
The one seam worth knowing first¶
The engine reasons about piece types — it knows a black knight is on d5. The physical board needs piece identity, because a captured piece has to be driven to its own labelled storage slot, and two knights are not interchangeable once one of them is in a slot.
PieceTracker is where those two worlds reconcile. If you are touching capture
handling, storage routing, or path planning and something seems to have one fact
too few, this is almost always why.
Library boundary¶
kirin_engine has no hardware dependencies and builds and tests standalone;
kirin_hardware depends on it, never the reverse. CMake enforces this at link
time, and CI builds the engine on a machine with no board attached. Keeping that
boundary clean is what lets the same engine run in the product, on the lichess
bot, and under ctest.
Warning
Generated from the default branch on every push. A symbol appearing in the
reference is not a stability promise — none of this is a public API, and the only
consumers are in this repository and kirin-gui.