Skip to content

Commit 2a60554

Browse files
Copilothotlong
andcommitted
Update ROADMAP.md with spec hardening status and current test metrics
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
1 parent ce07979 commit 2a60554

1 file changed

Lines changed: 16 additions & 2 deletions

File tree

ROADMAP.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,25 @@ This strategy ensures rapid iteration while maintaining a clear path to producti
9898
| `.describe()` Annotations | 8,425+ |
9999
| Service Contracts | 27 |
100100
| Contracts Implemented | 13 (52%) |
101-
| Test Files | 218 |
102-
| Tests Passing | 6,202 / 6,202 |
101+
| Test Files | 229 |
102+
| Tests Passing | 6,445 / 6,445 |
103103
| `@deprecated` Items | 3 |
104104
| Protocol Domains | 15 (Data, UI, AI, API, Automation, Cloud, Contracts, Identity, Integration, Kernel, QA, Security, Shared, Studio, System) |
105105

106+
### Spec Protocol Hardening Status
107+
108+
| Item | Status | Details |
109+
|:---|:---:|:---|
110+
| `defineStack()` strict by default || `strict: true` default since v3.0.2, validates schemas + cross-references |
111+
| `z.any()` elimination in UI protocol || All `filter` fields → `FilterConditionSchema`, all `value` fields → typed unions |
112+
| Seed data → object cross-reference || `validateCrossReferences` detects seed data referencing undefined objects |
113+
| Navigation → object/dashboard/page/report cross-reference || App navigation items validated against defined metadata |
114+
| Negative validation tests (dashboard, page, report) || Missing required fields, invalid enums, type violations all covered |
115+
| `z.any()` in data/filter.zod.ts (8 instances) | ✅ Justified | Runtime comparison operators (`$eq`, `$ne`, `$in`, `$nin`) accept any value type |
116+
| `z.unknown()` hardening in remaining schemas | 🟡 | `z.unknown()` used for extensible config/metadata fields — stricter composite schemas planned |
117+
| DashboardWidget discriminated union by type | 🔴 | Planned — chart/metric/pivot subtypes with type-specific required fields |
118+
| CI lint rule rejecting new `z.any()` | 🔴 | Planned — eslint or custom lint rule to block `z.any()` additions |
119+
106120
---
107121

108122
## 🎯 Priority Roadmap — February 2026

0 commit comments

Comments
 (0)