# Publish the prepared release on Hugging Face The repository root is already a model repository layout: an English `README.md` model card, license notices, local weights/tokenizer/configuration, source, tests and evidence. No hosted Inference API integration or Hugging Face Space is configured. This distribution contains the model and browser runtime. It does not contain a comparison application or cloud-provider integrations. ## Review and dry run After setup: ```bash ./test.command .venv/bin/python scripts/publish.py --repo-id YOUR_NAMESPACE/NanoJev-Web ``` The default is a **dry run**: it verifies hashes and prints the exact upload file count. It makes no network writes and does not need a token. Replace `YOUR_NAMESPACE` with the intended account or organization; no personal namespace is embedded in the release. ## Explicit publication Authenticate through the Hugging Face CLI or provide `HF_TOKEN` through your environment. Keep credentials outside this folder. Then: ```bash .venv/bin/python scripts/publish.py \ --repo-id YOUR_NAMESPACE/NanoJev-Web --publish ``` This explicitly creates a **public** model repository and uploads only verified manifest files. If the repository already exists, the command fails unless you add `--update-existing`. That flag adds/replaces the listed files and does not delete unrelated remote files. Choose a new clean repository for a first release. The helper uses `HfApi` with an exact file allowlist. It does not upload `.local`, `.venv`, `.runtime`, `node_modules`, `.env`, browser evidence, development history, shell configuration or hidden parent directories. Do not use an unrestricted recursive upload on an installed workspace. ## Portable archive ```bash .venv/bin/python scripts/release.py --export ../NanoJev-Web-1.0.0.tar.gz ``` The archive contains the same manifest files plus the manifest. Tar ownership IDs and names are normalized, as are timestamps, so machine usernames and local filesystem metadata are not copied into the archive. Dependencies and browsers are installed on the destination machine with `setup.command`. The checkpoint's SHA-256 is recorded in `PROVENANCE.json`. `.gitattributes` marks safetensors for large-file handling. Hugging Face handles large-file transfer through its upload API. ## Model-card scope The card identifies the NanoJev parent, the Qwen backbone, browser head training, mixed upstream license terms and the specialized decision interface. It does not label this custom checkpoint as a generic text-generation pipeline or claim universal browser benchmark performance. References: [Hugging Face model cards](https://huggingface.co/docs/hub/model-cards), [Hugging Face upload guide](https://huggingface.co/docs/huggingface_hub/guides/upload). ## Static demonstration assets The demonstration image is `docs/assets/browser-demo.png`, showing the final verified results. The recording is `docs/assets/seed-43129.gif`, embedded in the model card and [detailed report](SINGLE_FORM_REPORT.md). Both supplied files are preserved byte-for-byte and included as documentation assets in the release manifest and archive. They are shown in the demonstration section after the model description, integration and limitations. The executable comparison stand is not distributed. The GIF contains 26.51 seconds of playback and ends before Astra's final Passed badge. The caption distinguishes this recording excerpt from the complete run metrics, which come from the saved benchmark logs. If you later replace a media file or edit the Markdown locally, update the corresponding manifest entries before using the verified uploader and regenerate the archive. A direct edit on the Hub does not change the local archive.