# hg_cpp

A clean-slate, **C++-first** implementation of the
[hgraph](https://github.com/hgraph-io/hgraph) functional-reactive time-series
runtime. The C++ runtime is the source of truth. Python provides wiring
compatibility and supports Python-authored nodes running inside that runtime.

## Python release candidate

Release candidates are published under the `hg_cpp` distribution name:

```sh
python -m pip install hg_cpp==0.4.0rc1
```

The distribution exposes the `hgraph` import package and the native `_hgraph`
extension. Install it in an isolated environment rather than alongside the
main `hgraph` distribution, since both provide the same Python import namespace.
One wheel per supported platform covers CPython 3.12 and later through the
CPython stable ABI. The supported Python and platform policy is recorded in
`docs/source/developer_guide/release_readiness.rst`.

## Build & test

```sh
cmake -S . -B build                 # configure (fmt + Catch2 fetched if absent)
cmake --build build -j              # build hgraph_core + tests
ctest --test-dir build --output-on-failure
```

Requires a C++23 compiler and CMake >= 3.25. Python/nanobind are **not** needed
for the default build (bindings are opt-in via `-DHGRAPH_BUILD_PYTHON_BINDINGS=ON`).

## Documentation

Sphinx docs live under `docs/source` (`uv sync --extra docs`, then
`uv run sphinx-build -W -b html docs/source docs/_build/html`):

- **User guide** — start at `docs/source/user_guide/quick_start.rst`, then the
  authoring/testing guides for nodes, graphs, and the `eval_node` harness.
- **Developer guide** — the authoritative design records
  (`docs/source/developer_guide/`): architecture, data structures,
  wiring, nested graphs, mesh, services, error handling, operators, roadmap.

## Contributing / AI sessions

- [`AGENTS.md`](AGENTS.md) — canonical project direction: goals, build
  philosophy, source layout, dependency policy, git hygiene.
- [`CLAUDE.md`](CLAUDE.md) — the operational working guide: the enforced
  design-first workflow (docs change in the same commit as code), guardrails,
  architecture map, and current state.
- The read-only `ext/main` tree is the canonical Python `hgraph` reference.
