diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-01 15:03:08 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-01 15:03:08 -0500 |
| commit | 55fa2ffe2527ab6a9d93da21b153b26bc803ffda (patch) | |
| tree | f66f5596d433da59ec76da3af29eb942fe72cf72 /tests/test-pearl-resolve.el | |
| parent | 42370043d61b7f8a80a17785f47df359e4f70dda (diff) | |
| download | pearl-55fa2ffe2527ab6a9d93da21b153b26bc803ffda.tar.gz pearl-55fa2ffe2527ab6a9d93da21b153b26bc803ffda.zip | |
docs: add bidirectional copy to the local/Linear views spec
I expanded the spec to make copying a view between the two stores a first-class operation in both directions, and deliberately asymmetric. Copy up (local view to Linear view) is publish: it creates a tracked Linear view, and re-copying updates it in place. Copy down (Linear view to local view) is a fork: it duplicates the Linear view's filter into a new, independent local view you can edit and rename, with no sync link back. The principle behind the asymmetry is that the local view is the editable source of truth.
Copy down is the one direction that needs real engine work. Because the result has to be editable, it can't store opaque filter JSON. It has to reverse-compile Linear's IssueFilter back into Pearl's authoring plist. The spec carries the dimension table the reverse-compile inverts, and draws the representability boundary: when a Linear view's filter uses OR logic, an unmodeled dimension, or an operator Pearl doesn't emit, copy down refuses with a clear message rather than dropping conditions silently. A local view that looks right but matches a different issue set, diverging on every refresh, is the worse failure.
I also added the two decisions the change forces (refuse-don't-guess on unrepresentable filters, fork-not-track on copy down), the copy-up naming question, keymap slots, acceptance criteria for both round-trips, and two implementation phases. The spec is still a Draft, now with eight open questions.
Diffstat (limited to 'tests/test-pearl-resolve.el')
0 files changed, 0 insertions, 0 deletions
