Thanks for contributing.
- All contributions are licensed under MPL-2.0.
- By submitting code, docs, or tests, you agree to license your contribution under MPL-2.0.
- Keep changes small, reviewable, and test-backed.
- For bug fixes: each fix must include or update a test that would fail before the fix.
- OpenResty (
resty) in PATH - LuaJIT 2.1+
- Python 3.12+ (for E2E tests)
- Docker (for E2E)
Run before opening a PR:
luacheck src/ cli/ spec/ --std luajit --globals ngx --no-unused-args --max-line-length 120
busted spec/unit/
busted spec/integration/
pytest tests/e2e -vIf your change does not affect E2E behavior, still run at least unit/integration suites.
.github/workflows/ci.ymlruns on PRs and pushes tomaster:luacheck- unit tests (
busted spec/unit/) - integration tests (
busted spec/integration/) - quality checks (JSON validity, docs path sanity, changelog
[Unreleased])
.github/workflows/release.ymlruns on release tags (vMAJOR.MINOR.PATCH):- changelog version presence check
- full Lua suite (
busted spec/) - Docker E2E suite (
pytest tests/e2e -v)
Follow project conventions from:
AGENTS.mdconstitution.md
Key expectations:
- Lua code style and module boundaries are mandatory.
- No global state except
ngx. - Deterministic rule behavior for the same input.
- Open or link an issue describing the problem.
- Create a branch from
masterand implement a focused change. - Add/update tests.
- Fill in the PR template completely.
- Address review feedback with additional tests where needed.
- Prefer small atomic commits.
- Explain behavior changes, not only code movement.
- Reference issue IDs in commit messages when relevant.
Do not open public issues for vulnerabilities.
Use SECURITY.md disclosure flow.