Map Light; record SectionSymbol as blocked

Light placement, intensity, colour, attenuation and shadow fields are
writable with host validation. staged_python_light_lifecycle_over_real_ipc
passes every gate except DXF cast_shadows, pinned by a canary.
SectionSymbol is recorded as blocked: it needs host-created style and view
representation objects and its raw point counts have no documented
derivation.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
Felix RiestraandClaude Sonnet 5 committed 2026-09-20 15:18:13 +02:00
1 parent 21ce4b0e2b
commit 12b0823e76
10 files changed
+158 -12

No files matched your search

+1 -1
View File
@@ -94,7 +94,7 @@ The host-owned catalog classifies all 48 entity variants and tracks every
traced field, including fields marked `unmapped`. Query it with
`doc.coverage()` or `doc.coverage("Line")`; each row includes source field,
type, access, and current validation status. Geometry edits remain limited to
the 36 mapped kinds.
the 37 mapped kinds.
For any entity, `entity.snapshot` returns a detached dictionary of its raw
CAD fields, including `snapshot["common"]` and kind-specific nested values.
It can inspect an unmapped kind; editing the dictionary does
+9 -1
View File
@@ -35,7 +35,8 @@
"Wipeout",
"Underlay",
"Viewport",
"ViewBorder"
"ViewBorder",
"Light"
],
"manual_kinds": ["Dimension"],
"base_fields": ["handle", "layer", "owner_handle"],
@@ -413,6 +414,13 @@
"active_viewport": { "required": true },
"scale_handle": { "required": true }
}
},
"Light": {
"fields": {
"class_version": { "read_only": true },
"position": { "required": true },
"name": { "required": true }
}
}
}
}
+1 -1
View File
@@ -4756,7 +4756,7 @@ mod tests {
);
}
}
assert_eq!(emitted.len(), 36);
assert_eq!(emitted.len(), 37);
}
#[cfg(feature = "experimental-host-model")]