Skip to content

Pull Request Guidelines

Krishanth edited this page Oct 15, 2026 · 1 revision

Pull Request Guidelines

EveryO — Contribution Review, Validation & Merge Standards

Propose · Implement · Validate · Review · Approve · Merge

Contributions Python Code Quality License

A comprehensive guide to preparing, submitting, reviewing, approving, and merging high-quality contributions to EveryO.

Home · Contributing · Coding Standards · Testing and Quality Assurance


Project Maintainer: @krishanth7

Important

Repository Policy

Pull requests are evaluated for correctness, scope, maintainability, testing, documentation, security, and alignment with EveryO's technical direction.

Passing CI does not guarantee approval or merging.

This page documents existing repository policies and adds clearly identified recommendations for improving the review process.


Table of Contents

  1. Overview
  2. Pull Request Lifecycle
  3. Before Opening a Pull Request
  4. Finding or Creating an Issue
  5. Fork and Branch Workflow
  6. Branch Naming
  7. Scope and Change Management
  8. Implementation Requirements
  9. Testing Requirements
  10. Numerical Verification
  11. Code Quality Checks
  12. Documentation Requirements
  13. Security Review
  14. Pull Request Template
  15. PR Title and Description
  16. Opening the Pull Request
  17. Continuous Integration
  18. Review Process
  19. Responding to Feedback
  20. Approval and Merge Decisions
  21. Merge Strategies
  22. Special Contribution Categories
  23. Maintainer Review Checklist
  24. Post-Merge Responsibilities
  25. Common Rejection Reasons
  26. Frequently Asked Questions
  27. Official References
  28. Next Steps

1. Overview

Pull requests are the primary mechanism for proposing changes to EveryO.

A pull request provides a structured record of the problem, implementation, testing, technical discussion, and final decision.

1.1 Objectives

The review process aims to:

  • Protect mathematical correctness.
  • Preserve the framework's architecture.
  • Maintain CPU-only functionality.
  • Improve code quality.
  • Prevent regressions.
  • Support transparent collaboration.
  • Keep project history understandable.

1.2 Who Can Submit?

Contributions are welcome from:

  • Developers.
  • Researchers.
  • Students.
  • Educators.
  • Technical writers.
  • Software testers.
  • Open-source contributors.

Repository write access is not required to submit a pull request from a fork.


2. Pull Request Lifecycle

2.1 Standard Workflow

             Issue or Proposal
                    |
                    v
             Scope Confirmation
                    |
                    v
              Fork Repository
                    |
                    v
              Create Branch
                    |
                    v
             Implement Change
                    |
                    v
             Add / Update Tests
                    |
                    v
              Local Validation
                    |
                    v
              Push to GitHub
                    |
                    v
              Open Pull Request
                    |
                    v
              Automated Checks
                    |
                    v
              Maintainer Review
                    |
              +-----+------+
              |            |
              v            v
        Changes Needed   Approved
              |            |
              v            v
         Revise PR     Merge Decision
              |            |
              +----->------+ 
                           |
                           v
                      Merge / Close

2.2 Review States

State Meaning
Draft Work is not ready for final review
Open Contribution is awaiting checks or review
Changes requested Revision is needed
Approved Reviewer has accepted the proposed change
Merged Change has entered the target branch
Closed Pull request ended without merging

Approval and merging are distinct actions.


3. Before Opening a Pull Request

3.1 Preparation Checklist

  • Read CONTRIBUTING.md.
  • Review REPOSITORY_RULES.md.
  • Review the Code of Conduct.
  • Check existing issues and pull requests.
  • Understand the relevant source code.
  • Identify the expected behavior.
  • Plan the necessary tests.

3.2 Avoid Duplicate Work

Search:

EveryO Issues

EveryO Pull Requests

3.3 Architectural Proposals

Large architectural changes should begin with an issue or GitHub Discussion.

