62 lines
7.3 KiB
Python
62 lines
7.3 KiB
Python
from pathlib import Path
|
||
import json,hashlib
|
||
folder=Path(__file__).resolve().parents[1]; root=folder.parents[1]; evidence=folder/'KVGameplayLoopTests'
|
||
entry='''## 当前有效状态:R1最小接线已编写与初验,真实闭环未完成(2026-09-24)
|
||
|
||
R1原方案已完整审查并逐条裁决,见[实施批准](阶段4最小真实玩法闭环方案审查裁决与实施批准-2026-09-24.md)。本轮已编写白名单接线:10个旧源码增加152行/删除2行,新增3源码及meta;不是全量业务重构。B3A四入口保持原始字节。
|
||
|
||
**实际阻塞:101/102现有KV均为空,且M24对象缺登录期注册。** 用户已允许沿用两账号;已只读备份,没有KV写入、自动PF迁移或造档。M24最小注册补丁尚未执行,具体补丁和独立审查提示词见[实施进度与最小补充审查](阶段4最小真实玩法闭环-实施进度与最小补充审查-2026-09-24.md)。
|
||
|
||
- [x] R1-Review/C0:70项hash核对、九合同及2P2/3P3裁决、源码快照、账号授权、现有KV备份。
|
||
- [x] R1-C1/C2已做部分:白名单接线、许可15断言、默认服务双条件各8组73断言、4A/4B1/4B2/4B3A离线回归及Unity既有固定用例通过。
|
||
- [ ] R1-C1/C2剩余:M24最小注册差异独立审查→主会话裁决/实施;新装备链专用验证仍缺(动态脚本被CLI Restricted拦截,未执行,不绕过)。
|
||
- [ ] R1-数据来源:101/102 KV均0键;等待完整KV备份来源,或用户选择先只读检查同账号PF档,再列实际导入key/摘要/恢复范围。账号许可无需重复询问。
|
||
- [ ] R1-C3:真实UI装备、全部原票据Confirmed、Unity重启/新缓存恢复、独立实施复核及关闭,均未完成。
|
||
|
||
最终Unity编译0错误、270警告(完整原输出保留,新R1文件无警告);未启用运行许可、未PlayMode、不打包。成功正式请求仅2登录+2Get,Set/Delete=0。责任:评审侧审M24具体差异;数据来源等待用户选择;主会话负责裁决、实施和后续验证。4B1/4B2/4B3A已关闭;整体4B3/G4、4C、热换号及P2-α真实迁移仍未完成。正式地址http://s101.local:18080/,Unity CLI Loop,不用UnitySkills。
|
||
|
||
### 以下为历史快照(当前以本节为准)
|
||
|
||
'''
|
||
for name in ['接手入口.md','开发状态.md','TODO.md']:
|
||
p=folder/name;old=p.read_text(encoding='utf-8');head,rest=old.split('\n',1)
|
||
# Replace the current in-turn snapshot; leave earlier historical records intact.
|
||
delimiter='### 以下为历史快照(当前以本节为准)'
|
||
rest=rest[rest.index(delimiter)+len(delimiter):].lstrip()
|
||
p.write_text(head+'\n\n'+entry+rest,encoding='utf-8')
|
||
record='''
|
||
## 检查点1/2收尾:已验证部分与未完成项
|
||
|
||
更正本轮中间记录的文件计数:实际修改10个旧源码(152行新增/2行删除),新增3源码+3meta;审计只与R1已审基线比较。B3A四固定方法所在尾段逐字节不变。`checkpoint2-source-audit.json`及逐文件diff保存。没有修改底层/31业务算法/场景/包/服务器。
|
||
|
||
许可测试补齐空档/重复key后15断言通过。默认服务非Android/Android+AGG各8组73断言;4A 18组226、4B1 23组279、4B2 75组1715、4B3A 13组544均通过。File.Replace沙箱拒绝有诊断堆栈,原首败及获准同程序通过均保留,不修改实现去迎合沙箱,也不关闭历史间歇问题。Unity原固定入口B3A 34、B2-20 83断言通过且恢复成功。
|
||
|
||
最终CLI编译0错误270警告,新R1文件无警告;既有变更文件上的4条告警位于未修改的方法,其余在未改文件,本轮不清理。早先增量0警告不等于整个工程零告警。源码中补充实际API URI必须等于许可固定s101地址;Editor Agg通知复用已解码M31,不读取未登录的渠道SDK AccountInfo。
|
||
|
||
新R1装备链动态合成脚本第一次因Json双程序集而编译失败,修正脚本后CLI Restricted在执行前拒绝反射/HttpMessageHandler等API。未执行,不算测试通过;未降低安全级别或另设旁路。既有固定回归入口独立运行,不能代替这个新链覆盖。正式PlayMode仍未执行。
|
||
|
||
《阶段4最小真实玩法闭环-实施进度与最小补充审查-2026-09-24.md》已给出M24准确注册补丁和评审提示词,待差异审查后落代码。101/102实际KV均空档;初始来源选择未回复,不自动迁移PF或创建数据。当前只完成白名单接线和初验,不标记C1/C2全部完成,也不关闭R1。下一步:外部审M24具体差异、用户确定初始存档来源;主会话随后逐条裁决并继续执行。
|
||
'''
|
||
for name in ['阶段4最小真实玩法闭环实施记录-2026-09-24.md','开发日志.md']:
|
||
with (folder/name).open('a',encoding='utf-8') as f:f.write(record)
|
||
p=folder/'阶段4B3当前TodoItem-2026-09-24.json';d=json.loads(p.read_text(encoding='utf-8'))
|
||
d.update(phase='R1-wiring-initial-checks-M24-supplement-and-save-source-pending',nextResponsibleSide='reviewer-M24-and-user-save-source',implementationScope='R1 original whitelist approved; M24 early registration supplement pending; real gameplay not verified',R1Closed=False)
|
||
d['minimalGameplayConstraints']['newImplementationApproved']=True
|
||
for item in d['todoItem']:
|
||
if item['id'] in ['Minimal-Gameplay-Design','R1-Review']:
|
||
item.update(status='completed',detail='R1独立方案审查接受;70项hash、九合同和2P2/3P3已逐条裁决,原白名单编码批准')
|
||
if item['id']=='R1-C1-C2': item.update(status='partially-complete',detail='接线与必要旧回归已完成;M24注册补审、新链专用测试及真实加载仍缺')
|
||
d['todoItem'] += [dict(id='R1-M24-supplement',status='awaiting-independent-review',detail='仅LoginStage中Editor模式提前注册已有M24单例;精确补丁及提示词已落盘'),dict(id='R1-data-source',status='awaiting-source',detail='已备份101/102空KV,无业务写入;等待初始完整档来源,不自动PF迁移')]
|
||
p.write_text(json.dumps(d,ensure_ascii=False,indent=2)+'\n',encoding='utf-8')
|
||
baseline=json.loads((evidence/'checkpoint0-baseline.json').read_text(encoding='utf-8'))
|
||
paths={f['path'] for f in baseline['files'] if f['path'].startswith('Client/')}
|
||
audit=json.loads((evidence/'checkpoint2-source-audit.json').read_text(encoding='utf-8'))
|
||
paths.update(f['path'] for f in audit['newFiles'])
|
||
for name in ['阶段4最小真实玩法闭环方案-待评审-2026-09-24.md','阶段4最小真实玩法闭环方案独立审查-2026-09-24.md','阶段4最小真实玩法闭环方案审查裁决与实施批准-2026-09-24.md','阶段4最小真实玩法闭环-实施进度与最小补充审查-2026-09-24.md']:
|
||
paths.add('CodexOutput/upserver/'+name)
|
||
for name in ['checkpoint2-source-audit.json','Program.cs','KVGameplayLoopTests.csproj','Preflight/Program.cs','Preflight/Preflight.csproj','unity-loop-synthetic.cs.txt','checkpoint2-unity-loop-synthetic-retry.json','checkpoint2-unity-compile-final.log','checkpoint2-unity-existing-regressions.json']:
|
||
paths.add('CodexOutput/upserver/KVGameplayLoopTests/'+name)
|
||
files=[dict(path=s,sha256=hashlib.sha256((root/s).read_bytes()).hexdigest().upper()) for s in sorted(paths)]
|
||
(evidence/'checkpoint2-review-input-hashes.json').write_text(json.dumps(dict(scope='M24 minimal supplement; R1 implementation not complete',files=files),ensure_ascii=False,indent=2)+'\n',encoding='utf-8')
|
||
print(f'Updated status and logs; sealed {len(files)} review inputs.')
|