--- name: edge-contribution description: Prepare, validate, submit, triage, and review open-source contributions to the shared Edge RV framework in edge-cores. Use when contributors need to file a centralized edge-cores issue, fork the repository, modify public edge-rv RTL or related software, choose regression tests, write a structured GitHub pull request, respond to review, or provide evidence suitable for human and agent-assisted issue and PR review. --- # Contribute to Edge RV Help the community evolve the shared public Edge RV framework through small, tested, reviewable pull requests. ## Work through a fork 1. Fork `https://github.com/exeex/edge-cores` into the contributor's GitHub account. 2. Clone the fork and add the canonical repository as `upstream`. 3. Create a focused branch from current `upstream/main`. 4. Keep unrelated changes out of the branch. Never commit build products, private RTL, credentials, or generated reports. 5. Modify public source and tests. Preserve existing public/private boundaries; do not edit generated `src/edge-e3enc/edge_e3enc.v` as design source. 6. Rebase or merge current `upstream/main`, rerun affected tests, push the branch, and open a pull request against `exeex/edge-cores:main`. Do not create a fork, push, or open a PR unless the user explicitly authorizes that external action. Local branches, edits, and tests remain normal implementation steps when requested. ## File every issue in edge-cores Open all project issues at `https://github.com/exeex/edge-cores/issues`, even when the affected code lives in `src/edge-rv`, `src/edge-e3enc`, another submodule, an example, or the software stack. Do not split community discussion across submodule issue trackers. Follow `.github/ISSUE_TEMPLATE/edge_issue.md` and include the affected area, revision, reproduction steps, observed/expected behavior, environment, and available logs. Search existing edge-cores issues first and add evidence to an existing issue when it covers the same problem. Read [references/issue-triage.md](references/issue-triage.md) when preparing an issue for periodic agent review or when reviewing and replying to the issue queue. Do not create, comment on, label, or close a GitHub issue unless the user has authorized that external action. ## Make a reviewable change - Read `CONTRIBUTING.md` and `LICENSING.md` before editing. Contributions to files maintained directly by edge-cores use `Apache-2.0`; contributions to a submodule use that submodule's license, including `CERN-OHL-P-2.0` for `src/edge-rv`. - State the problem and why it belongs in the shared Edge RV framework. - Prefer one architectural idea or bug fix per PR. - Add or update a focused test that fails without the change when practical. - Preserve instruction encodings, module ports, parameter defaults, and software ABI unless the PR explicitly proposes a migration. - Document correctness, performance, area, or complexity tradeoffs instead of presenting an optimization as universally better. - Treat existing user changes as owned work; do not rewrite unrelated files. ## Validate before submission Read [references/test-matrix.md](references/test-matrix.md), select tests from the changed surfaces, and run the smallest relevant test first. A ready PR must report exact commands and outcomes. Use a Draft PR when important tests remain unavailable or failing, and explain why. For changes to public `src/edge-rv` RTL, run at least: ```sh ./scripts/build-verilator.sh ./example/hello/run.sh ./example/tensor/run.sh ./example/actu/run.sh ``` Add compiler/runtime and Llama regressions when those surfaces are affected. Do not write “all tests pass” unless the listed commands actually completed successfully. Do not initialize private RTL to make a public regression pass. ## Write the pull request Follow `.github/pull_request_template.md`. Keep the PR body self-contained so a maintainer or review agent can understand the change without reconstructing the implementation from chat history. Include: - problem, motivation, and scope; - architectural, encoding, ABI, or compatibility impact; - exact validation commands and PASS/FAIL results; - untested cases, known limitations, and risk; - generated artifacts or benchmark assumptions, when relevant; and - specific areas where review attention is requested. Read [references/review-guide.md](references/review-guide.md) when reviewing a PR or preparing it for agent-assisted review. ## Iterate after review Answer review comments with code or evidence. Keep follow-up commits scoped, rerun tests affected by each revision, and update the PR validation table. Never hide a regression by loosening a golden result, tolerance, timeout, or skip list without explaining and justifying that semantic change. Before handoff, report the branch, changed files, tests run, remaining risks, and whether the PR is draft or ready.