Describe:

  • The problem.
  • Proposed design.
  • Alternatives.
  • Compatibility impact.
  • Dependencies.
  • Risks.
  • Testing strategy.

Do not interpret the creation of a proposal as approval to merge its implementation.


4. Finding or Creating an Issue

4.1 Bug Fixes

Include:

  • Affected version.
  • Environment.
  • Minimal reproduction.
  • Expected behavior.
  • Actual behavior.
  • Relevant traceback.

4.2 Feature Requests

Explain:

  • User problem.
  • Proposed functionality.
  • API changes.
  • Alternatives.
  • Implementation scope.
  • Testing requirements.

4.3 Issue Linking

A pull request can reference an issue:

Closes #123

Use the correct issue number.

GitHub can automatically close linked issues when qualifying pull requests merge into the repository's default branch.

4.4 One Primary Problem

Keep one main bug or proposal per issue.

Avoid combining unrelated changes into a single contribution.


5. Fork and Branch Workflow

5.1 Fork the Repository

Open:

https://github.com/krishanth7/EveryO

Select Fork.

5.2 Clone Your Fork

git clone https://github.com/YOUR_USERNAME/EveryO.git

cd EveryO

5.3 Add Upstream

git remote add upstream \
  https://github.com/krishanth7/EveryO.git

5.4 Synchronize Main

git fetch upstream

git switch main

git merge --ff-only upstream/main

5.5 Create a Branch

git switch -c fix/dropout-scaling

5.6 Verify Branch

git branch --show-current

Avoid implementing unrelated changes directly on the default branch.


6. Branch Naming

The contribution guide recommends descriptive branch names.

6.1 Examples

fix/dropout-scaling
feature/new-activation
docs/improve-api-reference
test/autograd-regression
refactor/tensor-validation
perf/matmul-batching

6.2 Naming Principles

  • Keep names concise.
  • Describe the change.
  • Use lowercase where practical.
  • Prefer hyphens between words.
  • Avoid ambiguous names.

6.3 Enforcement

Branch prefixes such as fix/, feature/, and docs/ are appreciated but not enforced under the inspected contribution policy.


7. Scope and Change Management

EveryO prioritizes focused, reviewable changes.

7.1 Good Scope

A focused pull request might:

  • Correct one gradient bug.
  • Add one neural network layer.
  • Improve one documentation section.
  • Add regression tests for a specific defect.

7.2 Poor Scope

Avoid combining unrelated work such as:

  • Rewriting the tensor engine.
  • Changing the CLI.
  • Reformatting the entire repository.
  • Adding unrelated documentation.
  • Modifying multiple independent APIs.

7.3 Large Changes

For substantial work, consider splitting it into independently reviewable pull requests.

Recommended sequence:

  1. Tests or groundwork.
  2. Core implementation.
  3. Integration.
  4. Documentation.
  5. Follow-up improvements.

This is a suggested approach, not a mandatory PR-count requirement.


8. Implementation Requirements

EveryO's contribution policy establishes expectations for source changes.

8.1 Public Interfaces

Public functions and methods should include type hints.

Public modules, classes, and functions should include docstrings.

8.2 Architectural Requirements

  • Keep everyo.core dependent only on NumPy.
  • Preserve CPU-only operation.
  • Keep TensorFlow optional.
  • Keep CUDA optional.
  • Avoid mandatory network calls.
  • Avoid API-key requirements.

8.3 Error Handling

Errors should identify relevant values.

Preferred:

EveryOShapeError:
Cannot multiply matrices with shapes
(32, 64) and (128, 10).

Avoid ambiguous exceptions without useful context.

8.4 Maintainability

Prefer:

  • Small focused functions.
  • Clear naming.
  • Readable control flow.
  • Limited dependencies.
  • Documented assumptions.

9. Testing Requirements

Behavioral changes require appropriate tests.

9.1 Full Test Suite

python -m pytest -q

