Files
DimensionalRipper/docs/payload-ownership-1.1.17-validation.md
T

7.4 KiB
Raw Blame History

1.1.17 公共收包归属:候选验证记录

日期:2026-10-06。结论:公共入口与已列交互路径已实施;不是完整整合包兼容认证,也不是 ServerWarashi 修复。

环境与范围

Java 21 Zulu、Minecraft 1.21.1、NeoForge 21.1.244。仅使用仓库 runs/server 的 interaction-regression 世界、127.0.0.1:25579。没有修改用户正式世界、启动器 mods 或远端仓库。用户报告过的 NeoForge 21.1.233 未在本轮单独运行。

可选模组为用户本机实际 jar:Create 6.0.10.starlight、Create Aeronautics bundled 1.3.0.starlight(含 Simulated)、Sable 2.0.5.starlight、Veil 4.2.0.starlight、Jade 15.10.5.starlight;CC:Tweaked 1.118.0.starlight 单独运行。

证据层级

层级 已验证内容 证据
纯 Java FIFO、至多一次、256/4096 容量、取消回收、64 项/2 ms 预算、关闭、重入完成、8 生产者 runPayloadWorkQueueRegression 的 PAYLOAD QUEUE PASS
实际 Minecraft/NeoForge 上下文 Runnable/Supplier、返回值、主线程异常身份、异步 guard、取消、换世界失效、配置阶段原路径、嵌套、Sable 同步重入拒绝 PAYLOAD PHASE/ENTRY/ASYNC PASS
实际 Minecraft 生命周期 新循环、菜单暂停、退出中循环仍等待、停止不恢复、停止后晚到任务不能复建诊断 PAYLOAD LIFECYCLE PASS、PAYLOAD REVIEW PASS
实际可选模组和原生物理 真实子世界、真实把手 BE、真实包和 Veil 上下文、Rapier 约束的创建及松手销毁 SIMULATED NATIVE RED 后 SIMULATED HANDLE PACKET PASS
实际 Create / Jade 调速写入、查询 BE、原始距离拒绝 CREATE CONFIG PASS、JADE REQUEST PASS
实际 CC 显示器同一性、回调等待、80 个延迟 token、双维度 ticket/unload、恢复后继续 tick 四个 OWNERSHIP … PASS
已有流水/区块/实体路径 600000 次缺失读取、400000 次已加载读取、必须生成请求安全失败、实体路由至多一次、真实水流扩散 四个 … REGRESSION PASS,其中包括 INTERACTION REGRESSION PASS
空载/无可选模组 不安装上述可选模组仍启动;100 次空 drain 没有新增批次 PAYLOAD IDLE PASS 及通用 payload 标记

真实把手的失败证明不是“函数调用成功”:测试让维度线程持有 plot 世界归属,直接运行原松手包后物理约束仍然 isValid=true;相同真实包经公共安全入口运行后 isValid=false。测试使用 FakePlayer(有真实测试监听器),并非真人客户端输入或真实网络连接。

四个审查问题均先失败后通过:业务拒绝异常误触发踢人、动态循环丢失菜单暂停、退出中的写入者漏过屏障、停服清理后晚到诊断重新持有服务器。日志 payload-review-red-2.log 对应失败,payload-review-final.log 对应修正后的通过。

诊断分类额外使用 payload-counter-red.log 复现“业务失败与容量拒绝混计”,payload-counter-green.log 通过;payload-candidate-real.log 再次通过真实模组测试并检查换世界旧任务计入 expired。failed、cancelled、expired、rejected 分开统计。

旧交互回归第一次运行失败,不能因 Gradle 返回零而算通过:旧夹具没有 connection,且仍要求已经替换掉的单维度桥。夹具改为 FakePlayer 与公共独占断言,保留所有流水/区块检查,并补上日志 PASS/异常检测门禁;payload-final-interaction-green.log 才是通过记录。

