Skip to content

Commit 58fb169

Browse files
authored
Merge pull request #249 from objectstack-ai/copilot/address-technical-debt
2 parents 6f39a7d + b77e016 commit 58fb169

File tree

21 files changed

+2197
-26
lines changed

21 files changed

+2197
-26
lines changed

ROADMAP.md

Lines changed: 78 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,32 @@
11
# ObjectOS Roadmap
22

3-
> **Version**: 6.0.0
4-
> **Date**: February 11, 2026
5-
> **Status**: Phase JWorkflow & Automation UI
3+
> **Version**: 7.0.0
4+
> **Date**: February 12, 2026
5+
> **Status**: Phase MTechnical Debt Resolution
66
> **Spec SDK**: `@objectstack/spec@2.0.7`
77
> **ObjectUI**: `@object-ui/*@2.0.0`
88
99
---
1010

1111
## Executive Summary
1212

13-
ObjectOS is a metadata-driven enterprise runtime platform built on the ObjectStack protocol. With all 13 server-side plugins fully implemented, spec compliance at 100%, and the Admin Console operational with 31 pages (including record create/edit), Phases H and I are now complete — the Business App Shell is fully powered by @object-ui SchemaRenderer with rich data manipulation features.
13+
ObjectOS is a metadata-driven enterprise runtime platform built on the ObjectStack protocol. With all 13 server-side plugins fully implemented, spec compliance at 100%, and the Admin Console operational with 31 pages (including record create/edit), **Phases A–L are complete**. The platform now enters **Phase M — Technical Debt Resolution**, addressing 8 identified technical debt items critical for production readiness.
1414

1515
The integration of **@object-ui** (6 packages at v2.0.0) marks a strategic shift: the Admin Console's Business App Shell now leverages @object-ui's `SchemaRenderer` for metadata-driven UI rendering, replacing hand-built components with protocol-compliant controls.
1616

17+
> **Technical Debt Resolution**: Detailed technical proposals for all 8 debt items are documented in [Technical Debt Resolution Guide](docs/guide/technical-debt-resolution.md).
18+
1719
### What Changed
1820

