Fresh compiler processes produce byte-different FASLs and secmon binaries; investigate deterministic gensym identity #97
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Observed on macOS arm64, 2026-09-25. This blocks the strict byte-for-byte secmon release reproducibility gate, not execution of Jerboa or Conduit. Users should not need a separate Chez installation, object-code tree, or repaired cache: the eventual supported solution must work through the self-contained Jerboa distribution.
Evidence and scope
020d49ffccand jsqlite 73dfdf0703e41ef7bf1b5ab89839975b9d9b97b8 plus its recorded dependency patch.These are diagnostic results, not an independently repeated minimal upstream regression or proof that the proposed environment hook is production-safe. The downstream checkout has other changes, and the hook has not been validated in a newly packaged self-contained Jerboa binary.
Source evidence / hypothesis
In Jerboa
2604e79232, vendor/ChezScheme/s/5_7.ss constructs the private session key using (cs)unique_id. In s/newhash.ss, symbol-hash can materialize a gensym unique name. s/fasl.ss traverses hashtable entries during graph discovery and emission. The experiments support session-dependent identity/hash ordering as a cause. Existing prefix rewriting after serialization is insufficient in the observed downstream builds; this does not prove that every possible canonical serializer is impossible.current-generate-id is already configured by secmon's compiler helper but does not cover all private session-generated identities. Maintainer investigation should decide whether to add a supported build-scoped identity facility or fix deterministic serialization at another layer.
Correction to prior investigation: JERBOA_BINARY_STRIP_FASL and JERBOA_BINARY_CANONICALIZE_WPO were set in some secmon runs, but the inspected secmon builder/scripts do not consume them. Those runs do not establish that enabling those features caused any change. Explicit secmon WPO selection did execute and still produced mismatching reports.
Reproduction assets for the local maintainer
First preserve the existing reports: the report script deletes its output directory on rerun. Reduce to a fresh-process jsqlite/cache compilation through a project make target or supported Jerboa compiler entry point, then compare both FASLs before boot assembly. Compare unpatched vs candidate using identical source/configuration. Include the parent/child environment boundary in the reproduction.
Acceptance criteria
Please investigate/implement in Jerboa and its bundled Chez as appropriate. This issue requests a supported capability, not adoption of the experimental environment hook verbatim. The user will handle this upstream work. Related but distinct fixed runtime-discovery issue: #93.