1
Agree on the problem and scope
Small fixes and documentation changes can usually be submitted directly. Before building a new feature, significant UI change, model, provider, platform integration, dependency, public API, schema change, or architectural refactor, discuss the problem and direction in an issue.An issue, working implementation, or agreed direction does not guarantee acceptance.
2
Follow the owning component
Read the affected crate’s README and repository rules. Update every in-repository consumer when APIs or schemas change; do not add compatibility aliases. Keep provider defaults with their provider and safe APIs separate from unsafe FFI and dynamic loading.Preserve checkpoint-affecting structure in model ports. Compare structured outputs on identical inputs. Explain ownership, invariants, upstream mapping, or deliberate divergences in comments.
3
Verify the change
Review the whole diff. Run the smallest relevant debug check or focused test once, format affected code, and run
git diff --check.Supply screenshots for UI changes, device/input/baseline/result/correctness for performance work, and structured comparisons for model ports. State any checks that could not run.4
Open a focused pull request
Explain the problem, solution, important behavior or ownership changes, and validation. Keep unrelated refactoring out. Be ready to revise the change and ask when review feedback is unclear.