Skip to content

Restructure ROADMAP.md to reflect minimal-first implementation strategy#722

Merged
hotlong merged 3 commits into
mainfrom
copilot/fix-metadata-implementation
Feb 18, 2026
Merged

Restructure ROADMAP.md to reflect minimal-first implementation strategy#722
hotlong merged 3 commits into
mainfrom
copilot/fix-metadata-implementation

Conversation

Copilot AI commented Feb 18, 2026

Copy link
Copy Markdown
Contributor

Clarifies that DatabaseLoader is the single P0 blocker preventing production deployment. Restructures Phase 4 service implementation timeline to emphasize critical path vs. incremental upgrades.

Changes

Main ROADMAP.md

Added "Minimal Implementation Strategy" section

  • Explains stub → MVP → production upgrade path for services
  • Documents that dev-plugin provides in-memory fallbacks for all non-critical services
  • Identifies DatabaseLoader as the only blocker for production metadata persistence

Restructured Phase 4 into time-boxed subphases

  • Phase 4a (P0, Weeks 1-2): DatabaseLoader implementation in packages/metadata/src/loaders/database-loader.ts
    • Implements MetadataLoader interface with datasource: protocol
    • Maps to sys_metadata table CRUD operations via IDataDriver
    • Enables platform-level metadata editing, user overlay persistence, multi-instance sync
  • Phase 4b (P1, Weeks 3-4): Infrastructure service upgrades
    • Redis, BullMQ, cron, S3 adapters (services already have memory fallbacks)
  • Phase 4c (P1, Weeks 5-6): Communication & search services
    • i18n, realtime, search, notification (minimal viable implementations)
  • Phase 4d (P2, Future): Business logic services
    • Automation, workflow, GraphQL, AI, analytics

Updated metadata ROADMAP.md

  • Added "Last Updated: 2026-02-18" for consistency

Context

Auth service (✅ via better-auth) and UI service (⚠️ deprecated, merged into IMetadataService) statuses were already correctly reflected in Contract Implementation Matrix—no changes needed.

Original prompt

Context

Based on a thorough audit of the current codebase, the actual implementation status is:

Already Complete (DO NOT change these statuses)

  • auth ✅ — Fully integrated with better-auth v1.4.18 (packages/plugins/plugin-auth/). Supports email/password, OAuth, 2FA, passkeys, magic links, ObjectQL-based DB persistence. 11/11 tests passing.
  • ui ✅ — Merged into metadata service. IUIService is @deprecated (see packages/spec/src/contracts/ui-service.ts). MetadataManager provides getView(), listViews(), getDashboard(), listDashboards() directly. The API_IMPLEMENTATION_PLAN.md section 4.4 confirms: "P1: plugin-ui-api(已合并到 metadata API)".
  • data ✅ — Full CRUD via ObjectQL (9 protocol methods)
  • analytics ✅ — 2 protocol methods implemented
  • metadata ⚠️ Framework — Works with MemoryLoader, FilesystemLoader, RemoteLoader. 30+ methods in IMetadataService implemented. Overlay system works in-memory.

The Critical Gap: DatabaseLoader

The single P0 blocker preventing frontend from moving to production mode is metadata DatabaseLoader (src/loaders/database-loader.ts in packages/metadata/).

Current metadata loaders:

  • MemoryLoader (memory:) — ✅ Implemented
  • FilesystemLoader (file:) — ✅ Implemented
  • RemoteLoader (http:) — ✅ Implemented
  • DatabaseLoader (datasource:) — 🔴 NOT IMPLEMENTED (this is the gap)

All spec schemas are already defined:

  • MetadataRecordSchema — DB record envelope (metadata-persistence.zod.ts)
  • MetadataManagerConfig.datasource — datasource name reference
  • MetadataManagerConfig.tableName — defaults to sys_metadata
  • MetadataManagerConfig.fallback'filesystem' | 'memory' | 'none'
  • MetadataLoaderContract protocol datasource:
  • IDataDriver interface — find, findOne, create, update, delete

Task: Update ROADMAP.md

Update the main ROADMAP.md file at the repository root to reflect the minimal-first implementation strategy. Key changes:

1. Update Phase 4 (Service Implementations — currently 🔴 In Progress)

Restructure to emphasize the minimal critical path:

Phase 4a: Metadata Persistence (P0 — Weeks 1-2)

  • Implement DatabaseLoader in packages/metadata/src/loaders/database-loader.ts
    • Implement MetadataLoader interface with protocol datasource:
    • Accept IDataDriver instance via kernel DI
    • Map to sys_metadata table CRUD operations
    • Support scope filtering (system/platform/user)
    • Auto-create sys_metadata table on first use
  • Integrate into MetadataManager (auto-configure when config.datasource is set)
  • Persist overlay customizations to database
  • This unblocks: platform-level metadata editing, user overlay persistence, multi-instance sync

Phase 4b: Infrastructure Service Upgrades (P1 — Weeks 3-4)

  • Upgrade cache from in-memory fallback → Redis plugin
  • Upgrade queue from in-memory fallback → BullMQ plugin
  • Upgrade job from in-memory fallback → real cron scheduler
  • Implement file-storage MVP (local FS driver + S3 driver)

