diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-25 20:20:00 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-25 20:20:00 -0500 |
| commit | 09cf1f02161aaef9bb1ad26907472bea52f53a24 (patch) | |
| tree | 9ad920b04eaa01d0e8bf0744fc4384a865956118 /tests/test-pearl-sync-hooks.el | |
| parent | 8fa0febbc3a3afe78d1a5abbbb944adf6dd3612a (diff) | |
| download | pearl-09cf1f02161aaef9bb1ad26907472bea52f53a24.tar.gz pearl-09cf1f02161aaef9bb1ad26907472bea52f53a24.zip | |
feat(save): add the atomic field-save engine and the assignee saver
pearl--run-atomic-field-save is the structured-field sibling of the text engine pearl--run-field-save. It runs the atomic three-way over a spec's live and baseline values. A missing baseline skips with missing-property (a legacy file — refresh first). Live equal to baseline is unchanged. Otherwise it fetches the remote and compares: remote already equal to live converges and advances the baseline, remote unmoved from baseline is a clean push, and a genuine divergence runs the atomic conflict gate. It reuses the existing save-outcome contract, so structured fields report the same status/reason shape as title and description.
pearl--save-assignee-field is the first saver on it — the cleanest relation field. Its live id is LINEAR-ASSIGNEE-ID diffed against LINEAR-ASSIGNEE-ID-SYNCED, the remote comes from the issue node, the push sends assigneeId, and use-remote rewrites the display name from the fetched node. Priority, state, and labels follow the same template in the next commit.
It's not wired into save-issue yet — that's the next commit. I tested it in isolation: the engine's three-way and conflict branches over a synthetic spec, plus the assignee saver end to end with a stubbed fetch and update.
Diffstat (limited to 'tests/test-pearl-sync-hooks.el')
0 files changed, 0 insertions, 0 deletions
