Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/atlas/catalog.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"records":["0863093e69a16355fa9b90f8e7e29156ea4ad88c4523bc4883568bde831bdf35","2056fa8b653c2240afdad2a16f572a07019109254847829610a9468bb2f95248","231df3792931ad2333d00970a5993b3e13fa9dc38f687899f9fa2c966ed9fbfa","24fdc3980640ba58bedcae6f16d5b467eb7383c31161fb9b6ff10fd2e667b0e5","264a2f7887a9b6473cbc24102e1bf9be70e57f6d7ba224138140efa094d541f4","2b7dfb3a2f76368cb603161cdb6f8fa8c2b8afc3e96659dd37c975921ba5ba66","33df463263533529cca24a0b09937573f836d197cc1a739e9960b1cdd4deb1fd","343077d02ddd266b21d8677f7c256854134f7e3e2d18137b55ebe3f32564c5c0","34391bda3fb56135a2bddf74ab790958c175bc6a69c38175e6f8db792cfd50a0","36a19fefd7024f54f3391ffed19019c10222a514719edd7a44f0cde2a1c48258","3d3a0a302c02cd0bfee86715d09b0211baa8dad3e47402c638fc95c7cfa02e87","3de8718fb3ca9b15212e8bd84fba205995d24636087090a61c63c28a96a745b1","3df4f31fda99ad137c651322ad29809e36380400516399274870b4a4332b4a92","3f09ee199e3c2e808e0f6e74f197f2fdd8158ae099a7195c498ce9466bb78b03","44bda82d6f9a9625a83283bf56a15a1831f287037214dc134eeeae87f1faa869","6c5b38ee260d1f15f8029d699ec1cebceafb5e1407a6341dc7a4b96f4d9d3521","72742cbaa561237f10251e94aa5c61153ab5c7f14fc5771b7a5ebdece1e1cb11","87d6de6f3730cecd75d9a4411bf4dbac4e058127a3ce9f46b07f6de110bc26de","8b1cf51c5f03c0ae19c46ca3ea4a1158acbb6e47bf109ca8c506c5417b51cf9f","95115e1052b5ea4fcd393f5c9b9c6f0298657f0028eee84e16215ede97576cfa","a38737476856236f33e0aef1b97e2b900677cf99f1dbcfd381c708ceeca8b7f3","ab4502eff76606ac8e58b623878f3d76e1e0b18f30796aec7c446e2aab8b57c8","c01c2c98f13a65b49113916a2f295e46a03fc4c185ece880267dd86c3f3dee8b","d557525e3ebfad227c8d6db9bb6350d42506fb02b1de8058cb443f4f008c0f67"],"schema":"fsgg.atlas/1"}
{"records":["049f1d0d8155f65b6f7675ebdb200d4595570cc7d585dd74876e0285eceffed6","0863093e69a16355fa9b90f8e7e29156ea4ad88c4523bc4883568bde831bdf35","2056fa8b653c2240afdad2a16f572a07019109254847829610a9468bb2f95248","231df3792931ad2333d00970a5993b3e13fa9dc38f687899f9fa2c966ed9fbfa","24fdc3980640ba58bedcae6f16d5b467eb7383c31161fb9b6ff10fd2e667b0e5","264a2f7887a9b6473cbc24102e1bf9be70e57f6d7ba224138140efa094d541f4","2b7dfb3a2f76368cb603161cdb6f8fa8c2b8afc3e96659dd37c975921ba5ba66","33df463263533529cca24a0b09937573f836d197cc1a739e9960b1cdd4deb1fd","343077d02ddd266b21d8677f7c256854134f7e3e2d18137b55ebe3f32564c5c0","34391bda3fb56135a2bddf74ab790958c175bc6a69c38175e6f8db792cfd50a0","36a19fefd7024f54f3391ffed19019c10222a514719edd7a44f0cde2a1c48258","3d3a0a302c02cd0bfee86715d09b0211baa8dad3e47402c638fc95c7cfa02e87","3de8718fb3ca9b15212e8bd84fba205995d24636087090a61c63c28a96a745b1","3df4f31fda99ad137c651322ad29809e36380400516399274870b4a4332b4a92","3f09ee199e3c2e808e0f6e74f197f2fdd8158ae099a7195c498ce9466bb78b03","44bda82d6f9a9625a83283bf56a15a1831f287037214dc134eeeae87f1faa869","6c5b38ee260d1f15f8029d699ec1cebceafb5e1407a6341dc7a4b96f4d9d3521","72742cbaa561237f10251e94aa5c61153ab5c7f14fc5771b7a5ebdece1e1cb11","85f06991da74fa4e59ba73c7034dc53a35a4e90c5b64d83cc8956d3afd61d376","87d6de6f3730cecd75d9a4411bf4dbac4e058127a3ce9f46b07f6de110bc26de","8b1cf51c5f03c0ae19c46ca3ea4a1158acbb6e47bf109ca8c506c5417b51cf9f","95115e1052b5ea4fcd393f5c9b9c6f0298657f0028eee84e16215ede97576cfa","a38737476856236f33e0aef1b97e2b900677cf99f1dbcfd381c708ceeca8b7f3","ab4502eff76606ac8e58b623878f3d76e1e0b18f30796aec7c446e2aab8b57c8","c01c2c98f13a65b49113916a2f295e46a03fc4c185ece880267dd86c3f3dee8b","d557525e3ebfad227c8d6db9bb6350d42506fb02b1de8058cb443f4f008c0f67","d9718eb12e9ae9ea3a29a9904f131f53e99c584ef1b297aa05f1f8f6cdc6ab2a"],"schema":"fsgg.atlas/1"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"citations":[{"path":"docs/roadmaps/wasm-shared-01.md","repository":"FS-GG/FS.GG.Game","revision":"7e77683b472d5da6872260a71287799be9424b46","sha256":"815afcb0fa6ab12251112d1bee3dd293699783c88a6ed70ba1d98ef491130649"},{"path":"scripts/wasm-release/build-worker-policy.sh","repository":"FS-GG/FS.GG.Game","revision":"7e77683b472d5da6872260a71287799be9424b46","sha256":"3e767ab1a920c3bc84c9c56a0d7eeef89e3c06f861d945f4b3523426337a945e"},{"path":"scripts/wasm-release/worker-bundle/build.mjs","repository":"FS-GG/FS.GG.Game","revision":"7e77683b472d5da6872260a71287799be9424b46","sha256":"404803d8f8bf57efc76843776158cce2358f635f311f156decbb451d595c2509"},{"path":"scripts/wasm-release/worker-bundle/closed-module.mjs","repository":"FS-GG/FS.GG.Game","revision":"7e77683b472d5da6872260a71287799be9424b46","sha256":"b5ee7353dbc5fb65edc749401332108ed08945babf746371d8807d08a4a42804"},{"path":"scripts/wasm-release/worker-bundle/package-lock.json","repository":"FS-GG/FS.GG.Game","revision":"7e77683b472d5da6872260a71287799be9424b46","sha256":"14b0f16377cd6a6a6242ffb86201d6819390ab1de32046b49ce23df170643fa4"},{"path":"src/Wasm.Browser/FS.GG.Wasm.Browser.fsproj","repository":"FS-GG/FS.GG.Game","revision":"7e77683b472d5da6872260a71287799be9424b46","sha256":"8ae7bf1d99b06e0d89a8467e4eba00a2c2b8c90f72bfb8a55c11d3223e71af50"},{"path":"src/Wasm.Browser/WorkerEntry.fs","repository":"FS-GG/FS.GG.Game","revision":"7e77683b472d5da6872260a71287799be9424b46","sha256":"34cd39c024c4f5415489947e024a48bee8a44671b39b9b013ca3118bcd21ad9f"},{"path":"src/Wasm.Browser/js/module-worker.mjs","repository":"FS-GG/FS.GG.Game","revision":"7e77683b472d5da6872260a71287799be9424b46","sha256":"81a4a316b1da49793eef3d4f3849cdf94ef6135c9e38f1b2867d887e95a8dea4"},{"path":"src/Wasm.Browser/js/worker-client.mjs","repository":"FS-GG/FS.GG.Game","revision":"7e77683b472d5da6872260a71287799be9424b46","sha256":"9bfcc57b363b4169f96e8b4ea8bb6a6b85a961ceec41c2e0a174ab2e0ce0cfcd"},{"path":"scripts/wasm-release/release_manifest.py","repository":"FS-GG/FS.GG.Game","revision":"7e77683b472d5da6872260a71287799be9424b46","sha256":"16e268ee5ef5b5cf2fdfd160c279a5695dd6ebba8951c56c40ede1129bac68db"},{"path":"tests/Wasm.PackageConsumer/browser/package-consumer.spec.mjs","repository":"FS-GG/FS.GG.Game","revision":"7e77683b472d5da6872260a71287799be9424b46","sha256":"269344d9658e2e3b565003dc6d4bae9d8292369b2aaa85ea1a019887133dc266"},{"path":"tests/Wasm.PackageConsumer/browser/package-consumer.mjs","repository":"FS-GG/FS.GG.Game","revision":"7e77683b472d5da6872260a71287799be9424b46","sha256":"b1d5817a08d1f44635f192d77eac35229f77fd98a56cb7843dd618807eba9666"},{"path":"tests/release/wasm/test-worker-transport.mjs","repository":"FS-GG/FS.GG.Game","revision":"7e77683b472d5da6872260a71287799be9424b46","sha256":"b1b996e7e3e657dd86e79a2aeffce9670526d9ac081cc683771acea0161b98be"},{"path":"tests/release/wasm/test-worker-bundle-custody.py","repository":"FS-GG/FS.GG.Game","revision":"7e77683b472d5da6872260a71287799be9424b46","sha256":"b4ce54c8f0165acf82b5a4655037fea918ade2cabe46008c10a22aa54da9923a"},{"path":"lib/shared/types.ts","repository":"evanw/esbuild","revision":"609683d892977362a0f99026cb74b96263d728a9","sha256":"e078310f23f0ccfa28a6ac81b5fad81f27150e921f92ab6e648caab42e2d9a14"},{"path":"packages/eslint-scope/lib/index.js","repository":"eslint/js","revision":"a73b94be20835cd52379a43629fa2225e3f18763","sha256":"522ad28c80b2749adc5d388703bc7f0dd919808fea20cbd84cdf473734d4748f"}],"conflictsWith":[],"id":"game/closed-worker-build-boundary","kind":"architecture","recordedAt":"2026-10-17T21:04:54Z","repository":"FS-GG/FS.GG.Game","schema":"fsgg.atlas/1","status":"recorded","summary":"Current source prepares coherent 0.5.0 without altering authentic published 0.4.0/P6732 or its distinct accepted installed qualifier. The maintained isolated Fable build feeds exact captured generated-policy and mechanical-entry buffers to pinned build-only esbuild 0.28.2 twice. It selects one deterministic non-minified ESM Worker, checks actual output syntax and lexical unresolved loader/execution/network references using Acorn 8.19.0 and ESLint scope 9.1.2, and rejects runtime module imports. Locally bound admission require is legitimate, not a Node loader; this closure check is not an arbitrary-JavaScript sandbox. Tool dependencies install outside source and the raw-policy package glob with dependency scripts disabled. Package custody retains raw generated source, mechanical entry, exact tool lock, input hashes and final bundle hash, so runtime selects the closed artifact rather than a source-graph fallback. The byte reader establishes correspondence, not independent compiler or signature attestation. Optional bounded scalar observations distinguish mechanical handler readiness, actual admission, SHA and combined native instantiate boundaries and page transport calls. Advisory packets never enter the lifecycle reducer; Worker-local offsets and page clocks remain separate, with missing/truncated/read-failed evidence explicit. Passive observer overhead is inside the existing budget and cannot prove an earlier timeout cause. Original pre-create enclosing deadline, identities, limits, lifecycle and termination remain selected; no ready-gated clock reset, priming, retry, cache workaround or consumer rewrite. A source-derived retired-physical-Worker onerror guard also prevents borrowing a new same-name command; it is not attributed as a prior failure cause. Prepared installed controls require fresh initial and abort-to-new physical candidates under 250ms, one-millisecond cold expiry, and a genuine loaded message held past expiry then released as an explicitly injected delivery impairment. Twelve inert actual transport controls, three synthetic byte-custody tests, fourteen existing installed-evidence tests, seven selected promotion tests and static/version guards passed locally; real F#/Fable/esbuild/closure-tool/browser controls and original full 35-minute hosted fit remain unrun. Existing publication/installed/native/product acceptance is not transferred. Future 0.5 publication and finite installed binding need actual new P/readback; no operation is selected by this record. Public rationale derives only from producer source and does not export private consumer findings.","supersedes":[],"tags":["wasm","worker","bundle","startup","diagnostics","custody","current-only"],"title":"Prepared closed Worker successor and bounded startup observations"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"citations":[{"path":"docs/roadmaps/wasm-shared-01.md","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"5e20b4d379cb6ef521f73291854e35538a09b8f758141e8f6b058c4bc1b0bf69"},{"path":"scripts/wasm-release/build-worker-policy.sh","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"3e767ab1a920c3bc84c9c56a0d7eeef89e3c06f861d945f4b3523426337a945e"},{"path":"scripts/wasm-release/worker-bundle/build.mjs","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"404803d8f8bf57efc76843776158cce2358f635f311f156decbb451d595c2509"},{"path":"scripts/wasm-release/worker-bundle/closed-module.mjs","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"8511d26e35a0c1468511db735d0179e3b699a55e72ab961cfb34314576080f77"},{"path":"scripts/wasm-release/worker-bundle/package-lock.json","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"14b0f16377cd6a6a6242ffb86201d6819390ab1de32046b49ce23df170643fa4"},{"path":"src/Wasm.Browser/FS.GG.Wasm.Browser.fsproj","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"8ae7bf1d99b06e0d89a8467e4eba00a2c2b8c90f72bfb8a55c11d3223e71af50"},{"path":"src/Wasm.Browser/WorkerEntry.fs","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"34cd39c024c4f5415489947e024a48bee8a44671b39b9b013ca3118bcd21ad9f"},{"path":"src/Wasm.Browser/js/module-worker.mjs","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"81a4a316b1da49793eef3d4f3849cdf94ef6135c9e38f1b2867d887e95a8dea4"},{"path":"src/Wasm.Browser/js/worker-client.mjs","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"9bfcc57b363b4169f96e8b4ea8bb6a6b85a961ceec41c2e0a174ab2e0ce0cfcd"},{"path":"scripts/wasm-release/release_manifest.py","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"d1035834fed0950169dd3f5c14b5ee37aebed5171a2785a43d14fb5ceb8cfbde"},{"path":"tests/Wasm.PackageConsumer/browser/package-consumer.spec.mjs","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"269344d9658e2e3b565003dc6d4bae9d8292369b2aaa85ea1a019887133dc266"},{"path":"tests/Wasm.PackageConsumer/browser/package-consumer.mjs","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"b1d5817a08d1f44635f192d77eac35229f77fd98a56cb7843dd618807eba9666"},{"path":"tests/release/wasm/test-worker-transport.mjs","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"b1b996e7e3e657dd86e79a2aeffce9670526d9ac081cc683771acea0161b98be"},{"path":"tests/release/wasm/test-worker-bundle-custody.py","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"8707e7398f3efec2cd0f08bf065ccc35b1317d6cf0edb0b92a9fdf78ea9aad3d"},{"path":"lib/shared/types.ts","repository":"evanw/esbuild","revision":"609683d892977362a0f99026cb74b96263d728a9","sha256":"e078310f23f0ccfa28a6ac81b5fad81f27150e921f92ab6e648caab42e2d9a14"},{"path":"scripts/wasm-release/worker-bundle/closed-module.test.mjs","repository":"FS-GG/FS.GG.Game","revision":"09f14435f6849e778a199a73e808e810f03a3588","sha256":"77c3b4a57b0413c6c326378bcfec3795626224c6511781398b6d9cf89fa8779c"}],"conflictsWith":[],"id":"game/closed-worker-build-boundary","kind":"architecture","recordedAt":"2026-10-17T21:08:10Z","repository":"FS-GG/FS.GG.Game","schema":"fsgg.atlas/1","status":"recorded","summary":"Current source prepares coherent 0.5.0 without altering authentic published 0.4.0/P6732 or its distinct accepted installed qualifier. The maintained isolated Fable build feeds exact captured generated-policy and mechanical-entry buffers to pinned build-only esbuild 0.28.2 twice. It selects one deterministic non-minified ESM Worker, checks actual output syntax and lexical unresolved loader/execution/network references using Acorn 8.19.0 and ESLint scope 9.1.2, and rejects runtime module imports. Locally bound admission require is legitimate, not a Node loader; this closure check is not an arbitrary-JavaScript sandbox. Tool dependencies install outside source and the raw-policy package glob with dependency scripts disabled. Package custody retains raw generated source, mechanical entry, exact tool lock, input hashes and final bundle hash, so runtime selects the closed artifact rather than a source-graph fallback. The byte reader establishes correspondence, not independent compiler or signature attestation. Optional bounded scalar observations distinguish mechanical handler readiness, actual admission, SHA and combined native instantiate boundaries and page transport calls. Advisory packets never enter the lifecycle reducer; Worker-local offsets and page clocks remain separate, with missing/truncated/read-failed evidence explicit. Passive observer overhead is inside the existing budget and cannot prove an earlier timeout cause. Original pre-create enclosing deadline, identities, limits, lifecycle and termination remain selected; no ready-gated clock reset, priming, retry, cache workaround or consumer rewrite. A source-derived retired-physical-Worker onerror guard also prevents borrowing a new same-name command; it is not attributed as a prior failure cause. Prepared installed controls require fresh initial and abort-to-new physical candidates under 250ms, one-millisecond cold expiry, and a genuine loaded message held past expiry then released as an explicitly injected delivery impairment. Twelve inert actual transport controls, three synthetic byte-custody tests, fourteen existing installed-evidence tests, nine selected promotion tests and static/version guards passed locally; real F#/Fable/esbuild/closure-tool/browser controls and original full 35-minute hosted fit remain unrun. Existing publication/installed/native/product acceptance is not transferred. Future 0.5 publication and finite installed binding need actual new P/readback; no operation is selected by this record. Public rationale derives only from producer source and does not export private consumer findings. Independent source review found two failclosed correspondence gaps before execution: a direct free-global check missed alias/destructuring access, and the package reader checked only the syntax of the recorded tree. The selected repair follows lexical const aliases, permits only fixed mechanical self members and the actual Fable Encoding Buffer member, refuses escaped/dynamic/other host-global access, and prepares alias/destructure/escape negative controls. Source preparation and manifest verification now pass their exact outer tree into the Worker reader; a changed-valid-tree mutant was actually refused by the inert reader tests. No actual generated artifact or runtime failure is attributed to these source findings. The historical finite published-binder fixture now explicitly qualifies only real 0.4 and refuses source 0.5; its actual clean-checkout controls passed. Independent connected source review passed at 09f1443, but does not execute or qualify the tool/Worker paths.","supersedes":["049f1d0d8155f65b6f7675ebdb200d4595570cc7d585dd74876e0285eceffed6"],"tags":["wasm","worker","bundle","startup","diagnostics","custody","current-only"],"title":"Prepared closed Worker successor and bounded startup observations"}
Loading
Loading