generated from coulomb/repo-seed
70 lines
2.9 KiB
Markdown
70 lines
2.9 KiB
Markdown
# Email Evidence Canon
|
|
|
|
## Rule
|
|
|
|
Email events are evidence, not result satisfaction.
|
|
|
|
The scanner reports email-channel facts and uncertainty. A downstream
|
|
coordination runtime decides whether those facts satisfy a coordination case.
|
|
|
|
## Initial Message Classes
|
|
|
|
- `hard_bounce`
|
|
- `soft_bounce`
|
|
- `delayed_delivery_notice`
|
|
- `final_delivery_failure`
|
|
- `out_of_office`
|
|
- `human_reply`
|
|
- `complaint_or_abuse`
|
|
- `unsubscribe_or_opt_out`
|
|
- `challenge_response`
|
|
- `unknown_return_message`
|
|
- `unrelated_message`
|
|
- `parse_failed`
|
|
|
|
## Initial Normalized Events
|
|
|
|
| Message class | Normalized event | Assessment |
|
|
| --- | --- | --- |
|
|
| `hard_bounce` | `notification.endpoint.rejected_permanent` | `fail.hard_bounce` |
|
|
| `soft_bounce` | `notification.endpoint.rejected_temporary` | `undef.deferred` |
|
|
| `delayed_delivery_notice` | `notification.endpoint.deferred` | `undef.deferred` |
|
|
| `final_delivery_failure` | `notification.endpoint.rejected_permanent` | `fail.expired_without_delivery` |
|
|
| `out_of_office` | `interaction.out_of_office_received` | `undef.out_of_office` |
|
|
| `human_reply` | `interaction.reply_received` | `success.reply_received` |
|
|
| `complaint_or_abuse` | `notification.channel.complaint_received` | `fail.complaint_received` |
|
|
| `unsubscribe_or_opt_out` | `notification.channel.unsubscribe_received` | `fail.unsubscribed` |
|
|
| `unknown_return_message` | `notification.endpoint.unknown` | `undef.conflicting_evidence` |
|
|
| `challenge_response` | `interaction.unverified_actor_interaction` | `undef.identity_uncertain` |
|
|
| `parse_failed` | `diagnostic.message.parse_failed` | `undef.parse_failed` |
|
|
| expected recipient with no evidence | `diagnostic.expected_recipient.no_evidence` | `undef.no_signal` |
|
|
|
|
## Overclaim Prevention
|
|
|
|
- No bounce found does not mean delivery success.
|
|
- Provider acceptance does not mean endpoint acceptance.
|
|
- Endpoint acceptance does not mean inbox placement.
|
|
- Out-of-office does not prove recipient awareness or action.
|
|
- Human reply does not prove legal acceptance.
|
|
- Unknown return messages remain visible.
|
|
- Parse failures are diagnostic rows, not delivery or interaction outcomes.
|
|
- Expected-recipient no-evidence rows mean no mailbox evidence was found in the
|
|
inspected range, not that notification succeeded or failed.
|
|
- Scanner and proxy interactions must stay below identity-bound interaction.
|
|
|
|
## Endpoint Quality Hints
|
|
|
|
Endpoint quality rows are diagnostic state, not verdicts:
|
|
|
|
| Evidence | Quality hint |
|
|
| --- | --- |
|
|
| Hard bounce or final failure | `reachability = unreachable`, `last_failure_at` |
|
|
| Soft bounce or delayed delivery | `reachability = degraded`, `last_failure_at` |
|
|
| Complaint | `suppression_state = suppressed` |
|
|
| Unsubscribe | `suppression_state = opted_out` |
|
|
| Human reply | `last_success_at` |
|
|
| Out-of-office | `reachability = uncertain`, `last_auto_reply_at` |
|
|
|
|
These hints can guide future suppression and review workflows, but they do not
|
|
prove human awareness, authority, payload access, or coordination success.
|