learning_ai_common_plat/docs/ECOSYSTEM_CONSISTENCY_AUDIT.md

19 KiB
Raw Blame History

ByteLyst Ecosystem Consistency Audit

Date: 2026-03-21 Scope: All 13 repos in the ByteLyst workspace Auditor: Cascade AI


1. Product Identity (shared/product.json)

Port Allocation (no collisions )

Product Port Repo
PeakPulse 4010 learning_ai_peakpulse
ChronoMind 4011 learning_ai_clock
JarvisJr 4012 learning_ai_jarvis_jr
NomGap 4013 learning_ai_fastgap
MindLyst 4014 learning_multimodal_memory_agents
LysnrAI 4015 learning_voice_ai_agent
NoteLett 4016 learning_ai_notes
FlowMonk 4017 learning_ai_flowmonk
ActionTrail 4018 learning_ai_trails
LocalMemGPT 4019 learning_ai_local_memory_gpt
Platform-service 4003 learning_ai_common_plat
Extraction-service 4005 learning_ai_common_plat
MCP-server 4007 learning_ai_common_plat

Schema Consistency

Full schema (16 fields): MindLyst, ChronoMind, JarvisJr, PeakPulse — consistent

Newer schema (10 fields, uses bundleIds + tagline + appStore): FlowMonk, ActionTrail, LocalMemGPT, SmartAuth — consistent among themselves

Finding Severity Repos
F1: NomGap product.json minimal — only 4 fields (productId, displayName, bundleId, domain), missing backendPort, version, licensePrefix, configDirName, envVarPrefix, packageName 🟡 Medium learning_ai_fastgap
F2: LysnrAI product.json missing domain/backendPort — only 7 fields, no domain, backendPort, description, cosmos, platforms, primarySurface 🟡 Medium learning_voice_ai_agent
F3: NoteLett hybrid schema — mixes old (bundleIdSuffix, packageName) and new (backendPort, domain) but missing version, cosmos, platforms 🟡 Medium learning_ai_notes
F4: ByteLyst Auth uses productName instead of displayName 🟠 Low learning_ai_auth_app
F5: Two schema patterns — older repos use bundleId (object), newer use bundleIds (object). Not a bug but inconsistent. 🟢 Info

2. Backend Patterns (Fastify 5 + TypeScript ESM)

Shared Package Adoption

All 10 product backends have:

  • @bytelyst/auth — JWT utilities
  • @bytelyst/config — env loader + product identity
  • @bytelyst/datastore — Cosmos/memory abstraction
  • @bytelyst/errors — typed HTTP errors
  • @bytelyst/fastify-core — createServiceApp() factory
  • @bytelyst/fastify-auth — auth middleware
  • @bytelyst/backend-config — backend config helpers
  • @bytelyst/backend-flags — feature flag server-side
  • @bytelyst/backend-telemetry — telemetry buffer
  • product-config.ts in src/lib/ — all 10 backends

Fastify Version

Version Repos
^5.2.1 LysnrAI, MindLyst, ChronoMind, JarvisJr, NomGap, PeakPulse
5.7.4 FlowMonk, ActionTrail, LocalMemGPT
^5.2.1 NoteLett
Finding Severity
F6: Fastify version split — 6 repos on ^5.2.1, 3 on 5.7.4. Should align to latest. 🟡 Medium

Field Encryption

Finding Severity
F7: LocalMemGPT missing @bytelyst/field-encrypt — uses local AES-256-GCM instead of shared package. Intentional (SQLite-based, local-first app) but divergent. 🟢 Info

All other 9 Cosmos-based backends have @bytelyst/field-encrypt

Advanced Packages (SSE, Events, Webhooks)

Only FlowMonk and ActionTrail have:

  • @bytelyst/fastify-sse — SSE streaming
  • @bytelyst/event-store — domain event persistence
  • @bytelyst/webhook-dispatch — outbound webhook delivery

LocalMemGPT has @bytelyst/fastify-sse and @bytelyst/llm-router (unique).

Other backends may need these as they mature — not a gap yet.


3. Web Frontend Patterns

