Expose document and table reader completeness facts - #62
Conversation
mantissaman
left a comment
There was a problem hiding this comment.
Requesting changes for three merge blockers.\n\n- : the workspace no longer compiles because both literals omit the new field. Clippy, Test, and MSRV all fail with E0063.\n- : and are written after . In the sequence they precede , , , and . This emits schema-invalid row properties.\n- : all retained table-property XML is emitted after , even though is schema-final. An input such as plus therefore reopens as invalidly ordered XML. Retained children need schema-boundary positions, as the cell-property code already does.\n\nThis PR is also a draft, is based on the S60 main SHA, and has not gone through the F-ID sprint integration workflow.
Superseded immediately because shell quoting stripped technical identifiers from the body.
mantissaman
left a comment
There was a problem hiding this comment.
Requesting changes for three merge blockers.
- crates/rdocx-layout/src/paginator.rs:5622: the workspace no longer compiles because both "CT_TblBorders" literals omit the new "extra_xml" field. Clippy, Test, and MSRV all fail with E0063.
- crates/rdocx-oxml/src/table.rs:1013: "gridBefore" and "gridAfter" are written after "jc". In the "CT_TrPr" sequence they precede "cantSplit", "trHeight", "tblHeader", and "jc". This emits schema-invalid row properties.
- crates/rdocx-oxml/src/table.rs:696: all retained table-property XML is emitted after "tblPrChange", even though "tblPrChange" is schema-final. An input such as "bidiVisual" plus "tblPrChange" therefore reopens as invalidly ordered XML. Retained children need schema-boundary positions, as the cell-property code already does.
This PR is also a draft, is based on the S60 main SHA, and has not gone through the F-ID sprint integration workflow.
4970ffd to
e8fd435
Compare
|
Addressed all review feedback in separate commits: ac5aff9 fixes the border test literals, 461b61f writes row grid offsets in schema order, e8fd435 preserves table properties at the schema boundary before tblPrChange, and 31f982c updates the modeled hMerge diagnostic expectation. The branch is ready for maintainer F-ID integration. Quick checks, Clippy, formatting, docs, bindings, WASM, Word fidelity, output stability, and release regressions pass; Test and MSRV are still running. Package oxml-layout has the same current-main font-inventory workflow mismatch described on the sibling PRs. |
mantissaman
left a comment
There was a problem hiding this comment.
The three earlier requests are fixed, but this revision still has four blocking correctness issues. 1. crates/rdocx-oxml/src/table.rs:929 and :1079 retain CT_TrPr extras without schema positions and emit them after revision markers, so retained row properties such as tblCellSpacing can become schema-invalid. 2. crates/rdocx-oxml/src/table.rs:968 parses gridBefore and gridAfter by local name only, allowing foreign namespace elements to acquire Word semantics. 3. crates/rdocx-oxml/src/table.rs:94 and :149 capture border children without owner namespace bindings, so prefixes declared on tblBorders or tcBorders can become unbound after write. 4. crates/rdocx/src/table.rs:797 omits header, grid_before, and grid_after from RowRef::has_formatting. Please add focused regressions for each case.
|
Addressed every requested change in separate commits:
Each behavior has a focused regression test. Formatting, clippy with warnings denied, the 49-entry hash harness, prose checks, and generated-skill sync pass. The Rust suite passes apart from two local-oracle checks unrelated to this PR: the pinned rasterizer and LibreOffice build differ from the versions installed on this machine. With those oracle cases excluded, 313 library tests and 129 integration tests pass. |
mantissaman
left a comment
There was a problem hiding this comment.
The four previously requested changes are present at fa48a39, but two OOXML correctness blockers remain.
-
crates/rdocx-oxml/src/table.rs:954-957, 1011, 1032, and 1754-1756 capture retained row-property XML without namespace bindings inherited from w:tr or w:trPr. Serialization rebuilds w:trPr at lines 1054-1056, so an extension prefix declared only on an owner can become unbound. Please propagate owner bindings into retained CT_TrPr children and add a serialize, reopen, and repeated-serialize regression.
-
crates/rdocx-oxml/src/table.rs:997-1009 and 1018-1030 flatten malformed w:ins and w:del into one revision_xml collection, which is emitted after all typed markers at lines 1119-1124. A malformed insertion followed by a valid deletion can therefore be reordered after the deletion, violating the CT_TrPr sequence. Preserve malformed insertion and deletion nodes in their separate schema slots, with an ordering regression.
The substantive CI jobs pass. The Package oxml-layout failure is the known current-main inventory mismatch and is unrelated to these blockers.
|
Addressed both remaining OOXML blockers in separate commits:
The focused and complete |
|
Thank you, @pedroassumpcao. We reviewed the latest d03ef4a head and confirmed that it implements the requested row-owner namespace propagation and separate malformed insertion and deletion slots. We did not merge the live branch directly because the maintainer integration additionally uses expanded-name classification for those schema slots, preventing foreign same-local revision elements from acquiring Word semantics. The contribution outcome, public compatibility shape, and stronger namespace and schema-order hardening landed through F-X071 on main in merge commit 56bcdc1 and tag s62. Contributor credit is recorded in the delivery ledger. We are closing this PR as integrated with maintainer hardening. |
|
Thank you @pedroassumpcao. v0.12.0 includes the document, table, row-grid, border, formatting, and retained-property completeness outcome from this proposal through a reviewed hardened equivalent. |
Summary
CellItemRefAPI and publicly re-exportVMergeReview follow-up
maingridBeforeandgridAfterbefore later row properties in schema ordertblPrChangehMergeis modeledValidation
cargo test -p rdocx-oxml --libcargo test -p rdocx-layout --librdocxintegration test for table-cell property diagnosticscargo clippy -p rdocx-oxml -p rdocx-layout -p rdocx --all-targets -- -D warningscargo fmt --all -- --checkpython3 scripts/hash_harness.py --checkThe local unfiltered
rdocxrun only reaches the existing environment-dependentword_and_powerpoint_chart_pixels_are_identicalrasterizer oracle assertion. The failure does not exercise these reader changes.