Thank you for contributing to Vajra. This repository contains one canonical gem under gems/vajra, a product documentation site under docs/, and the automation and governance files used to validate and release the project.
| Path | Purpose |
|---|---|
gems/vajra/ |
Canonical gem, executable, signatures, and native code |
docs/ |
Product documentation site |
.github/ |
Workflows, issue templates, release drafting, guidance |
danger/ |
Pull request automation |
scripts/ |
Root-level verification helpers |
Use Ruby 3.2+ and run package-local commands from gems/vajra unless a root script explicitly says otherwise.
cd gems/vajra
bundle install
bin/rspec
bin/rspec-unit
bin/rspec-e2e
bin/rubocop
bin/reek
bundle exec rbs -I sig validate
bundle exec exe/vajraThe native extension source of truth lives under gems/vajra/ext/vajra/. When Ruby files are split by responsibility, mirror that split in direct specs under gems/vajra/spec/ where the file owns behavior. Unit tests are unit tests with coverage. bin/rspec-e2e is the integration lane with NO_COVERAGE=1.
The docs site is built with Jekyll and Just the Docs.
cd docs
bundle install
bundle exec jekyll serveUpdate docs whenever commands, paths, runtime behavior, or support boundaries change. The intended public docs host is vajra.codevedas.com.
Before opening a PR:
- Create a branch using a meaningful prefix such as
feat/,bugfix/,docs/,chore/, orci/. - Run the relevant local checks.
- Update docs when behavior or usage changes.
- Complete the PR template with enough detail for reviewers.
The root verification flow is:
scripts/ci-install-bundles
scripts/run-allThat flow covers unit tests with coverage, e2e integration tests without coverage, clean native rebuild verification, package build validation, and docs build validation.
To report a security issue, follow SECURITY.md.
- Create
release/<version>frommain. - Update
gems/vajra/lib/vajra/version.rb. Update the gemspec only when release metadata changes. - Update
CHANGELOG.md, root docs, and package docs for the release. - Run
scripts/run-all. - Open a PR to
mainand label it appropriately. - After merge, create a GitHub Release with tag
v<version>. - Docs are published through
.github/workflows/jekyll-gh-pages.ymltovajra.codevedas.com. - The release workflow publishes the gem from
gems/vajra.