Update contributor, security, validation, and compute handoff documentation to reflect new runtime safeguards, CI gates, and expected regression checks. Made-with: Cursor
1.7 KiB
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):
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
schemaVersiononly with an explicit migration plan (see AGENTS.md). - Keep golden response behavior deterministic; only update
data/golden/default.solve.sha256when 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.