Skip to content
← Documentation

docs/worldscene-freedoms.md


WorldScene realizations, classified

Every realization choice in WorldScene.tsx, read from the source and classified. No freedom is invented — each entry is a value the file fixes, cited by line.

tests/worldscene-freedoms.test.ts. Fifteen freedoms.


The classification

derived       7  camera elevation floor, distance fog, beacon elevation, agent hover
                 height, activity intensity scale, flow animation rate, footprint scale
conventional  2  initial camera pose, alert hue
arbitrary     6  interactive camera, key light direction, fill light levels,
                 label placement, tessellation, material response

distance fog moved from arbitrary to derived after being measured at 36.3% of activity comparisons inverted and repaired. See fog-interference.md.

Every choice terminates in explicit grounds. Nothing is unexplained; six things are declared arbitrary, which is a different claim from being unexamined.

The unowned claims

A freedom that is arbitrary while occupying a channel that asserts:

fill light levels · interactive camera · key light direction · material response

Not flagged: label placement and tessellation are arbitrary on channels that assert nothing; alert hue and initial camera pose are conventions, now declared.

The finding: four freedoms sit on the activity channel

still ungrounded on lightness: key light direction, fill light levels, material response
grounded and re-measured at 0%: distance fog

emissiveIntensity = 0.12 + activity * 0.85 is the assigned carrier of activity. Four ungrounded realization choices modulate apparent lightness, which is the dimension a viewer reads that channel in:

  • fog dims distant buildings, so far reads as quiet;
  • the key light shades faces by orientation, so a building's activity reads differently depending on which way it happens to face;
  • fill levels compress the range the channel is read within;
  • material response changes lightness under that light.

None was visible to the channel audit, because none of them is a channel. worldscene-audit.md examined position, size, hue, lightness and dash and found exactly one violation. These four are freedoms, and this is the first layer that can see them.

That is the practical payoff of the symmetry derivation: it found a defect class the layer above was structurally blind to.

Two structural results from doing the audit

Binding fixes the ordering and leaves the magnitude free.

bound in ordering, free in magnitude:
  beacon elevation · agent hover height · flow animation rate · footprint scale factor

busy ? 3.2 : 2.2 is bound — which is higher is determined by the fact — and 3.2 versus 2.2 is not. This was found by auditing, not predicted.

For a purely ordered channel the residual cannot cost truth: any positive scale preserves monotonicity. It costs legibility, which is condition 3 and outside what this repository can certify. So activity intensity scale is correctly derived with a residual that does not matter.

But classify treats binding as total, and it is not. flow animation rate is bound to link.flow, so the classifier returns derived, unownedClaim=false. Only the ordering is bound — busier is always faster. The absolute rate corresponds to no measured quantity, and a viewer reads speed as rate, so a residual claim survives that the classifier reports as owned.

Recorded, not repaired. Making boundTo carry a residual is a change to the model, and this round was directed to classify rather than redesign. My first expectation for the unowned set included this entry; the classifier disagreed and the classifier is what shipped, so the expectation was corrected and the gap written down.

The chain

Each entry completes:

Reality → Observation → Canonical fact → Representation
        → Degree of freedom → Grounds → Pixel

or terminates in an explicit declaration of convention or arbitrariness. The audit asserts the exact unowned set, so a new one fails the gate and a grounded one also fails.


Standing

Question Answer
Is every realization choice classified? yes — 15, each citing a line
Does every one terminate in grounds? yes — 6 derived, 2 conventional, 7 arbitrary
Unowned claims? 5
Did this layer find something the one above could not? yes — four freedoms on the activity channel

What is still not established

  • Fifteen is what I found reading the file. WorldScene.tsx is 457 lines and I cannot prove the enumeration complete. Shadow map resolution, tone mapping and the canvas DPR are set outside this file and are unaudited.
  • The four collisions are classified, not measured. No instrument scores how much fog or shading actually perturbs the activity reading — that needs a rendered surface, and it is the obvious next measurement.
  • channelAsserts is declared per freedom, not derived from the channel it occupies — unchanged from the previous round and now load-bearing for this audit's central claim.
  • The sibling components — CouplingField, the HUD, span.style — are outside this audit, so "a fully explainable WorldScene" means the scene file, not the screen.

201 → 207 tests, tsc clean.