Forums Feature Requests Thread

[Enhancement] Monetization: Editorial-series surface (public /series + admin series CRUD) is gated by a POLICY_DISABLED feature — removal candidate

Patrick Bass · Jun 6 · 12 · 1 Locked
[Normal Priority] [Feature Enhancement] [Rejected]
🚀 OP Jun 6, 2026 7:06pm

Area: Monetization (audit p10) · Surface: GET /series, GET /series/{slug}, GET/POST /admin/editorial/series/* · Dimension: dead-code · Severity: enhancement

The entire editorial-series feature (public SeriesController + the series* CRUD methods on AdminEditorialController + the EditorialSeries model + 4 templates) hangs off the `editorial_series` flag, which is on POLICY_DISABLED in FeatureCatalog.php (line 74). These keys never auto-enable for any tenant, so the public /series surface 404s and the admin series UI is unreachable through gated nav on every production tenant. Reporting strictly as a removal candidate (policy-disabled), NOT an orphaned/broken-route bug — the code is wired correctly and intentionally off. One nuance: the public SeriesController gates in its constructor, but the AdminEditorialController series methods only requireRole(4) and do NOT call features->require('editorial_series'), so a root admin could still reach the admin series CRUD by direct URL even though the public surface 404s.

Evidence

`editorial_series` is in POLICY_DISABLED — grep platform-admin/src/Domain/FeatureCatalog.php:
  74:        'editorial_series',
(catalog row at line 165, group 'retro-games', default false).

Public SeriesController hard-requires the flag in its constructor (platform/src/Controllers/SeriesController.php:30):
    $this->features->require('editorial_series');
  // lines 27-29: "Every action in this controller is gated by the editorial_series feature flag. When off, direct-URL hits 404..."

Routes depending on it (platform/src/routes.php):
  444: $router->get('/series',         'SeriesController@index');
  445: $router->get('/series/{slug}',  'SeriesController@show');
  1539: $router->get ('/editorial/series',                     'AdminEditorialController@seriesIndex');
  1541: $router->post('/editorial/series',                     'AdminEditorialController@seriesStore');
  1546: $router->post('/editorial/series/{slug}/add-chapters', 'AdminEditorialController@seriesAddChapters');
  (plus seriesCreate/seriesEdit/seriesUpdate/seriesDelete/seriesUndelete, lines 1540-1545)

Templates only rendered for this surface (each exactly 1 render ref): templates/series/index.php, templates/series/show.php, templates/admin/editorial/series/index.php, templates/admin/editorial/series/form.php.

Suggested fix. If editorial_series is permanently off-limits (it has been on POLICY_DISABLED since the 2026-05 retro-games purge), consider deleting SeriesController, the series* methods on AdminEditorialController, the EditorialSeries model, and templates/series/* + templates/admin/editorial/series/* to remove dead surface area. If kept for future use, leave as-is (the documented purpose of POLICY_DISABLED). No action required for correctness.

Filed by the automated tenant-app audit and adversarially evidence-verified. Status: verified. Open — not yet actioned.


Patrick Bass
@mobieus

🚀 Jun 14, 2026 1:18am

Closed. Reviewed. This surface is built but deliberately turned off for tenants by policy, so it has no impact on any live community. It is working as intended and no change is planned. Closing.


Patrick Bass
@mobieus

Log in or register to reply to this thread.