Thank you for your interest in contributing to PortPS5!
PortPS5 is a clean-room, native Windows conversion layer for decrypted PS5 game dumps. To maintain legality, reproducibility, and code quality, all contributors must follow these guidelines.
The following must NEVER enter this repository, pull requests, issues, or commit histories:
- No Sony proprietary material: No encryption keys, firmware blobs, official SDK headers, or proprietary Sony libraries.
- No game assets: No decrypted or encrypted dumps, shader bytecode dumps, save files, or recorded game footage/audio.
- Clean-room implementations only: All PRX replacements (
core/libs/prx/) must be reverse-engineered or clean-room implemented without copying copyrighted code.
For complete rules, see .agents/rules/legal-boundary.md.
- Platform: Windows 10/11 (64-bit).
- Compiler: MinGW-w64 GCC 15.2 (ucrt-posix-seh). MSVC is unsupported due to lacking System V ABI attributes (
sysv_abi). - Build System: CMake 3.25+ with CMakePresets (presets schema v6 needs 3.25).
- Toolchain setup & build instructions: See docs/spec/build-toolchain.md.
Always configure, compile, and run tests locally before opening or updating a PR:
cmake --preset ci
cmake --build --preset ci
ctest --preset ciDo not rely on hosted CI as a syntax or build checker.
- Fork & Branch:
- Fork the repository to your GitHub account.
- Create a branch from
mainusing descriptive naming:feat/<name>,fix/<name>,docs/<name>, orchore/<name>.
- Conventional Commits:
- Format commit messages with conventional types:
feat(relinker): ...,fix(libkernel): ...,docs(spec): .... - Subject line max 72 characters; commit body explains the why.
- Format commit messages with conventional types:
- Tasks (beans):
- Tasks live as markdown files in
.beans/(CLIbeans, config.beans.yml; see "Task tracking (beans)" in AGENTS.md). Runbeans listto find the bean for your work, orbeans createone. - A PR that solves a bean ticks its acceptance checkboxes, adds
## Summary of Changes, marks itcompletedand archives it (beans archive) in the same PR.
- Tasks live as markdown files in
- CI & Maintainer Approval:
- Pull requests from outside forks require one-time approval from code owners before GitHub Actions workflows run.
- All required checks (
Build & Test,CodeQL,Gitleaks) must pass. mainis protected: PRs require approval from code owners (@yuriolive), linear history, and all review threads resolved before merge.
- PortPS5 follows a specification-first methodology. If your change alters subsystem behaviour or adds new capabilities, update the relevant specification under
docs/spec/in the same PR. - See docs/spec/README.md for subsystem architectures.