Skip to content
2 changes: 1 addition & 1 deletion docs/atlas/catalog.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"records":["049f1d0d8155f65b6f7675ebdb200d4595570cc7d585dd74876e0285eceffed6","0863093e69a16355fa9b90f8e7e29156ea4ad88c4523bc4883568bde831bdf35","2056fa8b653c2240afdad2a16f572a07019109254847829610a9468bb2f95248","231df3792931ad2333d00970a5993b3e13fa9dc38f687899f9fa2c966ed9fbfa","24fdc3980640ba58bedcae6f16d5b467eb7383c31161fb9b6ff10fd2e667b0e5","264a2f7887a9b6473cbc24102e1bf9be70e57f6d7ba224138140efa094d541f4","2b7dfb3a2f76368cb603161cdb6f8fa8c2b8afc3e96659dd37c975921ba5ba66","33df463263533529cca24a0b09937573f836d197cc1a739e9960b1cdd4deb1fd","343077d02ddd266b21d8677f7c256854134f7e3e2d18137b55ebe3f32564c5c0","34391bda3fb56135a2bddf74ab790958c175bc6a69c38175e6f8db792cfd50a0","36a19fefd7024f54f3391ffed19019c10222a514719edd7a44f0cde2a1c48258","3d3a0a302c02cd0bfee86715d09b0211baa8dad3e47402c638fc95c7cfa02e87","3de8718fb3ca9b15212e8bd84fba205995d24636087090a61c63c28a96a745b1","3df4f31fda99ad137c651322ad29809e36380400516399274870b4a4332b4a92","3f09ee199e3c2e808e0f6e74f197f2fdd8158ae099a7195c498ce9466bb78b03","44bda82d6f9a9625a83283bf56a15a1831f287037214dc134eeeae87f1faa869","6c5b38ee260d1f15f8029d699ec1cebceafb5e1407a6341dc7a4b96f4d9d3521","71bc29a175940d22dd1d85148ee49f47aed714395fbd51d07b8751147815a55f","72742cbaa561237f10251e94aa5c61153ab5c7f14fc5771b7a5ebdece1e1cb11","85f06991da74fa4e59ba73c7034dc53a35a4e90c5b64d83cc8956d3afd61d376","87d6de6f3730cecd75d9a4411bf4dbac4e058127a3ce9f46b07f6de110bc26de","8b1cf51c5f03c0ae19c46ca3ea4a1158acbb6e47bf109ca8c506c5417b51cf9f","8c514796f190fe6d4307be57983c84f92208f5d2f00fcbe3093b72618f2d7bc1","95115e1052b5ea4fcd393f5c9b9c6f0298657f0028eee84e16215ede97576cfa","9b6c05923a43ea37b10504396105d97ba51c0430e82fb3bb4953ee4256cdc1aa","a38737476856236f33e0aef1b97e2b900677cf99f1dbcfd381c708ceeca8b7f3","ab4502eff76606ac8e58b623878f3d76e1e0b18f30796aec7c446e2aab8b57c8","ab69ebe00eac40c68aec6131ef0559967b399266aae89f9673d3c30ce12f36b0","c01c2c98f13a65b49113916a2f295e46a03fc4c185ece880267dd86c3f3dee8b","d557525e3ebfad227c8d6db9bb6350d42506fb02b1de8058cb443f4f008c0f67","d9718eb12e9ae9ea3a29a9904f131f53e99c584ef1b297aa05f1f8f6cdc6ab2a","fa8cd29fe962d7e853457e829c2d5927685f0ff374e6450fff5529f785db442d"],"schema":"fsgg.atlas/1"}
{"records":["049f1d0d8155f65b6f7675ebdb200d4595570cc7d585dd74876e0285eceffed6","0863093e69a16355fa9b90f8e7e29156ea4ad88c4523bc4883568bde831bdf35","0b92e4db5e34990113bb43cb8cd58cf251d06083cf812398d6da9fdebb98e0f5","2056fa8b653c2240afdad2a16f572a07019109254847829610a9468bb2f95248","231df3792931ad2333d00970a5993b3e13fa9dc38f687899f9fa2c966ed9fbfa","24fdc3980640ba58bedcae6f16d5b467eb7383c31161fb9b6ff10fd2e667b0e5","264a2f7887a9b6473cbc24102e1bf9be70e57f6d7ba224138140efa094d541f4","2b7dfb3a2f76368cb603161cdb6f8fa8c2b8afc3e96659dd37c975921ba5ba66","33df463263533529cca24a0b09937573f836d197cc1a739e9960b1cdd4deb1fd","343077d02ddd266b21d8677f7c256854134f7e3e2d18137b55ebe3f32564c5c0","34391bda3fb56135a2bddf74ab790958c175bc6a69c38175e6f8db792cfd50a0","36a19fefd7024f54f3391ffed19019c10222a514719edd7a44f0cde2a1c48258","3d3a0a302c02cd0bfee86715d09b0211baa8dad3e47402c638fc95c7cfa02e87","3de8718fb3ca9b15212e8bd84fba205995d24636087090a61c63c28a96a745b1","3df4f31fda99ad137c651322ad29809e36380400516399274870b4a4332b4a92","3f09ee199e3c2e808e0f6e74f197f2fdd8158ae099a7195c498ce9466bb78b03","44bda82d6f9a9625a83283bf56a15a1831f287037214dc134eeeae87f1faa869","6c5b38ee260d1f15f8029d699ec1cebceafb5e1407a6341dc7a4b96f4d9d3521","71bc29a175940d22dd1d85148ee49f47aed714395fbd51d07b8751147815a55f","72742cbaa561237f10251e94aa5c61153ab5c7f14fc5771b7a5ebdece1e1cb11","7eba935f363db90d4b6d3fea2d226a7a58b08b88cf748e619ddb407ea83911e9","85f06991da74fa4e59ba73c7034dc53a35a4e90c5b64d83cc8956d3afd61d376","87d6de6f3730cecd75d9a4411bf4dbac4e058127a3ce9f46b07f6de110bc26de","8b1cf51c5f03c0ae19c46ca3ea4a1158acbb6e47bf109ca8c506c5417b51cf9f","8c514796f190fe6d4307be57983c84f92208f5d2f00fcbe3093b72618f2d7bc1","95115e1052b5ea4fcd393f5c9b9c6f0298657f0028eee84e16215ede97576cfa","9b6c05923a43ea37b10504396105d97ba51c0430e82fb3bb4953ee4256cdc1aa","a38737476856236f33e0aef1b97e2b900677cf99f1dbcfd381c708ceeca8b7f3","ab4502eff76606ac8e58b623878f3d76e1e0b18f30796aec7c446e2aab8b57c8","ab69ebe00eac40c68aec6131ef0559967b399266aae89f9673d3c30ce12f36b0","c01c2c98f13a65b49113916a2f295e46a03fc4c185ece880267dd86c3f3dee8b","d557525e3ebfad227c8d6db9bb6350d42506fb02b1de8058cb443f4f008c0f67","d9718eb12e9ae9ea3a29a9904f131f53e99c584ef1b297aa05f1f8f6cdc6ab2a","fa8cd29fe962d7e853457e829c2d5927685f0ff374e6450fff5529f785db442d"],"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":"ed35ba5affc25efcb38213ad6e2f568d542ccd49","sha256":"1d14f1661b2857c3cc52df5e3004c3c73add5ba15362a079e08556acbb72bf09"},{"path":"tests/Wasm.PackageConsumer/Program.fs","repository":"FS-GG/FS.GG.Game","revision":"fae6b000131f3e5f718c4294844c73d767150db4","sha256":"3c53d61db88ebe7eddbdce897b3976cfe7f75f714eeac4e28bc037c5e9fb244c"},{"path":"tests/Wasm.PackageConsumer/browser/package-consumer.mjs","repository":"FS-GG/FS.GG.Game","revision":"fae6b000131f3e5f718c4294844c73d767150db4","sha256":"d2994c129805a73a23505237dc8582be386e7a63ca14771ebb2f393a2024e966"},{"path":"tests/Wasm.PackageConsumer/browser/package-consumer.spec.mjs","repository":"FS-GG/FS.GG.Game","revision":"ed35ba5affc25efcb38213ad6e2f568d542ccd49","sha256":"8971b6aa2eeab82d5be20bc2e9bad6dc9f82c76ce86cee903aeff3a00401fbc4"},{"path":"tests/Wasm.Lifecycle.Tests/LifecycleTests.fs","repository":"FS-GG/FS.GG.Game","revision":"fae6b000131f3e5f718c4294844c73d767150db4","sha256":"757cedc77d5c9c4e55c4bb9ee489e31a92f6ab5df11ccecd3344d7dadd9d74f5"},{"path":"src/Wasm.Browser/Lifecycle.fs","repository":"FS-GG/FS.GG.Game","revision":"bc78722f7a62a1ce5f0351d7969a26c307ec4fe7","sha256":"3eeb9466880a9cc8db0284a3422d3e93d8d0634c128ceb32fc8aa456c98c0437"},{"path":"src/Wasm.Browser/Lifecycle.fsi","repository":"FS-GG/FS.GG.Game","revision":"bc78722f7a62a1ce5f0351d7969a26c307ec4fe7","sha256":"d263e8dd7535335751fd5480e47babce440f8ca0975c0d3cd8159bf29bc7f477"},{"path":"src/Wasm.Browser/Host.fs","repository":"FS-GG/FS.GG.Game","revision":"bc78722f7a62a1ce5f0351d7969a26c307ec4fe7","sha256":"c502f8f9c55ec78dada7908241ae2f65242f442b91d14821bb83aef2c2319957"},{"path":"src/Wasm.Browser/Admission.fs","repository":"FS-GG/FS.GG.Game","revision":"bc78722f7a62a1ce5f0351d7969a26c307ec4fe7","sha256":"0bb3799d2ee00ddbbbfa413db6b616a692e3228943d1fb43cf3c370f1e0475dc"},{"path":"eng/wasm-shared/version.props","repository":"FS-GG/FS.GG.Game","revision":"bc78722f7a62a1ce5f0351d7969a26c307ec4fe7","sha256":"6b50423f8f30da7d52305ee527baaddd91f77cc422f7585cf61c063bcad209e1"}],"conflictsWith":[],"id":"game/closed-worker-build-boundary","kind":"lesson","recordedAt":"2026-10-18T00:36:55Z","repository":"FS-GG/FS.GG.Game","schema":"fsgg.atlas/1","status":"recorded","summary":"Original0.6 source PR722/run39079271365/attempt1 passed at5d39; native merged producerbc78722f7a62a1ce5f0351d7969a26c307ec4fe7 has exact tested/delivered tree9df5fea131983d4d9ec98176106df62f143ad529. Source/candidate-installed CLR/Fable/numeric and all36 package-browser cases passed, including the public instruction-dense history. This is exact PR acceptance, not protection against a different subsequent result or proof of earlier timeout CPU cause.\nFirst protected original39080719438/attempt1 failed SDK browser qualification with35PASS/1FAIL8.3s: inherited terminal Process mode11 expected followerHostDisposed, but actual no-outcome/discarded follower retainedDeadlineExpired. The new66524-byte dense module passed allfour operations and94 complete observations across its three fresh Workers. The failed original retained model artifact12119445244/SHA549a7767f21cb8e01b66b2a3207c791d544006fc8fb93518e83464ba37f1466e/27974bytes; no eligible package custody/publication acceptance resulted. Neither the passed dense control nor failed follower assertion settles prior timing causes.\nDefaultCompatibility expireAt partitions and settles queued due<now before invalidating expired current work and retiring its session. Nearby real250ms reset and shutdown deadlines can both have elapsed by one genuine update. The queue's own first cause is therefore not universallyHostDisposed. This is a fixture assumption, with no production behavior defect identified. Source review caught a second fixture assumption before execution: connected TerminateWorker calls Observe(Now), so follower-callback Clock can exceed the original expiry-decision clock. The exact correction reads the actual admitted Ordinary deadline and captures producerProjection.Clock at the first relevant TerminateWorker port ENTRY, before mechanical termination/reentry. It requires DeadlineExpired exactly when due<decisionClock, otherwiseHostDisposed. Queue expiry must have settled before that first termination with the same clock; disposal settles after it, with later callback Clock retained separately. Missing actual admission/retirement batch fails setup, not an invented deadline or loose two-reason fallback. No added clock sample sets the expectation.\nBoth Default terminal real-Worker families retain no follower ABI outcome/delivery authority/Post, distinct identities, once-only settlement, follower-before-terminal order and active/candidate physical retirement before terminal delivery. Scalar original receipt/deadline metadata is retained before assertions without input/output payloads. Six actual Lifecycle boundary controls cover before/exact/after due for shutdown and terminal-Process followers with explicit matching phases, unchanged original deadlines, actual timed-out dispatch and duplicate-timer inertness. Three additional actualHost.CreateConnected inert-port controls reproduce termination clock reentry for before/exact/after due, select the real unique timer with exact worker/generation/request/correlation/Process key and original+1 delay, and prove that a callback beyond due can still retain legitimateHostDisposed from the earlier decision. These are declared logical mechanical-port controls, not browser timing/ABI execution proof. Separate Sc2SupervisorV1 queue-head>= and held semantics remain distinct and unchanged.\nThe source delta is test/owning documentation only; parser/lifecycle/clock/caps/ABI/version/workflow code remains unchanged, with unpublished0.6 and the same36 real-browser cases/35-minute profile. Existing clean-source inert preflight and syntax checks passed; actual compilation/Fable, repaired metadata observation, boundary cohort/real browser behavior/cleanup and fit remain pending. Original failures and all prior source/publication/installed evidence stay preserved. No unchanged rerun,0.6publication/installed/consumer/image/native operation or whole-product acceptance is selected by this correction.\nThe first corrected original PR723 qualification39082520529/attempt1 at5d77 compiled, passed all50 Lifecycle controls (including the nine new reducer/connected-host boundaries), and then failed29PASS/7FAIL in the36-case browser cohort. All seven first failures were the new shared helper comparing actual Fable Uint8Array empty output to plain Array[]; matching first-cause/no-outcome/discarded/undispatched fields agreed. Seven original scalar reports were complete; mode11 due458/decision457/callback459 demonstrates the intended distinction. Assertions after the shared byte comparison were blocked, not passed; first-family retirement assertions after it were also unqualified. The narrow repair uses Array.from(actualOutput).toEqual([]), matching existing real ABI assertions without defaulting missing bytes or changing the receipt. Full terminal caller/clock/effect and byte-projection siblings were swept; no production defect was identified. Exact native synthetic d578b7f636c09d1b6573427cf4ed55b6519b8e69 has ordered bc/5d parents and equal candidate treeb36d03d7e1975e9f228e0d37cbfbde3c1a2e4025. Original model artifact12119227914 retained SHA6ec92956d407ad526ca8e1046907b961a98e42b5007192e248b662aa60c2fcaf/27975bytes; no eligible package custody resulted. Node syntax and diff checks pass for this repair; fresh exact-head full hosted qualification remains mandatory, with all original failures/budgets and separate unpublished0.6 gates unchanged.","supersedes":["7eba935f363db90d4b6d3fea2d226a7a58b08b88cf748e619ddb407ea83911e9"],"tags":["wasm","expiry","deadline","terminal","first-cause","qualification","current-only"],"title":"Bind Default terminal follower cause to original due and actual producer clock"}
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":"fae6b000131f3e5f718c4294844c73d767150db4","sha256":"1b18d63e3dd7633818f39357336378230101cf52aa745b3d8f0bcf59fda4f5f5"},{"path":"tests/Wasm.PackageConsumer/Program.fs","repository":"FS-GG/FS.GG.Game","revision":"fae6b000131f3e5f718c4294844c73d767150db4","sha256":"3c53d61db88ebe7eddbdce897b3976cfe7f75f714eeac4e28bc037c5e9fb244c"},{"path":"tests/Wasm.PackageConsumer/browser/package-consumer.mjs","repository":"FS-GG/FS.GG.Game","revision":"fae6b000131f3e5f718c4294844c73d767150db4","sha256":"d2994c129805a73a23505237dc8582be386e7a63ca14771ebb2f393a2024e966"},{"path":"tests/Wasm.PackageConsumer/browser/package-consumer.spec.mjs","repository":"FS-GG/FS.GG.Game","revision":"fae6b000131f3e5f718c4294844c73d767150db4","sha256":"8c35dcb9ab07d91aa631c85bf7ff60539ac0ad98d67b929627fdd1d8d3387c2b"},{"path":"tests/Wasm.Lifecycle.Tests/LifecycleTests.fs","repository":"FS-GG/FS.GG.Game","revision":"fae6b000131f3e5f718c4294844c73d767150db4","sha256":"757cedc77d5c9c4e55c4bb9ee489e31a92f6ab5df11ccecd3344d7dadd9d74f5"},{"path":"src/Wasm.Browser/Lifecycle.fs","repository":"FS-GG/FS.GG.Game","revision":"bc78722f7a62a1ce5f0351d7969a26c307ec4fe7","sha256":"3eeb9466880a9cc8db0284a3422d3e93d8d0634c128ceb32fc8aa456c98c0437"},{"path":"src/Wasm.Browser/Lifecycle.fsi","repository":"FS-GG/FS.GG.Game","revision":"bc78722f7a62a1ce5f0351d7969a26c307ec4fe7","sha256":"d263e8dd7535335751fd5480e47babce440f8ca0975c0d3cd8159bf29bc7f477"},{"path":"src/Wasm.Browser/Host.fs","repository":"FS-GG/FS.GG.Game","revision":"bc78722f7a62a1ce5f0351d7969a26c307ec4fe7","sha256":"c502f8f9c55ec78dada7908241ae2f65242f442b91d14821bb83aef2c2319957"},{"path":"src/Wasm.Browser/Admission.fs","repository":"FS-GG/FS.GG.Game","revision":"bc78722f7a62a1ce5f0351d7969a26c307ec4fe7","sha256":"0bb3799d2ee00ddbbbfa413db6b616a692e3228943d1fb43cf3c370f1e0475dc"},{"path":"eng/wasm-shared/version.props","repository":"FS-GG/FS.GG.Game","revision":"bc78722f7a62a1ce5f0351d7969a26c307ec4fe7","sha256":"6b50423f8f30da7d52305ee527baaddd91f77cc422f7585cf61c063bcad209e1"}],"conflictsWith":[],"id":"game/closed-worker-build-boundary","kind":"lesson","recordedAt":"2026-10-18T00:18:37Z","repository":"FS-GG/FS.GG.Game","schema":"fsgg.atlas/1","status":"recorded","summary":"Original0.6 source PR722/run39079271365/attempt1 passed at5d39; native merged producerbc78722f7a62a1ce5f0351d7969a26c307ec4fe7 has exact tested/delivered tree9df5fea131983d4d9ec98176106df62f143ad529. Source/candidate-installed CLR/Fable/numeric and all36 package-browser cases passed, including the public instruction-dense history. This is exact PR acceptance, not protection against a different subsequent result or proof of earlier timeout CPU cause.\nFirst protected original39080719438/attempt1 failed SDK browser qualification with35PASS/1FAIL8.3s: inherited terminal Process mode11 expected followerHostDisposed, but actual no-outcome/discarded follower retainedDeadlineExpired. The new66524-byte dense module passed allfour operations and94 complete observations across its three fresh Workers. The failed original retained model artifact12119445244/SHA549a7767f21cb8e01b66b2a3207c791d544006fc8fb93518e83464ba37f1466e/27974bytes; no eligible package custody/publication acceptance resulted. Neither the passed dense control nor failed follower assertion settles prior timing causes.\nDefaultCompatibility expireAt partitions and settles queued due<now before invalidating expired current work and retiring its session. Nearby real250ms reset and shutdown deadlines can both have elapsed by one genuine update. The queue's own first cause is therefore not universallyHostDisposed. This is a fixture assumption, with no production behavior defect identified. Source review caught a second fixture assumption before execution: connected TerminateWorker calls Observe(Now), so follower-callback Clock can exceed the original expiry-decision clock. The exact correction reads the actual admitted Ordinary deadline and captures producerProjection.Clock at the first relevant TerminateWorker port ENTRY, before mechanical termination/reentry. It requires DeadlineExpired exactly when due<decisionClock, otherwiseHostDisposed. Queue expiry must have settled before that first termination with the same clock; disposal settles after it, with later callback Clock retained separately. Missing actual admission/retirement batch fails setup, not an invented deadline or loose two-reason fallback. No added clock sample sets the expectation.\nBoth Default terminal real-Worker families retain no follower ABI outcome/delivery authority/Post, distinct identities, once-only settlement, follower-before-terminal order and active/candidate physical retirement before terminal delivery. Scalar original receipt/deadline metadata is retained before assertions without input/output payloads. Six actual Lifecycle boundary controls cover before/exact/after due for shutdown and terminal-Process followers with explicit matching phases, unchanged original deadlines, actual timed-out dispatch and duplicate-timer inertness. Three additional actualHost.CreateConnected inert-port controls reproduce termination clock reentry for before/exact/after due, select the real unique timer with exact worker/generation/request/correlation/Process key and original+1 delay, and prove that a callback beyond due can still retain legitimateHostDisposed from the earlier decision. These are declared logical mechanical-port controls, not browser timing/ABI execution proof. Separate Sc2SupervisorV1 queue-head>= and held semantics remain distinct and unchanged.\nThe source delta is test/owning documentation only; parser/lifecycle/clock/caps/ABI/version/workflow code remains unchanged, with unpublished0.6 and the same36 real-browser cases/35-minute profile. Existing clean-source inert preflight and syntax checks passed; actual compilation/Fable, repaired metadata observation, boundary cohort/real browser behavior/cleanup and fit remain pending. Original failures and all prior source/publication/installed evidence stay preserved. No unchanged rerun,0.6publication/installed/consumer/image/native operation or whole-product acceptance is selected by this correction.","supersedes":["9b6c05923a43ea37b10504396105d97ba51c0430e82fb3bb4953ee4256cdc1aa"],"tags":["wasm","expiry","deadline","terminal","first-cause","qualification","current-only"],"title":"Bind Default terminal follower cause to original due and actual producer clock"}
Loading
Loading