This project favors small, reviewable changes and fast feedback. Reliability rules should protect the main learning flow without turning minor edits into a release ceremony.
- Start from an up-to-date
mainbranch. - Create a short-lived branch such as
feature/clarification-flow,fix/url-timeout, ordocs/review-policy. - Keep the diff focused on one user-visible outcome.
- Run
npm run cibefore opening a pull request. - Complete the pull request template, including risk and rollback notes.
- Merge only after required checks pass and review comments are resolved.
Do not push feature work directly to main. Do not force-push shared branches.
| Risk | Typical changes | Required review |
|---|---|---|
| Low | Copy, documentation, isolated styles | Passing CI and recorded self-review; a second reviewer is optional |
| Medium | User interaction, API response, shared behavior | Passing CI and one substantive review when another maintainer is available |
| High | URL fetching, security boundaries, deployment, compatibility | Passing CI and approval from a maintainer other than the author |
A review is substantive when it checks behavior, failure modes, scope, tests, and rollback. An approval without reading the diff does not satisfy this policy.
For a single-maintainer repository, GitHub cannot provide an independent approval. Use the PR checklist, review the final diff after a short context break, and require CI. Add mandatory independent approval once a second maintainer is active; do not configure a branch rule that makes emergency maintenance impossible before then.
Run the same command used by GitHub Actions:
npm run ciIt performs JavaScript syntax checks and starts a real local server for smoke tests covering:
- the compact window entry page;
- precise term analysis;
- ambiguous-term clarification;
- clarified summaries;
- follow-up usage and examples;
- private-network URL protection.
UI changes also require a manual desktop check. Changes to the mobile breakpoint require a mobile viewport check. Add a regression test whenever a bug can be expressed reliably at the API or DOM level.
A change is ready to merge when:
- its user-visible outcome is described;
- the diff contains no unrelated cleanup;
- loading, empty, error, and recovery states were considered;
- behavior changes have focused tests;
npm run cipasses;- the rollback plan is clear;
- review comments are resolved.
Use semantic versions:
- patch: fixes with no intended contract change;
- minor: backward-compatible features;
- major: incompatible behavior or API changes.
Update CHANGELOG.md, merge the release PR, and create a matching vX.Y.Z tag. The default rollback is a GitHub revert PR. If a change alters stored data or an external contract, document the additional rollback steps before merge.
An urgent production fix may use a shortened PR, but it still requires the smoke check and a written rollback plan. Complete any skipped review or regression test immediately after service is restored.