Repository navigation
Admit stored quantities above one cubic metre; definition drop-downs lead with the display name - #116
Merged
Blogbotana merged 3 commits intoOct 20, 2026
Conversation
Mirror of the fork's #43 (axisrow/BeamCraft), adapted to upstream master: all nine findings of the fork's issue #20 reproduced on this base and none was fixed here - the render target clamped each side to 4096 independently (wide and Retina windows stretched the picture), the near plane was a fixed 1 mm (hidden parts showed through on long models), every reload refit the camera (a Commit or R jumped back to the whole model), small volumes read 0.000 m3, drop-down labels sat under their lists, the left panel resized with its content, an empty store showed a red error, the name field counted characters where the engine counts bytes, and a decimal comma reported the value as infinite. The near-plane, target-size, refit, volume, byte-limit and comma-message behaviour carries unit tests; the empty-store state is typed (Error::NoRevision) and the suites assert it. Co-Authored-By: Claude Code <[email protected]>
(cherry picked from commit 49c672e)
The bounded read capped every stored double at 1e9 - one cubic metre in mm3 - so a legitimate plate or member whose volume exceeded 1 m3 was refused with LIMIT_EXCEEDED (#19, finding 1; the same refusal is finding 2 of #20). The quantity rules already admit volume and mass up to 1e30 (`authored::validate::quantities`); the read now follows the attribute: `bim:volumeMm3` and `bim:massKg` carry the quantity budget on every read path (layer load, composition and the opinion capture of an edit), everything else keeps the coordinate-sized generic budget. Both an over-1m3 plate and a 1.2 m3 member are covered by end-to-end tests that failed before the change. The definition drop-downs of the window now lead with the stored display name (A07.2) instead of the grade or designation alone (finding 3 of #19); definitions published before A07.2 keep their old labels. (cherry picked from commit c3bb326)
axisrow
commented
Oct 20, 2026
axisrow
left a comment
Collaborator
Author
There was a problem hiding this comment.
Verdict: approved
UI modelling fixes promoted as a two-commit delta on the visual-fixes branch (the shared 672448e is reviewed in #114).
- The stage-budget widening in
crates/layer-engine/src/backend.rsis the minimal surface for the real bug: a stored volume of one cubic metre is 1e9 mm3, exactly the generic scalar cap, so the bounded read refused the quantities the engine itself had written. Onlybim:volumeMm3andbim:massKgget the wider 1e30 budget; coordinates, dimensions, layer offsets, foreign metersPerUnit and every unknown attribute keep 1e9; the leaf-name lookup defaults to the generic budget when a spec path has no name; and the quantity domain rules inauthored::validate::quantitiesstill own the actual value checks, so the wider read budget buys no admission. - The propagation is consistent:
typed_depthnow threads one max through dictionaries and the vec-of-vec cases (which previously reset to the generic budget mid-array), while the publictypedwrapper keeps the old behaviour for every existing caller; the edit-path capture uses the per-attribute budget viatyped_attribute, so reading back existing opinions no longer refuses what the same layer stored. - The E2E test pins the exact regression (a 5000x5000x41 plate, 1.025e9 mm3, created, then re-read by a fresh process), and 595d3eb pushes the member budget test past one cubic metre so the widened path is exercised where it was found.
- The definition drop-downs now lead with the stored A07.2 display name and fall back to grade/designation for pre-A07.2 definitions; both the present and
nullshapes are tested with the exact label strings.
The same fixes ran in the fork; no CI checks have reported on the branch yet.
3 of 4 tasks
This was referenced Oct 20, 2026
Closed
Closed
This was referenced Oct 24, 2026
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.
What this changes
Mirror of the fork's #44 (
axisrow/BeamCraft, the modeling half of the fork's issues #19and #20), stacked on #114 (the visual half). Two commits, verbatim:
49c672e)c3bb326): thebounded read capped every stored double at 1e9 — one cubic metre in mm3 — so a legitimate
plate or member whose volume exceeded 1 m3 was refused with
LIMIT_EXCEEDED(finding 1of the fork's U05: Add content-addressed immutable blob storage (stacked on F08) #19, finding 2 of its F06 corrections, F08 module boundaries and G04 kernel design #20). The quantity rules already admit volume and
mass up to 1e30 (
authored::validate::quantities); the read now follows the attribute:bim:volumeMm3andbim:massKgcarry the quantity budget on every read path (layerload, composition and the opinion capture of an edit), everything else keeps the
coordinate-sized generic budget. Both an over-1m3 plate and a 1.2 m3 member are covered
by end-to-end tests that failed before the change. The definition drop-downs lead with
the stored A07.2 display name instead of the grade or designation alone (finding 3 of
U05: Add content-addressed immutable blob storage (stacked on F08) #19); definitions published before A07.2 keep their old labels.
Stacked on #114 (the visual fixes): the commit touches
tools.rsafter that PR'sbyte-limit change; merge #114 first. The
backend.rsbudget change is independent of it.How you verified it
cargo fmt --all,cargo clippy --workspace --all-targets -- -D warningscargo test -p beamcraft-cli --test members(6) and--test plate(8) — theover-1m3 cases failed before the change and pass now;
-p beamcraft-layer-engineand
-p beamcraft-uisuites all green on macOSProvenance (clean-room)
🤖 Generated with Claude Code
Issue tracking
Fixes #356