feat: plugin scaffold, bundled Core & lifecycle (#1) #105

Merged
manlycucumber merged 2 commits from feature/1-scaffold into develop 2026-07-03 18:36:48 +00:00
manlycucumber commented 2026-07-03 18:32:57 +00:00 (Migrated from github.com)

Establishes the Ordo v0.1.0 WordPress plugin skeleton (Epic #1): entry point, autoloader, the bundled clean-room engine, and the activation/deactivation/uninstall lifecycle. The plugin resolves liturgical days fully offline.

What's in it

  • ordo.php — plugin header (the single source of truth for the version, read via get_file_data), a PHP 7.4 floor that shows an admin notice and aborts activation instead of fatal-erroring, then boots. (#2)
  • src/Autoloader.php — a self-contained PSR-4 autoloader (no Composer at runtime) mapping Introibo\Ordo\src/ and Introibo\Core\src/Core/src/; Core's function entry points are required directly. (#2)
  • src/Core/ — the clean-room Introibo engine + CC0 corpus, vendored by bin/vendor-core.php and pinned to 0.4.0 (ref cf55645). (#3)
  • src/Engine/Core.php — the single boundary to the bundled engine (Introibo\Core\contract()), WP-independent and network-free. (#3)
  • src/Rewrites.php / src/Lifecycle.php / src/Plugin.php — the /ordo/YYYY-MM-DD/ route, idempotent option seeding (default calendar: universal 1962), and a rewrite flush on activation/deactivation only. (#4)
  • uninstall.php — prefix-scoped removal of every ordo_ option and transient, multisite-aware, guarded against direct access. (#5)
  • bin/check-no-old-engine.php — CI clean-room guard: every namespaced file must belong to Introibo\Ordo or Introibo\Core, plus an old-engine denylist. (#3)

Licence

Relicenses the plugin from AGPL-3.0-or-later to GPL-2.0-or-later (the licence WordPress plugins ship under, per issue #2). The bundled Core stays AGPL-3.0-or-later — compatible because GPL-2.0-or-later reaches GPLv3, with which AGPL-3.0 combines — and the corpus stays CC0.

Quality gates (green locally; CI across PHP 7.4/8.1/8.2/8.3)

  • phpcs PSR-12 — clean
  • phpstan level 6 with WordPress stubs — no errors
  • clean-room guard — clean
  • phpunit — 8 tests / 14 assertions: resolves the Nativity (universal) and the SSPX overlay elevating St Pius X from III→I class offline; autoloader resolves both namespaces.

Refs #1 #2 #3 #4 #5

Establishes the Ordo v0.1.0 WordPress plugin skeleton (Epic #1): entry point, autoloader, the bundled clean-room engine, and the activation/deactivation/uninstall lifecycle. The plugin resolves liturgical days fully offline. ## What's in it - **`ordo.php`** — plugin header (the single source of truth for the version, read via `get_file_data`), a **PHP 7.4 floor** that shows an admin notice and aborts activation instead of fatal-erroring, then boots. (#2) - **`src/Autoloader.php`** — a self-contained PSR-4 autoloader (no Composer at runtime) mapping `Introibo\Ordo\` → `src/` and `Introibo\Core\` → `src/Core/src/`; Core's function entry points are required directly. (#2) - **`src/Core/`** — the clean-room Introibo engine + CC0 corpus, **vendored** by `bin/vendor-core.php` and pinned to `0.4.0` (ref `cf55645`). (#3) - **`src/Engine/Core.php`** — the single boundary to the bundled engine (`Introibo\Core\contract()`), WP-independent and network-free. (#3) - **`src/Rewrites.php` / `src/Lifecycle.php` / `src/Plugin.php`** — the `/ordo/YYYY-MM-DD/` route, **idempotent** option seeding (default calendar: universal 1962), and a rewrite flush on activation/deactivation only. (#4) - **`uninstall.php`** — prefix-scoped removal of every `ordo_` option and transient, multisite-aware, guarded against direct access. (#5) - **`bin/check-no-old-engine.php`** — CI clean-room guard: every namespaced file must belong to `Introibo\Ordo` or `Introibo\Core`, plus an old-engine denylist. (#3) ## Licence Relicenses the plugin from AGPL-3.0-or-later to **GPL-2.0-or-later** (the licence WordPress plugins ship under, per issue #2). The **bundled Core stays AGPL-3.0-or-later** — compatible because GPL-2.0-**or-later** reaches GPLv3, with which AGPL-3.0 combines — and the corpus stays **CC0**. ## Quality gates (green locally; CI across PHP 7.4/8.1/8.2/8.3) - `phpcs` PSR-12 — clean - `phpstan` level 6 with WordPress stubs — no errors - clean-room guard — clean - `phpunit` — 8 tests / 14 assertions: resolves the Nativity (universal) and the **SSPX overlay elevating St Pius X from III→I class** offline; autoloader resolves both namespaces. Refs #1 #2 #3 #4 #5
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Directorium/Ordo!105
No description provided.