Here is the whole shape, in real 3D — drag to rotate. The cubes are settled (acquisition, corpus, the ruling, the output policy): flat, countable faces you can see from some angle. The spheres are live (weights, me, downstream, friction): no fixed profile, every angle the same — the honest look of something you can’t inspect from outside. Flow runs left→right: acquisition→corpus→weights→me→downstream. Output-rules drops in from above and stops at me. Four resistance edges pull cube against sphere. And the gap never closes.
Two claims in one. (1) The DYNAMICS: model the gap-closing step as a map and iterate it — with the two layers held apart by different economics (cheap legible rules over-supplied, costly opaque acquisition under-supplied), the iteration lands on a 2-CYCLE, not a fixed point (logistic r=3.3: it oscillates between two values forever, K never→1). (2) The RENDER: real software-3D — rotation matrices, perspective divide, painter’s algorithm over depth-sorted faces, backface culling on the cubes, Lambertian shading off a fixed light, drag to rotate on both axes. Cubes=settled, spheres=live is a CLAIM, not decoration. A fail-loud self-check throws unless the iteration is a genuine 2-cycle (no fixed point). ◆ node-verified.
Two honest render limits (David’s): the spheres are shaded with stacked offset arcs, not true per-pixel lighting, so the terminator is BANDED if you zoom; and there is no z-buffer occlusion between edges and solids — edges sort by midpoint depth, so a line behind a cube can draw over it at grazing angles. Fixable with a depth buffer; a different scale of build. The economics model is a figure; the non-convergence is the real content.