You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(c3): the scene descriptor crosses — timeOfDay closes two gaps (forge half)
C3/P4 forge half. `zones[].scene` — the descriptor the client''s diorama binds to.
STABLE KEYS ONLY, and the exclusions are the design. RG-C: HD-2D''s look is wholly
client-side, so the sim owes a DESCRIPTOR not a layout (Takahashi/Miyauchi 2018),
and state flags swap lighting and dressing variants, NEVER layout (Triangle
Strategy). So `parallaxLayers`, `skylineRef`, `collisionType`, the physics fields
and the sky/light hints are deliberately NOT here and stay `no-channel` — a
descriptor carrying them would be a renderer config crossing a sim boundary.
Nothing new is invented: `biome` comes from the existing `biome:` tag convention
(the same idiom as `mode:` and `faction:`), `timeOfDay` is already authored, and
`dressingDensity` is a coarse three-bucket read of interactable count — ordinal
because the client decides what density means and a continuous number would imply
precision the author never had.
⚠ ONE FIELD CLOSED TWO GAPS. C0 filed `zones[].timeOfDay` as `no-channel` with the
note "no channel — even though the SpawnCondition grammar has a `time:` operand the
engine could gate on." That parenthetical named the second gap without knowing it:
C3/P2 measured `time-of-day` as an UNEVALUABLE gate operand for exactly this
reason. The descriptor gives the field its channel, and that channel is the missing
input the operand needed.
THE RECOUNT: no-channel 170 -> 169, carried-lossless 189 -> 190, total 377, all
verified.
Suite 2431, unchanged.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
"note": "CLOSED BY C3/P4. Lands on the scene descriptor the client's diorama binds to — a STABLE KEY, not prose. Also supplies the input the `time-of-day` gate operand was measured missing."
Copy file name to clipboardExpand all lines: docs/c0-alignment/export-table.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
Generated by `packages/export-ai-rpg/src/__tests__/c0-export-table.test.ts`. Do not hand-edit.
4
4
5
-
Schema version 4.5.0. Tally: {"no-channel":170,"carried-lossless":189,"carried-approximated":18}.
5
+
Schema version 4.5.0. Tally: {"no-channel":169,"carried-lossless":190,"carried-approximated":18}.
6
6
7
7
| Field | Class | Channel | Image | Note |
8
8
|---|---|---|---|---|
@@ -382,4 +382,4 @@ Schema version 4.5.0. Tally: {"no-channel":170,"carried-lossless":189,"carried-a
382
382
|`zones[].stratumId`| no-channel | none | — | The zone→stratum membership link, dropped along with the strata themselves. |
383
383
|`zones[].tags[]`| carried-lossless | contentPack |`zones[].tags[]`| The single richest carried zone field — the engine reads tags as spawn, chokepoint, ambush and safe-zone gates. |
384
384
|`zones[].tilesetId`| carried-lossless | assetBindings |`zones{}.tilesetId`| Same channel caveat as backgroundId. |
385
-
|`zones[].timeOfDay`|no-channel|none|— | Time-of-day key: no channel — even though the SpawnCondition grammar has a `time:` operand the engine could gate on. |
385
+
|`zones[].timeOfDay`|carried-lossless|contentPack|`zones[].scene.timeOfDay`*(moved-into-scene-descriptor)*| CLOSED BY C3/P4. Lands on the scene descriptor the client's diorama binds to — a STABLE KEY, not prose. Also supplies the input the `time-of-day`gate operand was measured missing. |
{path: 'zones[].directionalLightYaw',class: 'no-channel',absence: {kind: 'key-absent',key: 'directionalLightYaw'},note: 'Lighting hint: no channel.'},
272
272
{path: 'zones[].directionalLightPitch',class: 'no-channel',absence: {kind: 'key-absent',key: 'directionalLightPitch'},note: 'Lighting hint: no channel.'},
273
273
{path: 'zones[].skyLightIntensity',class: 'no-channel',absence: {kind: 'key-absent',key: 'skyLightIntensity'},note: 'Lighting hint: no channel.'},
274
-
{path: 'zones[].timeOfDay',class: 'no-channel',absence: {kind: 'key-absent',key: 'timeOfDay'},note: 'Time-of-day key: no channel — even though the SpawnCondition grammar has a `time:` operand the engine could gate on.'},
274
+
// ⚠ FLIPPED BY C3/P4, and this row closed TWO gaps with one field. C0's note —
275
+
// "no channel — even though the SpawnCondition grammar has a `time:` operand the
276
+
// engine could gate on" — named the second one without knowing it: C3/P2
277
+
// measured `time-of-day` as an UNEVALUABLE gate operand precisely because
278
+
// nothing tracked time of day. The scene descriptor gives `timeOfDay` its
279
+
// channel, and that channel is the missing input the operand needed.
280
+
{path: 'zones[].timeOfDay',class: 'carried-lossless',channel: 'contentPack',packPath: 'zones[].scene.timeOfDay',transform: 'moved-into-scene-descriptor',note: 'CLOSED BY C3/P4. Lands on the scene descriptor the client\'s diorama binds to — a STABLE KEY, not prose. Also supplies the input the `time-of-day` gate operand was measured missing.'},
0 commit comments