10 KiB
Historical Analysis: dev vs dev-1 Branch Comparison
Date: 2025-12-05 Analyst: Historical Analyst Agent Scope: Understanding CI/CD setup and identifying changes that may have broken type-check
Executive Summary
The dev branch has 30 commits ahead of dev-1, primarily focused on:
- Code quality infrastructure (ESLint v9, lint-staged, pre-commit hooks)
- CI/CD simplification (disabled most workflows for rapid iteration)
- Project archival (moved finance, mail, moodlit, inventory, presi, storage to
apps-archived/) - Build system fixes (removed recursive turbo calls, fixed Dockerfiles)
Key Finding: The dev branch introduced aggressive ESLint enforcement and pre-commit hooks that run type-check, which is likely causing the current failures.
1. CI/CD Setup Comparison
dev-1 Branch (Clean State)
Active Workflows:
.github/workflows/ci-pull-request.yml- Full PR validation.github/workflows/ci-main.yml- Full main branch validation.github/workflows/test.yml- Test runner.github/workflows/test-coverage.yml- Coverage reports.github/workflows/dependency-update.yml- Dependency management.github/workflows/cd-staging.yml- Staging deployment.github/workflows/cd-production.yml- Production deployment.github/workflows/cd-staging-tagged.yml- Tagged staging deploys
CI Features on dev-1:
# ci-main.yml (dev-1)
jobs:
validate:
- Install dependencies
- Build shared packages
- Run format check
- Run lint (continue-on-error: true)
- Run type check ✓
- Build all projects
- Run tests
build-docker-images:
- Builds: maerchenzauber, chat, manadeck, nutriphi, news, mana-core-auth
- Uses proper caching and multi-stage builds
PR Workflow Features (dev-1):
- Change detection (dorny/paths-filter)
- Scoped validation (only changed projects)
- Lint and format checks
- Type checking with shared package builds
- Docker build validation
- Security scanning
- Required status checks
dev Branch (Current State)
Disabled Workflows:
ci-pull-request.yml→ ci-pull-request.yml.baktest.yml→ test.yml.baktest-coverage.yml→ test-coverage.yml.bakdependency-update.yml→ dependency-update.yml.bak
Simplified ci-main.yml:
# ci-main.yml (dev)
jobs:
build-docker-images: # NO VALIDATION STEP
- Only builds: mana-core-auth, chat-backend, chat-web
- Removed build-args
- Simplified tags to only 'latest'
Key Changes:
- ❌ Removed the
validatejob entirely - ❌ Removed format check, lint, type-check from CI
- ❌ Removed test execution from CI
- ✅ Kept Docker builds (minimal services only)
2. Husky Pre-commit Hooks
dev-1 Branch
# .husky/pre-commit (both branches identical)
pnpm exec lint-staged
pnpm run type-check
dev Branch (Same)
# .husky/pre-commit
pnpm exec lint-staged
pnpm run type-check
Lint-staged Configuration:
dev-1:
// lint-staged.config.js (dev-1)
export default {
'*.{ts,tsx,js,jsx,json,md,svelte,astro}': ['prettier --config .prettierrc.json --write'],
};
dev (STRICTER):
// lint-staged.config.js (dev)
export default {
'*.{ts,tsx,js,jsx,mjs,cjs}': [
'eslint --fix --ignore-pattern "apps-archived/**"', // NEW!
'prettier --config .prettierrc.json --write',
],
'*.{json,md,svelte,astro}': ['prettier --config .prettierrc.json --write'],
};
Impact: Pre-commit now runs ESLint on all staged files, which could fail if ESLint configs are incomplete.
3. ESLint Infrastructure Changes
New in dev Branch
Added shared ESLint config package:
packages/eslint-config/
├── base.js (77 lines)
├── index.js (44 lines)
├── nestjs.js (122 lines)
├── prettier.js (37 lines)
├── react.js (85 lines)
├── svelte.js (90 lines)
├── typescript.js (94 lines)
└── package.json (40 lines)
Root ESLint configuration added:
- Commit:
fd962c30- "chore: add root ESLint config and enable lint in pre-commit" - Commit:
f720a25c- "chore: enforce stricter ESLint rules" - Commit:
ec236307- "chore: add lint:root and lint:fix scripts"
New package.json scripts (dev):
"lint:root": "eslint . --cache",
"lint:fix": "eslint . --fix --cache"
4. Build System Changes
Critical Fix: Recursive Turbo Calls
Commit: e32e4b1b - "fix(build): remove recursive build scripts from parent packages"
Problem: Parent workspace packages had scripts like:
// WRONG - Creates infinite recursion
{
"scripts": {
"type-check": "turbo run type-check",
"build": "turbo run build"
}
}
Solution: Removed these from parent packages to let root turbo orchestrate.
Shared Package Changes
Modified packages:
@mana-core/nestjs-integration- Import fixes@manacore/shared-auth- Device adapter improvements@manacore/shared-branding- Removed archived app logos@manacore/shared-api-client- DELETED (218 lines removed)
Key changes:
// packages/shared-api-client was REMOVED entirely
- packages/shared-api-client/package.json
- packages/shared-api-client/src/client.ts (218 lines)
- packages/shared-api-client/src/index.ts
- packages/shared-api-client/src/types.ts
- packages/shared-api-client/tsconfig.json
5. Archival Changes
Projects moved to apps-archived/ on dev:
- finance (backend + web)
- mail (backend + web + mobile + landing)
- moodlit (backend + web + mobile + landing)
- inventory (backend + web + landing + packages)
- presi (all apps)
- storage (backend + web)
Workspace cleanup:
- Remove from pnpm-workspace.yaml (implicitly via apps-archived exclusion)
- Remove scripts from root package.json
- Move entire directory structure
6. Type-Check Differences
dev-1 Approach
# Simple turbo orchestration
pnpm run type-check # Runs turbo run type-check
dev Approach
# Same command, but:
# 1. Fewer projects (archived apps excluded)
# 2. New ESLint strict rules
# 3. Shared package changes (removed shared-api-client)
# 4. Pre-commit hook enforcement
Root Cause Analysis:
The type-check is failing on dev likely due to:
- Import errors from removed
@manacore/shared-api-clientpackage - ESLint errors treated as type errors (if misconfigured)
- Missing dependencies in archived apps still being scanned
- Turbo cache poisoning from the recursive build fix
7. Commit Timeline (dev-1 to dev)
Key commits in chronological order:
-
Code Quality Phase (Dec 3-4)
0086e339- Add ESLint v9 configfd962c30- Enable ESLint in pre-commitf720a25c- Enforce stricter rules16cb8e75- Improve code quality49001060- Fix Prettier formatting
-
Build Fixes Phase (Nov 30 - Dec 2)
e32e4b1b- Remove recursive turbo callsaca6cdba- Fix build errors9c471195- Fix wrong type imports
-
CI/CD Simplification (Nov 28-29)
80f80053- Simplify to mana-core-auth + chat only1ecdee46- Simplify pipelinesc1d14a4a- Disable PR workflows (renamed to .bak)
-
Archival Phase (Earlier)
- Projects moved to apps-archived/
- Workspace updated
8. Recommendations
Immediate Actions
-
Check for dangling imports
grep -r "@manacore/shared-api-client" --exclude-dir=node_modules --exclude-dir=apps-archived -
Validate ESLint configs
# Check if all active apps have valid ESLint configs find apps -name "eslint.config.*" -type f -
Clear Turbo cache
pnpm exec turbo clean rm -rf .turbo -
Rebuild shared packages
pnpm run build:packages
Restoration Path (if needed)
To restore full CI/CD from dev-1:
# 1. Restore workflows
cp .github/workflows/ci-pull-request.yml.bak .github/workflows/ci-pull-request.yml
cp .github/workflows/test.yml.bak .github/workflows/test.yml
cp .github/workflows/test-coverage.yml.bak .github/workflows/test-coverage.yml
cp .github/workflows/dependency-update.yml.bak .github/workflows/dependency-update.yml
# 2. Restore full ci-main validation
git show dev-1:.github/workflows/ci-main.yml > .github/workflows/ci-main.yml
# 3. Simplify lint-staged (optional)
git show dev-1:lint-staged.config.js > lint-staged.config.js
9. Summary Table
| Feature | dev-1 | dev | Impact |
|---|---|---|---|
| PR Workflow | ✅ Full validation | ❌ Disabled (.bak) | High |
| Main CI Validation | ✅ Format, lint, type-check, build | ❌ Only Docker builds | High |
| Pre-commit Hooks | ✅ Prettier only | ✅ ESLint + Prettier | Medium |
| ESLint Config | ❌ Fragmented | ✅ Centralized package | Medium |
| Shared Packages | All active | Removed shared-api-client | High |
| Archived Apps | In apps/ | In apps-archived/ | Low |
| Turbo Recursion | ⚠️ Present | ✅ Fixed | High |
| Test Workflows | ✅ Active | ❌ Disabled (.bak) | Medium |
10. Next Steps
- Run type-check analysis to identify specific failing packages
- Check for removed package imports (
shared-api-client) - Validate ESLint configs across all active apps
- Consider selective workflow restoration (at minimum PR checks)
- Update CLAUDE.md to reflect current state vs planned state
Files for Review:
/Users/wuesteon/dev/mana_universe/manacore-monorepo/.husky/pre-commit/Users/wuesteon/dev/mana_universe/manacore-monorepo/lint-staged.config.js/Users/wuesteon/dev/mana_universe/manacore-monorepo/.github/workflows/*.bak/Users/wuesteon/dev/mana_universe/manacore-monorepo/packages/eslint-config/