Skip to content

01: Repo bootstrap - #1

Merged
nikolaystrikhar merged 4 commits into
mainfrom
01-repo-bootstrap
Jul 31, 2026
Merged

01: Repo bootstrap#1
nikolaystrikhar merged 4 commits into
mainfrom
01-repo-bootstrap

Conversation

@nikolaystrikhar

Copy link
Copy Markdown
Contributor

What: composer manifest, GPL-2.0 license, dotfiles, cspell dictionary, README skeleton.

Usage:

composer require nexcess/plugin-absorber

Why this way: nexcess/plugin-absorber over sub-plugin-loader — Packagist returns 21 hits for plugin-loader and the top five are WordPress mu-plugin autoloaders, so the term is taken and misleading; plugin-absorber returns zero. Dropping -loader also kills the PluginAbsorber\Loader stutter. stellarwp/container-contract is the only production dependency, matching uplink.

Verify: composer validate --no-check-lock. No tests — nothing here has behavior. The test harness lands in the next PR and CI goes green in the one after.

- php-stubs/wordpress-stubs ^6.4 floated to 6.9, so PHPStan would accept
  APIs newer than the WordPress 6.4 floor the README promises. Pinned to
  ~6.4.0 (resolves v6.4.7); the stubs are the only enforcement point
  available, since WordPress is not a Composer dependency.
- phpstan/phpstan declared explicitly: test:analysis invokes the binary,
  which previously arrived only transitively via szepeviktor.
- Dropped the phpstan/extension-installer allow-plugins entry. The
  installer is not required and nothing else in the tree is a
  composer-plugin, so the entry was dead config that implied extension
  auto-registration was wired. phpstan.neon.dist includes extension.neon
  manually, as the plan specifies.
- Added a Tests\Unit\ => tests/unit mapping. The Tests\ => tests/ root
  implies tests/Unit, which only resolves on case-insensitive filesystems.
- README license grant, so GPL-2.0-or-later is backed by an actual
  or-later statement rather than the bare GPLv2 text.
- .gitattributes eol=lf and cspell case-duplicate cleanup.
@nikolaystrikhar
nikolaystrikhar requested a review from d4mation July 31, 2026 12:34
@nikolaystrikhar nikolaystrikhar changed the title Repo bootstrap 01: Repo bootstrap Jul 31, 2026
Comment thread composer.json
The manifest carried eric_defore@vendor.stellarwp.com, which is not a real
address -- the vendor. subdomain is the mailbox the authoring tool was
configured with. Switch to the shared dev@stellarwp.com used by db, schema,
assets, arrays, superglobals, shepherd and pup, so the published author does
not go stale when someone changes teams.
Comment thread composer.json Outdated
Packagist protects a vendor prefix once anyone publishes under it, and the
nexcess vendor is already held by nexcess/magento-turpentine under a maintainer
account outside our control. The stellarwp vendor is already ours across 38
packages, so this ships without chasing third-party access. Packagist does not
require the vendor to match the GitHub org, so either name was legal; ownership
is what decided it.

The PHP namespace stays Nexcess\PluginAbsorber\ -- Composer does not require
the vendor name and the namespace to match.
@nikolaystrikhar
nikolaystrikhar requested a review from d4mation July 31, 2026 15:01
@nikolaystrikhar
nikolaystrikhar merged commit 0243e81 into main Jul 31, 2026
nikolaystrikhar added a commit that referenced this pull request Aug 11, 2026
README keeps the docs-index structure from 08-registrar; this branch's
notices documentation moves to docs/notices.md rather than growing the
README back.

In the plan, the Task 11 teardown takes one line from each side:
all_admin_notices is this branch's deliberate hook change, and
Loader_State::reset() is 08-registrar's fix for the no-test-seams rule.

Tasks 1-6 shipped in PRs #1-#6, so their plan sections are removed and
the rule for doing so is recorded in CLAUDE.md. CLAUDE.md's collaborator
table, boot lifecycle and Keys section are corrected to match the split
Notices\ classes and the option-backed queue.
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