check: what the site mails, before anyone receives it #1

Open
bl wants to merge 3 commits from mail-checks into main
Owner

New src/mail.rs, run by iris check after the access policy.

Fails (the run stops, as for any structural error):

  • a {placeholder} in a case mail that no form recording into the bucket collects and portal does not fill (email site chain bucket state) - portal would send it blank;
  • a {site}/path link to a page the site does not have;
  • a state that grants a group on a site with no mail.from - the account is made and its sign-in link reaches nobody;
  • mail.invite without {link}, or with a key the invite does not fill.

Warns:

  • a placeholder only some of the bucket's forms collect (blank for the others);
  • a dialogue that does not close: the person is mailed on the way in and not told when their case ends;
  • a mail telling a person their case is where they may act on it (a self_transition from that state) with no {chain} link.

Run over every live content repo: no FAIL anywhere, so this cannot break a site's CI when it ships. tomtervel gets two warnings, both real (hjelpebehov never tells the person it was not solved; husstander never tells a member they were unsubscribed). 14 tests.

🤖 Generated with Claude Code

New `src/mail.rs`, run by `iris check` after the access policy. **Fails** (the run stops, as for any structural error): - a `{placeholder}` in a case mail that no form recording into the bucket collects and portal does not fill (`email site chain bucket state`) - portal would send it blank; - a `{site}/path` link to a page the site does not have; - a state that `grants` a group on a site with no `mail.from` - the account is made and its sign-in link reaches nobody; - `mail.invite` without `{link}`, or with a key the invite does not fill. **Warns**: - a placeholder only some of the bucket's forms collect (blank for the others); - a dialogue that does not close: the person is mailed on the way in and not told when their case ends; - a mail telling a person their case is where they may act on it (a `self_transition` from that state) with no `{chain}` link. Run over every live content repo: no FAIL anywhere, so this cannot break a site's CI when it ships. tomtervel gets two warnings, both real (`hjelpebehov` never tells the person it was not solved; `husstander` never tells a member they were unsubscribed). 14 tests. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
bl added 1 commit 2026-09-28 16:18:39 +00:00
check: what the site mails, before anyone receives it
Test / test (pull_request) Successful in 1m42s
8bee3ed4ec
A mail is read alone, by a person who cannot ask what a blank means,
and portal renders an unknown {key} as nothing and sends a dead link as
readily as a live one. iris check now fails on a placeholder no form in
the bucket collects and portal does not fill, on a {site}/path link to
a page the site does not have, on a state that grants a group on a site
with no mail sender (the sign-in link would reach nobody), and on an
invite mail without {link} or with a key the invite cannot fill. It
warns on a placeholder only some forms collect, on a dialogue that does
not close (mailed on the way in, not told how it ended), and on a mail
that tells a person they may now act on their case without their link.

No FAIL on any live content repo (uhhm, redoal, westra, klingenbergbygg,
tomtervel); tomtervel gets two warnings, both real.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
bl added 1 commit 2026-09-28 16:27:18 +00:00
Found by the trainer's first mail rewording: 'We'll take on {project}'
puts the whole brief in the inbox list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
bl added 1 commit 2026-09-28 16:31:00 +00:00
check: warn on a mail placeholder every form marks optional
Test / test (pull_request) Successful in 1m16s
07dd6c0f40
Found the same way: 'your brief for {organization}, {org_contact}' with
the contact optional reads ', .' for most people.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
All checks were successful
Test / test (pull_request) Successful in 1m16s
You are not authorized to merge this pull request.
This pull request can be merged automatically.
This branch is out-of-date with the base branch
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin mail-checks:mail-checks
git checkout mail-checks
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uhhm/iris#1