9.2 Repository Script

./scripts/test.sh

9.3 Fast Tests

./scripts/test.sh --fast

9.4 Coverage

./scripts/test.sh --coverage

9.5 Testing Matrix

Change Type Expected Testing
Bug fix Regression test
Tensor operation Forward and backward tests
Neural layer Shape, gradient, serialization
Optimizer Update correctness
Data pipeline Alignment and edge cases
CUDA kernel NumPy reference comparison
Serialization Save/load round trip
Documentation Example verification

9.6 CPU Requirement

The full core test suite must pass without CUDA or TensorFlow installed.

Optional-component tests should skip cleanly when their prerequisites are unavailable.


10. Numerical Verification

Numerical correctness is especially important for EveryO.

10.1 Gradient Testing

For a scalar-valued function:

[ f(x) ]

the central finite-difference approximation is:

[ \frac{\partial f}{\partial x_i} \approx \frac{f(x_i+\epsilon)-f(x_i-\epsilon)} {2\epsilon} ]

10.2 Required Practice

New differentiable tensor operations must include finite-difference gradient checks under the current contribution guide.

10.3 Test Example

import numpy as np
import everyo as eo

def test_square_gradient():
    x = eo.tensor(
        [2.0],
        requires_grad=True,
    )

    y = x * x
    y.backward()

    np.testing.assert_allclose(
        x.grad,
        [4.0],
    )

10.4 Additional Cases

Test:

  • Broadcasting.
  • Shape compatibility.
  • Gradient accumulation.
  • Extreme numerical values.
  • Reused tensors.
  • Invalid inputs.

11. Code Quality Checks

EveryO uses Ruff.

11.1 Lint

ruff check .

11.2 Formatting

ruff format --check .

11.3 Apply Fixes

ruff check . --fix

ruff format .

11.4 Repository Script

./scripts/lint.sh

Automatic fixes:

./scripts/lint.sh --fix

11.5 Compilation Check

The repository rules call for compilation checks.

A suitable local check is:

python -m compileall -q everyo

11.6 Important Note

Passing lint and formatting checks does not establish mathematical correctness.


12. Documentation Requirements

Changes to public behavior should include appropriate documentation updates.

12.1 Documentation Files

README.md
CHANGELOG.md
docs/
GitHub Wiki

12.2 Documentation Rules

  • Describe implemented behavior accurately.
  • Use valid API signatures.
  • Include executable examples where appropriate.
  • Document limitations.
  • Avoid unsupported performance claims.

12.3 Changelog

Update:

CHANGELOG.md

Use the Unreleased section for relevant new changes.

12.4 Feature Status

Distinguish:

Status Meaning
Available Implemented
Experimental Implemented with limitations
Planned Not implemented

Never describe planned functionality as available.


13. Security Review

Security is a required consideration for contributions.

13.1 Prohibited Submissions

EveryO's repository rules prohibit:

  • Malicious code.
  • Credential harvesting.
  • Undisclosed network activity.
  • Unauthorized telemetry.
  • Incompatibly licensed code.
  • Fabricated benchmarks or test results.
  • Unreviewed generated bulk changes.

13.2 Contributor Checklist

  • No credentials committed.
  • No private data included.
  • No unauthorized network activity.
  • External inputs validated.
  • Serialization remains appropriately safe.
  • Dependencies reviewed.

13.3 Vulnerability Reporting

Do not disclose vulnerabilities publicly before coordinated disclosure.

Use:

GitHub Private Vulnerability Reporting


14. Pull Request Template

EveryO provides an existing pull request template.

Source: .github/PULL_REQUEST_TEMPLATE.md

14.1 Existing Template Structure

The repository template includes:

## Summary

<!-- What does this change do, and why? -->

## Type of change

- [ ] Bug fix
- [ ] New feature
- [ ] Documentation
- [ ] Performance
- [ ] Refactor / internal cleanup
- [ ] Build, CI or tooling

