Specify the writable Dovecot plus-tag filesystem #1

Open
opened 2026-07-22 22:11:47 +00:00 by phg · 0 comments
Owner

Destination

An implementation-ready specification for a Nix-packaged Linux FUSE service that exposes source Maildir messages in flat plus-tag folders through a writable Dovecot namespace, including defined behavior, configuration, operations, and user-documentation requirements.

Notes

  • Use the domain language in CONTEXT.md and consult docs/agents/domain.md.
  • HITL decisions use the grilling and domain-modeling skills, one question at a time.
  • Research must rely on primary sources and preserve cited findings in the repository.
  • One named service instance maps one Source Maildir to one separate Tag namespace; multiple instances are supported.
  • Tags come from Delivered-To and X-Original-To, falling back as a tier to To and Cc. The complete suffix after the first plus is one flat Plus tag; no base recipient is configured.
  • Message state and deletion are global across Message projections. Flag changes and expunge are supported; message-content writes, append, and generated-folder mutation are not.
  • The mailbox hierarchy separator is required per instance. Near-real-time updates are sufficient; initial population completes before the mount becomes available.
  • The flake exposes a package, app, and multi-instance NixOS module. Dovecot integration remains explicit and documented.
  • Acceptance scale: at least 100,000 source messages and 10,000 distinct tags.

Decisions so far

Not yet specified

  • Additional interoperability constraints that may emerge from the Dovecot storage-contract research.

Out of scope

  • Implementing the service; this effort ends at an implementation-ready specification.
  • Non-Linux service modules or portability guarantees beyond a standalone Linux binary.
  • Automatic mutation of the NixOS Dovecot configuration.
  • Filtering tags by a configured base recipient address.
  • Hierarchical interpretation of Plus tags.
  • Appending or moving messages into Tag folders, editing message bytes, or manually creating, renaming, and deleting generated Tag folders.
## Destination An implementation-ready specification for a Nix-packaged Linux FUSE service that exposes source Maildir messages in flat plus-tag folders through a writable Dovecot namespace, including defined behavior, configuration, operations, and user-documentation requirements. ## Notes - Use the domain language in CONTEXT.md and consult docs/agents/domain.md. - HITL decisions use the grilling and domain-modeling skills, one question at a time. - Research must rely on primary sources and preserve cited findings in the repository. - One named service instance maps one Source Maildir to one separate Tag namespace; multiple instances are supported. - Tags come from Delivered-To and X-Original-To, falling back as a tier to To and Cc. The complete suffix after the first plus is one flat Plus tag; no base recipient is configured. - Message state and deletion are global across Message projections. Flag changes and expunge are supported; message-content writes, append, and generated-folder mutation are not. - The mailbox hierarchy separator is required per instance. Near-real-time updates are sufficient; initial population completes before the mount becomes available. - The flake exposes a package, app, and multi-instance NixOS module. Dovecot integration remains explicit and documented. - Acceptance scale: at least 100,000 source messages and 10,000 distinct tags. ## Decisions so far - [Define flat plus-tag encoding and collision rules](https://git.s1q.dev/phg/fuse-mail-dir-by-tag/issues/5#issuecomment-75) — Use canonical readable `%HH` escaping followed by Dovecot modified UTF-7, preserving exact tag identity while rejecting noncanonical and oversized names. - [Validate the writable tag namespace with a concrete prototype](https://git.s1q.dev/phg/fuse-mail-dir-by-tag/issues/6#issuecomment-79) — The four-case Dovecot matrix validates the projection when lookup is canonical-only with managed dentry invalidation and Dovecot ACLs guard structural mailbox writes. ## Not yet specified - Additional interoperability constraints that may emerge from the Dovecot storage-contract research. ## Out of scope - Implementing the service; this effort ends at an implementation-ready specification. - Non-Linux service modules or portability guarantees beyond a standalone Linux binary. - Automatic mutation of the NixOS Dovecot configuration. - Filtering tags by a configured base recipient address. - Hierarchical interpretation of Plus tags. - Appending or moving messages into Tag folders, editing message bytes, or manually creating, renaming, and deleting generated Tag folders.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
phg/fuse-mail-dir-by-tag#1
No description provided.