Repository navigation
Open
Labels
area:entitiesEntity prescriptions in spec §20.4Entity prescriptions in spec §20.4priority:P1On the path of the current milestoneOn the path of the current milestonetype: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.3, §20.4.4, §20.4.5, §20.4.37, §20.4.46, §20.4.49.
Sections and their state on main (2026-10-21)
| Section | State | Code | Note |
|---|---|---|---|
| §20.4.3 TEXT (1) (p. 108) | closes |
src/entities/text.rs | #62: three angles read BD where §20.4.3 types them RD. |
| §20.4.4 ATTRIB (2) (p. 109) | closes |
src/entities/attrib.rs | |
| §20.4.5 ATTDEF (3) (p. 110) | closes |
src/entities/attdef.rs | |
| §20.4.37 SHAPE (33) (p. 132) | missing |
- | |
| §20.4.46 MTEXT (44) (p. 148) | closes |
src/entities/mtext.rs | R2018 tail and ATTRIB's embedded MTEXT (ARCHITECTURE §7g). |
| §20.4.49 TOLERANCE (46) (p. 155) | closes |
src/entities/tolerance.rs |
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.3 TEXT (1)
- R13
- R14
- R2000
- R2004
- R2007
- R2010
- R2013
- R2018
- §20.4.4 ATTRIB (2)
- R13
- R14
- R2000
- R2004
- R2007
- R2010
- R2013
- R2018
- §20.4.5 ATTDEF (3)
- R13
- R14
- R2000
- R2004
- R2007
- R2010
- R2013
- R2018
- §20.4.37 SHAPE (33) (no decoder yet)
- R13
- R14
- R2000
- R2004
- R2007
- R2010
- R2013
- R2018
- §20.4.46 MTEXT (44)
- R13
- R14
- R2000
- R2004
- R2007
- R2010
- R2013
- R2018
- §20.4.49 TOLERANCE (46)
- 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:P1On the path of the current milestoneOn the path of the current milestonetype:specImplements or verifies a numbered section of ODA spec v5.4.1Implements or verifies a numbered section of ODA spec v5.4.1
Activity
fix(examples): compare SHAPE's rotation and oblique angle in the DXF'…
DrunkOnJava commentedon Oct 27, 2026
Status (main 2bab7b2;
docs/spec-coverage.mdand CI run 40503137263). The table in the body is a 2026-10-21 snapshot and is behind:partialon the page now, notcloses: docs: publish the real-file numbers the Corpus CI job measures #237 re-measured them on the public corpus and found errored records on ACadSharp's saves. Those records were fixed in fix(entities): read TEXT, ATTRIB and ATTDEF as §20.4.3-§20.4.5 print them on every release (#226, #62) #258 (TEXT, ATTRIB, ATTDEF: all 118 close) and fix(entities): read MTEXT's §20.4.46 version branches on R13 to R2004 (#226) #261 (MTEXT: all 72 close), and the corpus run shows 0 errored records in all 52 drawings. The rows' notes still quote the pre-fix error counts. Oracle: TEXT 174 records, 870 values equal, 1,740 equal through the default, 0 different; ATTRIB 24 records, 209 equal, 0 different; ATTDEF 30 records, 304 equal, 0 different; MTEXT 210 records, 2,348 equal, 0 different (DXF groups not decoded: 708, 81, 96 and 1,598).missing; PR feat(entities): decode SHAPE from §20.4.37 (#140) #310 is queued.closes; the §20.4.49 version branch is read the right way up (fix(entities): read TOLERANCE's §20.4.49 version branch the right way up (#226) #262) and all 21 records close, values equal the twin on R2000 to R2018. Not yet scored by the oracle (18 records).R13 has no AutoCAD-written drawing (#345), so no row here can reach
complete.feat(dxf): score TOLERANCE in the value oracle (§20.4.49) (#392)
docs(spec-coverage): move the rows the 2026-10-27 main run proves, an…
docs(criteria): re-measure the 1.0 requirements from the 2026-10-27 m…
feat(entities): decode SHAPE from §20.4.37 (#140) (#310)