## Testing

<!-- Which commands did you run, and what was the result? -->

## Checklist

- [ ] New behaviour is covered by tests, and the full suite passes on CPU.
- [ ] Ruff lint and formatting pass.
- [ ] Public APIs have type hints and docstrings.
- [ ] Core tests do not require optional backends or API keys.
- [ ] No credentials or private data are included.
- [ ] Documentation and changelog are updated where relevant.
- [ ] Planned features are not described as available.

## CUDA changes only

- [ ] Kernel results compared with NumPy.
- [ ] Bounds checking and CUDA error checking included.
- [ ] CPU path works without the extension.

The above is a condensed representation of the existing template.

14.2 Recommended Additional Information

For complex changes, contributors may also include:

  • Related issue.
  • Design rationale.
  • Alternatives considered.
  • Compatibility impact.
  • Benchmark methodology.
  • Known limitations.

15. PR Title and Description

15.1 Recommended Title Format

type(scope): concise description

Examples:

fix(autograd): correct broadcast gradient

feat(nn): add activation layer

test(core): expand numerical verification

docs(wiki): improve developer documentation

perf(data): reduce redundant allocations

This title format is recommended, not an enforced repository rule.

15.2 Description Quality

A good description answers:

  1. What problem does this solve?
  2. Why is the change necessary?
  3. How was it implemented?
  4. How was it tested?
  5. What could it affect?

15.3 Example

## Summary

Fix incorrect gradient reduction for broadcast operands.

## Motivation

The existing backward calculation produces an incorrect
gradient shape for selected broadcast operations.

## Implementation

Update gradient reduction logic to account for
broadcast dimensions.

## Testing

- Added regression tests.
- Added finite-difference verification.
- Ran the CPU test suite.
- Ran Ruff checks.

## Compatibility

No intended public API changes.

## Related Issues

Closes #123

Replace example issue numbers with actual repository references.


16. Opening the Pull Request

16.1 Stage Changes

git add .

Review staged changes before committing:

git diff --cached

16.2 Commit

git commit -m "fix(autograd): correct broadcast gradient"

16.3 Push

git push -u origin fix/dropout-scaling

Use your actual branch name consistently.

16.4 Open GitHub

EveryO Pull Requests

Select New pull request.

16.5 Configure Branches

Confirm:

  • Base repository: krishanth7/EveryO.
  • Base branch: main, unless otherwise instructed.
  • Head repository: your fork.
  • Compare branch: your contribution branch.

16.6 Submit

Complete the template and create the pull request.

Use a draft pull request when the work is not ready for final review.


17. Continuous Integration

EveryO uses GitHub Actions.

17.1 Existing Workflow

tests.yml

17.2 Validation Areas

The repository's CI includes:

  • Python tests.
  • Ruff linting.
  • Formatting checks.
  • TensorFlow integration.
  • ONNX testing.
  • Example execution.
  • Package build validation.

17.3 CI Review

After pushing:

  1. Open the PR's Checks tab.
  2. Inspect the running workflows.
  3. Review failed jobs.
  4. Reproduce failures locally.
  5. Push corrections.
  6. Confirm the checks rerun.

17.4 Important Distinction

A workflow existing in the repository does not mean that the current PR passed it.

Check the actual workflow run.


18. Review Process

Reviewers assess both technical correctness and project suitability.

18.1 Review Criteria

Criterion Review Question
Correctness Does the implementation work?
Mathematics Are numerical results valid?
Architecture Are boundaries respected?
Testing Is behavior verified?
Compatibility Are existing users affected?
Security Are new risks introduced?
Documentation Are changes explained?
Maintainability Is the code understandable?

18.2 Review Outcomes

Reviewers may:

  • Approve.
  • Comment.
  • Request changes.

Maintainers may additionally decide to merge, defer, or close a pull request.

18.3 Review Principles

