aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-24 00:43:07 -0500
committerCraig Jennings <c@cjennings.net>2026-07-24 00:43:07 -0500
commitd3315714d0553f41739ed3ea602b5d42c8113a47 (patch)
treeea14b654431b199bddeeeb074f1c4a0294587dcd
parent490f8f96fb67f22cc631081abe2d78b3337c925b (diff)
downloadrulesets-d3315714d0553f41739ed3ea602b5d42c8113a47.tar.gz
rulesets-d3315714d0553f41739ed3ea602b5d42c8113a47.zip
chore(inbox): park the question-capture workflow idea
Craig's idea, via archsetup: drop a question into the roam inbox, have the agent retrieve it during a pass but hold rather than auto-answer, then answer it live at the next conversation and close on his acknowledgement. The inverse of a VERIFY — the agent owes the answer, not the other way round. Parked as a spec candidate rather than a direct build: the value is clear, but marking a question item, tracking the answer-owed state, and the new-keyword-vs-VERIFY-variant call are decisions to make with Craig. The proposal is staged under working/.
-rw-r--r--todo.org15
-rw-r--r--working/question-capture-pattern/proposal-from-archsetup.org15
2 files changed, 30 insertions, 0 deletions
diff --git a/todo.org b/todo.org
index d376625..7221a41 100644
--- a/todo.org
+++ b/todo.org
@@ -89,6 +89,21 @@ Craig approved 2026-07-23. Applied to =claude-templates/.ai/notes.org= and synce
CLOSED: [2026-07-23 Thu]
Craig approved 2026-07-23. Added =*** Clear temp/= to =wrap-it-up.org= Step 3, after the archive pass, and synced to the mirror. Two guards: confirm before deleting anything that reads as in-progress rather than throwaway (that belongs in =working/=, so move it there), and skip entirely where =temp/= isn't gitignored, since that means the project uses the directory for something else. This closes the last open clause of his 2026-07-20 working/temp capture.
+** VERIFY [#B] Parked: question-capture pattern — ask async, answer live (from archsetup, Craig's idea)
+:PROPERTIES:
+:LAST_REVIEWED: 2026-07-24
+:END:
+What arrived: your own idea, relayed via archsetup's roam inbox. Drop a question (not a build task) into the roam inbox as a capture; the agent retrieves it during a sentry/inbox pass but does NOT auto-answer; it holds the question and answers it at the next live conversation, closing on your acknowledgement. Distinct from VERIFY: a VERIFY blocks the agent on your input, here the agent owes you the answer and you owe only the ack. The instance that spawned it: "why does the cursor not appear over the desktop when the world-clock wallpaper is on?", answered live in archsetup.
+
+Recommendation: adopt, as a small spec rather than a direct build. The value is real — a captured question has no home today (not a task, not quite a VERIFY), and decoupling async-capture from sync-answer stops the agent burning cycles guessing at something you'd rather discuss. It clears the value gate on your authorship. But the shape carries decisions I shouldn't guess, which is why it parks rather than lands:
+
+1. How is a question item identified — an explicit marker (a =:question:= filetag, a =Q:= prefix) or phrasing (ends in "?")? Phrasing is fuzzy (a real task can contain a question); a marker is reliable. My lean: explicit marker.
+2. Where does the "answer owed" state live between capture and the live session? Options: the roam item stays put with an answered-pending tag, or it routes to the owning project as an "answer owed" item that startup surfaces. My lean: surface at startup, since that's the next live moment.
+3. Does it warrant a new keyword (the inverse of VERIFY — agent-owes-answer) or a tagged VERIFY variant? The proposal draws the VERIFY distinction sharply enough that a distinct marker may be cleaner.
+
+Prepared artifact: none — this is a rule-design decision, not a mechanical edit, so there's no diff to stage. The proposal and the concrete instance are in [[file:working/question-capture-pattern/proposal-from-archsetup.org]].
+Say "spec the question-capture pattern" (answering 1-3, or leaving them to the spec's decisions walk) and it becomes a spec-create.
+
** VERIFY [#A] Parked: account-binding guard for the personal-gmail triage plugin (from home)
:PROPERTIES:
:LAST_REVIEWED: 2026-07-23
diff --git a/working/question-capture-pattern/proposal-from-archsetup.org b/working/question-capture-pattern/proposal-from-archsetup.org
new file mode 100644
index 0000000..22a978d
--- /dev/null
+++ b/working/question-capture-pattern/proposal-from-archsetup.org
@@ -0,0 +1,15 @@
+#+TITLE: Workflow idea from Craig (2026-07-24, via archsetup roam inb
+#+SOURCE: from archsetup
+#+DATE: 2026-07-24 00:26:22 -0500
+
+Workflow idea from Craig (2026-07-24, via archsetup roam inbox) — worth adopting across projects.
+
+The pattern: Craig drops a QUESTION into the roam inbox as a capture (not a task to build — a thing he wants explained). The agent retrieves it during a sentry / inbox-processing pass, and instead of trying to answer it autonomously, holds it and ANSWERS IT WHEN BACK IN CONVERSATION with Craig. The task closes once the answer is given and Craig has responded.
+
+His words: 'This is a format I'll probably use quite a lot. I'll ask the question, you can retrieve it during sentry, then you can answer it when we're back in conversation.'
+
+Why it's useful: it decouples question-capture (async, whenever it occurs to him) from answer-delivery (synchronous, in a live session where he can follow up). It also keeps the agent from burning autonomous cycles guessing at an answer he'd rather discuss.
+
+Suggested shape for a rule: a roam-inbox item phrased as a question (or tagged so) is NOT auto-answered during unattended processing. The agent surfaces it at the next live conversation, answers, and closes on Craig's acknowledgement. Distinct from a VERIFY (which waits on Craig's INPUT to proceed) — here the agent owes the answer, Craig owes only the acknowledgement.
+
+Concrete instance that spawned this: 'why does the cursor not appear over the desktop when the world-clock wallpaper is on?' — answered live in the archsetup session (the projected face's CSS sets cursor:none; over the bare desktop the pointer is over that full-monitor WebKit page, so it vanishes).