19-
| Before (Plan v5.0) | After (Plan v6.0 — This Roadmap) |
21+
| Before (Plan v5.0) | After (Plan v7.0 — This Roadmap) |
2022
|---|---|
2123
| @object-ui listed as v1.1 future work | @object-ui v2.0.0 already installed and integrated |
2224
| Hand-built DataGrid, MetadataForm, KanbanBoard | @object-ui SchemaRenderer as primary rendering engine |
2325
| ObjectUI integration planned for April 2026 | ObjectUI integration active **now** — February 2026 |
2426
| Business App Shell was Phase 1 "foundation" | Business App Shell upgraded to @object-ui powered |
2527
| Custom field renderers for each type | @object-ui/fields provides field registry |
2628
| @objectstack/* packages at v2.0.6 | @objectstack/* packages upgraded to v2.0.7 |
29+
| Technical debt deferred | Phase M — Technical Debt Resolution with detailed proposals |
2730

2831
---
2932

@@ -94,6 +97,7 @@ The integration of **@object-ui** (6 packages at v2.0.0) marks a strategic shift
9497
| J | Workflow & Automation UI | Feb 2026 ||
9598
| K | Offline & Sync | Feb 2026 ||
9699
| L | Polish & Performance | Feb 2026 ||
100+
| **M** | **Technical Debt Resolution** | **Feb–Sep 2026** | **🔄 In Progress** |
97101

98102
### Phase G Outcomes
99103

@@ -237,6 +241,39 @@ Integrate `@objectos/browser` with the Admin Console for offline-first capabilit
237241

238242
---
239243

244+
## Phase M — Technical Debt Resolution (Current — Feb–Sep 2026)
245+
246+
> Detailed technical proposals: [Technical Debt Resolution Guide](docs/guide/technical-debt-resolution.md)
247+
248+
### M.1 — Critical Security (v1.0.1 — Target: March 2026)
249+
250+
| # | Task | TD | Priority | Status |
251+
|---|------|:--:|:--------:|:------:|
252+
| M.1.1 | Rate limiting middleware — sliding-window counter on `/api/v1/*` with per-IP/per-user throttling | TD-3 | 🔴 ||
253+
| M.1.2 | Input sanitization middleware — body size limit, XSS stripping, Zod validation factory | TD-4 | 🔴 ||
254+
| M.1.3 | WebSocket auth enforcement — token extraction from cookie/protocol header, session verification | TD-5 | 🟡 ||
255+
| M.1.4 | Mock data tree-shaking — `DevDataProvider`, dynamic imports, `VITE_USE_MOCK_DATA` env flag | TD-8 | 🟡 ||
256+
257+
### M.2 — Infrastructure (v1.1.0 — Target: April 2026)
258+
259+
| # | Task | TD | Priority | Status |
260+
|---|------|:--:|:--------:|:------:|
261+
| M.2.1 | Event bus persistence — `PersistentJobStorage` backed by SQLite via `@objectos/storage` | TD-1 | 🟡 ||
262+
| M.2.2 | Dead Letter Queue + Replay API — DLQ table, `replayEvent()`, admin endpoint | TD-1 | 🟡 ||
263+
| M.2.3 | Schema migration engine — `SchemaDiffer`, `MigrationGenerator`, `MigrationRunner` | TD-2 | 🟡 ||
264+
| M.2.4 | `objectstack migrate` CLI — up/down/status commands | TD-2 | 🟡 ||
265+
| M.2.5 | Browser sync E2E tests — 5 Playwright tests covering full sync lifecycle | TD-6 | 🟡 ||
266+
267+
### M.3 — Platform Hardening (v2.0.0 — Target: September 2026)
268+
269+
| # | Task | TD | Priority | Status |
270+
|---|------|:--:|:--------:|:------:|
271+
| M.3.1 | Worker Thread plugin host — Level 1 isolation via `worker_threads` | TD-7 | 🟢 ||
272+
| M.3.2 | Child Process plugin host — Level 2 isolation via `child_process.fork()` | TD-7 | 🟢 ||
273+
| M.3.3 | Plugin watchdog — auto-restart with backoff, resource limit enforcement | TD-7 | 🟢 ||
274+
275+
---
276+
240277
## Release Timeline
241278

242279
### v1.0.0 — Production Release (Target: March 2026)
@@ -254,22 +291,35 @@ Integrate `@objectos/browser` with the Admin Console for offline-first capabilit
254291
| @object-ui integration (SchemaRenderer for grid/form/detail) | ✅ Phase H |
255292
| Business App Shell with live API data | ✅ Phase H |
256293

257-
### v1.1.0 — Rich Business UI (Target: April 2026)
294+
### v1.0.1 — Security Hardening (Target: March 2026)
295+
296+
- Phase M.1: Critical Security
297+
- Rate limiting middleware (TD-3) 🔴
298+
- Input sanitization middleware (TD-4) 🔴
299+
- WebSocket auth enforcement (TD-5) 🟡
300+
- Mock data tree-shaking (TD-8) 🟡
301+
302+
### v1.1.0 — Rich Business UI + Infrastructure (Target: April 2026)
258303

259304
- Phase I: Rich Data Experience (inline editing, bulk actions, filters)
260305
- Phase J.1-J.2: Visual Flow Editor, Approval Inbox
306+
- Phase M.2: Infrastructure
307+
- Event bus persistence + DLQ (TD-1) 🟡
308+
- Schema migration engine (TD-2) 🟡
309+
- Browser sync E2E tests (TD-6) 🟡
261310

262311
### v1.2.0 — Enterprise Features (Target: June 2026)
263312

264313
- Phase J.3-J.6: Full Workflow & Automation UI
265314
- Phase K: Offline & Sync
266315
- Multi-tenancy data isolation
267-
- Rate limiting middleware
268316
- OpenTelemetry integration
269317

270318
### v2.0.0 — Platform (Target: September 2026)
271319

272320
- Phase L: Polish & Performance
321+
- Phase M.3: Platform Hardening
322+
- Plugin isolation (Worker Threads + Child Process) (TD-7) 🟢
273323
- Plugin Marketplace
274324
- Dynamic Plugin Loading (Module Federation)
275325
- AI Agent Framework
@@ -286,8 +336,14 @@ Feb 2026 Sep 2026
286336
│ ▼ │
287337
│ v1.0.0 Release │
288338
│ │ │
339+
├── Phase M.1: Critical Security ─────────────┤ │
340+
│ (Rate limit, sanitize, WS auth) │ │
341+
│ v1.0.1 Release │
342+
│ │ │
289343
├── Phase I: Rich Data Experience ────────────┤ │
290344
├── Phase J: Workflow & Automation UI ────────┤ │
345+
├── Phase M.2: Infrastructure ────────────────┤ │
346+
│ (Event bus, migrations, sync E2E) │ │
291347
│ ▼ │
292348
│ v1.1.0 Release │
293349
│ │ │
@@ -296,6 +352,8 @@ Feb 2026 Sep 2026
296352
│ v1.2.0 Release │
297353
│ │ │
298354
├── Phase L: Polish & Performance ────────────┤ │
355+
├── Phase M.3: Platform Hardening ────────────┤ │
356+
│ (Plugin isolation) │ │
299357
│ ▼ │
300358
│ v2.0.0 Release │
301359
▼ ▼ ▼
@@ -378,16 +436,18 @@ User Action → React Component → @object-ui/react SchemaRenderer
378436

379437
## Technical Debt
380438

381-
| # | Area | Details | Priority |
382-
|---|------|---------|:--------:|
383-
| 1 | Event bus persistence | In-memory only; no DLQ or replay | 🟡 |
384-
| 2 | Schema migrations | No version-controlled schema evolution | 🟡 |
385-
| 3 | Rate limiting | Not implemented at HTTP layer | 🔴 |
386-
| 4 | Input sanitization | Zod schema validation only; no HTTP-level protection | 🔴 |
387-
| 5 | Realtime auth | WebSocket auth not enforced | 🟡 |
388-
| 6 | Browser sync E2E | Sync protocol needs E2E testing | 🟡 |
389-
| 7 | Plugin isolation | Plugins share process | 🟢 |
390-
| 8 | Mock data dependency | UI relies on mock data when server is down | 🟡 |
439+
> **Resolution Plan**: See [Technical Debt Resolution Guide](docs/guide/technical-debt-resolution.md) for detailed proposals.
440+
441+
| # | Area | Details | Priority | Phase | Status |
442+
|---|------|---------|:--------:|:-----:|:------:|
443+
| 1 | Event bus persistence | In-memory only; no DLQ or replay | 🟡 | M.2 ||
444+
| 2 | Schema migrations | No version-controlled schema evolution | 🟡 | M.2 ||
445+
| 3 | Rate limiting | Not implemented at HTTP layer | 🔴 | M.1 ||
446+
| 4 | Input sanitization | Zod schema validation only; no HTTP-level protection | 🔴 | M.1 ||
447+
| 5 | Realtime auth | WebSocket auth not enforced | 🟡 | M.1 ||
448+
| 6 | Browser sync E2E | Sync protocol needs E2E testing | 🟡 | M.2 ||
449+
| 7 | Plugin isolation | Plugins share process | 🟢 | M.3 ||
450+
| 8 | Mock data dependency | UI relies on mock data when server is down | 🟡 | M.1 ||
391451

392452
---
393453

@@ -436,5 +496,5 @@ User Action → React Component → @object-ui/react SchemaRenderer
436496
---
437497

438498
<div align="center">
439-
<sub>ObjectOS v6.0.0 Roadmap — @object-ui Driven Development | Built with @objectstack/spec@2.0.7</sub>
499+
<sub>ObjectOS v7.0.0 Roadmap — Technical Debt Resolution | Built with @objectstack/spec@2.0.7</sub>
440500
</div>

docs/.vitepress/config.mts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export default defineConfig({
5757
text: 'Project Planning',
5858
items: [
5959
{ text: 'Development Plan (Q1 2026)', link: '/guide/development-plan' },
60+
{ text: 'Technical Debt Resolution', link: '/guide/technical-debt-resolution' },
6061
{ text: 'Contributing to Development', link: '/guide/contributing-development' }
6162
]
6263
}

0 commit comments

Comments
 (0)