Feedback should be:

  • Specific.
  • Respectful.
  • Actionable.
  • Technically grounded.
  • Focused on the contribution.

19. Responding to Feedback

Review feedback is part of collaborative engineering.

19.1 Recommended Response

  1. Read the comment carefully.
  2. Confirm the technical concern.
  3. Ask for clarification if necessary.
  4. Make the requested change or explain an alternative.
  5. Add tests when appropriate.
  6. Push the updated branch.
  7. Reply with a concise explanation.

19.2 Example Response

Updated the gradient reduction logic and added
a finite-difference regression test.

The CPU test suite and Ruff checks were run locally.

Only report checks actually performed.

19.3 Resolving Conversations

Review conversations should be resolved after the concern is addressed or an agreed decision is recorded.

Avoid marking unresolved technical concerns as completed.


20. Approval and Merge Decisions

EveryO's governance gives the maintainer final decision-making authority when consensus cannot be reached.

20.1 Approval Criteria

  • Correct implementation.
  • Appropriate tests.
  • Acceptable architecture.
  • Security review.
  • Documentation quality.
  • Project alignment.

20.2 Recommended Merge Gates

The following are proposed controls:

Gate Recommended Condition
CI Required checks pass
Review At least one authorized approval
Conversations Blocking concerns resolved
Security No unresolved critical issues
Scope Change remains focused
Documentation Relevant updates complete

These recommendations are not proof that corresponding GitHub branch protection rules are configured.

20.3 Maintainer Authority

The maintainer may:

  • Request revisions.
  • Approve changes.
  • Defer proposals.
  • Squash commits.
  • Close out-of-scope work.
  • Reject technically unsuitable changes.

21. Merge Strategies

GitHub supports several merge strategies.

21.1 Merge Commit

Preserves the branch's commits and adds a merge commit.

21.2 Squash and Merge

Combines the pull request's commits into one commit on the target branch.

21.3 Rebase and Merge

Replays commits onto the target branch without a merge commit.

21.4 Recommended Strategy

For small, focused changes, squash merging often produces a readable project history.

For substantial multi-commit changes, preserving individual commits may be useful.

The appropriate strategy remains a maintainer decision and depends on the repository's enabled merge settings.


22. Special Contribution Categories

22.1 Tensor and Autograd Changes

Require:

  • Forward correctness.
  • Backward correctness.
  • Finite-difference verification.
  • Broadcasting tests.
  • Edge-case validation.

22.2 Neural Network Layers

Require:

  • Correct module registration.
  • Parameter handling.
  • Forward behavior.
  • Gradient tests.
  • Serialization round trip.

22.3 CUDA Changes

Require:

  • Bounds checking.
  • CUDA error checking.
  • Safe device-memory management.
  • NumPy comparison.
  • CPU fallback.
  • Hardware disclosure.

22.4 Performance Changes

Require reproducible evidence.

Recommended benchmark details:

  • Hardware.
  • Python version.
  • Input shape.
  • Dtype.
  • Baseline timing.
  • Modified timing.
  • Repetitions.
  • Correctness comparison.

22.5 Documentation Changes

Require accurate API references and correct examples.

Documentation-only changes may not need new runtime tests, but existing relevant checks should still be respected.

22.6 Security Changes

Sensitive vulnerability details must follow private disclosure procedures.


23. Maintainer Review Checklist

Technical Review

  • Problem and scope are clear.
  • Implementation is correct.
  • Architecture is respected.
  • Public APIs remain appropriate.
  • Tests cover relevant behavior.
  • Numerical results are verified.

Quality Review

  • Lint passes.
  • Formatting passes.
  • CI results reviewed.
  • Documentation updated.
  • Compatibility impact assessed.
  • No unnecessary dependencies introduced.

Security Review

  • No credentials included.
  • No malicious behavior.
  • No unauthorized telemetry.
  • No unsafe input handling.
  • No unsupported claims.

