Signed-off-by: Christoph Schmatzler <christoph@schmatzler.com>
This commit is contained in:
2026-03-02 14:17:45 +00:00
parent cdfd96bf94
commit 90029b9a27

View File

@@ -21,27 +21,23 @@ Workflow:
- `Newsletters and Marketing` - `Newsletters and Marketing`
- `Junk` - `Junk`
- `Deleted Messages` - `Deleted Messages`
3. `Archive` is deprecated legacy storage: 3. Determine source folder:
- Do not move new messages to `Archive`.
- Do not create new workflows that route mail to `Archive`.
- Existing messages already in `Archive` may remain there unchanged.
4. Determine source folder:
- If `$ARGUMENTS` is a single known folder name (matches a folder from step 1), use that as source. - If `$ARGUMENTS` is a single known folder name (matches a folder from step 1), use that as source.
- Otherwise use `INBOX`. - Otherwise use `INBOX`.
5. Build a run scope safely: 4. Build a run scope safely:
- List with fixed page size `20` and JSON output: `himalaya envelope list -f "<source>" -p 1 -s 20 --output json`. - List with fixed page size `20` and JSON output: `himalaya envelope list -f "<source>" -p 1 -s 20 --output json`.
- Start at page `1`. Enumerate IDs in returned order. - Start at page `1`. Enumerate IDs in returned order.
- Process each ID fully before touching the next ID. - Process each ID fully before touching the next ID.
- Keep an in-memory reviewed set for this run to avoid reprocessing IDs already handled or intentionally left untouched. - Keep an in-memory reviewed set for this run to avoid reprocessing IDs already handled or intentionally left untouched.
- When all IDs on the current page are in the reviewed set, advance to the next page. - When all IDs on the current page are in the reviewed set, advance to the next page.
- Stop when a page returns fewer results than the page size (end of folder) and all its IDs are in the reviewed set. - Stop when a page returns fewer results than the page size (end of folder) and all its IDs are in the reviewed set.
6. For each single envelope ID, do all checks before any move/delete: 5. For each single envelope ID, do all checks before any move/delete:
- Read the message: `himalaya message read -f "<source>" <id>`. - Read the message: `himalaya message read -f "<source>" <id>`.
- If needed for classification, inspect attachments: `himalaya attachment download -f "<source>" <id> --dir /tmp/himalaya-triage`. - If needed for classification, inspect attachments: `himalaya attachment download -f "<source>" <id> --dir /tmp/himalaya-triage`.
- If attachments are downloaded, inspect them and `rm` the downloaded files from `/tmp/himalaya-triage` after use. - If attachments are downloaded, inspect them and `rm` the downloaded files from `/tmp/himalaya-triage` after use.
- Move: `himalaya message move -f "<source>" <id> "<destination>"`. - Move: `himalaya message move -f "<source>" <id> "<destination>"`.
- Delete: `himalaya message delete -f "<source>" <id>`. - Delete: `himalaya message delete -f "<source>" <id>`.
7. Classification precedence (higher rule wins on conflict): 6. Classification precedence (higher rule wins on conflict):
- Human communication — a message with freeform natural-language content written by a human, not templated or autogenerated. When in doubt whether a message is human or automated, leave it untouched. - Human communication — a message with freeform natural-language content written by a human, not templated or autogenerated. When in doubt whether a message is human or automated, leave it untouched.
- Clearly ephemeral automated/system message (alerts, bot/status updates, OTP/2FA, password reset codes, login codes) with no archival value: move to `Deleted Messages`. - Clearly ephemeral automated/system message (alerts, bot/status updates, OTP/2FA, password reset codes, login codes) with no archival value: move to `Deleted Messages`.
- Payment transaction correspondence (actual charge/payment confirmations, receipts, failed-payment notices, provider payment events such as Klarna/PayPal/Stripe): move to `Payments`. - Payment transaction correspondence (actual charge/payment confirmations, receipts, failed-payment notices, provider payment events such as Klarna/PayPal/Stripe): move to `Payments`.
@@ -53,7 +49,7 @@ Workflow:
- Marketing/newsletters: move to `Newsletters and Marketing`. - Marketing/newsletters: move to `Newsletters and Marketing`.
- Delivery/submission confirmations for items you shipped outbound: move to `Outgoing Shipments`. - Delivery/submission confirmations for items you shipped outbound: move to `Outgoing Shipments`.
- Long-term but uncategorized messages: create a concise new folder and move there. - Long-term but uncategorized messages: create a concise new folder and move there.
8. Folder creation rule: 7. Folder creation rule:
- Create a new folder only if no existing folder fits and the message should be kept. - Create a new folder only if no existing folder fits and the message should be kept.
- Naming constraints: concise topic name, avoid duplicates, and avoid broad catch-all names. - Naming constraints: concise topic name, avoid duplicates, and avoid broad catch-all names.
- Command: `himalaya folder add "<new-folder>"`. - Command: `himalaya folder add "<new-folder>"`.
@@ -65,7 +61,6 @@ Execution rules:
- Never skip reading message content before deciding. - Never skip reading message content before deciding.
- Keep decisions conservative: only route clearly ephemeral automated/system messages to `Deleted Messages`. - Keep decisions conservative: only route clearly ephemeral automated/system messages to `Deleted Messages`.
- Never move or delete human communications via automation. - Never move or delete human communications via automation.
- Never route new messages to `Archive`; treat it as deprecated legacy-only.
- Define "processed" as "reviewed once in this run" (including intentionally untouched human messages). - Define "processed" as "reviewed once in this run" (including intentionally untouched human messages).
- Include only messages observed during this run's listings; if new mail arrives mid-run, leave it for the next run. - Include only messages observed during this run's listings; if new mail arrives mid-run, leave it for the next run.
- Report a compact action log at the end with: - Report a compact action log at the end with: