aboutsummaryrefslogtreecommitdiff
path: root/docs/todo-keywords-from-workflow-states-spec.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-26 00:31:44 -0500
committerCraig Jennings <c@cjennings.net>2026-05-26 00:31:44 -0500
commit5ee0bdcc4a1bd4b935973be7201b20380ec8cb80 (patch)
tree49d8a59c3c39240c2bc3ee49146bea723ea2f083 /docs/todo-keywords-from-workflow-states-spec.org
parent6924c27963ddd25f91ea3a1a02d462f0badabfc4 (diff)
downloadpearl-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.org6
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