Contributing

From MemCP
Revision as of 11:59, 28 August 2026 by Wikiservice (talk | contribs) (Refresh MemCP documentation: accuracy, operational guidance, performance profile and maintained API reference)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Contributing

MemCP welcomes focused contributions to the storage engine, Scheme runtime, SQL frontends, query planner, tests, documentation, packaging, and operational tooling. A useful change starts with an observable problem or clearly bounded feature, explains its semantic and performance impact, and includes evidence that existing behavior remains intact.

Current work is tracked in the GitHub issue tracker. Discuss large semantic, persistence-format, planner-architecture, or compatibility changes before implementation so the design and required migration path are understood. Documentation fixes should preserve valuable historical explanations while clearly separating current behavior, measured results, and future architecture.

Development workflow

  1. Fork or clone the repository.
  2. Create a dedicated branch and worktree for one change.
  3. Add successful and must-fail tests for every behavior change.
  4. Run make test before pushing code or test changes.
  5. Open a pull request against master and wait for green CI.

SQL integration tests are YAML files below tests/; Scheme runtime tests live in lib/test.scm. Planner work must follow INVARIANTS.md and keep logical planning separate from physical scans, RecSets, ORC columns, and helper tables. Storage changes must preserve locking, durability, cleanup, and binary-format compatibility contracts documented in AGENTS.md and the engine semantics documentation.

Do not use the wiki as a TODO tracker. A report should include the MemCP commit, minimal schema/query, expected and actual result, frontend, ENGINE, and restart behavior.