Hello World
This commit is contained in:
commit
7d342af29f
124 files changed
+627642
No files matched your search
@@ -0,0 +1,52 @@
|
||||
import * as s from './stages.mjs';
|
||||
const e=s.primitive;
|
||||
export function audit(client, dump, assembly, roles, evidence){
|
||||
const codec=new s.Codec(e.readText(dump), assembly, e.path.join(evidence, 'native')),
|
||||
assets=new s.Assets(client),
|
||||
[raw, proof]=assets.get('BakedConfig/ExcelOutputGameCore/SpecialAvatar.bytes'),
|
||||
cur=new e.Cursor(raw),
|
||||
count=cur.length(1000000),
|
||||
typ='RPG.GameCore.SpecialAvatarRow',
|
||||
schema=codec.schema(typ);
|
||||
if(schema.length!==codec.fields(typ).size)e.fail('Incomplete SpecialAvatar native schema');
|
||||
const rows=Array.from({
|
||||
length:count
|
||||
}, ()=>codec.record(cur, typ)),
|
||||
encoded=e.cat(e.encode_varint(2*count), rows.map(r=>codec.encode_record(r, typ)));
|
||||
if(cur.at!==raw.length||!encoded.equals(raw))e.fail('Whole SpecialAvatar table failed native round trip');
|
||||
const index=e.lookup(rows, r=>[r.SpecialAvatarID??0, r.WorldLevel??0].join(':'), 'SpecialAvatar identity'),
|
||||
verified=[];
|
||||
for(const role of e.loadJSON(roles)){
|
||||
const trial=role.raw.SpecialAvatarID??0,
|
||||
row=index.get(trial+':6');
|
||||
if(!trial||!row||(row.AvatarID??0)!==role.avatar_id||(row.Type??0)!==1)e.fail('Role '+role.id+' cannot resolve as a world-level-6 trial');
|
||||
verified.push({
|
||||
role_id:role.id,
|
||||
season_id:role.raw.SeasonID,
|
||||
trial_id:trial,
|
||||
avatar_id:row.AvatarID,
|
||||
world_level:6
|
||||
});
|
||||
}
|
||||
const report={
|
||||
round_trip:true,
|
||||
special_avatar_rows:count,
|
||||
roles_checked:verified.length,
|
||||
gameplay_verified:false,
|
||||
assembly_sha256:e.sha256_file(assembly),
|
||||
dump_sha256:e.sha256_file(dump),
|
||||
roles_sha256:e.sha256_file(roles),
|
||||
table:proof,
|
||||
catalogues:assets.catalogues,
|
||||
schema,
|
||||
roles:verified
|
||||
};
|
||||
e.atomic_json(e.path.join(evidence, 'trial-avatar-audit.json'), report, 2, true);
|
||||
return report;
|
||||
}
|
||||
export function main(){
|
||||
const a=e.cli(['client', 'dump', 'assembly', 'roles', 'evidence']),
|
||||
r=audit(a.client, a.dump, a.assembly, a.roles, a.evidence);
|
||||
console.log(`Native round trip: ${r.special_avatar_rows} rows; ${r.roles_checked} role identities verified`);
|
||||
}
|
||||
e.runMain(import.meta.url, main);
|
||||
Reference in new issue
Block a user