mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-24 06:14:01 +08:00
- The determinism attestation demoted on Date/perf_hooks/process libCalls that had no manifest entry, so the ask-5 §4 invariant (compiles under full fences => deterministic) could not be stated and the spec's own worked-example prefix stdlib.date. refused as unknown; AMBIENT_SURFACE_FNS now projects those families as permanent manifest ids (stdlib.date.*, node-builtin.perf_hooks.performance.now, node-builtin.process.*) with reach-witnessing detectors. - BUILTIN_MODULE_FN_ALIASES folds the special-cased alternate spellings into their member detectors: the fs Buffer/fd/options/withFileTypes/watch-listener variants, the JS-ladder mkdtempSyncChk and lchmodSyncChk, crypto's composed randomBytesToString, and os.userInfo's userHomedir/userShell scalars. - A parity test holds the two scans together over the exhaustive IrLibFn registry: every spelling LIB_NONDETERMINISTIC_PREFIXES demotes on must be deniable through a manifest-id fence, with the library-mode-refused and validate-then-fence residue pinned by name with reasons. - The §4 invariant fixture and K14's worked fences now cover every attestation-known family, and a new K14 case pins the teeth: Date.now / process.env reads under the full-fence profile refuse SC4008 naming the entry instead of attesting deterministic: false post hoc. - Sampling probes cover the new static entries (Date.now, process.pid, performance.now); surface-manifest.json regenerated (18 new entries, 336 total).
41 lines
1.7 KiB
JSON
41 lines
1.7 KiB
JSON
{
|
|
"profile_format": 1,
|
|
"name": "conformance-fences-attest",
|
|
"entry": "lib.ts",
|
|
"emission": "llvm",
|
|
"abi": {
|
|
"prefix": "kf_",
|
|
"init_symbol": "kf_init",
|
|
"sink_register_symbol": "kf_set_panic_sink",
|
|
"collect_symbol": null,
|
|
"result_reset_symbol": null
|
|
},
|
|
"exports": [
|
|
{ "export": "boot", "symbol": "kf_boot", "params": ["f64"], "returns": "f64" }
|
|
],
|
|
"sidecar": {
|
|
"wire_version": 1,
|
|
"abi_version": 1,
|
|
"snapshot_format": 1,
|
|
"build_id_symbol": "kf_build_id",
|
|
"abi_version_symbol": "kf_abi_version",
|
|
"model": "Model",
|
|
"msg": "Msg"
|
|
},
|
|
"determinism": {
|
|
"teachings": {
|
|
"SC4005": "async is unavailable in this compilation mode; the host executes effects — declare a command instead."
|
|
},
|
|
"fences": [
|
|
{ "id": "stdlib.math.random", "teaching": "randomness is an effect: request it from the host and receive it as a Msg." },
|
|
{ "prefix": "node-builtin.fs.", "teaching": "files are effects: declare reads and writes as commands the host executes." },
|
|
{ "prefix": "node-builtin.net.", "teaching": "network is an effect: declare requests as commands; responses arrive as Msgs." },
|
|
{ "prefix": "node-builtin.os.", "teaching": "machine identity is an effect: ask the host." },
|
|
{ "prefix": "node-builtin.crypto.", "teaching": "randomness and digests come from the host." },
|
|
{ "prefix": "stdlib.date.", "teaching": "time is an effect: the host passes the clock in as a Msg." },
|
|
{ "prefix": "node-builtin.process.", "teaching": "process ambient state and authority belong to the host." },
|
|
{ "prefix": "node-builtin.perf_hooks.", "teaching": "the monotonic clock is the host's." }
|
|
]
|
|
}
|
|
}
|