potiuk opened a new pull request, #471:
URL: https://github.com/apache/airflow-steward/pull/471

   ## What
   
   Make plain-text-only an enforced, documented invariant for Gmail drafts 
created by either backend (`oauth_curl` and the claude.ai Gmail MCP).
   
   ## Why
   
   The project's outbound correspondence (security replies, ASF-security 
relays, advisory text) is plain text by policy. Nothing previously *guaranteed* 
that — the oauth backend happened to emit plain text but had no guard against a 
regression, and the MCP path will emit an HTML part if `htmlBody` is ever 
passed.
   
   ## Changes
   
   - **`oauth_curl`** 
(`tools/gmail/oauth-draft/src/oauth_draft/create_draft.py`): comment on 
`build_mime` locking the intent — `set_content(str)` yields a single 
`text/plain` part; never add an HTML alternative.
   - **Test** (`tests/test_create_draft.py`): new 
`test_build_mime_is_plain_text_not_html` asserting the built MIME is 
single-part `text/plain`, not multipart, with no `text/html` anywhere and no 
`text/html` in the raw bytes.
   - **`claude_ai_mcp`**: documented the hard rule — pass only `body`, never 
`htmlBody` (which adds a `text/html` part) — in `operations.md` (call-shape 
example + bullet + "Hard rules that apply to both backends") and 
`draft-backends.md` ("Limitations that apply to both backends").
   
   Docs + one Python package. `prek`-equivalent hooks ran on commit and pass: 
ruff, mypy, pytest (60 tests), markdownlint, typos, check-placeholders.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to