Portable edition developer notes

Users only need to double-click the extracted Calculator.html. This section
is for developers who want to edit or rebuild the download.

Source.zip contains the editable project under oathkeeper-calculator/. Its
public/app.html is the practical UI, with ordinary editable scripts and
styles alongside it. It also includes the source and notices for the math
engines, emulator, and curated KnightOS guest. See its README and guest-source
rebuild guide for the individual components.

Run Python 3.9+ on the packager if you want to create a new portable ZIP:
python Development/build_portable.py --source Source.zip --output portable.zip

Or extract Source.zip, make changes in the project and give --source the path
to the extracted oathkeeper-calculator directory. The same builder can read
that directory without installing any Python packages. It detects unexpected
changes at the three hosted-to-offline loader boundaries rather than silently
shipping a build that contacts a server.

The portable page embeds the local application CSS and scripts. A Blob-backed
math worker retains the separate execution and timeout mechanism. The guest
loads its original memory initializer from a local Blob and its expected
SHA-256-checked ROM from a local Blob. The browser releases the object URLs
with the document. No browser security policy or vendor implementation needs
to be installed or changed on the user's machine.
