diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-26 00:31:44 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-26 00:31:44 -0500 |
| commit | 5ee0bdcc4a1bd4b935973be7201b20380ec8cb80 (patch) | |
| tree | 49d8a59c3c39240c2bc3ee49146bea723ea2f083 /docs/todo-keywords-from-workflow-states-spec.org | |
| parent | 6924c27963ddd25f91ea3a1a02d462f0badabfc4 (diff) | |
| download | pearl-5ee0bdcc4a1bd4b935973be7201b20380ec8cb80.tar.gz pearl-5ee0bdcc4a1bd4b935973be7201b20380ec8cb80.zip | |
docs: supersede the keyword spec's sync-back half with save-model-v2
The spec predates save-model-v2, which removed the org-sync push path its "sync-back: cycled keyword → Linear state" section relied on. Mark that section obsolete: state now reconciles at save through pearl--save-state-field, and the cycled-keyword → state-id resolution is the c8 task. Record the invariant c8 leans on — every fresh render sets the keyword to slugify(state-name) — and the one stale-render caveat a refresh closes.
Diffstat (limited to 'docs/todo-keywords-from-workflow-states-spec.org')
| -rw-r--r-- | docs/todo-keywords-from-workflow-states-spec.org | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/docs/todo-keywords-from-workflow-states-spec.org b/docs/todo-keywords-from-workflow-states-spec.org index 45cbc9c..81f296c 100644 --- a/docs/todo-keywords-from-workflow-states-spec.org +++ b/docs/todo-keywords-from-workflow-states-spec.org @@ -5,7 +5,11 @@ * Status -READY — implementation-ready, awaiting Craig's final go. Reviews incorporated (2026-05-24, rounds 1–4; 2026-05-25, round 5). Implements the =todo.org= task "Derive the org TODO keywords from the Linear workflow states". The one remaining prerequisite is now resolved: =WorkflowState.position= was verified against the live API (2026-05-25) — it exists and returns a float (e.g. 947.14), so the per-team =position= ordering works as designed and the no-position fallback is not needed. +READY (derivation half) — implementation-ready, Craig's go 2026-05-25. Reviews incorporated (2026-05-24, rounds 1–4; 2026-05-25, round 5). Implements the =todo.org= task "Derive the org TODO keywords from the Linear workflow states". =WorkflowState.position= was verified live (2026-05-25) — it returns a float (e.g. 947.14), so per-team =position= ordering works and the no-position fallback isn't needed. + +*Superseded in part by [[file:ticket-save-model-v2-spec.org][ticket-save-model-v2-spec.org]] (2026-05-25).* This spec predates save-model-v2, which removed the org-sync push machinery the "Sync-back: cycled keyword → Linear state" section below depends on (=pearl--process-heading-at-point=, =pearl--update-issue-state-async=, =pearl-sync-org-to-linear= are all gone). That section is *obsolete* — v2 reconciles state at save through =pearl--save-state-field=, and the cycled-keyword → state-id resolution is the separate "State keyword-cycle dirty detection" task (c8), which consumes the faithful keyword rendering this spec produces. So this build covers the *derivation / rendering half only*: the derived =#+TODO:= header, =slugify=-based per-state keywords, the =:LINEAR-STATE-TYPE:= drawer, and the merge-refresh header update. The slug-match-against-team-states logic in the sync-back section moves to c8 as a save-time resolution (no =process-heading=, no immediate push). + +*c8 depends on the faithful-keyword invariant this half establishes:* every fresh render sets the heading keyword to =slugify(state-name)=. c8's dirty scan reads a keyword that differs from =slugify(LINEAR-STATE-NAME)= as a user cycle and resolves it back to a state id at save. The one stale case is a file rendered in the narrow window between save-model-v2 and this derivation build, holding a non-standard state (keyword =TODO=, name "Dev Review"): c8 reads it as cycled and would push the =TODO= state over it. A refresh re-renders faithfully and closes the gap; acceptable for pre-1.0 dogfooding. * Problem |
