Files
rods/CONTRIBUTING.md
Conner Majic ce137dd1c2 docs: sync governance and validation with hardening pass
Update contributor, security, validation, and compute handoff documentation to reflect new runtime safeguards, CI gates, and expected regression checks.

Made-with: Cursor
2026-04-17 08:23:37 -06:00

1.7 KiB

Contributing

Thanks for helping improve this project. The goal is deterministic, explainable rod-string / dynamometer simulation: C is the numerical source of truth; Node orchestrates; the GUI is workflow and visualization.

Before you start

Read (in order):

  1. AGENTS.md
  2. Agents/MATH_SPEC.md
  3. Agents/COMPUTE_PLAN.md

Local development

Prerequisites

  • gcc, make
  • Node.js 20+ and npm
  • Docker (optional, for compose / CI image)

Build C drivers (JSON on stdin)

From the repository root, follow the gcc commands in README.md or use CMake:

cmake -S solver-c -B solver-c/build
cmake --build solver-c/build

The API expects solver-c/solver_main and solver-c/solver_fea_main in the repo root layout (see docker-compose.yml and solver-api).

Run tests

make test
make test-solver-sanitize
cd gui-ts && npm run build

This runs solver-api Vitest, gui-ts Vitest, and solver-c/test_solver.

Pull requests

  • Keep changes focused; avoid drive-by refactors.
  • If you change solver equations or boundary conditions, update Agents/MATH_SPEC.md and the gap table in Agents/COMPUTE_PLAN.md.
  • If you change the JSON contract or HTTP responses, bump schemaVersion only with an explicit migration plan (see AGENTS.md).
  • Keep golden response behavior deterministic; only update data/golden/default.solve.sha256 when output changes are intentional and documented.

Coding style

  • Match existing formatting and naming in each package (solver-c, solver-api, gui-ts).
  • Prefer small, test-backed changes for numerics.

Security

See SECURITY.md.