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
Commit 44518b3
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: ROADMAP.md
+1-5Lines changed: 1 addition & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -57,10 +57,6 @@ A run-level line break is still invisible to search, hashes and edit placement.
57
57
58
58
Only `w:instrText` is known to the library today. A `replace()` targeting text inside a TOC entry, `REF` or page-number field applies, and Word silently discards it on the next field update — the same silent-loss family already eliminated elsewhere. Minimum: detect that a match falls inside `fldSimple`/`fldChar` run ranges and refuse with a teaching error; better: a read-side field inventory. Board task `f812f113` exists in the backlog.
59
59
60
-
### 72. Timing-sensitive session tests are flaky on CI
61
-
62
-
Two `tests/test_session.py` tests failed on single CI jobs in one night and passed on rerun, on commits that did not touch `session.py`: `test_main_full_lifecycle` (`main(["start", …])` returned 1 on Python 3.12, run 33277764141) and `test_stop_session_is_prompt` (`stop_session` took 5.02 s against a `< 3.0 s` assertion on Python 3.14, run 33298581269 — 5 s is exactly the `_kernel_alive` probe timeout, so the shutdown ack was missed under load). Every flake costs a 20–30 min rerun. Same family: `tests/test_session.py:138` waits with `time.sleep(1.0)` instead of an `execute_input` handshake. Worst case so far (run 33321498835, Python 3.14 shard 2, PR #87): after earlier session tests passed, every later one in the job — 41 tests — failed with `Kernel did not become ready within 30.0s`; the rerun passed. Something in that job left kernel start-up broken for the rest of the process (leaked kernel, port, or the conftest reaper); the fix needs a diagnostic in `start_session` that prints the kernel's stderr and the connection file state on timeout. Fix the tests' dependence on wall-clock under xdist load (a start budget that scales, a stop assertion on *behaviour* — ack received — not on seconds), and make a failed `start` print *why*.
63
-
64
60
### 75. Author-filtered bulk resolution must not touch other authors' revisions [data loss; after #73 step 9]
65
61
66
62
`accept_all(author=A)` / `reject_all(author=A)` list revisions by author but resolve by `w:id`, and the id lookup has no author check. With B's `<w:ins w:id="7">` before A's `<w:del w:id="7">` (duplicate ids across authors occur in real files — the corpus has them from LibreOffice), `reject_all(author="A")` deletes B's inserted text and `accept_all(author="A")` makes it permanent, both reporting 2. The `accept_all` docstring documents this and `tests/test_track_changes.py::…:1143` pins it as expected — it is not acceptable for a data-loss path. Fix: resolve the exact elements selected by the listing (element identity), not their ids; flip the pinning test. Lives in the resolution cluster, so it lands after #73 moves it (found by CodeRabbit on PR #75; verified 2026-08-30).
@@ -101,7 +97,7 @@ CodeRabbit reviews every PR; its inline Critical/Major/Potential-issue comments
101
97
102
98
Newest first. Details live in each PR and in the release notes.
-**unreleased, on main**: #72 session tests robust to CI load — env-scaled start budget, timeout diagnostics, handshakes for sleeps ([#91](https://github.com/pablospe/docx-editor/pull/91)); #76 comment reply marker order, #77 unpack symlink ancestors, #78 session start leak, #80 docs/spec drift ([#88](https://github.com/pablospe/docx-editor/pull/88)); #73 steps 1–5 ([#83](https://github.com/pablospe/docx-editor/pull/83), [#84](https://github.com/pablospe/docx-editor/pull/84), [#85](https://github.com/pablospe/docx-editor/pull/85), [#87](https://github.com/pablospe/docx-editor/pull/87), [#89](https://github.com/pablospe/docx-editor/pull/89)); CI sharded, ~8½ min wall ([#86](https://github.com/pablospe/docx-editor/pull/86))
105
101
-**0.8.1** (2026-08-30): #68 Resolve moves and `w:pPrChange` as revisions ([#82](https://github.com/pablospe/docx-editor/pull/82)); #6a `w:tab` in the paragraph text map ([#81](https://github.com/pablospe/docx-editor/pull/81)); #71 LibreOffice opens-clean gate + real Word redline fixtures ([#80](https://github.com/pablospe/docx-editor/pull/80))
106
102
-**0.8.0** (2026-08-29): #65 Exclude w:txbxContent from the host paragraph text map ([#78](https://github.com/pablospe/docx-editor/pull/78)); #67 Rationale channel ([#79](https://github.com/pablospe/docx-editor/pull/79)); #66 + #70 settings.xml pair + anti-scope statement ([#77](https://github.com/pablospe/docx-editor/pull/77)); #64 Foreign-revision census + accept_all honesty floor ([#76](https://github.com/pablospe/docx-editor/pull/76))
107
103
-**0.7.2** (2026-08-28): #56+#62 Perf follow-ups + test hygiene ([#75](https://github.com/pablospe/docx-editor/pull/75)); #39 (also filed as #31) Site D own-insertion replace ordering ([#74](https://github.com/pablospe/docx-editor/pull/74)); #52+#60 Ergonomics grab-bag ([#73](https://github.com/pablospe/docx-editor/pull/73))
0 commit comments