1# The static tree the desktop shell ships23This directory is what the desktop shell mounts at `/static`: the seam's built4bundle, and nothing else. It holds one file, `app.js`, and that file is a build5artifact โ `make static` writes it, git ignores it, and this README is the only6thing here that is committed.78 make static # npm build in render/, then render/dist/app.js into here9 make desktop # the same, then the shell built around it1011`make static` installs the same bytes in `dist/static` as well. That is the12build output a `-static` mount is pointed at (`make serve-static`, and the13parity harness's default); this is the tree the shell embeds. One build, two14places, because a headless host reads its assets off disk and a shipped15application carries them.1617The desktop shell embeds this whole directory (`//go:embed static` in18`main.go`), which is what makes the shipped application one self-contained19file. A build that never ran `make static` embeds only this README: then20`/static/app.js` answers `404`, `<atlas-viewport>` stays an undefined custom21element that renders nothing, and every other interaction in the application22still works. That is the deletability principle of issue #5 ยง3.2 โ the23application must build, serve and pass its non-viewport tests without the24seam's assets present โ checked by the shipping binary rather than only by the25test suite.2627The stylesheet system is **not** here. It lives in `internal/app/assets/css`,28is embedded by the application itself, and is served from `/assets`. The split29is the point: deleting the seam costs a page one script tag, not its chrome.