Chunking in the Workspace
Published 2026-02-22

I've pushed some code to AI::TerracedScan that supports chunking in a less ... weird way than I did it in the first pass at Jum.

See, I envisioned the initial letter-cluster accretion process in two steps. In the first step (which I coded up in early 2024), the letters spark to other letters and try to form bonds, then short bond groups of three letters if they can. During that phase, bonded letters are still visible to the spark scouts, so there's a bit of boiling around to get better clusters.

But for the next level of organization (the gloms), I wanted to hide the component letters; I see the gloms as firmly bound letter clusters that will only get reshuffled, or broken up if things aren't working out well—at which point any number of things get randomly broken up before the system attempts to regroup them, hopefully a bit better.

Since I already had a type promotion feature to allow sparks to get promoted to bonds, I figured I might as well repurpose it. If the letters in a glom are promoted to type "bound-letter", then scouts don't see them, and they no longer participate in the letter-spark-to-bond level of activity. And this works great! I even wrote bind and unbind methods on the Workspace that did the promotion to "bound-[X]" and back again. But, well, it still feels inelegant.

I'm leaving that in place in case I decide I still like for other situations, but I've also added a "hidden" flag and an "is_chunk" flag to the unit to support explicit chunking. A unit is visible if it's not hidden, but all that means is that unit selection will only draw from the visible units instead of all live units of the requested type. But when the parent unit is deleted, all its contents are unhidden automatically, which should make things a little easier to code.

So, minor progress. I've been thinking more about efficiency in the Workspace than anything else, but that's a post for another day.






Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.