Next.js + React Versions

Version Repos
Next.js 16.1.6 + React 19.2.3 LysnrAI, ChronoMind, JarvisJr, FlowMonk, ActionTrail
Next.js 16.1.6 + React 19.2.0 NomGap, NoteLett
Next.js ^16.0.0 + React ^19.0.0 MindLyst
Next.js ^15.3.2 + React ^19.1.0 LocalMemGPT
Finding Severity
F8: LocalMemGPT on Next.js 15 — all other repos on Next.js 16. Should upgrade. 🟠 High

TailwindCSS

Status Repos
TailwindCSS v4 LysnrAI, ChronoMind, NomGap, NoteLett, LocalMemGPT
Missing TailwindCSS MindLyst, FlowMonk, ActionTrail
TailwindCSS v4 via JarvisJr JarvisJr
Finding Severity
F9: MindLyst uses vanilla CSS--ml-* props in globals.css, no Tailwind. Intentional per AGENTS.md ("NO Tailwind"). 🟢 Info
F10: FlowMonk + ActionTrail missing TailwindCSS — use inline styles or basic CSS. Should add for consistency. 🟡 Medium

CSS Custom Property Namespaces

Namespace Product Status
--cm-* ChronoMind
--jj-* JarvisJr
--ng-* NomGap
--ml-* MindLyst
--fm-* FlowMonk
--at-* ActionTrail
--lmg-* LocalMemGPT
--nl-* MISSING NoteLett
Finding Severity
F11: NoteLett globals.css has no --nl-* custom properties — contrary to AGENTS.md which says "Theme tokens use --nl-* CSS custom properties". 🟠 High

Web Auth Pattern (@bytelyst/react-auth)

Has react-auth in web deps Has auth.ts using it
LysnrAI LysnrAI uses custom auth-server pattern (dashboard)
ChronoMind ChronoMind uses auth-client directly
NomGap NomGap auth.ts uses react-auth
NoteLett NoteLett auth.ts uses react-auth
ActionTrail ActionTrail auth.ts uses react-auth
JarvisJr JarvisJr — no react-auth dep
FlowMonk FlowMonk — no react-auth dep
LocalMemGPT LocalMemGPT — auth is optional (local-first)
Finding Severity
F12: JarvisJr web missing @bytelyst/react-auth — has kill-switch + telemetry but no auth provider. 🟡 Medium
F13: FlowMonk web missing @bytelyst/react-auth — no auth provider in web. 🟡 Medium

Web product-config.ts

Finding Severity
F14: ChronoMind web missing product-config.ts — all other webs have it. 🟡 Medium

4. Mobile / Native Patterns

iOS Platform SDK (Platform/ directory)

App Platform/ dir Status
LysnrAI mobile_app/ios/LysnrAI/Platform/
MindLyst mindlyst-native/iosApp/Platform/
ChronoMind ios/ChronoMind/Shared/Cloud/ + Shared/Diagnostics/ ⚠️ Different (valid for multi-target)
JarvisJr ios/JarvisJr/Platform/
PeakPulse ios/PeakPulse/Platform/

Android Kotlin Platform SDK

All 3 Android apps (ChronoMind, MindLyst, LysnrAI) have includeBuild for kotlin-platform-sdk

JarvisJr Android exists but is Phase 4 (minimal). NomGap uses Expo (no native SDK needed).


5. Design Tokens

@bytelyst/design-tokens generates:

  • tokens.css — web CSS vars
  • tokens.ts — TypeScript constants
  • MindLystTokens.kt — Android tokens
  • MindLystTheme.swift — iOS tokens
Finding Severity
F15: Only 3 webs import @bytelyst/design-tokens — LysnrAI, NomGap, NoteLett. Other webs define CSS custom props manually. 🟡 Medium

6. CI/CD & Docker

GitHub Actions

