diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-31 12:49:53 +0100 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-31 12:49:53 +0100 |
| commit | c7d09a3956c2b32f9590651c2088ab34334ac538 (patch) | |
| tree | e7fdf1cc55ecfe836981ad770315e9c6d832958d /docs/superpowers/plans/2026-08-03-post-0.1.0-usability-closed.md | |
| parent | 2b6ecd2a1f624c12c071320ff1ed96404d75f839 (diff) | |
| download | qtmaildir-c7d09a3956c2b32f9590651c2088ab34334ac538.tar.gz qtmaildir-c7d09a3956c2b32f9590651c2088ab34334ac538.zip | |
docs: record rule apply and archive-on-arrival
The no-confirmation rule gains its second exception, by property: a write
scoped to the whole index confirms with the count, though it can be undone.
AGENTS.md and the spec now describe the backfill as built: the worker
resolves the ids once, writes one tag at a time over that fixed list, and
answers with a single ruleApplied from which the undo macro is built, with
nothing armed on the shared confirmation queue. Apply is refused during a
sync.
Hand round trip, throwaway index of 2 messages (one from the promo
sender), rules.json written by TagRules::save from the C++ side with
allow_archive and a note: post-new exited 0 and logged "applied 1
rule(s)"; after it, tag:promo 1, tag:inbox 1, tag:promo and tag:inbox 0,
tag:unread 2, tag:new 0. The file read back 1 rule with allow_archive
True and note "kept".
Italian translations for the 16 new strings; lrelease reports 725
finished, 0 unfinished.
Items 212 and 213 closed. Item 214 opened: an undo's write is not armed,
so its confirmation is credited to whatever command is waiting.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'docs/superpowers/plans/2026-08-03-post-0.1.0-usability-closed.md')
| -rw-r--r-- | docs/superpowers/plans/2026-08-03-post-0.1.0-usability-closed.md | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/docs/superpowers/plans/2026-08-03-post-0.1.0-usability-closed.md b/docs/superpowers/plans/2026-08-03-post-0.1.0-usability-closed.md index c83e41c..376272b 100644 --- a/docs/superpowers/plans/2026-08-03-post-0.1.0-usability-closed.md +++ b/docs/superpowers/plans/2026-08-03-post-0.1.0-usability-closed.md @@ -10912,3 +10912,48 @@ while moves report through another signal. An error bumps the same ticket, so a late "done" cannot cover the error message. Tested by `aWriteSaysItIsApplyingUntilTheWorkerHasRunIt`, which fails when the reply is dropped. + +## 212. A rule edit reaches only new mail + +**Observed.** From the user, 2026-10-31: after adding an address to the promo +rule, "I have to manually go and apply the tags, because filters run on new +mail only." + +**Cause.** Not a defect. The `post-new` hook scopes every rule to `tag:new`, +and backfill was deliberately deferred by the tagging-rules spec until the +confirmation question was settled. + +**Approach.** See `specs/2026-10-31-rule-apply-and-archive-design.md`, Part A. + +**Constraints.** Revises the no-confirmation rule in `CLAUDE.md` with a second +exception, by property: a write scoped to the whole mailbox confirms with the +count. Undo still applies. + +**Done 2026-10-31, unreleased.** Built as the spec's Part A with three changes +recorded there and in `CLAUDE.md`: the worker's `applyRule` resolves the ids +once and writes one tag at a time, it answers with one `ruleApplied` from which +`onRuleApplied` builds the undo macro (nothing is armed on the shared +confirmation queue in advance), and Apply during a sync is refused rather than +held. The ordering defect found on the way, in the ordinary undo path, is item +214. + +## 213. A rule removing `inbox` is skipped whole by the hook + +**Observed.** Found while designing 212. Every sync logs +`rule 'promo' would remove inbox; skipped`, so new promotional mail is never +tagged `promo` and stays in the inbox. This is how the 10k messages of item +211 accumulated. + +**Cause.** Verified in `assets/hooks/post-new`: `PROTECTED_REMOVALS` is +`{unread, inbox}` and a rule naming either is `continue`d past entirely, not +applied without the removal. The rules dialog says nothing about it. + +**Approach.** See the same spec, Part B. + +**Constraints.** A rule-format change: both readers, both suites, and the hand +round trip under "Changing the rule format". The hook runs every ten minutes +on real mail. + +**Done 2026-10-31, unreleased.** Built as the spec's Part B. The hand round +trip under "Changing the rule format" step 4 was run over a throwaway index; +its counts are in the commit that closed this item. |
