**Git Commit Tracking** - Automatically capture git commit hash when claims/observations are ingested - Store in assertion metadata for temporal context and audit trails - Graceful degradation in non-git environments - Solves double-commit problem by capturing hash at ingestion time **Implementation** - walker/git.rs: get_current_commit_hash() utility function - bridge.rs: Accept optional git_commit parameter in all conversion functions - episteme/local: Store project_root, capture git hash during ingestion - 5 new tests for git hash tracking + metadata validation - All 1162 aphoria tests passing **Documentation Overhaul** - README: Added Observations vs Claims distinction, git tracking, dashboard - CLI Reference: New sections for git integration and ignore/exclusion system - Comprehensive ignore documentation: .aphoriaignore, inline comments, 4 methods - Enhanced verification engine docs with matching capabilities - DOCUMENTATION_UPDATES.md: Complete audit summary **Dashboard Separation** - Moved Aphoria-specific UI from stemedb-dashboard to aphoria-dashboard - Clean separation of concerns: StemeDB for core, Aphoria for security - Added dashboard documentation and setup guides Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
234 lines
6.6 KiB
Markdown
234 lines
6.6 KiB
Markdown
# Dashboard Separation Summary
|
|
|
|
**Date**: 2026-02-08
|
|
**Status**: ✅ Complete
|
|
|
|
## What Was Done
|
|
|
|
Successfully separated Aphoria Dashboard from StemeDB Dashboard into two independent applications.
|
|
|
|
## Changes Made
|
|
|
|
### 1. Created Aphoria Dashboard (Port 18189)
|
|
|
|
**New Directory**: `applications/aphoria-dashboard/`
|
|
|
|
**Structure**:
|
|
```
|
|
aphoria-dashboard/
|
|
├── package.json (port 18189, name "aphoria-dashboard")
|
|
├── .env.local (proxy mode)
|
|
├── .gitignore
|
|
├── README.md
|
|
├── next.config.ts
|
|
├── tsconfig.json
|
|
├── postcss.config.mjs
|
|
├── components.json
|
|
└── src/
|
|
├── app/
|
|
│ ├── layout.tsx (Aphoria branding)
|
|
│ ├── page.tsx (redirect to /scans)
|
|
│ ├── globals.css
|
|
│ ├── scans/page.tsx
|
|
│ ├── claims/page.tsx
|
|
│ └── corpus/page.tsx
|
|
├── components/
|
|
│ ├── scans/ (12 files)
|
|
│ ├── claims/ (7 files)
|
|
│ ├── corpus/ (8 files)
|
|
│ ├── layout/
|
|
│ │ ├── sidebar.tsx (Aphoria-specific, 3 routes)
|
|
│ │ ├── header.tsx
|
|
│ │ └── theme-toggle.tsx
|
|
│ ├── shared/ (3 files)
|
|
│ └── ui/ (8 files)
|
|
└── lib/
|
|
├── api/ (client, types, index)
|
|
├── auth/ (api-key)
|
|
├── utils.ts
|
|
├── format.ts
|
|
├── types.ts
|
|
└── constants.ts
|
|
```
|
|
|
|
**Routes**:
|
|
- `/` → redirects to `/scans`
|
|
- `/scans` → ScansPanel
|
|
- `/claims` → ClaimsPanel
|
|
- `/corpus` → CorpusPanel
|
|
|
|
**Branding**:
|
|
- Icon: Shield (Lucide)
|
|
- Title: "Aphoria Dashboard"
|
|
- Footer: "Aphoria Dashboard v0.1.0"
|
|
|
|
### 2. Updated StemeDB Dashboard (Port 18188)
|
|
|
|
**Removed**:
|
|
- `src/app/scans/`, `src/app/claims/`, `src/app/corpus/` (3 route directories)
|
|
- `src/components/scans/`, `src/components/claims/`, `src/components/corpus/` (27 component files)
|
|
|
|
**Updated**:
|
|
- `src/components/layout/sidebar.tsx`:
|
|
- Removed imports: `Scan`, `Library`, `FileCheck`
|
|
- Removed 3 navigation items (Corpus, Scans, Claims)
|
|
- Now has 6 routes (Skeptic Query, Layered View, Sources, Quarantine, Circuit Breakers, Audit Trail)
|
|
|
|
**Added**:
|
|
- `README.md` - Documentation for StemeDB Dashboard
|
|
|
|
**Remaining Routes**:
|
|
- `/skeptic` → Skeptic Query
|
|
- `/layered` → Layered View
|
|
- `/sources` → Sources
|
|
- `/quarantine` → Quarantine
|
|
- `/circuit` → Circuit Breakers
|
|
- `/audit` → Audit Trail
|
|
|
|
### 3. Documentation
|
|
|
|
**Created**:
|
|
- `applications/aphoria-dashboard/README.md` - Aphoria Dashboard docs
|
|
- `applications/stemedb-dashboard/README.md` - StemeDB Dashboard docs
|
|
- `applications/DASHBOARD_SYNC.md` - Shared code sync guide
|
|
- `applications/DASHBOARD_SEPARATION_SUMMARY.md` - This file
|
|
|
|
**Updated**:
|
|
- `CLAUDE.md` - Port scheme table (added ports 18188 and 18189)
|
|
|
|
## Port Scheme
|
|
|
|
| Port | Service | Dashboard |
|
|
|------|---------|-----------|
|
|
| 18180 | Backend API | Both dashboards proxy to this |
|
|
| 18188 | StemeDB Dashboard | Database admin |
|
|
| 18189 | Aphoria Dashboard | Code quality |
|
|
|
|
## Shared Code
|
|
|
|
Both dashboards share infrastructure:
|
|
- **UI Components**: `src/components/ui/` (8 files)
|
|
- **Shared Components**: `src/components/shared/` (3 files)
|
|
- **Layout Components**: `header.tsx`, `theme-toggle.tsx` (NOT `sidebar.tsx`)
|
|
- **Library Code**: `src/lib/` (API client, types, utils)
|
|
- **Configuration**: `globals.css`, `components.json`
|
|
|
|
See `applications/DASHBOARD_SYNC.md` for sync procedures.
|
|
|
|
## Dependencies
|
|
|
|
Both dashboards have identical dependencies:
|
|
- Next.js 16.1.6
|
|
- React 19.2.3
|
|
- TailwindCSS 4
|
|
- shadcn/ui components
|
|
- lucide-react icons
|
|
|
|
## Testing Status
|
|
|
|
### ✅ Completed
|
|
- [x] Directory structure created
|
|
- [x] Files copied and organized
|
|
- [x] Routes created for Aphoria Dashboard
|
|
- [x] Routes removed from StemeDB Dashboard
|
|
- [x] Sidebars updated with correct navigation
|
|
- [x] Documentation created
|
|
- [x] Port scheme documented
|
|
- [x] Dependencies installed for Aphoria Dashboard
|
|
|
|
### ⚠️ Pending (requires Node.js >=20.9.0)
|
|
- [ ] Build verification (`npm run build`)
|
|
- [ ] Runtime testing with all three services
|
|
- [ ] E2E verification of API proxying
|
|
- [ ] UI/UX verification
|
|
|
|
**Note**: Current Node.js version is 20.8.1, but Next.js 16 requires >=20.9.0. The dev servers should work, but production builds may fail until Node is updated.
|
|
|
|
## Next Steps
|
|
|
|
To complete testing:
|
|
|
|
1. **Update Node.js** (if needed):
|
|
```bash
|
|
nvm install 20.9.0
|
|
nvm use 20.9.0
|
|
```
|
|
|
|
2. **Build Both Dashboards**:
|
|
```bash
|
|
cd applications/stemedb-dashboard && npm run build
|
|
cd ../aphoria-dashboard && npm run build
|
|
```
|
|
|
|
3. **Choose Access Method**:
|
|
|
|
**Option A: Direct Ports (Recommended for dev)**
|
|
```bash
|
|
# Terminal 1: Backend API
|
|
cargo run --bin stemedb-api # port 18180
|
|
|
|
# Terminal 2: StemeDB Dashboard
|
|
cd applications/stemedb-dashboard && npm run dev # port 18188
|
|
|
|
# Terminal 3: Aphoria Dashboard
|
|
cd applications/aphoria-dashboard && npm run dev # port 18189
|
|
|
|
# Access:
|
|
# http://localhost:18188 (StemeDB)
|
|
# http://localhost:18189 (Aphoria)
|
|
```
|
|
|
|
**Option B: Nginx Subdomain Routing (Recommended for shared)**
|
|
```bash
|
|
# Setup nginx once
|
|
./setup-nginx-subdomain.sh
|
|
|
|
# Then start services (same as above)
|
|
|
|
# Access:
|
|
# http://stemedb.local (StemeDB)
|
|
# http://aphoria.local (Aphoria)
|
|
```
|
|
|
|
**Option C: Interactive Setup Helper**
|
|
```bash
|
|
./setup-dashboards.sh
|
|
```
|
|
|
|
See `applications/NGINX_SETUP_GUIDE.md` for full details.
|
|
|
|
4. **Verify Functionality**:
|
|
- StemeDB Dashboard: Test all 6 routes
|
|
- Aphoria Dashboard: Test all 3 routes
|
|
- Verify removed routes return 404 in StemeDB Dashboard
|
|
- Verify API calls work in both dashboards
|
|
|
|
## Success Criteria
|
|
|
|
- [x] Aphoria Dashboard has its own directory
|
|
- [x] StemeDB Dashboard has Aphoria features removed
|
|
- [x] Both dashboards have independent navigation
|
|
- [x] Port scheme is documented
|
|
- [x] Sync procedures are documented
|
|
- [ ] Both dashboards build successfully (pending Node.js update)
|
|
- [ ] Both dashboards run concurrently (pending testing)
|
|
- [ ] API proxying works in both (pending testing)
|
|
|
|
## Rollback Plan
|
|
|
|
If issues arise:
|
|
```bash
|
|
# This work was done in a single session
|
|
# To rollback, use git:
|
|
git checkout HEAD -- applications/stemedb-dashboard/
|
|
git clean -fd applications/aphoria-dashboard/
|
|
```
|
|
|
|
## Notes
|
|
|
|
- **Architecture Decision**: Used "Copy with Documentation" approach (Option D from plan)
|
|
- **Code Drift**: Acceptable with documented sync procedures
|
|
- **Future Enhancement**: Consider monorepo packages if syncing becomes frequent (>1x/week)
|
|
- **API Client**: Kept full client in both dashboards (has both StemeDB + Aphoria methods)
|
|
- **Build System**: No workspace needed, dashboards are fully independent
|