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
{{ message }}
Repository navigation
§20 family: Raster images, OLE frames and geolocation (§20.4.78, §20.4.80 to §20.4.82, §20.4.88, §20.4.91) #150
Spec: ODA Open Design Specification for .dwg files v5.4.1, §20.4.78, §20.4.80, §20.4.81, §20.4.82, §20.4.88, §20.4.91.
Sections and their state on main (2026-10-21)
Section
State
Code
Note
§20.4.78 GEODATA (p. 194)
decoder
src/entities/geodata.rs
§20.4.80 IMAGE (p. 197)
decoder
src/entities/image.rs
§20.4.81 IMAGEDEF (p. 199)
decoder
src/entities/imagedef.rs
§20.4.82 IMAGEDEFREACTOR (p. 200)
missing
-
§20.4.88 OLE2FRAME (p. 211)
decoder
src/entities/ole2_frame.rs
§20.4.91 RASTERVARIABLES (p. 212)
missing
-
closes comes from the boundary checks on the local 19-file corpus (STATUS.md, 2026-08-30). It is re-measured on the public corpus in CI by the 0.2.0 measurement epic, and no section is complete until its values equal AutoCAD's own DXF export.
Acceptance, for every section above
Every field of its prescription is read, with every version branch the section names
Where the section prints an example, its bytes are a committed fixture and decode to the values printed
The field list ends on the record's exact data-stream boundary (and string/handle-stream boundaries on R2007+) on every corpus record of the type, on every release band
Every value equals AutoCAD's DXF export of the same drawing, matched by handle (DXF group 5), with the scorer from the oracle epic
The corpus holds at least one record of the type on each release band, R13 to R2018; a band without one is recorded on the corpus epic, not assumed
Its row in docs/spec-coverage.md moves to complete, with the evidence linked
Subtasks
§20.4.78 GEODATA
R13
R14
R2000
R2004
R2007
R2010
R2013
R2018
§20.4.80 IMAGE
R13
R14
R2000
R2004
R2007
R2010
R2013
R2018
§20.4.81 IMAGEDEF
R13
R14
R2000
R2004
R2007
R2010
R2013
R2018
§20.4.82 IMAGEDEFREACTOR (no decoder yet)
R13
R14
R2000
R2004
R2007
R2010
R2013
R2018
§20.4.88 OLE2FRAME
R13
R14
R2000
R2004
R2007
R2010
R2013
R2018
§20.4.91 RASTERVARIABLES (no decoder yet)
R13
R14
R2000
R2004
R2007
R2010
R2013
R2018
A subtask becomes its own issue when someone picks it up; that issue quotes the section's field list and names the corpus records it is measured on.
Status (main 2bab7b2; docs/spec-coverage.md and CI run 40503137263). Against the 2026-10-21 table in the body:
§20.4.78 GEODATA:decoder is now closes (fix(objects): decode GEODATA as the §20.4.78 object it is (#229) #295). The crate's old decoder had an invented field list on a fixed code the corpus's one record never used; the record is now routed by its class name to a decoder of the §20.4.78 object, it closes and all 77 values equal the export. One departure from the spec: the north direction is a 2RD, not a 3RD. Object version 1 and the R2007-and-earlier civil block are unmeasured.
§20.4.80 IMAGE, §20.4.81 IMAGEDEF, §20.4.88 OLE2FRAME: still decoder; IMAGE and IMAGEDEF are paired in the corpus but not yet scored by the oracle (6 records each).
Activity
feat(objects): decode IMAGEDEF_REACTOR and RASTERVARIABLES (§20.4.82,…
feat(dxf): score IMAGEDEF_REACTOR and RASTERVARIABLES in the value or…
DrunkOnJava commentedon Oct 27, 2026
Status (main 2bab7b2;
docs/spec-coverage.mdand CI run 40503137263). Against the 2026-10-21 table in the body:decoderis nowcloses(fix(objects): decode GEODATA as the §20.4.78 object it is (#229) #295). The crate's old decoder had an invented field list on a fixed code the corpus's one record never used; the record is now routed by its class name to a decoder of the §20.4.78 object, it closes and all 77 values equal the export. One departure from the spec: the north direction is a 2RD, not a 3RD. Object version 1 and the R2007-and-earlier civil block are unmeasured.missingis nowcloses(feat(objects): decode IMAGEDEF_REACTOR and RASTERVARIABLES (§20.4.82, §20.4.91, #150) #305): the one record of each release closes, and the oracle scores 6 records, all equal. The DXF class name is IMAGEDEF_REACTOR; both spellings route.missingis nowcloses(feat(objects): decode IMAGEDEF_REACTOR and RASTERVARIABLES (§20.4.82, §20.4.91, #150) #305): 24 values of 6 records equal the export.decoder; IMAGE and IMAGEDEF are paired in the corpus but not yet scored by the oracle (6 records each).feat(dxf): score IMAGE, IMAGEDEF and WIPEOUT in the value oracle (§20…