See proposal.md for motivation. The 0.1.0 package declared a committed launcher that imported ignored dist output and relied on prepack to compile before local tarball creation. npm Git installation therefore could not rely on the selected revision alone. The package must stay private, dependency-free at runtime, compatible with Node 24 or newer, and inert toward the shared App Server during installation and verification.
Goals:
Non-Goals:
Track dist/cli.js and dist/config.js while ignoring every other dist path. Retain the existing executable in bin/ and make the npm files allowlist exact. This keeps Git revisions self-contained with less generated churn than tracking a whole output tree. A distribution branch would add synchronization machinery; consumer-side compilation would require lifecycle execution and development dependencies.
Rename the maintainer command from build to compile, remove prepack, and add no prepare, preinstall, install, or postinstall script. Use pack:verified for explicit maintainer release gates. This prevents npm from attempting to build a Git dependency in a temporary clone.
Compilation is followed by Git diff and untracked-file checks for the two runtime paths. Tests cover fresh and stale indexed fixtures. The release workflow stages the intended source/runtime pair before invoking freshness validation so generated output is compared with the exact candidate release.
Both Git and tarball verifiers install into temporary prefixes with lifecycle scripts disabled, require real package storage and the declared runtime files, and invoke the installed launcher with unsupported arguments. That invocation imports the compiled runtime and reaches its deterministic usage error without opening a socket, so validation cannot affect the shared App Server.
The canonical Gogs repository must advertise HEAD -> main because npm 11 resolves repository HEAD before cloning even an explicit tag. End-user commands pin v0.1.1 or a full commit. Both remotes must resolve the annotated tag to the intended release commit before global installation.
main as the default branch.main refs, create annotated tag v0.1.1, and verify both tags peel to the release commit.HEAD -> main, then run the isolated verifier against the actual tag.0.1.0 tarball installation with the exact Git tag and verify the real package directory, PATH executable, version, and offline invocation contract.0.1.0 tarball or a prior immutable Git revision; no Emacs or App Server configuration change is required.