Repository navigation
Open
Labels
area:entitiesEntity prescriptions in spec §20.4Entity prescriptions in spec §20.4priority:P2Quality and completenessQuality and completenesstype:specImplements or verifies a numbered section of ODA spec v5.4.1Implements or verifies a numbered section of ODA spec v5.4.1
Description
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.
Parent: #138
Metadata
Metadata
Assignees
Labels
area:entitiesEntity prescriptions in spec §20.4Entity prescriptions in spec §20.4priority:P2Quality and completenessQuality and completenesstype:specImplements or verifies a numbered section of ODA spec v5.4.1Implements or verifies a numbered section of ODA spec v5.4.1
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…