ekp/.phrase/phases/phase-kp-overhaul-20260726/change_editing_frontier_stability_20260729.md
Kinneyzhang 83352c4571 feat!: add source-clean live buffer layout
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-*.
2026-07-30 01:07:25 +08:00

3.9 KiB
Raw Blame History

Change: Editing-Frontier Stability 2026-07-29

2026-07-29 — Implement and developer-verify task029

  • Modify ekp-buffer.el.
    • Adds a source-relative frontier marker 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.
  • Modify tests/ekp-buffer-tests.el, tests/ekp-gui-verify.el, and tests/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-66WYRW contains 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. issue016 and issue017 remain open until the user personally confirms the visible editing experience.

2026-07-29 — Record the independent append-performance debt

  • Add issue018 and task030 after the current checked-in 80-pixel benchmark failed to reproduce task028's 6.399 ms append p99.
  • Add postmortem/20260729-narrow-live-append-replanning.md to keep unique-source-state planning cost separate from task029's point-motion correctness fix.
  • Evidence: repeated GC-excluded C-backend runs record roughly 3385 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 issue016 expectation so point is not a plan or projection invalidation input.
  • Add postmortem/20260729-editing-frontier-not-point.md as the superseding decision for the point-driven portion of task028.
  • 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.