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 fogmoved 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.tsxis 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.
channelAssertsis 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.