$ python3 -I tools/experiments/charactereval_spec_check.py # started 2026-10-29T12:00:28+00:00 ended 2026-10-29T12:00:29+00:00 exit 0 PASS S01 repository commit: c3d44a6fc1790cc8c4b2fd7c01f0c72930655e0c PASS S02 get_response.py SHA-256: ac5030abbefc PASS S02 transform_format.py SHA-256: c6cfe4a42338 PASS S02 run_char_rm.py SHA-256: 85bc7ebdf6f2 PASS S02 compute_score.py SHA-256: cfcf291f85ee PASS S03 reference: 7 verbatim blocks equal the repository's source text PASS S04 reference: compute_score mean expression equals compute_score.py (AST): sum(score_dict[metric]) / len(score_dict[metric]) PASS S05 strings.gen.ts is what the generator extracts now PASS S06 profiles.gen.json is what the generator writes now PASS V01 data/test_data.jsonl SHA-256: 6d9723a1484f PASS V01 data/id2metric.jsonl SHA-256: df80ee716124 PASS V01 data/character_profiles.json SHA-256: d9b4c9f7ab63 PASS V01 test examples / unique ids = 4,564 / 4,564: 4564 / 4564 PASS V01 examples with metrics = 4,531 (33 without): 4531 PASS V01 (example, metric) pairs = 8,032; every id2metric id is a test id: 8032 PASS V01 characters used / profiles = 77 / 78, every used one has a profile: 77 / 78 PASS V02 profile reprs (sorted, role\trepr\n) SHA-256: 198d40264a51 PASS V02 reference transform of the frozen replies reproduces generation_trans_qwen_7b.jsonl row for row: 8032 rows PASS V02 reward-model inputs, Python vs TS, byte for byte (8032 / 8032): 0 differ PASS V03 message arrays, Python vs TS, byte for byte (4531 / 4531; 3–51 messages): 0 differ PASS V03 no system message; user/assistant alternate and the last message is the user's PASS V04 first line and failure filter on 16 edge cases (leading newline, only newlines, \r\n, empty, ERROR, None) PASS V08 per-metric means and dimension averages, reference vs TS on 5 score sets (known answer, random): max |diff| 0 PASS M01 12 metrics: TS (metric_en, metric_zh) equal id2metric's distinct pairs PASS M02 dimension membership equals the reference (Character Consistency has 5, including Exposure/KE) PASS M03 metric keys, abbreviations and dimensions agree with meta.ts DIMENSIONS 26/26 checks passed