本轮取舍

  1. Windows 无 bash,以 PowerShell/apply_patch 维护执行记录;风险是记录遗漏,测试门禁不变。
  2. 主线程独占标志与菜单暂停分离;否则嵌套 resume 会提前放走维度线程。代价是多一组生命周期状态。
  3. 阶段、入口、生命周期共用夹具及文件,相关提交合并验证,不把中间状态当发布版本。
  4. 保留 NeoForge 异步业务异常返回 null 的 guard 行为,但替换无限逐条异常打印为有界诊断。显式策略失败(旧玩家/停止/溢出)保留异常 future,执行前取消传播到底层队列;这是有意的兼容语义细化,依赖“失败也返回 null”的调用方可能观察到变化。
  5. 普通主线程同步调用为保序与同步完成可连续处理多个有界批次;2 ms 不是整 tick 硬上限,慢维度和慢处理器仍可能拉长等待。独占阶段内嵌套立即运行。
  6. 旧交互夹具适配新连接/归属契约而非放松生产守卫;不能替代真实客户端网络压力验证。
  7. 既有停服 30 秒超时、ServerWarashi、C2ME、任意后台世界/光照访问保留为独立问题;它们仍可能造成完整整合包失败。
  8. 只交付隔离环境验证的候选,不将以下未测项标成通过。审查没有列出待办 Minor。

未完成的验收,不属于已修复声明

  • 真人客户端整套飞行、抓握输入、GUI 与完整整合包存档副本测试。
  • 两玩家同时抓握、死亡、断线、换维度、拆把手、卸载子世界及溢出拒绝松手后的完整原生约束清理矩阵。已测普通真实松手、通用旧世界拒绝和溢出断线调用,不能互相替代。
  • 跨服务器实例隔离的双实例并行压力测试;实现按服务器分区,不能仅凭代码视为此项实测。
  • 空载、普通交互、密集抓握、多人查询和慢维度的完整对比压测。空队列无批次及慢 worker 等待机制已验证,不承诺开销比例或全服 20 TPS。
  • 任意 worker 提交后同步 join 主线程队列不受支持。夹具通过 250 ms 超时检测并取消这种等待环,不表示生产代码会自动化解任意 join 死锁。
  • ServerWarashi 分析立即崩溃仍需单独从采样栈修复。

重跑

以下命令均使用 --no-daemon --no-configuration-cache --console=plain,先检查隔离世界配置,不能指向正式存档:

.\gradlew.bat check
.\gradlew.bat runServer -PpayloadRegression
.\gradlew.bat runServer -PpayloadRegression -PreviewRegression
.\gradlew.bat runServer -PpayloadRegression '-PpayloadModsDir=<本机上述模组目录>'
.\gradlew.bat runServer -PownershipRegression '-PccTestJar=<本机CC jar>'
.\gradlew.bat runServer -PinteractionRegression
.\gradlew.bat clean build

每组运行必须完成后再启动下一组。查看对应 PASS 标记及服务器异常,而非只看 Java/Gradle 退出码。正常构建不可带任何回归夹具属性。

打包门禁

check runServer -PpayloadRegression 成功(五个纯 Java 回归程序及无可选模组服务器夹具);随后不带任何夹具属性的 clean build 成功,五个纯 Java 回归再次执行通过。真实模组、CC、交互及审查运行见上述分组,未将测试标记缺失的运行计入通过。

发布 jar:build/libs/dimensionalripper-1.1.17.jar,277211 字节。ZIP 内容检查确认元数据版本为 1.1.17,包含公共入口 mixin/执行器,不含 Regression、FakePlayer、tests 或打包的可选模组 jar/类。

SHA256:CF1DE863DE119272098142CF5F0ABE78543BA55B15074369A1A66FBC922FBAD3。

完整本地日志已保存在 build/reports/payload/(忽略提交)。关键最终文件:payload-clean-build.log、payload-candidate-check.log、payload-candidate-real.log、payload-counter-green.log、payload-final-cc.log、payload-final-interaction-green.log。失败前例也保留供对照。执行工作区仍保留未完成验收记录,不把剩余矩阵标为完成。