Repository navigation
fix: prevent mailbox parsing from expanding delivery recipients - #117
Conversation
Share a strict addr-spec validator between market recipient binding and the SMTP boundary. Revalidate legacy jobs before opening a connection and explicitly pin a singleton envelope recipient. Preserve SMTPUTF8, quoted comma local parts, current buyer/endpoint generation checks and uncertain semantics. 127 local regressions passed (Python 3.13.5; stdlib SMTP parser/serializer with a recording transport, no external sends). Before fix: 73 failed, 54 passed. Update versioned security rule and _index. Refs #81, #85.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
CI36401618834 correctly rejected the initial msg.security shard at 233 tokens (>200). Compress prose while retaining root/secret isolation, release-owned rules, EffectJob-only mail state, explicit buyer acceptance and single-mailbox SMTP binding. Do not change the tokenizer, token budget or test assertions. Production source and all 127 mailbox regressions are unchanged; local tests still pass. Final-head full CI remains required. Refs #81, #85.
|
目标CI发现并已修复一项真实文档回归:初始head4be8a9d在CI36401618834的security规则为233 tokens,超过既有200预算。仅压缩正文为新head 最终head CI36403033365正在完成剩余分片;现已下载并校验分片0/1/3的provider SHA-256,355/386/342真实JUnit node IDs均与manifest精确一致且零失败/错误/跳过,shard0另有8 conformance及wheel/sdist。之前失败的规则测试已在新shard3通过;六个变更文件与新sdist字节完全一致。尚不把部分产物当完整成功。组合恢复PR#118已包含这个最终规则版本。 |
|
最终串行核验完成:head 当前0个未解决review threads;Codex安全review覆盖生产代码初始head4be8a9d,此后仅压缩security规则且人工复核约束完整,Copilot配额失败不当作批准。未放宽原200-token预算;第一次失败如实保留。 将以固定head合并。此切片修复单邮箱被SMTP展开,不宣称完成#81完整现场SMTP、#85全部架构迁移或任何生产验收。 |
…rization Preserve #112/#116 recovery history and merged #115/#117 guards. Exact combined tree 1a8a28f passed CI36404029543 and Recovery safety36404029733: 1544 core + 8 conformance, four SHA-verified artifacts with exact disjoint JUnit node IDs, zero failures/errors/skips, wheel/sdist. Both integration-test failures fixed without changing quarantine or OS-admin/console gates. Reviewed exact head. Refs #64, #65, #68, #69, #70, #81, #83, #84, #85. Full policy promotion and production field evidence remain incomplete; no production actions.
Scope
Refs #81, #85. Narrow follow-up to #114, based on merged #115 (
eb67b5a3976fd520668a2b302b74df62cf207667). No umbrella issue is closed.A delivery/email endpoint must represent one exact mailbox. The previous regex accepted some header/list syntax, while
SMTP.send_message()inferred envelope recipients from To/Cc/Bcc. This could change the recipient set despite matching the stored endpoint string.Changes
to_addrs; never derive recipients from headers.msg.securityrule to v3 and_indexto v4, preserving rule IDs.Evidence
Local Python 3.13.5:
PYTHONPATH=src python -m pytest -q tests/test_single_mailbox_delivery.py4be8a9d2c9107a3254162e1433b3478f39400fd0, treeaa6241d577e95ed867b7aa038402f0786ffe5ce0.Target Python3.15/PostgreSQL16/Valkey9 four-shard CI, exact node-ID gate, conformance and wheel/sdist are still required before merge. Local unit evidence is not production SMTP or full lifecycle acceptance.
A/B/C retain their declared files/branches. No deployment, production Root/PIN/keys/funds, recovery, destructive cleanup or real outbound notifications.