- Trait-split content-pay, vip-service, balance-service, order-repository - Procedural split of user module into user-parts/* - Split scripts enqueue_public into part-1b/1c; settings bulk trait - Bootstrap: explicit notifications, widgets glob-only, home-modules init - ADR: freeze domain placement for pay/revenue/notify boundaries
2.1 KiB
2.1 KiB
ADR: Domain folder placement for inc/classes
Status
Accepted (2026-07-17)
Context
After moving root class files into domain folders, freeze placement for boundary types so later moves are intentional.
Decision
| Concern | Domain | Why |
|---|---|---|
| Theme shell (setup, scripts, templates, SEO, meta boxes, DB migrator, front-submit, docs presenter, home modules, stats, redirects, update checker, comment actions) | core/ |
Shared CMS plumbing |
| SPA shell + controllers + schema + native ops | admin/ |
Dual-surface IA |
| Settings facade + runtime delegates | settings/ |
Single public settings API |
| Auth, OAuth, captcha, moderation, email rollback | auth/ |
Identity & access |
| User center/home/badges/level/metrics/notifications/follow | user/ |
Account surface |
| Credits, balance wallet, signin, invite, points-free | credits/ |
Points + cash wallet |
| Download tokens/state, content pay, VIP, visibility | content/ |
Post-centric paid content |
| Topic pay, plate follow pay | forum/ |
Forum SKUs (not generic content pay) |
| Orders, gateways, coupon, charge-card, revenue, creator-revenue, withdrawal, rebate, discount, after-sale, shipping, wechat-notify | payment/ |
Commerce + settlement |
| Shop services/meta/reviews | shop/ |
Product catalog / cart |
| SMS stack | sms/ |
Messaging channel |
AI runtime (admin AI controller stays in admin/) |
ai/ |
Generation helpers |
| Message, private message, site notice, report center | messages/ |
In-site messaging |
| MeiliSearch, search-push, ip-geo, content-audit, api-audit | extensions/ |
Optional integrations |
| Widgets + registry | widgets/ |
WP widgets |
| Inline style / custom code / loading overlay | frontend/ |
Asset render helpers |
Rules
- Traits live next to owner:
{domain}/{slug}-traits/. - Loader: manual
require_onceininc/bootstrap.phponly; traits before shells. - Do not move
topic-pay/plate-follow-payintocontent/without updating this ADR. creator-revenueandwechat-notifystay underpayment/.
Out of scope
PSR-4 class namespaces; class renames.