Playground
Paste an element set and see what GPKit reads, where the satellite is and when it passes over a place. GPKit itself works out every figure, compiled to WebAssembly and run in this page.K-108
Nothing you type leaves your browser: the page asks for nothing but its own files, and keeps nothing, so a reload clears it.K-109
This page runs GPKit 1.4.0: the module attached to its release.K-117
Loading GPKit…
1. The element set
Examples:
The examples are public element sets, frozen as GPKit's own tests hold them.
2. A place
3. At that moment
4. Passes in the next 24 hours
This page runs the module attached to
GPKit 1.4.0,
as released, built from commit
f0a32fe.
How it's checked
GPKit's CI runs this module under Node and makes 145 calls of it, over five public element sets, the ISS as OMM and two refused texts, at four places. Each answer matches GPKit's native build to within 1e-9: its shape, words, times and whole numbers are the same, and every other number is within 1e-9 of the native one.K-110
Sources
K-108The playground works out every figure it shows with GPKit, compiled to WebAssembly and run in the page; its script only formats the module's answers. Source: GPKitv1.4.0(tag at f0a32fe, released 2026-11-10 23:11:36Z, https://github.com/hneogy/GPKit/releases/tag/v1.4.0):playground/Sources/PlaygroundAnswers/Answers.swift(the answers, from GPKit's own types),playground/Sources/GPKitPlayground/Playground.swift(the exported calls), read withgit show v1.4.0:…(git diff v1.2.0 v1.4.0 -- playground/empty); the served modulegpkit-d5b24a718088.wasmis the release assetgpkit-playground.wasm(release.yml run 42921285945), SHA-256 d5b24a71…66a8d30, equal to the release'sgpkit-playground.wasm.sha256(module.toml; check 10 pins it);sites/gpkit/playground/playground.js(formats, and subtracts two of the module's times for a duration and an age).K-109The playground page requests nothing but its own files and keeps nothing: no cookies, no storage, and the place is typed, never asked of the browser. Source:build.py(PLAYGROUND_CSP:connect-src 'self', nothing from another host;Permissions-Policy: geolocation=());sites/gpkit/playground/playground.js(onefetch, of the module; no storage, no cookies, no geolocation); tried in a local browser 2026-11-10: the requests were the page's own files ; evidence, the preview deploy read as served 2026-11-10 (playground-preview at 6dceff5, https://a71e4fca.gpkit-site.pages.dev): under /playground/ exactly the playground's policy, its 404s included; the page's only requests were its eight own files, no beacon, no cookies or storage; the preview deploy of fc5daff, the release commit, read 2026-11-10 (playground-preview, https://6f7c34b9.gpkit-site.pages.dev): under /playground/ (the page, the module, playground.js, playground.css, /playground/no-such-file) exactly one policy, the playground's, its 404 included; everywhere else exactly one, the site's; the module served as application/wasm, SHA-256 c430a86c…3163a; in the browser, the page's only requests its eight own files, no beacon, no cookies, nothing in storage, no console errors; production read 2026-11-10, at once after the deploy of d3c05fa (https://f326e31d.gpkit-site.pages.dev): the same as the preview in every point above, the policies header for header, the 18 served files byte-identical to the build, the old module gone (404).K-110GPKit's CI makes 145 calls of the playground's module under Node's WASI and holds each answer to GPKit's native build: it matches to within 1e-9 (shapes, strings, times and integers the same, every other number within 1e-9 of the native one); the tolerance is the owner's ruling of 2026-11-10. Source: GPKitv1.2.0(tag at 971b642, released 2026-11-10 10:51:10Z, https://github.com/hneogy/GPKit/releases/tag/v1.2.0):playground/test/equal.mjs,playground/Sources/playground-reference/main.swift,.github/workflows/playground-module.yml:71-81(the planted difference that must stop it);release.yml's run 42802619508 on the tag, all five jobs green, its log "the planted difference was stopped" (10:53:20Z); the release assetgpkit-playground-checks.txt: 145 calls, none parting by more than 1e-9, the widest 7.28e-12.K-117The playground runs GPKit 1.4.0: the module attached to GPKit's v1.4.0 release. Source:sites/gpkit/playground/module.toml(tag = "v1.4.0", the release asset's SHA-256 d5b24a71…66a8d30, equal to the release'sgpkit-playground.wasm.sha256and to GitHub's digest of the asset, pinned by check 10, as K-108); brotli -q 11, 1,072,122 bytes, under the 1,153,434-byte budget (the release'sgpkit-playground-checks.txtsays the same); GPKitgit diff v1.2.0 v1.4.0 -- playground/empty; the page states the version from module.toml's tag (shared/templates/partials/playground.html). Moved from v1.2.0's module on the owner's word, 2026-11-10 (R-18 had kept it while no release changed the playground's code).