release: ship the web dashboard, so the Expert Atlas actually reaches users (#578)#641
Merged
Merged
Conversation
The README leads with a dashboard screenshot and the site's whole argument is the measured Expert Atlas, but no release archive has ever contained either. `release.yml` packages the engine and four .py files; web/dist is a build artifact and is not tracked, so a release user has no web/ to build from -- and `coli web` told them to "cd web && npm install" in a directory the archive does not have. JustVugg#578 shipped web/public/experts.json, which is correct and does land in web/dist at build time. It just never reached anyone who did not build the front end themselves. Packaging alone would not have been enough: WEB_DIST was a single path, __file__/../../web/dist, which only resolves in a source checkout, where this file sits in c/. In an archive or an installed tree the server sits NEXT TO web/dist, one level nearer. Both openai_server.py and coli now probe for index.html across the two layouts instead of assuming one. The dashboard is built in CI rather than committed, so dist/ stays an artifact. On Windows the step forces shell: bash -- the job default is msys2, whose minimal PATH does not see the node that setup-node installs. `make install` installs web/dist next to openai_server.py when it exists, and says how to build it when it does not. The archive verification gains the dashboard: not just that the files are present, but that the packaged server actually RESOLVES them -- an archive with the right files under an unresolvable path is precisely the failure that step already exists to catch. Verified by replaying all three layouts locally: source checkout, an unpacked release tree, and make install DESTDIR -- each resolves to its own web/dist with index.html and experts.json present, and an unbuilt tree still falls through to the "web UI not built" hint. make check 211. Refs JustVugg#578, JustVugg#175
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is the "why can't I see the atlas" thread, and the answer turned out not to be the atlas.
What is actually broken
The README leads with a dashboard screenshot, and the site's entire argument is the measured Expert Atlas β but no release archive has ever contained either.
release.ymlpackages the engine plus four.pyfiles;web/distis a build artifact and isn't tracked. So a release user has noweb/to build from, andcoli webhelpfully told them tocd web && npm installβ in a directory the archive does not have.#578 was right and did work:
web/public/experts.json(13,260 experts) does land inweb/dist/experts.jsonat build time β I rebuilt to confirm, 3,497,647 bytes, byte-identical. It just never reached anyone who didn't build the front end themselves.Worth stating plainly, since it caused the confusion: there are two different atlases.
site/index.html(inlinedATLAS_RAW)web/+experts.jsonThe site's atlas is fine and has been all along. This PR is about the second one. It does not touch
site/, and it does not replace v1 with the sweep data β v1 is the stricter set (cross-validated across three kernel families), and mixing them is a separate judgement call.Packaging alone would not have fixed it
WEB_DISTwas one path:That only resolves in a source checkout, where this file sits in
c/. In a release archive or an installed tree the server sits next toweb/dist, one level nearer β so shipping the files without touching this would have produced an archive that contains the dashboard and still 404s. Bothopenai_server.pyandcolinow probe forindex.htmlacross the two layouts. Probing for the file rather than the directory also stops an empty leftoverweb/distfrom shadowing a real one.Changes
release.ymlβ build the dashboard withsetup-node+npm ci && npm run build, package it asweb/distnext tocoli. Built in CI rather than committed, sodist/stays an artifact. On Windows the step forcesshell: bash: the job default is msys2, whose minimal PATH cannot see the nodesetup-nodeinstalls.openai_server.py/coliβ two-layout resolution, described above.Makefileβinstallplacesweb/distnext toopenai_server.pywhen it exists, and prints how to build it when it doesn't (it's an optional artifact, so this must not become a hard dependency ofmake install).Verification
Replayed all three layouts locally and checked which path each resolves to:
c/)<repo>/web/dist<pkg>/web/distmake install DESTDIR=β¦<libexec>/colibri/web/distThe new verify command was tested both ways β passing on a correct tree, and failing with the resolved path named when
web/is removed. (Shipping an unrun verification step would be the same class of mistake this PR is fixing.)make check211 passed.Note on size
The archive grows by ~3.7 MB, almost all of it
experts.json(3.5 MB; the built UI is ~250 KB). That is the atlas itself, so it's the payload rather than overhead β but it's a real jump against a ~1 MB engine, and worth a maintainer's call. If you'd rather keep archives lean, the alternatives are shipping the UI without the atlas data (the hover degrades, the dashboard still works) or servingexperts.jsoncompressed. Happy to do either.