Status Repos
Active ci.yml ChronoMind, JarvisJr, NomGap, PeakPulse, FlowMonk, NoteLett, ActionTrail, LocalMemGPT
Disabled LysnrAI (disabled.yml), MindLyst (disabled.yml)
No CI ByteLyst Auth App
Finding Severity
F16: LysnrAI + MindLyst CI disabled — mature repos with extensive test suites should have CI enabled. 🟡 Medium
F17: ByteLyst Auth App has no CI — no .github/workflows/ at all. 🟡 Medium

Docker

Has docker-compose + Dockerfiles Repos
Full stack NomGap, NoteLett, ActionTrail, LocalMemGPT
docker-compose only (references sibling) LysnrAI
No Docker MindLyst, ChronoMind, JarvisJr, PeakPulse, FlowMonk
Finding Severity
F18: 5 repos have no Docker configs — makes local/CI deployment harder. 🟢 Info

7. Agent Documentation

File Presence Matrix

File Present (of 13) Missing
AGENTS.md 13/13
CLAUDE.md 11/13 ActionTrail, ByteLyst Auth App
.windsurfrules 12/13 ByteLyst Auth App
.cursorrules 12/13 ByteLyst Auth App
Finding Severity
F19: ActionTrail missing CLAUDE.md 🟢 Low
F20: ByteLyst Auth App missing CLAUDE.md, .windsurfrules, .cursorrules 🟡 Medium

8. Summary Scorecard

Critical (should fix now)

# Finding Fix
F8 LocalMemGPT on Next.js 15 Upgrade to Next.js 16
F11 NoteLett missing --nl-* CSS custom properties Add design token CSS vars to globals.css

Medium (should fix soon)

# Finding Fix
F1 NomGap product.json minimal (4 fields) Add missing fields to match ecosystem standard
F2 LysnrAI product.json missing domain/backendPort Add missing fields
F3 NoteLett product.json hybrid schema Normalize to ecosystem standard
F6 Fastify version split (^5.2.1 vs 5.7.4) Align all to latest 5.7.x
F10 FlowMonk + ActionTrail missing TailwindCSS Add TailwindCSS v4
F12 JarvisJr web missing @bytelyst/react-auth Add auth provider
F13 FlowMonk web missing @bytelyst/react-auth Add auth provider
F14 ChronoMind web missing product-config.ts Create product-config.ts
F15 Only 3 webs import @bytelyst/design-tokens Add to remaining webs
F16 LysnrAI + MindLyst CI disabled Re-enable ci.yml
F20 ByteLyst Auth App missing agent docs Add CLAUDE.md, .windsurfrules, .cursorrules

Low / Informational

# Finding Notes
F4 Auth App uses productName instead of displayName Minor schema inconsistency
F5 Two bundleId schema patterns bundleId (object) vs bundleIds (object)
F7 LocalMemGPT uses local encryption Intentional — SQLite-based local-first app
F9 MindLyst no Tailwind Intentional per AGENTS.md
F17 Auth App no CI Minimal repo, mostly native
F18 5 repos no Docker Not all repos need containerization yet
F19 ActionTrail missing CLAUDE.md Low priority doc gap

9. Ecosystem-Wide Consistency Checklist

Dimension Status
Product ID in Cosmos docs All backends enforce productId
Port allocation (no collisions) 40104019 + 4003/4005/4007
Backend Fastify 5 All 10 backends
Backend @bytelyst/fastify-core All 10 backends
Backend @bytelyst/field-encrypt 9/10 (LocalMemGPT intentionally different)
Backend product-config.ts All 10 backends
Web Next.js 16 ⚠️ 8/9 (LocalMemGPT on 15)
Web CSS namespace --XX-* ⚠️ 7/8 (NoteLett missing)
Web @bytelyst/react-auth ⚠️ 5/8 applicable webs
Web product-config.ts ⚠️ 7/8 (ChronoMind missing)
iOS Platform/ directory 4/5 (ChronoMind valid alternative)
Android kotlin-platform-sdk All 3 Android apps
AGENTS.md 13/13
CLAUDE.md ⚠️ 11/13
.windsurfrules + .cursorrules ⚠️ 12/13
GitHub Actions CI ⚠️ 8/12 active
shared/product.json ⚠️ Inconsistent schemas across older/newer repos