Repository navigation
fix: deliver the remaining fork delta of the 1112 sync wave - #874
Merged
Blogbotana merged 2 commits intoNov 12, 2026
Merged
Blogbotana merged 2 commits into
Blogbotana merged 2 commits into
Conversation
…584 recheck regressions) (#590) * fix: keep the status rows apart and let the wheel scroll the snap strip * chore: pin the CI macOS lane to macos-15
* fix: close the remaining #562 visual-audit defects The recheck of the #562 fixes on f7a8158 found six items only partly fixed, two not fixed and one regression. This closes them, except item 12, which the frozen F06/F04 0.1.0 contracts define as discontinuous by design. Drawings: - B draws a straight spine with chamfered right bowls, so it no longer reads as 8 ("DET B" read "DET 8") (item 26). - The decimal point is centred between its digits; "3000.000" read "3000 .000" (item 27). - A dimension label steps at most two text heights to clear the body and otherwise stays beside its line: the item 27 stepping walked a height label inside a 3000 mm beam to the far end, metres from its line. - A detail's parent-side circle carries the detail's title, and callouts of details on one region stack instead of overwriting each other (item 8). Engine: - A member mirror completes the roll re-encode with the section's symmetry: an equal-leg angle takes a quarter turn and a section symmetric left to right a half turn, with the section position rotated back, so both are the exact world mirror. An unequal angle, a Z or an asymmetric custom outline refuses with UNSUPPORTED_GEOMETRY instead of rendering the true image composed with a flip (item 4). Window: - A selected bolt group is named in the status line and shown with a neutral note instead of a red load failure (item 15). - The snap strip scrolls in the room the entity strip leaves instead of being painted over it at 800 px (item 47). - The library's selected-model panel measures its details and lets the image shrink or go, so State and Open model fit at 1100x680 on both tabs (item 25). - The mass row shows the engine's kg_display (22.54), as every report does. - Grid bubbles keep clear of the pane frame stroke (item 38). Refs #562 Claude-Session: https://claude.ai/code/session_01HF6nmWCNmnwESuVYDnreeF * fix: address the review of the remaining #562 fixes Review findings on the previous commit, each checked against the code: - A mirror of an element that shares an instance definition refuses with DEPENDENCY_CONFLICT, as a split does. The update rebuilt the other instances' patch without the mirror, so they took the mirrored body under their unmirrored authored state; the mirror branch added to shared_with could never run and is removed. - A dimension label blocked on its own side within the step cap tries the other side of its line before falling back beside the line, so a deep body no longer puts the label back on its strokes. - Custom outlines compare as cyclic sequences (the image read backwards must equal a contour from some start), not as vertex sets, so two polygons on one symmetric vertex set are no longer classified as symmetric. - Detail callouts get twice the names placed plus one tries: one placed name can block two consecutive lines. - The world-mirror test covers every section anchor (Right/Front, Centre/Back) for the equal angle and the hat; the CLI test asserts the stored roll and the shared-instance refusal. - The library keys the measured details height on the tab and the model; the quantities rows carry their formatter instead of matching the label; the bolt-group lookup compares typed ids. Refs #562 Claude-Session: https://claude.ai/code/session_01HF6nmWCNmnwESuVYDnreeF * fix: keep the mirror contract of the 1111 review and document the shared-instance refusal --------- Co-authored-by: Claude <[email protected]> Co-authored-by: axisrow <[email protected]>
axisrow
commented
Nov 12, 2026
axisrow
left a comment
Collaborator
Author
There was a problem hiding this comment.
Review
Approving. Reviewed the full 12-file diff (+834/−90) of the two commits against master.
Verified in detail:
- Mirror refusal (
crates/commands/src/edit.rs):instances.group_size()resolves a plain element toOk(1)(its own definition), so only genuinely shared groups refuse; the check sits after the element lookup, so a missing element still reportsNOT_FOUND, and the P-Degenerate authored-edit path returns earlier, unaffected. A replay can never hit the refusal, because a refused mirror was never accepted. The CLI test drives the refusal end to end. - Callout stacking (
sheet.rs): the 2n+1 tries bound is sound — each placed name band blocks at most two consecutive candidate lines on the 5 mm pitch, so a free line always exists within the tries. - Label stepping and decimal point (
svg.rs): own side up to 7 mm, then the mirrored side, then back beside the line; bounded and terminating, with the deep-body fallback documented and pinned by tests. Both dot sites route through the shareddecimal_point, centred with equal clearance by construction. - Grid depth slab (
grid.rs): restricting the slab test to vertical views is geometrically right — a vertical grid plane crosses every plan or inclined slab (their normals are never parallel), while a vertical view plane distance is height-independent, so the two ground endpoints still carry the whole line there. The section-on-2 test pins the kept vertical behavior. - Bolt-group selection (
app.rs): the failed details load lands the panel inState::Unknown, the neutral note renders before the red banner and skips only details-driven sections that have no data anyway; the snapshot lookup compares typed ids, the name lookup reads the parsedListing, and an empty name degrades to the unnamed sentence. - Mass row:
mass_kgalready parseskg_display; printing it verbatim removes the double rounding that disagreed with the BOM and the schedule. Volume keepsdisplay_round. - Strip slot (
workbench.rs) and library preview (start.rs): the measured details height is stable across frames (the rows below do not depend on the image height, so no oscillation), and the three new headless strip tests pin the row layout at four window sizes. - CI pin:
macos-15on the build-timings lane matches the known runner-image drift.
Non-blocking remarks (no change requested):
unreadable_kindmaps everyElementKind::Connectionto "bolt group"; correct while connections are bolt groups only — worth revisiting when a second connection kind appears.- The "bolt group" kind literal lives in both
unreadable_kindandunsupported_kind_note; a shared constant would keep the two in step. - When neither side of a dimension line clears the body within
LABEL_MAX_STEPS, the label lands back on the body strokes — documented and tested; recorded here as a deliberate trade-off.
Receipt check: head be3d1125 matches the recorded full local gate (2858/2858 plus mandatory doctests, format, clippy and docs green), and the provenance and never-crash checklists are in order.
Blogbotana
approved these changes
Nov 12, 2026
9 tasks done
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
Delivers the remaining fork delta of the 1112 sync wave on top of
master, as two commits byte-faithful to the fork squashes (bare fork issue refs qualified):build-timingsmacOS lane tomacos-15(themacos-latestpool took the 2025-vs-2026 image).DEPENDENCY_CONFLICT), the named bolt-group selection, the library panel's measured details, and the mass row reading the engine'skg_display.The wave-1111 batch was already merged as #869; this PR carries only what the fork gained since (the fork's own sync merge is axisrow/BeamCraft at
510768d2). Excluded per the established strip rules: fork-only CI (ci-platform.ymlpin hunk, retired lanes),tools/test-gatelocal-receipt tweaks,docs/plan,ROADMAP, visual evidence and fork-only workflows.How you verified it
cargo fmt --all -- --checkcargo clippy --workspace --all-targets -- -D warningscargo test --workspaceRun as the recorded local full gate on this exact head: 2858/2858 runnable tests executed plus mandatory doctests, format, clippy and docs with warnings denied (the receipt is published to this PR). Every behaviour above is covered by the tests the commits bring (grid depth, callout stacking, mirror refusal, label stepping, strip layout).
Never-crash
Every model file, IFC/DSTV import and keystroke is untrusted input (
AGENTS.md§4).unwrap/expect/panic!/todo!outside testsunsafeProvenance
ATTRIBUTION.mdAnything a reviewer should look at first
The commits are verbatim fork squashes, so they land on top of #873's reframed view flow untouched; the picks only re-derived the
select_id/select_kindsplit where #873 added the axis-point reset. Themacos-15pin changes a lane this CI itself runs on, so the platform track exercises it directly.