Skip to content

MailOps v0.2.0: Safer multi-account operations and development harness

Choose a tag to compare

@josephbartlett josephbartlett released this 06 Sep 01:58
· 1 commit to main since this release

MailOps v0.2.0: Safer multi-account operations and development harness

MailOps 0.2.0 fixes account-isolation and draft-execution defects while keeping
the local-first operator loop: sync, inspect, triage, draft, review, apply, audit.
This is a minor alpha release because it changes local schema and policy behavior.

What changed

  • Message identity is scoped to each account, preventing identical Message-IDs in
    different mailboxes from overwriting each other. Migration preserves stored IDs,
    content, folder links, indexes, and triggers transactionally.
  • Proton sync binds cursors to UIDVALIDITY, validates returned UIDs, reads with
    BODY.PEEK[], and retains bounded retry behavior after errors and mailbox resets.
  • Draft proposals freeze reviewed account, recipients, and reply context. Apply
    checks account/login identity and enforces risk floors and per-action approval.
  • Durable execution claims prevent duplicate concurrent or interrupted apply
    attempts. Uncertain provider results block automatic retries and local rollback.
  • New draft references verify Message-ID and UIDVALIDITY during reconciliation.
  • TOML parsing, credential/traceback redaction, resource cleanup, and literal
    terminal rendering are hardened. Untrusted mail cannot use Rich markup to hide
    reviewed text; control characters display as visible escapes.
  • A shared validation command checks architecture, docs, lint, tests, and synthetic
    CLI behavior. CI covers Windows/Linux with Python 3.10/3.13, builds packages,
    checks private-file exclusion and metadata, and audits resolved dependencies.
  • All six MailOps Codex skills now use deliberate mailbox-home/account targeting
    and current credential, installation, review, and release guidance.

Upgrade instructions

  1. Stop MailOps operations and back up the entire established MAILOPS_HOME
    before running 0.2.0. Most state-using commands initialize/migrate the database.
    Migration cannot reconstruct messages already overwritten by older versions.

  2. Install the wheel attached to this GitHub release in the intended environment:

    python -m pip install ./mailops-0.2.0-py3-none-any.whl
    
  3. Set MAILOPS_HOME to the existing absolute store path. Verify the account and
    inspect pending batches before any provider action. Recreate and review legacy
    proposals that lack frozen recipients.

  4. Legacy UID-only draft refs now report unverified. Actions marked executing
    or uncertain need Proton Drafts/audit inspection; do not reset/retry them blindly.

  5. Refresh installed skills from skills/ using the maintained installation guide.

The attached wheel and source archive are GitHub release artifacts. Do not assume
this version is available from PyPI unless separately published there.

Validation and limits

Local Windows validation passed 140 tests, structural checks, lint, isolated CLI
scenarios, packaging checks, and built-wheel smoke tests. A point-in-time audit of
57 resolved development/runtime packages found no known vulnerabilities. Remote
results are available in Validate MailOps.

No operational mailbox database was migrated during release validation. Live Bridge
login/sync/draft acceptance remains untested for this release; provider tests use
fakes. Thread grouping and triage remain heuristic; bounded sync is not a complete
mirror of existing flags/deletions. State and exports are plaintext on disk.

Sending, deletion, bulk archive/move, provider rule application, and Gmail runtime
remain unimplemented. Creating a reviewed Proton draft never sends it.

See the changelog,
alpha guide,
release checks,
and quality report.