Two small confirmed divergences from the 196-case stress re-run (main+#9479), grouped because both are likely quick:
1. userID never written (B33/B34 plugin validate, also E21's config diff):
"migrationVersion": 11,
- "userID": "<HEX64>" ← node writes a 64-hex id; perry omits the key
A sha-256-sized value that ends up undefined under perry, so JSON serialization drops the key. Suspects: a crypto call returning undefined on this path (createHash(...).digest("hex") or randomBytes(...).toString("hex")), or the machine-id source it hashes being unavailable. Cheap to localize: grep the bundle for userID and instrument the producer.
2. install not-a-version exit code (B60): node rc=1, perry rc=0, stdout differing by one byte (175 vs 174). An error path that prints (almost) the right message but does not propagate failure into the exit code — likely a rejected promise whose rejection sets the message but not process.exitCode, or an early process.exit(0) racing the error path. Note #9442 (exit does not abandon async work) is in flight and touches exit semantics — coordinate.
Also recorded from the same run, not filed separately:
E41_marketplace_add_then_install: 1-byte stdout diff (243 vs 242) — characterize before fixing.
B61_update: npm _cacache content diffs — almost certainly environmental (registry nondeterminism); propose excluding those paths in the harness rather than chasing.
E07: random shell-snapshot filename suffix on both sides — harness normalizer gap (path lists are not run through the stream normalizers), not an engine bug.
Repro: /root/claude-ccstress/, per-case diffs in report_detail.txt.
Two small confirmed divergences from the 196-case stress re-run (main+#9479), grouped because both are likely quick:
1.
userIDnever written (B33/B34plugin validate, also E21's config diff):"migrationVersion": 11, - "userID": "<HEX64>" ← node writes a 64-hex id; perry omits the keyA sha-256-sized value that ends up
undefinedunder perry, so JSON serialization drops the key. Suspects: acryptocall returning undefined on this path (createHash(...).digest("hex")orrandomBytes(...).toString("hex")), or the machine-id source it hashes being unavailable. Cheap to localize: grep the bundle foruserIDand instrument the producer.2.
install not-a-versionexit code (B60): node rc=1, perry rc=0, stdout differing by one byte (175 vs 174). An error path that prints (almost) the right message but does not propagate failure into the exit code — likely a rejected promise whose rejection sets the message but notprocess.exitCode, or an earlyprocess.exit(0)racing the error path. Note #9442 (exit does not abandon async work) is in flight and touches exit semantics — coordinate.Also recorded from the same run, not filed separately:
E41_marketplace_add_then_install: 1-byte stdout diff (243 vs 242) — characterize before fixing.B61_update: npm_cacachecontent diffs — almost certainly environmental (registry nondeterminism); propose excluding those paths in the harness rather than chasing.E07: random shell-snapshot filename suffix on both sides — harness normalizer gap (path lists are not run through the stream normalizers), not an engine bug.Repro:
/root/claude-ccstress/, per-case diffs inreport_detail.txt.