diff --git a/docs/changes/unreleased/1612-standing-once-handoff.md b/docs/changes/unreleased/1612-standing-once-handoff.md new file mode 100644 index 0000000000..78caf7e959 --- /dev/null +++ b/docs/changes/unreleased/1612-standing-once-handoff.md @@ -0,0 +1,9 @@ +--- +kind: fixed +title: one-time standing approvals preserve the action and report approval truthfully +pr: 1612 +surface: [chat, engine] +invalidates: + - "Choosing Only now previously settled the card as done before work ran and returned a generic instruction. It now records approval without completion and hands the full approved action back with an explicit pending execution state." + - "A one-time scheduled task previously used reminder labels. Its card now says Run it then and describes running work; say-only reminders keep their existing wording." +--- diff --git a/internal/manual/chat/asking-from-home.md b/internal/manual/chat/asking-from-home.md index f7d4405577..50cee1db55 100644 --- a/internal/manual/chat/asking-from-home.md +++ b/internal/manual/chat/asking-from-home.md @@ -307,7 +307,7 @@ on home says `? waiting on you` for as long as it does. **The card stays after you answer it.** It does not disappear — it settles in place, greys out, and its bottom edge carries what was decided in the same words a card in a conversation -uses: `Set it up · Mondays at 9am · set up`, `Only now, don't repeat · done now, nothing kept`, +uses: `Set it up · Mondays at 9am · set up`, `Only now, don't repeat · approved once, not scheduled`, `Change… · you asked for something different`, `not set up`, `ended · nothing was set up`. The answers go, so `1`, `3`, `0` and `o` are ordinary characters again and can be typed into a follow-up. The only card that ever diff --git a/internal/manual/chat/keeping-an-eye.md b/internal/manual/chat/keeping-an-eye.md index faf713c293..695334dee0 100644 --- a/internal/manual/chat/keeping-an-eye.md +++ b/internal/manual/chat/keeping-an-eye.md @@ -939,10 +939,13 @@ piece of the ask still to do. `the card was left unanswered — nothing was set up`. This is the opposite of a task proposal, where silence starts the work: a task is bounded work somebody is watching, and a standing item spends money at times nobody chose. -- **A "do it once" answer sets nothing up.** It answers - `Do it now as an ordinary step and report what happened. The person chose not to repeat it. Do not set it up again unless they ask. Do not investigate codeaf.` - and codeaf does the thing in front of you instead. A **one-off reminder's card - does not offer that answer** — see "Why is there no once on my reminder card". +- **A "do it once" answer approves immediate work, not a schedule.** The settled + card says `approved once, not scheduled`. That is an approval receipt, not + proof that the work has finished. The approved action, workspace, watch probe, + acceptance and spending limits are handed back to the current conversation; + it uses its ordinary tools and permissions and reports the actual result or + a blocker. No standing item is saved. A **one-off reminder's card does not + offer that answer** — see "Why is there no once on my reminder card". - **It will not set a reminder for a moment that has already passed.** The stamp is refused with the current time in it, and codeaf is asked to work it out again from that. @@ -959,3 +962,12 @@ piece of the ask still to do. one: nothing that runs on its own may arm something else that runs on its own. - **Nothing is armed by a matcher.** Nothing runs because a phrase looked like a rule; every single one of these was a card you said yes to. + +## Why does a one-time job say run it then instead of remind me? + +A one-time card that will perform work says `wants to schedule work once`. +Its approval is `Run it then ·