Skip to content

smtp: absorb the library and stub the package - #129

Merged
loks0n merged 3 commits into
mainfrom
feat/absorb-smtp
Aug 13, 2026
Merged

smtp: absorb the library and stub the package#129
loks0n merged 3 commits into
mainfrom
feat/absorb-smtp

Conversation

@loks0n

@loks0n loks0n commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Absorbs utopia-php/smtp into the monorepo.

The mirror had no library

main is a single commit whose only file is a two-line README.md stub — no composer.json, no src/, no tests, no tags, nothing on Packagist. The one open mirror pull request (#1) adds a long README describing Utopia\SMTP\Server, native and Swoole adapters, handlers, a client, and telemetry counters, but none of that code was ever written; it links src/SMTP/Handler.php, a ci.yml badge, and a Packagist badge, all three pointing at nothing.

So this imports the history that exists and gives the package the smallest shape that satisfies the gates. Writing the library is a separate job.

What is here

  • composer.jsonutopia-php/smtp, MIT, php >=8.3, no dependencies, test script only
  • phpunit.xml — unit suite
  • tests/Unit/SmtpTest.php — one placeholder test
  • src/.gitkeep — empty, but PHPStan and Rector both take src and tests as paths, so the directory has to exist
  • .gitignore, README with the mirror banner, and the mirror.yml redirect workflow

No package phpstan.neon or rector.php — it falls back to the root configs. No e2e tier, no compose file. composer.lock stays untracked: the root .gitignore covers it and there is nothing to lock.

Two details the gates forced: PHPStan rejects assertTrue(true) as an already-narrowed type, so the placeholder uses expectNotToPerformAssertions(); Rector wants declare(strict_types=1) and final on the test class.

Checks

  • bin/monorepo check smtp — Pint, PHPStan, Rector pass
  • bin/monorepo test smtp — 1 test, OK
  • bin/monorepo validate — passes; root README graph regenerated with smtp as a leaf
  • vale README.md docs packages — 0 errors

Mirror

The repository was private when absorb first ran, so the ruleset step 403'd; it was made public and the step re-run. Ruleset 20795955 is active with the split app bypassing, and there is no classic branch protection, so the first split should push cleanly.

Follow-up: mirror PR #1 needs manual triage — mirror.yml only redirects new pull requests. It is the closest thing to a spec for the real library, so it is worth keeping somewhere before closing it.

🤖 Generated with Claude Code

eldadfux and others added 3 commits May 21, 2026 21:11
…bc49b'

git-subtree-dir: packages/smtp
git-subtree-mainline: 8e147d2
git-subtree-split: 9676467
The mirror never held a library — main is a two-line README stub and the
one open pull request only adds docs for code that was never written.
Import it anyway so the package is wired into the monorepo, then give it
the smallest shape that satisfies the gates: a manifest, a unit suite
with a placeholder test, and the mirror redirect workflow.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@greptile-apps

greptile-apps Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR absorbs the empty SMTP package into the monorepo as a deliberately code-free placeholder and configures its read-only mirror.

  • Adds package metadata, PSR-4 namespaces, PHPUnit configuration, and a placeholder unit suite.
  • Adds mirror redirection, ignore rules, and package documentation.
  • Registers SMTP as a leaf in the generated root dependency graph.

Confidence Score: 5/5

The PR appears safe to merge with no concrete blocking or non-blocking defects identified.

Package discovery, splitting, validation, testing, and mirror redirection all recognize the new SMTP directory through existing monorepo conventions, while the placeholder package intentionally exposes no runtime implementation.

Important Files Changed

Filename Overview
packages/smtp/composer.json Defines the placeholder package and follows the monorepo convention of obtaining test tooling from the root environment.
packages/smtp/.github/workflows/mirror.yml Uses the canonical reusable redirect workflow with the expected SMTP package mapping and write permissions.
packages/smtp/phpunit.xml Configures the unit suite and package-local Composer bootstrap consistently with sibling packages.
packages/smtp/tests/Unit/SmtpTest.php Provides a valid assertion-free placeholder test so the otherwise empty package suite can execute.
packages/smtp/README.md Clearly identifies the package as an empty placeholder and redirects contributions to its monorepo location.
README.md Adds SMTP as a dependency-free package node in the generated repository graph.

Fix All in Greploop

Reviews (1): Last reviewed commit: "smtp: absorb the library and stub the pa..." | Re-trigger Greptile

@loks0n
loks0n merged commit f62aec5 into main Aug 13, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants