Files
unsupervised-scheduler/memory/feedback_architecture.md
James Griffin 2fb2ca392d
All checks were successful
CI / Coding Standards (push) Successful in 43s
CI / PHPStan (push) Successful in 52s
CI / Tests (PHP 8.1) (push) Successful in 47s
CI / Tests (PHP 8.2) (push) Successful in 49s
CI / Tests (PHP 8.3) (push) Successful in 37s
CI / No Debug Code (push) Successful in 2s
Restructure src/ and tests/ from package-by-type to package-by-domain
All classes are now organised by domain (Availability, Booking, Auth).
Each domain package contains its value object, repository, admin controller,
REST endpoint, and any shortcode pages under a matching sub-namespace.
Cross-cutting wiring (Plugin, AdminMenu, RestRegistrar, ShortcodeRegistrar,
Schema) lives at src/ root. Tests mirror the domain structure.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 16:37:30 -03:00

1.1 KiB

name, description, type
name description type
Package-by-domain architecture New features must be organised as domain packages, not by type (no Admin/, Api/, Data/ etc.) feedback

Always organise code package-by-domain, not package-by-type.

Why: User explicitly requested the restructure on 2026-03-30. Package-by-type (Admin/, Api/, Data/, Frontend/, Model/, Roles/) was the initial scaffold but was replaced before any real features shipped.

How to apply:

  • New domain → new directory under src/<Domain>/ (e.g. src/Availability/, src/Booking/, src/Auth/)
  • All classes for a domain (value objects, repositories, admin controllers, REST endpoints, shortcode pages) live inside that directory under the sub-namespace Unsupervised\Schedular\<Domain>\
  • Cross-cutting wiring that glues domains together (Plugin, AdminMenu, RestRegistrar, ShortcodeRegistrar, Schema) lives at src/ root with namespace Unsupervised\Schedular\
  • Tests mirror the domain structure: tests/Unit/<Domain>/
  • Never create src/Admin/, src/Api/, src/Data/, src/Frontend/, src/Model/, or src/Roles/ directories