Phase 4c: Communication & Search Services (P1 — Weeks 5-6)

  • i18n — Map-backed translation service with locale resolution
  • realtime — WebSocket/SSE push (replace Studio's setTimeout hack)
  • search — Full-text search (in-memory first, then Meilisearch/Elastic driver)
  • notification — Multi-channel notification engine

2. Correct auth status

Auth should be shown as ✅ Complete (better-auth integration) wherever it currently shows as 🟡 In Development or ❌ Plugin Required.

3. Correct ui status

UI service should be shown as ✅ Merged into Metadata wherever it currently appears as ❌ Plugin Required.

4. Update Contract Implementation Matrix

Ensure the matrix reflects:

  • auth: ✅ (better-auth)
  • ui: ✅ (merged into metadata, @deprecated as standalone)

5. Add "Minimal Implementation Strategy" section

Add a section near the top explaining the philosophy:

  • Implement the smallest possible working version first
  • DatabaseLoader is the single P0 because it's the only thing blocking production use
  • All other services already have in-memory fallbacks via dev-plugin
  • Each service can be independently upgraded from stub → MVP → production

Important Notes

  • Keep all existing completed phases intact (Phase 1, 2, 3, 5 etc.)
  • Do NOT remove or modify already-completed items
  • Update the "Last Updated" date to 2026-02-18
  • Make sure to run tests after changes to verify nothing breaks
  • The file is ROADMAP.md at the repository root
  • Also check and update packages/metadata/ROADMAP.md if it has stale information about auth/ui status

This pull request was created from Copilot chat.


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

@vercel

vercel Bot commented Feb 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
objectstack-play Canceled Canceled Feb 18, 2026 11:53am
spec Ready Ready Preview, Comment Feb 18, 2026 11:53am

Request Review

Copilot AI and others added 2 commits February 18, 2026 11:46
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix metadata framework implementation status Restructure ROADMAP.md to reflect minimal-first implementation strategy Feb 18, 2026
Copilot AI requested a review from hotlong February 18, 2026 11:49
@hotlong
hotlong marked this pull request as ready for review February 18, 2026 11:51
Copilot AI review requested due to automatic review settings February 18, 2026 11:51
@hotlong
hotlong merged commit f1f1121 into main Feb 18, 2026
4 of 5 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the project roadmap documentation to emphasize a minimal-first service delivery strategy and to clarify that metadata database persistence (DatabaseLoader) is the key production blocker.

Changes:

  • Added a “Minimal Implementation Strategy” section to the root ROADMAP.md.
  • Restructured Phase 4 into time-boxed subphases (4a–4d) centered on the DatabaseLoader critical path.
  • Updated “Last Updated” dates in both roadmap documents for consistency.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
ROADMAP.md Adds minimal-first strategy section and reorganizes Phase 4 into subphases with a clearer critical path.
packages/metadata/ROADMAP.md Adds a “Last Updated: 2026-02-18” header line.

Comment thread ROADMAP.md

**Tests:**
- [ ] Unit tests with mock `IDataDriver`
- [ ] Integration tests with `MemoryDriver`

Copilot AI Feb 18, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Phase 4a tests mention “Integration tests with MemoryDriver”, but the in-repo driver class exported by @objectstack/driver-memory is InMemoryDriver. Consider renaming this roadmap item to InMemoryDriver (or clarifying what “MemoryDriver” refers to) to avoid confusion when implementing the tests.

Suggested change
- [ ] Integration tests with `MemoryDriver`
- [ ] Integration tests with `InMemoryDriver`

Copilot uses AI. Check for mistakes.
Comment thread ROADMAP.md
| `II18nService` | **P1** | `@objectstack/service-i18n` | Map-backed translation with locale resolution |
| `IRealtimeService` | **P1** | `@objectstack/service-realtime` | WebSocket/SSE push (replaces Studio setTimeout hack) |
| `ISearchService` | **P1** | `@objectstack/service-search` | In-memory search first, then Meilisearch driver |
| `INotificationService` | **P2** | `@objectstack/service-notification` | Email adapter (console logger in dev mode) |

Copilot AI Feb 18, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Phase 4c is labeled “P1 — Weeks 5-6”, but the table includes INotificationService as P2. This makes the timeline ambiguous—either move notification into Phase 4d (P2) or update Phase 4c’s scope/priority so the phase only contains P1 work.

Suggested change
| `INotificationService` | **P2** | `@objectstack/service-notification` | Email adapter (console logger in dev mode) |
| `INotificationService` | **P1** | `@objectstack/service-notification` | Email adapter (console logger in dev mode) |

Copilot uses AI. Check for mistakes.
Comment thread ROADMAP.md
Comment on lines +256 to +265
### Phase 4b: Infrastructure Service Upgrades (P1 — Weeks 3-4)

**Upgrade existing services from in-memory fallbacks to production adapters.**

| Contract | Current Status | Upgrade Path |
|:---|:---|:---|
| `ICacheService` | ✅ Memory adapter + Redis skeleton | Add Redis adapter implementation |
| `IQueueService` | ✅ Memory adapter + BullMQ skeleton | Add BullMQ adapter implementation |
| `IJobService` | ✅ Interval scheduler + cron skeleton | Add cron adapter implementation |
| `IStorageService` | ✅ Local FS + S3 skeleton | Add S3 adapter implementation |

Copilot AI Feb 18, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Phase 4’s stated goal is to implement the remaining service contracts, but Phase 4b only enumerates cache/queue/job/storage upgrades. Since ISchemaDriver is still listed as spec-only in the Contract Implementation Matrix, consider explicitly placing it into a Phase 4 subphase (or calling out that it’s deferred to Phase 6) so the critical path for objectstack migrate/DDL work isn’t lost in the plan.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants