54 lines
2.0 KiB
Markdown
54 lines
2.0 KiB
Markdown
# 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?
|