feat(email): Slice 3 inline-media admission and tracking-pixel classification - #1397
feat(email): Slice 3 inline-media admission and tracking-pixel classification#1397seonghobae wants to merge 4 commits into
Conversation
|
Warning Review limit reached
Next review available in: 2 minutes Limit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?Wait for the limit to reset, then comment An organization admin can change what happens after included review limits in Billing. How do review limits work?CodeRabbit enforces per-developer PR review limits within each organization. For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (10)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@coderabbitai review |
|
Bring live develop@a81ac4f7 into #1397 so predecessor-head evidence does not transfer. Keep the admission contract unchanged. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
|
PR governance metadata gate update for PR governance metadata gate is ready; all current-head requirements passed. |
|
@coderabbitai review |
|
@coderabbitai review Please review the unchanged exact current head |
|
|
Normal merge of cursor/email-media-admission-slice3-c9de@37b4af56 into the wiring branch. Predecessor-head evidence does not transfer. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
|
The CodeQL alert comment references predecessor commit |
|
Current-head review note for 40aef47: the CodeQL alert points to an older commit where the test used an arbitrary substring check. The current head uses urlsplit(...).hostname == click.list-manage.com, and the production host matcher requires exact host or a dot-boundary suffix. CodeQL and Semgrep are successful on the current head; only the historical metadata-only gate failure remains. The protected scheduler should refresh exact-head evidence. |
Add four synthetic multipart/related .eml fixtures and failing acceptance tests for CID resolution, unresolved CID fail-closed, 1x1 tracking-pixel exclusion, and repeated base64 hash provenance. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Resolve cid: against same-message multipart/related parts, fail closed on unresolved CID, and classify tracking_pixel, unsupported_media, and document_image from local header and dimension evidence only. No remote fetch, OCR, or VLM. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Add APA 7 RFC and email-tracking citations, state the no-fetch admission boundary, and record the anti-pattern so 1x1 beacons are not treated as document evidence. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
40aef47 to
5a80583
Compare
|
Caution Review failedAn error occurred during the review process. Please try again later. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Description
#1350 Slice 3 admission only (no OCR/VLM). This draft adds a deterministic, provider-free local admission contract so Naruon can resolve
cid:images through the same message'smultipart/relatedparts and refuse to treat a 1×1 beacon as document evidence.Unresolved CID fails closed with
unresolved_cid_reference. Remotehttp(s)images remain no-fetch; this slice does not add egress. Classification is the closed settracking_pixel,unsupported_media, anddocument_image(screenshots/charts/scans sharedocument_imagehere). Provenance returns source part index, Content-ID, SHA-256 of exact decoded source bytes, classification, andknown/unknownevidence boundary.Predecessor evidence: N/A and does not transfer. Previous head
51c003d701cce4eb0779ccbba96c499fb3e5379dwas reconciled only onto staledevelop@a81ac4f7cd18320ee550b4290308b57c0b33abbf. Exact new head37b4af566d749028f7dc99545fff1db517d61d1aalready contains livedevelop@dd8d15191338b841f9e6f3a06507c6a5643b95d0via the existing normal mergeMerge branch 'develop' into cursor/email-media-admission-slice3-c9de. No additional merge commit was created in this refresh. Predecessor-head tests, coverage, and review evidence do not transfer. #1376 already coversEmailMediaArtifactpixel-dimension extraction on a separate branch and is not copied or rewritten here. PNG IHDR / GIF logical-screen sizes are read only as the local tracking-pixel heuristic.Refs #1350
Customer next action
After independent review, a buyer-visible mail/document pipeline can call
admit_email_inline_media()before any OCR/VLM step. Send onlydocument_imageadmissions downstream. Do not sendtracking_pixel,unsupported_media, orunresolved_cid_referenceoutcomes to a model. Do not merge this draft until it is no longer Draft and a qualifying independent APPROVE exists on the unchanged head.Type of change
Exact-head verification
Previous head:
51c003d701cce4eb0779ccbba96c499fb3e5379dExact current head:
37b4af566d749028f7dc99545fff1db517d61d1aLive develop SHA:
dd8d15191338b841f9e6f3a06507c6a5643b95d0Reconcile: already exact on current develop (
ghconfirmedbaseRefOid=dd8d1519,headRefOid=37b4af56, develop is an ancestor). No new merge commit. Not a squash. Not a force-push of develop.Focused product tests on this exact head (four fixture cases plus boundary coverage):
Local count on
37b4af56: 21 passed. Predecessor-head counts do not transfer.Checklist:
Merge boundary
This PR must remain Draft. Merge is prohibited while Draft and prohibited without a qualifying independent non-author APPROVE on the unchanged head. Do not self-approve, mark Ready, squash-merge over a draft, or treat predecessor/stacked/#1376 evidence as this head's proof.