Main-domain deployment adapter, October 13, 2026

This distribution retains the original utility source and static guide shell.
The live mount is now /tools/library/ and all public tools live under /tools/.
The utility runtime derives its router, resource, and service-worker scope from
the HTML <base href="/tools/library/">. Assets remain relative to their chunks.
No utility processing logic has been changed and no tracking was added.

The included main-domain-deployment/build_tool_suite.py records every deterministic
deployment transformation applied to the original static build. It relocates
the guide-shell links, metadata and assets; adjusts three literal navigation and
license links in the compiled entry; namespaces worker caches; replaces the
outer page navigation and footer from the included build_shell.py; applies the
included scoped tools-brand.css and navigation-only tools-shell.js; removes empty
reserved advertising placeholders; and versions the changed scripts. No main-site
advertising, analytics or global runtime styles are loaded. Source license
notices and the original matching source remain.

To reproduce: use the original source and normandin-page-shell/README.txt to
rebuild the standalone static toolbox. Then run this adapter with explicit paths:
  python build_tool_suite.py --source <standalone-site> --destination <site>/tools
The source archive in standalone-site/downloads is retained and extended with
this adapter. It is not fetched from a server. Use --skip-source-archive when
bootstrapping the standalone build without its packaged source archive; provide
the complete corresponding source alongside the final redistribution.

Required serving rules: extensionless /tools/library/<slug> serves the matching
.html file; /tools/about serves about.html; unknown tool paths return HTTP 404.
Never rewrite unknown paths to the catalog or application shell.
Required headers on /tools/library/*:
  Cross-Origin-Opener-Policy: same-origin
  Cross-Origin-Embedder-Policy: require-corp
Use X-Frame-Options: SAMEORIGIN so the visual subnet calculator iframe can load.
Keep device permissions disabled for camera, microphone and geolocation.
Revalidate /tools/assets/* and /tools/library/sw.js on each navigation.
