> For AI agents: the complete documentation index is available at https://renmori.mewbaka.cn/llms.txt, the full documentation bundle is available at https://renmori.mewbaka.cn/llms-full.txt.

# 提交要求

RenMori 采用开放核心架构：本仓库中的框架与工具源码公开，逐构建多态、密钥派生与反篡改运行时由独立的闭源二进制插件提供。本页说明向开放部分提交贡献，以及提交问题反馈与安全漏洞报告时须遵守的要求。

## 贡献者许可协议（CLA）

由于 RenMori 包含部分基于开放代码构建的闭源组件，**每一位贡献者都必须先同意贡献者许可协议，其贡献才能被合并**。CLA 授予项目以下权利：

- 在开放发行版中使用该贡献
- 在闭源构建中使用该贡献
- 在开放部分的许可条款调整时，以新的许可条款发布该贡献

没有 CLA，项目无法在闭源构建中合法使用相应代码，因此无法接受该代码。个人与企业 CLA 的签署流程确定后将在仓库中公布。在此之前，请先提交 Issue 讨论拟议的改动并确认愿意签署 CLA，再开始编写代码，以免完成的工作暂时无法被接受。

## 提交范围

### 接受提交的部分

- CLI、配置解析、退出码与 CI 行为、GitHub Actions 示例
- `renpy.loader` 加载器钩子框架与运行时 SDK
- 基线容器格式 v1 及其读写实现
- 标准加密原语的使用方式（算法本身是公开标准）
- 文档、示例、测试，以及针对 Ren'Py 8.x 各版本的兼容性修复

### 不接受提交的部分

以下部分属于闭源组件，请勿提交相关实现，也请勿对其进行逆向分析：

- 逐构建多态与变异引擎
- 密钥派生混淆与密钥恢复逻辑
- 原生反篡改的内部实现

若改动需要调整开放 CLI 与闭源插件之间的进程接口，请先通过 Issue 提出接口变更。接口公开且带有版本号，但两侧必须保持兼容。接口定义参阅 [开源与闭源组件的接口](https://renmori.mewbaka.cn/technical/plugin-interface.md)。

## 安全原则

每一项贡献都必须遵守以下原则。这些是硬性要求，而非偏好：

1. **性能优先**：任何导致运行时性能回退的措施都不会被合并，包括帧时间、场景切换、CG 与视频播放。热路径上不得加入反调试或自检
2. **磁盘上不留明文**：任何情况下都不得在磁盘上留下明文资源，字体同样适用
3. **只解密数据，不在运行时生成或执行解密后的代码**：这使 macOS 版本无需额外授权即可运行，参阅 [架构](https://renmori.mewbaka.cn/technical/architecture.md)
4. **不收集数据，不联网回传**：加载器框架开源的目的之一正是让使用者能够验证这一点。不得加入任何网络调用
5. **如实描述防护能力**：代码注释、文档与输出信息中不得出现超出 [威胁模型](https://renmori.mewbaka.cn/technical/threat-model.md) 所允许范围的表述，不得使用“不可破解”等说法

## 代码提交流程

1. 提交 Issue 描述拟议的改动，并确认愿意签署 CLA
2. 从 `main` 分支创建新分支
3. 保持改动聚焦；对可测试的开放代码附带测试
4. 确认示例项目的保护与运行流程仍然通过，且性能没有变化
5. 提交 Pull Request 并关联对应的 Issue

## 文档提交

本文档站点的源码位于 [MewBaka/renmori.mewbaka.cn](https://github.com/MewBaka/renmori.mewbaka.cn)，技术文档的原始版本位于 RenMori 仓库的 `docs/` 目录。文档提交须遵守以下要求：

- 使用视觉小说与 Ren'Py 开发领域的通行术语，例如 Ren'Py 脚本、立绘、CG、封包、存档、发行版构建
- 语言专业、严谨、准确，避免口语化表述
- 句号仅用于段落末尾，列表项、表格与标题不加句号
- 有关防护能力、性能与兼容性的表述须有验证记录或格式规范作为依据，并注明测量条件

## 问题反馈

在 [GitHub Issues](https://github.com/MewBaka/RenMori/issues) 提交问题时，请提供以下信息，以便复现与定位：

- `renmori --version` 的输出
- Ren'Py 版本，以及构建的目标平台
- 执行 `renmori` 的操作系统与 Python 版本
- 使用的保护强度，以及完整的命令行
- stdout 最后一行的结果 JSON 与 stderr 中的错误信息
- 若问题出现在游戏运行时，附上 Ren'Py 的 `log.txt` 中以 `renmori:` 开头的记录

提交前请移除日志中的密钥、个人路径等敏感信息，不要附带受保护游戏的资源文件。

## 安全漏洞报告

请**不要**通过公开 Issue 报告保护方案中的漏洞。专用的私密披露渠道确定后将在仓库中公布；在此之前，请直接联系维护者：[team@mewbaka.cn](mailto:team@mewbaka.cn)。

威胁模型已经说明了不在防护范围内的情况，例如录屏、内存提取与针对单一作品的专家级逆向。这些属于已知的局限，不视为漏洞。
