Files
Ransom-s-wake/CONTRIBUTING.md
T

54 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Contributing to Ransom's Wake
## Definition of ready
Before implementation, a change must identify:
- the player-visible outcome;
- the owning production layer;
- the authoritative source of state;
- the behavior that will prove completion;
- any save, input, accessibility or performance consequence.
If ownership is unclear, resolve it before writing code. If a change introduces
a new dependency direction or global service, write an ADR first.
## Definition of done
A change is complete only when:
- no second implementation of the same rule exists;
- public boundaries use explicit typed data;
- unit tests cover new domain behavior;
- integration tests cover changed scene or service wiring;
- every corrected bug has a regression test, or a documented reason why not;
- error and empty states are handled;
- relevant documentation and baselines are updated;
- `bash scripts/quality_gate.sh` passes from the repository root.
Visual behavior additionally requires a check at 1280 × 720 and at the smallest
supported in-game presentation size. Human readability cannot be inferred from
mesh counts or screenshots alone, so playtest observations remain evidence.
## Change discipline
- Keep one conceptual change per commit.
- Prefer deletion or extraction over parallel implementations.
- Do not rename and redesign unrelated systems in the same change.
- Never modify generated `.godot/` content.
- Keep assets separate from gameplay state and reference them through resources.
- Treat warnings, leaked nodes and nondeterministic tests as defects to triage,
even if the process returns exit code zero.
## Review checklist
- Is there exactly one owner for each new rule?
- Does dependency flow match `docs/ENGINEERING_GUARDRAILS.md`?
- Can the domain behavior run without a scene tree?
- Can UI code only observe or issue commands?
- Are time, randomness and external I/O controllable in tests?
- Is failure behavior tested?
- Is a prototype implementation being copied instead of translated?
- Would a future save migration be required?
- Does the quality gate pass?