Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ contact_links:
url: https://vectordb-ntu.github.io/RaBitQ-Library/
about: Find installation instructions, examples, and index guides.
- name: Maintenance and feedback
url: https://github.com/VectorDB-NTU/RaBitQ-Library/blob/main/ROADMAP.md
url: https://github.com/VectorDB-NTU/RaBitQ-Library/blob/main/CONTRIBUTING.md#feedback-and-further-reading
about: Find the maintainer, contribution guide, and published releases.
2 changes: 1 addition & 1 deletion .github/scripts/test_ci_changes.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ def test_ci_routing_changes_run_full_pr_ci_but_not_repeat_on_tagged_main(self):
".github/scripts/test_ci_changes.py",
".github/workflows/changes.yml",
".github/workflows/test.yaml",
"MAINTAINING.md",
"docs/maintaining.md",
]
changed = "\0".join(paths) + "\0"
with patch("ci_changes.git", side_effect=["merge-base", changed]):
Expand Down
10 changes: 5 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ factors estimate L2 distance or inner product.
| `tests/unit/`, `tests/python/` | C++ reference/unit tests and Python boundary/integration tests |
| `docs/docs/` | MkDocs site sources |

See [README.md](README.md) for usage, [DEVELOPMENT.md](DEVELOPMENT.md) for tool setup and
[implementation recipes](DEVELOPMENT.md#implementation-recipes), and
See [README.md](README.md) for usage, [docs/development.md](docs/development.md) for tool setup and
[implementation recipes](docs/development.md#implementation-recipes), and
[tests/README.md](tests/README.md) for build and test commands.

CMake exposes `rabitqlib::core`, `rabitqlib::fastscan` (depending on core), and
Expand Down Expand Up @@ -100,7 +100,7 @@ workspace APIs must never silently fall back to heap allocation or spawn worker
Run the smallest relevant check first, then broaden for shared contracts and regression risk.
Apply all matching rows; these are conditional requirements, not a checklist for every edit.
Run tests in the foreground. Use the existing project interpreter wherever commands say `python`.
Tool versions and installation instructions are maintained in [DEVELOPMENT.md](DEVELOPMENT.md).
Tool versions and installation instructions are maintained in [docs/development.md](docs/development.md).

| Change | Required verification |
| --- | --- |
Expand All @@ -121,7 +121,7 @@ If a required tool, dependency, or supported CPU is unavailable, report the bloc
still needed; do not silently skip it or replace the user's environment.
When a check fails, determine whether the change caused it. Fix introduced failures; report
unrelated baseline failures without expanding scope. Preserve user edits when comparing baselines.
For focused static analysis, use the recipe in [DEVELOPMENT.md](DEVELOPMENT.md#focused-static-analysis).
For focused static analysis, use the recipe in [docs/development.md](docs/development.md#focused-static-analysis).

Behavior changes require focused regression coverage. Python-visible core changes normally need
both an underlying C++ test and a Python boundary test; Python-only changes need Python coverage.
Expand Down Expand Up @@ -166,7 +166,7 @@ Recommended:
`src/fastscan/fastscan_dispatch.cpp`; HNSW dispatch lives in
`src/index/hnsw_dispatch.cpp` so core never references index search symbols.
Keep calculations in backend source files; see the dispatch coverage table in
[DEVELOPMENT.md](DEVELOPMENT.md#dispatch-conventions-and-coverage).
[docs/development.md](docs/development.md#dispatch-conventions-and-coverage).
- Dispatch caches function pointers in thread-safe function-local statics so calls before `main()`
are safe regardless of translation-unit initialization order. Detection must use safe generic
code; never execute a high-ISA kernel to find out whether the CPU supports it.
Expand Down
25 changes: 15 additions & 10 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,17 +122,17 @@ test during development, then apply every matching row below before submitting.
| --- | --- |
| Repository Markdown | Check accuracy and local links; `git diff --check` |
| Documentation site | Above, plus the strict MkDocs build shown above |
| Python sources | [Python lint and formatting](DEVELOPMENT.md#python-formatting-and-linting), plus affected tests with `python -m pytest` |
| First-party C++ | [C++ formatting](DEVELOPMENT.md#c-formatting), affected build/tests, and [static analysis](DEVELOPMENT.md#static-analysis); focused analysis is sufficient during iteration |
| Python sources | [Python lint and formatting](docs/development.md#python-formatting-and-linting), plus affected tests with `python -m pytest` |
| First-party C++ | [C++ formatting](docs/development.md#c-formatting), affected build/tests, and [static analysis](docs/development.md#static-analysis); focused analysis is sufficient during iteration |
| Bindings or Python-visible C++ behavior | Both Python and C++ checks; reinstall before testing and verify package/extension paths as described below |
| Examples | Run the example and its language checks |
| Shell scripts | [ShellCheck](DEVELOPMENT.md#shell-scripts) on affected scripts |
| Shell scripts | [ShellCheck](docs/development.md#shell-scripts) on affected scripts |

For shared code or changes affecting multiple indexes, run the full relevant
C++ or Python suite. Changes to SIMD, metrics, packing, persistence, hot paths,
or build configuration also need the applicable
[specialized checks](AGENTS.md#verification-by-change-type). Consult the
[implementation recipes](DEVELOPMENT.md#implementation-recipes) before changing
[implementation recipes](docs/development.md#implementation-recipes) before changing
these contracts; preserve public APIs and stored index formats unless a breaking
change has been agreed on.

Expand All @@ -144,11 +144,11 @@ In your PR, describe:

**CI and merge requirements:** CI selects jobs from the changed files and may
run broader checks than your focused local tests. Core library and binding changes
require the full [static analysis check](DEVELOPMENT.md#static-analysis) before merging.
require the full [static analysis check](docs/development.md#static-analysis) before merging.
Tests and examples are intentionally excluded from CI clang-tidy; use focused
local analysis for substantial logic changes.
If a tool or supported CPU is unavailable, explain that in the PR so the
maintainer can help arrange validation. See [CI routing](MAINTAINING.md#checks-selected-by-changed-files)
maintainer can help arrange validation. See [CI routing](docs/maintaining.md#checks-selected-by-changed-files)
for details.

## If setup fails
Expand All @@ -158,7 +158,7 @@ for details.
| CMake cannot find OpenMP or a compiler | Check the [platform-specific prerequisites](tests/README.md#prerequisites). On Apple Silicon, install `libomp` and pass its prefix as `OpenMP_ROOT`. Include the compiler version and CMake error when asking for help. |
| Unsupported CPU or architecture | Use Linux or Windows x86-64 with AVX2/FMA, or Linux or macOS ARM64 with NEON. Disabling native tuning does not add an unsupported architecture. Report your CPU model in the issue or PR. |
| Tests do not reflect your Python or C++ edits | Re-run the platform-specific install command above in the active environment, then check the import paths below. Re-run the regression test that exercises your change. |
| Formatting or analysis reports the wrong tool version | Use the pinned versions and executable overrides in the [development reference](DEVELOPMENT.md). |
| Formatting or analysis reports the wrong tool version | Use the pinned versions and executable overrides in the [development reference](docs/development.md). |

Check which installed package and extension Python imports:

Expand Down Expand Up @@ -186,7 +186,12 @@ another. Each task can be a separate PR.
reviews. Review timing depends on availability; keep questions in the relevant
issue or PR so others can learn from the answers.

- [Development reference](DEVELOPMENT.md): formatters, analysis,
- [Development reference](docs/development.md): formatters, analysis,
performance requirements, and implementation recipes.
- [Maintainer reference](MAINTAINING.md): CI routing, releases, and PR labels.
- [Roadmap and project contacts](ROADMAP.md).
- [Maintainer reference](docs/maintaining.md): CI routing, releases, and PR labels.

Use [GitHub Issues](https://github.com/VectorDB-NTU/RaBitQ-Library/issues/new/choose)
for bug reports, feature requests, and usage or contribution questions. Check
existing issues first. See [your first contribution](#your-first-contribution)
to get started and [GitHub Releases](https://github.com/VectorDB-NTU/RaBitQ-Library/releases)
for published changes.
Loading
Loading