Merge Decision

  • Blocking concerns addressed.
  • Authorized approval obtained where required.
  • Merge strategy selected.
  • Release implications understood.

24. Post-Merge Responsibilities

Merging a pull request may require additional follow-up work.

24.1 Contributor Actions

  • Confirm the merge.
  • Review follow-up issues.
  • Update related discussions when appropriate.
  • Remove obsolete local branches.

24.2 Delete Local Branch

After merging and updating your local main branch:

git switch main

git branch -d fix/dropout-scaling

24.3 Delete Remote Branch

For a branch in your fork:

git push origin --delete fix/dropout-scaling

Use the actual branch name.

24.4 Maintainer Actions

Depending on the change:

  • Confirm issue closure.
  • Update release notes.
  • Monitor regressions.
  • Record follow-up work.
  • Include the change in an appropriate release.

25. Common Rejection Reasons

A pull request may be rejected or closed for several reasons.

25.1 Technical Reasons

  • Incorrect mathematical behavior.
  • Missing regression tests.
  • Unsupported architectural changes.
  • Broken CPU compatibility.
  • Unnecessary dependencies.
  • Poor maintainability.

25.2 Process Reasons

  • Unrelated changes combined.
  • Incomplete description.
  • Unresolved review feedback.
  • Significant unapproved scope expansion.
  • Repeated failure to follow repository policies.

25.3 Security and Integrity Reasons

  • Malicious code.
  • Credential harvesting.
  • Incompatible licensing.
  • Fabricated results.
  • Undisclosed network activity.
  • Unreviewed generated bulk changes.

25.4 Closure Is Not Always Rejection

A pull request may be closed because it is:

  • Duplicated.
  • Superseded.
  • No longer required.
  • Deferred.
  • Out of scope.

Maintainers should provide context where practical.


26. Frequently Asked Questions

Can I submit a pull request without repository write access?

Yes. Fork EveryO, push your changes to your fork, and open a pull request.

Must every pull request have an issue?

The repository supports bounded improvements through issues or pull requests. Large architectural changes should begin with a discussion or design issue.

Can I submit a documentation-only pull request?

Yes. Documentation improvements are welcome.

Do I need CUDA hardware?

Not for ordinary CPU contributions. CUDA-specific changes require appropriate validation and honest disclosure of the hardware used.

Does passing CI guarantee merge approval?

No. Maintainers also evaluate correctness, maintainability, security, scope, and project direction.

Can I submit AI-generated code?

The repository prohibits unreviewed and unvalidated generated bulk changes. Contributors remain responsible for understanding, reviewing, testing, and validating everything they submit.

Who makes the final merge decision?

The project maintainer has final authority under the repository's governance policy.


27. Official References

Resource Link
EveryO Repository GitHub
Pull Requests Open Pull Requests
Pull Request Template PULL_REQUEST_TEMPLATE.md
Contribution Guide CONTRIBUTING.md
Repository Rules REPOSITORY_RULES.md
Governance GOVERNANCE.md
Code of Conduct CODE_OF_CONDUCT.md
Security Policy SECURITY.md
CI Workflow tests.yml
Project Configuration pyproject.toml
Changelog CHANGELOG.md
GitHub Actions Workflow Runs

28. Next Steps

Continue with EveryO's engineering and governance documentation.

Page Focus
Release Process Versioning, packaging, publishing, and release approval
Coding Standards Source conventions and maintainability
Contributing Contributor onboarding
Testing and Quality Assurance Automated validation
Development Setup Local environment configuration

Wiki links become active after the corresponding pages are created.


Pull Request Guidelines — Documentation Prepared

Next Recommended Page: Release Process →

Home · Contributing · Coding Standards


EveryO — Open Machine Learning. Built for Developers.

Project Maintainer: @krishanth7

Open Source · MIT Licensed · Community Driven

© 2026 EveryO Contributors

Clone this wiki locally