You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Task 1: Remove the storage tree — lib/Service/DashboardContentStorage/ (interface, DbContentStorage, GroupFolderContentStorage, and the three exception classes) and lib/Service/DashboardContentStorageFactory.php
Task 2: Remove the orphaned service and controller surface — DashboardService::{readDashboardContent,writeDashboardContent,deleteDashboardContent} and the ?DashboardContentStorageFactory $contentStorageFactory constructor parameter; DashboardApiController::storageUnavailableResponse(); DashboardMapper::findAll(), whose only caller was the retired migration command
Task 3: Remove the content and locale columns — drop the $content/$locale properties, decodeContent(), the @method docblocks and the jsonSerialize() keys from lib/Db/Dashboard.php, and drop both columns from launchpad_dashboards in lib/Migration/Version002009Date20260811000000.php. Leave Version002001Date20260603000000 and DashboardTableBuilder::addContentStorageColumns() in place — a shipped migration is part of the version ledger and deleting it would desynchronise instances that have already run it
Task 4: Remove the two CLI commands — lib/Command/MigrateStorageToGroupFolder.php and lib/Command/ToggleStorageSetting.php, and their <command> entries in appinfo/info.xml
Task 5: Remove the PHPUnit classes that covered the removed tree — DashboardContentStorageFactoryTest, DashboardContentStorageExceptionTest, DbContentStorageTest, GroupFolderContentStorageTest, MigrateStorageToGroupFolderTest
Task 6: Mark openspec/specs/groupfolder-storage-backend/spec.mdwithdrawn, recording what was removed, what was deliberately kept, and why. This also retires the spec's 16 @e2e exclude markers, whose stated reasons cited tests/Unit/Service/DashboardContentStorage/DbContentStorageTest.php — a test file this change deletes, which would have left sixteen exemptions resting on a class that no longer exists
Task 7: Correct the phantom - [x] on Task 5 of the archived change at openspec/changes/archive/2026-06-14-groupfolder-storage-backend/tasks.md, because the project record asserted a wiring that did not exist
Task 8: Follow-up, tracked on launchpad#87 — NOT in this change. Decide whether setup-wizard step 2 (launchpad.content_storage, AdminSettingKey::CONTENT_STORAGE, SetupWizardService::{getContentStorage,setContentStorage,hasGroupfolderApp}, AdminController::setWizardStorage and its route) also retires. It writes a setting nothing now reads. Note that tools/spec-annotations-allowlist.txt carries entries for those three SetupWizardService methods and for AdminController::setWizardStorage
Synced from openspec/changes/retire-groupfolder-storage-backend by OpenSpec workflow App: launchpad
Artifacts
Tasks
lib/Service/DashboardContentStorage/(interface,DbContentStorage,GroupFolderContentStorage, and the three exception classes) andlib/Service/DashboardContentStorageFactory.phpDashboardService::{readDashboardContent,writeDashboardContent,deleteDashboardContent}and the?DashboardContentStorageFactory $contentStorageFactoryconstructor parameter;DashboardApiController::storageUnavailableResponse();DashboardMapper::findAll(), whose only caller was the retired migration commandcontentandlocalecolumns — drop the$content/$localeproperties,decodeContent(), the@methoddocblocks and thejsonSerialize()keys fromlib/Db/Dashboard.php, and drop both columns fromlaunchpad_dashboardsinlib/Migration/Version002009Date20260811000000.php. LeaveVersion002001Date20260603000000andDashboardTableBuilder::addContentStorageColumns()in place — a shipped migration is part of the version ledger and deleting it would desynchronise instances that have already run itlib/Command/MigrateStorageToGroupFolder.phpandlib/Command/ToggleStorageSetting.php, and their<command>entries inappinfo/info.xmlDashboardContentStorageFactoryTest,DashboardContentStorageExceptionTest,DbContentStorageTest,GroupFolderContentStorageTest,MigrateStorageToGroupFolderTestopenspec/specs/groupfolder-storage-backend/spec.mdwithdrawn, recording what was removed, what was deliberately kept, and why. This also retires the spec's 16@e2e excludemarkers, whose stated reasons citedtests/Unit/Service/DashboardContentStorage/DbContentStorageTest.php— a test file this change deletes, which would have left sixteen exemptions resting on a class that no longer exists- [x]on Task 5 of the archived change atopenspec/changes/archive/2026-06-14-groupfolder-storage-backend/tasks.md, because the project record asserted a wiring that did not existlaunchpad.content_storage,AdminSettingKey::CONTENT_STORAGE,SetupWizardService::{getContentStorage,setContentStorage,hasGroupfolderApp},AdminController::setWizardStorageand its route) also retires. It writes a setting nothing now reads. Note thattools/spec-annotations-allowlist.txtcarries entries for those threeSetupWizardServicemethods and forAdminController::setWizardStorageSynced from
openspec/changes/retire-groupfolder-storage-backendby OpenSpec workflowApp:
launchpad