Add more test assemblies #103
No reviewers
Labels
No labels
bug
design
duplicate
enhancement
maintenance
prospective
question
regression
stub
todo
ui
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: StudioInfinity/dyna3#103
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "Vectornaut/dyna3:more-test-assemblies"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Primary changes
Add more test assemblies to help probe the capabilities of the engine. The new test assemblies fall into the following categories.
Adding constraints
Existing test assemblies, now with constraints.
Polyhedral assemblies
Polyhedron construction problems.
load_tridim_icosahedron_assemb
. Helps test:load_dodeca_packing_assemb
. Helps test:Difficult optimizations
Simple assemblies that the engine should handle easily, but currently doesn't.
function is saddle-shaped near its manifold of minima.
Demo problems
Problems from the summer 2025 tech demo.
load_radius_ratio_assemb
. Helps test:load_irisawa_hexlet_assemb
. Helps test:Secondary changes
Adjust the realization triggering system to reduce redundant realizations as we set an assembly's regulators during loading. This involves two changes:
realize()
into a single effect, which is triggered by theneeds_realization
signal.keep_realized
signal and use it to pause realization while loading assemblies.We plan to redesign the realization triggering system more carefully in a future pull request. In the meantime, though, the adjustment in this pull request is still worth doing: it's a clear improvement, and it's unlikely to complicate the upcoming redesign.
(1) add_remove.rs has become too long and a bit diffuse in its content. The AddRemove component near the bottom certainly belongs there. I don't think the data of the test assemblies does. I think it's fine to put all of the test assemblies in one file, though, especially since ultimately they will just become save files.
(2) From our discussions, you know I am not a fan of turning off realization during loading -- that is explicitly slated for future removal? If not, I'd rather not put it in.
@glen wrote in #103 (comment):
Commit
91e4e1f
deals with this by making the test assembly chooser into its own component, which plugs into theAddRemove
component.Yes: after this pull request is merged, we're planning to make a pull request that simplifies the realization triggering system. The simplification should, in particular, get rid of the system for pausing realization. If you'd like, I could flag the pause system with
KLUDGE
comments to remind us to remove it.In our meeting today, Glen was concerned about the fact that creating the test_assembly_chooser component in its own source file obliged adding a line to main.rs, even though that component is not used directly in the top-level code.
Wouldn't it be a solution to everyone's concerns to have a module
components
, with a submodule for each component? Certainly main will mention components, as it has to use some components or other. And then the components that use each other can just mention each other, as siblings within the components module.Mightn't that be a cleaner organization that would reduce non-locality of reference? Interested in your thoughts.
@glen wrote in #103 (comment):
Yes, that organization sounds fine to me! I've seen it in other Sycamore projects, like this tic-tac-toe game. I'll comment again when I've implemented it.
@glen wrote in #103 (comment):
Implemented in commit
5233d8e
! I also found a pithy phrasing of the locality condition we're trying to maintain: every top-level module should be used in top-level code.Appears to work, code organization seems cleaner to me now. Thanks. Merging.