Goal: Fix remaining 8 glossary test failures to achieve 274/274 tests (100%) Current: 266/274 (97.1%) Target: 274/274 (100%) Estimated Time: 4-6 hours (compressed timeline)
- StyleSets: 168/168 (100%)
- Themes: 174/174 (100%)
- Document Elements Content Types: 8/8 (100%)
- Total Passing: 266/274 (97.1%)
- Bibliographies.dotx - 12 differences
- Cover Pages.dotx - 24 differences
- Equations.dotx - 1 difference (cosmetic:
mc:IgnorablevsIgnorable) - Footers.dotx - 191 differences
- Headers.dotx - 227 differences
- Table of Contents.dotx - 18 differences
- Tables.dotx - 125 differences
- Watermarks.dotx - 150 differences
Symptom: <rPr> elements serialize as empty instead of with child elements
Location: Inside Math elements and regular paragraphs
Impact: ~80% of failures
Root Cause: MathRunProperties or RunProperties not serializing FontFamily elements
Symptom: VML Group/Shape content missing from Fallback elements Location: AlternateContent → Fallback → Pict → VML Impact: ~15% of failures (Watermarks especially) Root Cause: Pict class may be using wildcard for VML content
Prefix (COSMETIC)
Symptom: Ignorable vs mc:Ignorable attribute
Location: GlossaryDocument root element
Impact: 1 failure (Equations.dotx only remaining issue)
Root Cause: Namespace prefix not being preserved
Priority: CRITICAL (fixes ~80% of failures)
Tasks:
-
Investigate MathRunProperties serialization (30 min)
- Check why
<rPr>empty in Math contexts - Verify FontFamily (rFonts) element mapping
- Check why
-
Fix MathRunProperties class (45 min)
- Ensure proper FontFamily mapping
- Test with Equations.dotx
-
Fix WordprocessingML RunProperties in Math (30 min)
- Verify cross-namespace RunProperties work
- Test integration
Expected Outcome: 270-272/274 tests passing
Priority: HIGH (fixes remaining failures)
Tasks:
-
Analyze VML structure (30 min)
- Extract VML from Watermarks.dotx
- Identify Group/Shape patterns
-
Implement VML classes (90 min)
- Create vml/group.rb
- Create vml/shape.rb
- Create vml/textbox.rb (if needed)
- Integrate with Pict class
-
Test VML round-trip (30 min)
- Run Watermarks test
- Verify other VML-heavy files
Expected Outcome: 273-274/274 tests passing
Priority: MEDIUM (cosmetic fixes)
Tasks:
-
Fix namespace prefix preservation (20 min)
- Investigate lutaml-model prefix handling
- May be lutaml-model limitation
-
Final test run (10 min)
- Verify 274/274
- Check for any edge cases
Expected Outcome: 274/274 tests passing ✅
Total Estimated: 4-6 hours Recommended Approach: Sequential sessions (A → B → C)
| Session | Duration | Target | Cumulative |
|---|---|---|---|
| A: RunProperties | 1.5-2h | +4-6 tests | 270-272/274 |
| B: VML Content | 2-3h | +2-4 tests | 273-274/274 |
| C: Cleanup | 0.5-1h | +0-1 tests | 274/274 ✅ |
- All 274 tests passing
- Zero baseline regressions
- 100% Pattern 0 compliance
- 100% model-driven (no wildcards)
- Comprehensive documentation
Mitigation: Focus on FontFamily first (most common issue) Fallback: Implement subset of RunProperties if time critical
Mitigation: Implement minimal VML (Group, Shape only) Fallback: Mark VML as Phase 6 if time runs out
Mitigation: Accept as lutaml-model limitation (semantically equivalent) Impact: 273/274 instead of 274/274 (still 99.6%)
- None (all infrastructure complete from Session 3)
- lutaml-model ~> 0.7 (already installed)
- All Math classes implemented ✅
Following established patterns:
- ✅ Attributes BEFORE xml mappings (Pattern 0)
- ✅ Model-driven (no wildcards)
- ✅ MECE (clear separation of concerns)
- ✅ One responsibility per class
- ✅ Open/closed principle
Immediate: Start Session A (Fix RunProperties) File: Use PHASE5_SESSIONA_PROMPT.md for detailed instructions