Replace the physical ekp-region renderer with ekp-buffer text-property projection backed by shared semantic layout plans and stable live-edit transactions. Optimize the C-backed resize hot path, and add deterministic performance, ERT, GUI, fuzz, release, and documentation coverage for task017 through task032. BREAKING CHANGE: require ekp-buffer instead of ekp-region and rename module-owned ekp-region-* settings to ekp-buffer-*.
3.9 KiB
3.9 KiB
Change: Editing-Frontier Stability 2026-07-29
2026-07-29 — Implement and developer-verify task029
- Modify
ekp-buffer.el.- Adds a source-relative
frontiermarker to live state. - Derives the active semantic line from the latest real edit, relocates
it in
after-change, and preserves it through width/font/context reflow. - Deletes point-driven live-boundary publication. Point motion inside the active hard line is display read-only; leaving the hard line keeps the existing static completion transition.
- Keeps core DP semantics,
ekp.el, C ABI, schema, plan contract, source characters, and no-overlay ownership unchanged.
- Adds a source-relative
- Modify
tests/ekp-buffer-tests.el,tests/ekp-gui-verify.el, andtests/ekp-buffer-live-bench.el.- Locks exact property/state/source/undo identity and zero plan/cache/property writes across backward/forward point motion.
- Proves reflow and deferred IME completion preserve the source-edit frontier even when point moves elsewhere.
- Updates GUI and benchmark adapters to assert projection, plan, generation, cache, active-index, and frontier stability.
- Modify bilingual user/developer docs, spec, plan, technical reference, issues, changelog, and superseding postmortem to use the same source-edit-frontier vocabulary.
- Verification: focused regressions RED before implementation and
GREEN afterward; independent focused ERT 10/10; buffer ERT 93/93;
default, seed-
20260729, and isolated ERT 182/182; C/Elisp fuzz 300/300; warning-as-error compilation, checkdoc, pinned package-lint, release, dictionary, pinned-source, no-overlay, no-stale-symbol, and diff gates pass. Point-motion p99 is 0.033 ms on C and 0.037 ms in the independent Elisp review, both with zero planner/cache calls. - GUI evidence: reviewed run
/private/tmp/ekp-frontier-live-v3-66WYRWcontains 39 manifest lines and a 26.6-second recording. All checkpoints and assertions pass, no black segment is detected, and the final evidence verdict is PASS. - Review: independent architecture review is CLEAR. Independent code
review reports zero blockers; the one residual performance concern is
separately owned by
issue018/task030. - Status: task029 developer gate complete.
issue016andissue017remain open until the user personally confirms the visible editing experience.
2026-07-29 — Record the independent append-performance debt
- Add
issue018andtask030after the current checked-in 80-pixel benchmark failed to reproduce task028's 6.399 ms append p99. - Add
postmortem/20260729-narrow-live-append-replanning.mdto keep unique-source-state planning cost separate from task029's point-motion correctness fix. - Evidence: repeated GC-excluded C-backend runs record roughly 33–85 ms append p99, 291 plan calls, and zero cache hits. The latest run recorded 84.526 ms. In the same run, point motion recorded 0.033 ms p99 with zero plan/cache calls.
- Behavior/Risk: documentation only. No performance shortcut or core DP change is included in task029.
2026-07-29 — Plan task029
- Add
issue017: point-only motion currently mutates an already published semantic live prefix. - Add
task029: move live-boundary ownership from transient point to the latest real source edit, while preserving whole-hard-line planning. - Modify the current spec, plan, technical reference, and
issue016expectation so point is not a plan or projection invalidation input. - Add
postmortem/20260729-editing-frontier-not-point.mdas the superseding decision for the point-driven portion oftask028. - Validation planned: focused RED/GREEN public-hook ERT, complete buffer/default/random/isolated suites, fuzz/static gates, live benchmark, GUI dynamic verification, full diff review, and independent code/architecture review.
- Status: Planning complete; superseded by the implementation record above.