Skip to content

ci: bidirectional envelope-compat gate — HEAD-built envelopes must parse with published readers, HEAD parsers must read all archived envelopes #131

Description

@rubenhensen

Companion to encryption4all/postguard#251, which gates the container bytes but is path-filtered to pg-core/pg-wasm — the envelope lives here (src/email/: buildMime, createEnvelope, extract*), so envelope changes currently merge ungated. This class has already shipped twice: pg-js >=1.1 silently stopped emitting body armor, breaking Thunderbird detection (encryption4all/postguard-tb-addon#85), and the data.bin zip asymmetry broke the website's uuid decrypt path (#39 / encryption4all/postguard-website#134).

Required PR check, path-filtered to src/email/**, both directions:

  1. Forward — HEAD's buildMime/createEnvelope output for every tier (1: body fragment, 2: postguard.encrypted attachment, 3: cryptify link) must be detected and extracted by the published pg-js readers in the COMPATIBILITY.md support window, and must preserve what installed mail-client detection keys on (attachment name, application/postguard content type, x-postguard header).
  2. Archival — HEAD's extract/detection must parse every envelope fixture in the append-only corpus (encryption4all/postguard-e2e#19), including legacy formats old senders emitted (armored bodies).

Fixtures shared with encryption4all/postguard-e2e#19; reader set is the same list encryption4all/postguard#252 declares. Enforce via branch protection.

Part of encryption4all/postguard#247 (workstream C); sibling of encryption4all/postguard#251.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions