Complete rebuild of 22-year-old PHP CMS as modern SaaS: Database (15 migrations, 42+ tables): - Foundation: account_settings, audit_log, GDPR register, cms_files - Module Engine: modules, fields, records, permissions, relations + RPC - Members: 45+ field member profiles, departments, roles, honors, SEPA mandates - Courses: courses, sessions, categories, instructors, locations, attendance - Bookings: rooms, guests, bookings with availability - Events: events, registrations, holiday passes - Finance: SEPA batches/items (pain.008/001 XML), invoices - Newsletter: campaigns, templates, recipients, subscriptions - Site Builder: site_pages (Puck JSON), site_settings, cms_posts - Portal Auth: member_portal_invitations, user linking Feature Packages (9): - @kit/module-builder — dynamic low-code CRUD engine - @kit/member-management — 31 API methods, 21 actions, 8 components - @kit/course-management, @kit/booking-management, @kit/event-management - @kit/finance — SEPA XML generator + IBAN validator - @kit/newsletter — campaigns + dispatch - @kit/document-generator — PDF/Excel/Word - @kit/site-builder — Puck visual editor, 15 blocks, public rendering Pages (60+): - Dashboard with real stats from all APIs - Full CRUD for all 8 domains with react-hook-form + Zod - Recharts statistics - German i18n throughout - Member portal with auth + invitation system - Public club websites via Puck at /club/[slug] Infrastructure: - Dockerfile (multi-stage, standalone output) - docker-compose.yml (Supabase self-hosted + Next.js) - Kong API gateway config - .env.production.example
90 lines
3.1 KiB
Markdown
90 lines
3.1 KiB
Markdown
---
|
|
name: gitnexus-debugging
|
|
description: "Use when the user is debugging a bug, tracing an error, or asking why something fails. Examples: \"Why is X failing?\", \"Where does this error come from?\", \"Trace this bug\""
|
|
---
|
|
|
|
# Debugging with GitNexus
|
|
|
|
## When to Use
|
|
|
|
- "Why is this function failing?"
|
|
- "Trace where this error comes from"
|
|
- "Who calls this method?"
|
|
- "This endpoint returns 500"
|
|
- Investigating bugs, errors, or unexpected behavior
|
|
|
|
## Workflow
|
|
|
|
```
|
|
1. gitnexus_query({query: "<error or symptom>"}) → Find related execution flows
|
|
2. gitnexus_context({name: "<suspect>"}) → See callers/callees/processes
|
|
3. READ gitnexus://repo/{name}/process/{name} → Trace execution flow
|
|
4. gitnexus_cypher({query: "MATCH path..."}) → Custom traces if needed
|
|
```
|
|
|
|
> If "Index is stale" → run `npx gitnexus analyze` in terminal.
|
|
|
|
## Checklist
|
|
|
|
```
|
|
- [ ] Understand the symptom (error message, unexpected behavior)
|
|
- [ ] gitnexus_query for error text or related code
|
|
- [ ] Identify the suspect function from returned processes
|
|
- [ ] gitnexus_context to see callers and callees
|
|
- [ ] Trace execution flow via process resource if applicable
|
|
- [ ] gitnexus_cypher for custom call chain traces if needed
|
|
- [ ] Read source files to confirm root cause
|
|
```
|
|
|
|
## Debugging Patterns
|
|
|
|
| Symptom | GitNexus Approach |
|
|
| -------------------- | ---------------------------------------------------------- |
|
|
| Error message | `gitnexus_query` for error text → `context` on throw sites |
|
|
| Wrong return value | `context` on the function → trace callees for data flow |
|
|
| Intermittent failure | `context` → look for external calls, async deps |
|
|
| Performance issue | `context` → find symbols with many callers (hot paths) |
|
|
| Recent regression | `detect_changes` to see what your changes affect |
|
|
|
|
## Tools
|
|
|
|
**gitnexus_query** — find code related to error:
|
|
|
|
```
|
|
gitnexus_query({query: "payment validation error"})
|
|
→ Processes: CheckoutFlow, ErrorHandling
|
|
→ Symbols: validatePayment, handlePaymentError, PaymentException
|
|
```
|
|
|
|
**gitnexus_context** — full context for a suspect:
|
|
|
|
```
|
|
gitnexus_context({name: "validatePayment"})
|
|
→ Incoming calls: processCheckout, webhookHandler
|
|
→ Outgoing calls: verifyCard, fetchRates (external API!)
|
|
→ Processes: CheckoutFlow (step 3/7)
|
|
```
|
|
|
|
**gitnexus_cypher** — custom call chain traces:
|
|
|
|
```cypher
|
|
MATCH path = (a)-[:CodeRelation {type: 'CALLS'}*1..2]->(b:Function {name: "validatePayment"})
|
|
RETURN [n IN nodes(path) | n.name] AS chain
|
|
```
|
|
|
|
## Example: "Payment endpoint returns 500 intermittently"
|
|
|
|
```
|
|
1. gitnexus_query({query: "payment error handling"})
|
|
→ Processes: CheckoutFlow, ErrorHandling
|
|
→ Symbols: validatePayment, handlePaymentError
|
|
|
|
2. gitnexus_context({name: "validatePayment"})
|
|
→ Outgoing calls: verifyCard, fetchRates (external API!)
|
|
|
|
3. READ gitnexus://repo/my-app/process/CheckoutFlow
|
|
→ Step 3: validatePayment → calls fetchRates (external)
|
|
|
|
4. Root cause: fetchRates calls external API without proper timeout
|
|
```
|