Repository navigation
Remove size caps on published data - #512
Conversation
A project's size isn't capped. The explorer fetches only its own site's data, so it now loads the search index, map payloads, pages and concept links whatever their size, and its request timeout measures a stall (it restarts on every chunk) rather than a long transfer. Render publishes the whole concept-links layer, reads atlas.json of any size, and no longer trims summaries; a search index over 32 MiB gets a note about load time. This replaces the previous commit's 64 MiB limit and summary trimming.
|
Review at 67c71dd: merge. Nothing blocks merge. Every cap the body lists is gone, and nothing else in the client or render refers to it. The stall timer re-arms on each chunk, clears in Notes
Checks
Posted by Claude Code (session jackmccarthy-eb). |
publication.json lists every site file with its digest, so it grows with the project. Render refused to write one past 8 MiB, and render, the dashboard and the Lean source scanner refused to read one, so a large project could not publish, or replace or badge its own site. All four now read it whole; an opaque marker's byte bound may be None. Review notes on 67c71dd: the 65 MiB concept-links case now streams a 65 MiB body, the stall comment names the whole-body fallbacks, and a stale data-limit comment is gone.
|
Review notes addressed in 2547efd.
The bundle is rebuilt (143,483 bytes, new source digest). Real ATLASReal ATLAS (
So main already loads ATLAS because #508 dropped the summaries. This PR keeps them at a cost of 11.3 MB more per first load and no measurable change in stalls (one run each). The 2.5 s stall on Home is on main too, and it isn't the index: the roadmap downloads the same file and stalls 0.5 s. Posted by Claude Code (QA bot session). |
|
Head check at 2547efd: merge. This checks only 2547efd, on top of the reviewed 67c71dd. All four notes are addressed.
Checks
Posted by Claude Code (session jackmccarthy-eb). |
Summary
A project's size shouldn't be capped. ATLAS's search index (
dependencies/index.json) reached 42,140,401 bytes for 38,661 entries and passed the explorer's 32 MiB JSON limit. Every ATLAS page then showed "Could not open this view. Published data is too large", the Topics outline stayed empty, and roadmap search fell back to the current view. That limit and its siblings only ever stopped the site's own data, because the explorer fetches nothing from other origins. So this removes every cap that refuses or drops published data, and keeps the style guidelines.Removed
request_timed_out.atlas.jsonis read at any size, without the 1 MB cap.publication.jsonlists every site file, so it grows with the project. Render no longer refuses to write one past 8 MiB, and render (replacing its own site), the dashboard (live badges) and the Lean source scanner (hiding a site folder's copies) read it whole.OpaqueDirectoryMarker.max_bytesmay beNone.Kept (guidelines)
This follows #508, which raised the JSON limit to 64 MiB and trimmed summaries over 32 MiB. The maintainer asked for no caps at all, so this removes the limit and reverts the trimming.
Out of scope
autoform librarylimits: the 64 MiB index, the 1 MiB record and verify's 200,000-entry / 1 GiB source bound.parse_indexdecodes indices from other repositories, so these validate untrusted input on a provisional format other readers share.Tests
test_a_slow_steady_transfer_loads_and_only_a_stall_times_out: with a 1 s timeout, three chunks 600 ms apart load (1.8 s in all), and a 1.6 s stall reportsrequest_timed_out. Against main's client, the steady case fails.test_optional_callback_error_and_oversized_response_never_disable_math_navigation: a 65 MiB concept-links layer streams in and loads, even with the retiredjsonLimitoption passed. Against main's client it fails, and so does a 64 MiB byte cap put back into the stream loop.test_a_large_layer_is_published_wholereplaces the omission test: 119 references are written with no reason or warning.test_a_large_atlas_manifest_still_assigns_its_areasreplaces the 1 MB "oversize" case.test_a_site_whose_manifest_outgrew_the_old_limit_is_still_replaced,test_live_overlay_reads_a_large_project_manifest, and thelargecase oftest_only_a_complete_publication_manifest_hides_its_folder. Each fails against 67c71dd's code.test_nothing_caps_published_datachecks that no cap remains in the client or render.test_wiki_links_navigation(30),test_wiki_linkslarge layer,test_graphatlas (10),test_explorer_asset_bundle(12) and the search-index module pass. One search-index case needs pytest's resolvedtmp_path, so CI covers it.ruff checkis clean.Overlap
#507 also rebuilds
blueprint-explorer.min.js. Whichever merges second needs a rebase and a freshnpm run build:explorer.