mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-25 22:34:56 +00:00
452 lines
14 KiB
Markdown
452 lines
14 KiB
Markdown
# METABUILDER SOFTWARE DESIGN SPECIFICATION
|
|
|
|
**A Contractual and Binding Design Specification**
|
|
|
|
This document defines the non-negotiable design, quality, and operational requirements for the MetaBuilder codebase. All code contributions are subject to these requirements. Non-compliance is grounds for immediate rejection, reversal, and remediation.
|
|
|
|
---
|
|
|
|
## PREAMBLE
|
|
|
|
**Status:** ACTIVE AND BINDING
|
|
**Date:** January 15, 2026
|
|
**Scope:** All commits to the MetaBuilder repository
|
|
|
|
The MetaBuilder codebase MUST maintain operational integrity, type safety, testability, and architectural correctness. These requirements are not aspirational—they are contractual obligations.
|
|
|
|
**Key Principle:** Code must be proven compliant before acceptance. Presumption is against acceptance until demonstrated otherwise.
|
|
|
|
---
|
|
|
|
## ARTICLE I: CORE REQUIREMENTS
|
|
|
|
### REQUIREMENT 1: BUILD COMPLIANCE
|
|
|
|
**Specification:**
|
|
- `npm run build` MUST complete without errors or warnings that prevent compilation
|
|
- Build artifacts MUST be generated to their expected output directories
|
|
- Build process MUST be deterministic (identical inputs produce identical outputs across runs)
|
|
|
|
**Verification:**
|
|
```bash
|
|
npm run build && echo "PASS" || echo "FAIL"
|
|
```
|
|
|
|
**Remediation on Failure:**
|
|
- Immediate rejection of commit
|
|
- Automatic revert if merged without approval
|
|
- Responsible engineer must correct and resubmit
|
|
|
|
**Current Status:** ❌ **FAILED** — Frontend build fails. Correction mandatory.
|
|
|
|
---
|
|
|
|
### REQUIREMENT 2: TYPE SAFETY
|
|
|
|
**Specification:**
|
|
- `npm run typecheck` MUST complete with zero TypeScript errors
|
|
- Strict mode flags MUST remain enabled (`exactOptionalPropertyTypes: true`)
|
|
- Use of `@ts-ignore` and `@ts-expect-error` is prohibited except with explicit justification approved by code review
|
|
- All implicit `any` types MUST be resolved to concrete types
|
|
|
|
**Verification:**
|
|
```bash
|
|
npm run typecheck && [ $(npm run typecheck 2>&1 | grep -c "error") -eq 0 ] && echo "PASS" || echo "FAIL"
|
|
```
|
|
|
|
**Remediation on Failure:**
|
|
- Immediate rejection of commit
|
|
- Type violations MUST be fixed, not suppressed
|
|
- Code must be corrected to comply with type system, not weakened
|
|
|
|
**Current Status:** ❌ **FAILED** — 27 TypeScript errors. Correction mandatory.
|
|
|
|
---
|
|
|
|
### REQUIREMENT 3: IMPORT RESOLUTION
|
|
|
|
**Specification:**
|
|
- All import statements MUST reference modules that exist
|
|
- No broken module references are permitted
|
|
- Path aliases (`@/dbal`, etc.) MUST resolve to existing files or npm packages
|
|
- No circular dependencies are permitted
|
|
|
|
**Verification:**
|
|
```bash
|
|
npm run typecheck # catches unresolved imports
|
|
```
|
|
|
|
**Remediation on Failure:**
|
|
- Immediate rejection of commit
|
|
- All missing modules MUST be created or import statements MUST be corrected
|
|
- Code cannot reference non-existent files
|
|
|
|
**Current Status:** ❌ **FAILED** — 27 broken imports in frontend. Correction mandatory.
|
|
|
|
---
|
|
|
|
### REQUIREMENT 4: DATABASE INITIALIZATION
|
|
|
|
**Specification:**
|
|
- Database schema MUST be initialized successfully
|
|
- `npm run db:push` MUST complete without errors
|
|
- Database file MUST exist and contain initialized schema
|
|
- Database operations MUST be idempotent (safe to run multiple times)
|
|
|
|
**Verification:**
|
|
```bash
|
|
npm run db:generate
|
|
npm run db:push
|
|
test -f /dbal/development/prisma/dev.db && echo "PASS" || echo "FAIL"
|
|
```
|
|
|
|
**Remediation on Failure:**
|
|
- Schema inconsistencies MUST be resolved
|
|
- Migration scripts MUST be corrected
|
|
- Tests cannot proceed until database initializes
|
|
|
|
**Current Status:** ❌ **FAILED** — Database not initialized. Correction mandatory.
|
|
|
|
---
|
|
|
|
### REQUIREMENT 5: DBAL COMPILATION
|
|
|
|
**Specification:**
|
|
- DBAL TypeScript source MUST compile without errors
|
|
- `npm --prefix dbal/development run build` MUST succeed
|
|
- Compiled output MUST exist in `/dbal/development/dist/`
|
|
- All required exports MUST be present in compiled output
|
|
- Generated type files MUST be created and included in dist
|
|
|
|
**Verification:**
|
|
```bash
|
|
npm --prefix dbal/development run build
|
|
test -f dbal/development/dist/index.js && echo "PASS" || echo "FAIL"
|
|
```
|
|
|
|
**Remediation on Failure:**
|
|
- All TypeScript errors in DBAL MUST be resolved
|
|
- Missing code generation scripts MUST be created
|
|
- Codegen tools MUST produce required artifacts
|
|
|
|
**Current Status:** ❌ **FAILED** — DBAL has 16+ errors. Correction mandatory.
|
|
|
|
---
|
|
|
|
### REQUIREMENT 6: DOCUMENTATION
|
|
|
|
**Specification:**
|
|
- Every commit message MUST explain:
|
|
- **WHAT** changed (specific files/functions modified)
|
|
- **WHY** it changed (business/technical rationale)
|
|
- **HOW** to verify it works (test commands or validation steps)
|
|
- Code MUST be self-documenting (clear variable/function names)
|
|
- Complex logic MUST have explanatory comments describing the _why_, not the _what_
|
|
- All public APIs MUST have JSDoc/TSDoc comments
|
|
|
|
**Remediation on Failure:**
|
|
- Commit rejected for inadequate documentation
|
|
- Author MUST provide complete explanation before acceptance
|
|
|
|
**Current Status:** ⚠️ **INCOMPLETE** — Existing code lacks documentation. Future commits must comply.
|
|
|
|
---
|
|
|
|
### REQUIREMENT 7: NO DEAD CODE
|
|
|
|
**Specification:**
|
|
- All committed code MUST be active and executed during normal operation
|
|
- Unused functions, variables, or modules MUST NOT be committed
|
|
- Stub files or incomplete implementations MUST be explicitly marked as work-in-progress with clear status
|
|
- All TODO comments MUST reference a tracking issue and expected completion date
|
|
|
|
**Remediation on Failure:**
|
|
- Code rejected if unused or incomplete
|
|
- Dead code MUST be deleted or completed
|
|
|
|
**Current Status:** ❌ **FAILED** — 39 DBAL stub files committed but non-functional. Correction mandatory.
|
|
|
|
---
|
|
|
|
### REQUIREMENT 8: ARCHITECTURAL COMPLIANCE
|
|
|
|
**Specification:**
|
|
- Architecture MUST match the specification defined in ARCHITECTURE.md
|
|
- DBAL MUST be self-contained and independently deployable
|
|
- Seed data and Prisma schema MUST reside in DBAL, not at root level
|
|
- Multiple conflicting implementations are prohibited
|
|
- Database logic MUST not be scattered across the codebase
|
|
|
|
**Remediation on Failure:**
|
|
- Code rejected if architecture violations exist
|
|
- Refactoring MUST be completed before acceptance
|
|
- Architecture must be corrected before code cleanup
|
|
|
|
**Current Status:** ❌ **FAILED** — Seed at root, schema at root, multiple DBAL implementations. Correction mandatory.
|
|
|
|
---
|
|
|
|
## ARTICLE II: VERIFICATION PROTOCOL
|
|
|
|
All commits are subject to the following verification sequence (in order):
|
|
|
|
### Verification Checklist
|
|
|
|
- [ ] **BUILD CHECK** — `npm run build` succeeds (REQUIREMENT 1)
|
|
- [ ] **TYPE CHECK** — `npm run typecheck` returns 0 errors (REQUIREMENT 2)
|
|
- [ ] **IMPORT CHECK** — All imports resolve correctly (REQUIREMENT 3)
|
|
- [ ] **DATABASE CHECK** — `npm run db:push` succeeds (REQUIREMENT 4)
|
|
- [ ] **DBAL CHECK** — DBAL compiles to dist/ (REQUIREMENT 5)
|
|
- [ ] **DOCUMENTATION CHECK** — Commit message and code comments complete (REQUIREMENT 6)
|
|
- [ ] **CODE CHECK** — No dead code or stubs (REQUIREMENT 7)
|
|
- [ ] **ARCHITECTURE CHECK** — Complies with ARCHITECTURE.md (REQUIREMENT 8)
|
|
- [ ] **TEST CHECK** — `npm run test:e2e` and `npm run test:unit` pass
|
|
|
|
**Standard:** ALL checks must pass. If ANY check fails, the commit is rejected.
|
|
|
|
---
|
|
|
|
## ARTICLE III: CURRENT COMPLIANCE STATUS
|
|
|
|
**Evaluation Date:** January 15, 2026
|
|
|
|
### Compliance Report
|
|
|
|
| Requirement | Status | Details |
|
|
|-------------|--------|---------|
|
|
| 1. Build Compliance | ❌ FAIL | `npm run build` fails |
|
|
| 2. Type Safety | ❌ FAIL | 27 TypeScript errors |
|
|
| 3. Import Resolution | ❌ FAIL | 27 broken imports in frontend |
|
|
| 4. Database Init | ❌ FAIL | No .db file created |
|
|
| 5. DBAL Compilation | ❌ FAIL | 16+ compilation errors, missing codegen |
|
|
| 6. Documentation | ⚠️ WARN | Insufficient for complex code |
|
|
| 7. No Dead Code | ❌ FAIL | 39 stub files, 20+ obsolete wrappers |
|
|
| 8. Architecture | ❌ FAIL | Seed/schema at root, multiple DBAL impls |
|
|
|
|
### Overall Status
|
|
|
|
**🚨 NON-COMPLIANT**
|
|
|
|
The codebase fails to meet 7 out of 8 core requirements. Feature development is suspended until core requirements are satisfied.
|
|
|
|
---
|
|
|
|
## ARTICLE IV: REMEDIATION PATHWAY
|
|
|
|
### Phase 0: Architecture Restructure (FIRST)
|
|
|
|
Execute `ARCHITECTURE_RESTRUCTURE.md`:
|
|
1. Move `/seed/` → `/dbal/shared/seeds/`
|
|
2. Move `/prisma/` → `/dbal/development/prisma/`
|
|
3. Update package.json scripts
|
|
4. Update DBAL exports
|
|
5. Delete old folders
|
|
6. Verify no broken references
|
|
|
|
**Timeline:** 30-60 minutes
|
|
**Mandatory before Phase 1**
|
|
|
|
### Phase 1: DBAL Compilation Recovery
|
|
|
|
Execute `CODEBASE_RECOVERY_PLAN.md`:
|
|
1. Fix/create codegen script (`gen_types.ts`)
|
|
2. Fix 8 TypeScript strict mode violations
|
|
3. Compile DBAL to dist/
|
|
4. Verify all exports available
|
|
|
|
**Timeline:** 2-3 hours
|
|
**Mandatory before Phase 2**
|
|
|
|
### Phase 2: Database Initialization
|
|
|
|
1. Generate Prisma client: `npm run db:generate`
|
|
2. Initialize database: `npm run db:push`
|
|
3. Verify: `/dbal/development/prisma/dev.db` exists
|
|
|
|
**Timeline:** 30 minutes
|
|
|
|
### Phase 3: Frontend Recovery
|
|
|
|
1. Remove DBAL source from frontend tsconfig
|
|
2. Fix Next.js route handler signatures (4 routes)
|
|
3. Verify typecheck: 27 errors → 0 errors
|
|
4. Verify build: succeeds
|
|
|
|
**Timeline:** 1-2 hours
|
|
|
|
### Phase 4: Verification
|
|
|
|
Run full test suite:
|
|
- `npm run build` → ✅ PASS
|
|
- `npm run typecheck` → ✅ 0 ERRORS
|
|
- `npm run test:unit` → ✅ ALL PASS
|
|
- `npm run test:e2e` → ✅ ALL RUN
|
|
- `npm run dev` → ✅ STARTS
|
|
|
|
**Timeline:** 30 minutes
|
|
|
|
**Total Estimated Effort:** 4-5 hours to full compliance
|
|
|
|
---
|
|
|
|
## ARTICLE V: ENFORCEMENT
|
|
|
|
### Enforcement Mechanism
|
|
|
|
A pre-commit hook MUST enforce these requirements before code is committed:
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
|
|
echo "ENFORCEMENT: Verifying code compliance..."
|
|
|
|
# Requirement 1: Build Compliance
|
|
npm run build || { echo "FAIL: Build does not compile"; exit 1; }
|
|
|
|
# Requirement 2: Type Safety
|
|
npm run typecheck || { echo "FAIL: TypeScript errors exist"; exit 1; }
|
|
|
|
# Requirement 3: Import Resolution (caught by typecheck)
|
|
# Already checked above
|
|
|
|
# Requirement 7: No dead code (lint)
|
|
npm run lint || { echo "FAIL: Lint errors detected"; exit 1; }
|
|
|
|
# All checks passed
|
|
echo "PASS: Code is compliant. Commit allowed."
|
|
exit 0
|
|
```
|
|
|
|
**This hook is NOT negotiable.**
|
|
|
|
---
|
|
|
|
## ARTICLE VI: STANDARDS GOING FORWARD
|
|
|
|
### Post-Recovery Standards
|
|
|
|
Once the codebase achieves compliance, all future commits MUST:
|
|
|
|
1. **Pass all verification checks** (ARTICLE II)
|
|
2. **Include complete documentation** (commit message + code comments)
|
|
3. **Have zero type errors** (strict mode enabled)
|
|
4. **Have zero broken imports** (all modules exist)
|
|
5. **Maintain database consistency** (schema + seed aligned)
|
|
6. **Comply with architecture** (no duplicate implementations)
|
|
7. **Be testable** (include or update tests)
|
|
8. **Be reviewable** (understandable in 5 minutes by another engineer)
|
|
|
|
### Probation Period
|
|
|
|
After achieving initial compliance, the codebase enters a probation period:
|
|
|
|
- **Duration:** 30 consecutive commits with zero violations
|
|
- **Requirement:** All commits must pass all verification checks
|
|
- **Violation:** Any failed check results in immediate revert
|
|
- **Post-Probation:** Full feature development can resume
|
|
|
|
---
|
|
|
|
## ARTICLE VII: BINDING AUTHORITY
|
|
|
|
**This specification IS binding.**
|
|
|
|
This is not guidance. This is not aspirational. This is contractual requirement.
|
|
|
|
- All developers agree to these terms by committing code
|
|
- All code reviewers agree to enforce these terms
|
|
- All merged code is warrantied to meet these requirements
|
|
|
|
**Failure to comply is grounds for:**
|
|
- Immediate rejection of commit
|
|
- Automatic reversion if merged
|
|
- Loss of merge privileges until pattern changes
|
|
- Code review assignment until compliant pattern demonstrated
|
|
|
|
---
|
|
|
|
## ARTICLE VIII: CHANGE CONTROL
|
|
|
|
Any modification to this specification requires:
|
|
1. Written proposal with justification
|
|
2. Approval by all active maintainers
|
|
3. Update to this file with dated change record
|
|
4. Communication to all contributors
|
|
|
|
**No unilateral changes permitted.**
|
|
|
|
---
|
|
|
|
## SIGNATURES & ACKNOWLEDGMENT
|
|
|
|
By committing code to MetaBuilder, you acknowledge and agree to:
|
|
|
|
- ✅ I have read this specification completely
|
|
- ✅ I understand these are contractual requirements, not suggestions
|
|
- ✅ I agree to comply with all verification checks before committing
|
|
- ✅ I agree to maintain these standards in all future contributions
|
|
- ✅ I understand non-compliance results in automatic rejection/revert
|
|
- ✅ I understand this is binding for all code I contribute
|
|
|
|
---
|
|
|
|
## APPENDIX A: QUICK REFERENCE
|
|
|
|
### Check Before Every Commit
|
|
|
|
```bash
|
|
# 1. Build
|
|
npm run build
|
|
|
|
# 2. Types
|
|
npm run typecheck
|
|
|
|
# 3. Tests
|
|
npm run test:unit
|
|
npm run test:e2e
|
|
|
|
# 4. Lint
|
|
npm run lint
|
|
|
|
# If all pass, commit is allowed
|
|
```
|
|
|
|
### Execution Commands
|
|
|
|
```bash
|
|
# Architecture Restructure
|
|
# Execute: ARCHITECTURE_RESTRUCTURE.md (30-60 min)
|
|
|
|
# DBAL Recovery
|
|
# Execute: CODEBASE_RECOVERY_PLAN.md (4-5 hours)
|
|
|
|
# Database Setup
|
|
npm run db:generate
|
|
npm run db:push
|
|
|
|
# Verification
|
|
npm run dev # Should start without errors
|
|
```
|
|
|
|
---
|
|
|
|
## APPENDIX B: DEFINITIONS
|
|
|
|
- **Build:** The process of compiling TypeScript to JavaScript and generating artifacts
|
|
- **Compliance:** Meeting all requirements defined in Articles I-VIII
|
|
- **Non-Compliance:** Failing to meet any core requirement
|
|
- **Code Review:** Process of verifying compliance before merge
|
|
- **Acceptance Criteria:** Objective, measurable standards for each requirement
|
|
- **Remediation:** Actions required to bring non-compliant code into compliance
|
|
- **Probation:** Period of heightened monitoring following initial compliance achievement
|
|
|
|
---
|
|
|
|
**Document Status:** ACTIVE
|
|
**Last Updated:** January 15, 2026
|
|
**Version:** 1.0
|
|
**Authority:** Project Specification
|
|
**Binding:** YES
|
|
|
|
This specification supersedes all prior informal quality guidelines and represents the authoritative standard for MetaBuilder code quality.
|