05ed037fe8
- DNS: pilot.landvex.com -> 16.170.83.169 - TLS: Let's Encrypt certificate (expires 2026-09-30) - Nginx: reverse proxy with SSL termination - API: https://pilot.landvex.com/api/v1/missions - UI: https://pilot.landvex.com/ - Upload: POST /api/v1/missions/import (multipart/form-data) Verified: ✅ https://pilot.landvex.com/health ✅ https://pilot.landvex.com/version ✅ https://pilot.landvex.com/api/v1/missions (list) ✅ https://pilot.landvex.com/api/v1/missions/:id (get) ✅ POST /api/v1/missions/import (video upload) ✅ UI loads with title 'LandveX Intelligence Lab' Next: Pilot 001 — Break the system!
724 lines
14 KiB
JSON
724 lines
14 KiB
JSON
{
|
|
"system": "AAMOS/quiXzoom",
|
|
"version": "2026-06-30",
|
|
"last_updated": "2026-06-30T18:47:46.152Z",
|
|
"update_source": "auto_updater",
|
|
"nodes": [
|
|
{
|
|
"id": "zoomer",
|
|
"type": "actor",
|
|
"label": "Zoomer (fotograf)",
|
|
"capabilities": [
|
|
"register",
|
|
"verify_identity",
|
|
"claim_mission",
|
|
"submit_photo",
|
|
"receive_payment"
|
|
]
|
|
},
|
|
{
|
|
"id": "customer",
|
|
"type": "actor",
|
|
"label": "Kund (beställare)",
|
|
"capabilities": [
|
|
"register",
|
|
"create_mission",
|
|
"review_submissions",
|
|
"pay"
|
|
]
|
|
},
|
|
{
|
|
"id": "admin",
|
|
"type": "actor",
|
|
"label": "Admin/Landvex",
|
|
"capabilities": [
|
|
"manage_all",
|
|
"view_analytics",
|
|
"configure_system"
|
|
]
|
|
},
|
|
{
|
|
"id": "app",
|
|
"type": "frontend",
|
|
"label": "quiXzoom App",
|
|
"tech": "React/Vite/TypeScript",
|
|
"host": "S3+CloudFront",
|
|
"repo": "quixzoom.com",
|
|
"build_output": "dist/",
|
|
"critical": true
|
|
},
|
|
{
|
|
"id": "api",
|
|
"type": "gateway",
|
|
"label": "API Gateway",
|
|
"host": "nginx/AWS",
|
|
"routes": [
|
|
"/api/qz/*"
|
|
],
|
|
"critical": true
|
|
},
|
|
{
|
|
"id": "auth",
|
|
"type": "service",
|
|
"label": "Auth Service",
|
|
"port": 3207,
|
|
"tech": "Rust/axum",
|
|
"repo": "ouroboros-identity",
|
|
"endpoints": [
|
|
"/auth/register",
|
|
"/auth/login",
|
|
"/auth/me",
|
|
"/auth/logout"
|
|
],
|
|
"critical": true,
|
|
"owner": "backend-team"
|
|
},
|
|
{
|
|
"id": "ledger",
|
|
"type": "service",
|
|
"label": "Ledger Service",
|
|
"port": 3250,
|
|
"tech": "Rust",
|
|
"status": "Etapp 1 pågår",
|
|
"critical": false,
|
|
"owner": "agent"
|
|
},
|
|
{
|
|
"id": "mission",
|
|
"type": "service",
|
|
"label": "Mission Service",
|
|
"tech": "Node.js/Express",
|
|
"host": "EC2",
|
|
"endpoints": [
|
|
"/missions",
|
|
"/missions/:id",
|
|
"/missions/claims",
|
|
"/missions/leaderboard"
|
|
],
|
|
"critical": true,
|
|
"owner": "backend-team"
|
|
},
|
|
{
|
|
"id": "wallet",
|
|
"type": "service",
|
|
"label": "Wallet Service",
|
|
"tech": "Node.js",
|
|
"endpoints": [
|
|
"/auth/wallet",
|
|
"/auth/wallet/transactions",
|
|
"/payouts/request"
|
|
],
|
|
"critical": true,
|
|
"owner": "backend-team"
|
|
},
|
|
{
|
|
"id": "kyc",
|
|
"type": "service",
|
|
"label": "KYC Service",
|
|
"tech": "Node.js",
|
|
"endpoints": [
|
|
"/identity/session",
|
|
"/identity/consent",
|
|
"/kyc/challenge",
|
|
"/kyc/upload/:type",
|
|
"/kyc/verify",
|
|
"/kyc/verify-doc"
|
|
],
|
|
"critical": true,
|
|
"owner": "backend-team"
|
|
},
|
|
{
|
|
"id": "notification",
|
|
"type": "service",
|
|
"label": "Notification Service",
|
|
"tech": "Node.js",
|
|
"endpoints": [
|
|
"/notifications"
|
|
],
|
|
"critical": false,
|
|
"owner": "backend-team"
|
|
},
|
|
{
|
|
"id": "db",
|
|
"type": "database",
|
|
"label": "PostgreSQL",
|
|
"host": "RDS",
|
|
"critical": true,
|
|
"tables": [
|
|
"users",
|
|
"missions",
|
|
"claims",
|
|
"submissions",
|
|
"wallets",
|
|
"transactions",
|
|
"password_reset_tokens",
|
|
"kyc_sessions",
|
|
"identity_consents"
|
|
],
|
|
"backup_strategy": "unknown",
|
|
"owner": "ops-team"
|
|
},
|
|
{
|
|
"id": "s3",
|
|
"type": "storage",
|
|
"label": "S3",
|
|
"buckets": [
|
|
"quixzoom-app-prod",
|
|
"quixzoom-assets"
|
|
],
|
|
"critical": true
|
|
},
|
|
{
|
|
"id": "cloudfront",
|
|
"type": "cdn",
|
|
"label": "CloudFront",
|
|
"distribution": "E2QUO7HIHWWP18",
|
|
"critical": false
|
|
},
|
|
{
|
|
"id": "stripe",
|
|
"type": "external",
|
|
"label": "Stripe Connect",
|
|
"purpose": "Betalningar till Zoomers + kundbetalningar",
|
|
"critical": true,
|
|
"sla": "99.99%",
|
|
"owner": "stripe"
|
|
},
|
|
{
|
|
"id": "ses",
|
|
"type": "external",
|
|
"label": "AWS SES",
|
|
"purpose": "E-post (lösenordsåterställning, notiser)",
|
|
"critical": false,
|
|
"owner": "aws"
|
|
},
|
|
{
|
|
"id": "lambda",
|
|
"type": "external",
|
|
"label": "AWS Lambda",
|
|
"purpose": "Lösenordsåterställning",
|
|
"function": "quixzoom-forgot-password",
|
|
"critical": false,
|
|
"owner": "bernt"
|
|
},
|
|
{
|
|
"id": "bernt",
|
|
"type": "agent",
|
|
"label": "Bernt (AI-agent)",
|
|
"role": "Systemadministration, utveckling, deployment",
|
|
"tools": [
|
|
"file_access",
|
|
"shell",
|
|
"aws_cli",
|
|
"git"
|
|
],
|
|
"critical": false
|
|
},
|
|
{
|
|
"id": "zoomer_onboarding",
|
|
"type": "business_process",
|
|
"label": "Zoomer Onboarding",
|
|
"steps": [
|
|
"register",
|
|
"email_verify",
|
|
"kyc_start",
|
|
"document_photo",
|
|
"selfie",
|
|
"kyc_verify",
|
|
"approved"
|
|
],
|
|
"owner": "product-team"
|
|
},
|
|
{
|
|
"id": "mission_flow",
|
|
"type": "business_process",
|
|
"label": "Mission Flow",
|
|
"steps": [
|
|
"customer_creates",
|
|
"zoomer_claims",
|
|
"zoomer_submits",
|
|
"ai_review",
|
|
"approval",
|
|
"payout"
|
|
],
|
|
"owner": "product-team"
|
|
},
|
|
{
|
|
"id": "password_reset",
|
|
"type": "business_process",
|
|
"label": "Password Reset",
|
|
"steps": [
|
|
"request",
|
|
"email_sent",
|
|
"click_link",
|
|
"new_password",
|
|
"updated"
|
|
],
|
|
"owner": "security-team"
|
|
},
|
|
{
|
|
"id": "user_table",
|
|
"type": "domain",
|
|
"label": "users",
|
|
"db": "db",
|
|
"used_by": [
|
|
"auth",
|
|
"kyc",
|
|
"wallet"
|
|
],
|
|
"sensitive": true
|
|
},
|
|
{
|
|
"id": "mission_table",
|
|
"type": "domain",
|
|
"label": "missions",
|
|
"db": "db",
|
|
"used_by": [
|
|
"mission",
|
|
"app"
|
|
],
|
|
"sensitive": false
|
|
},
|
|
{
|
|
"id": "claim_table",
|
|
"type": "domain",
|
|
"label": "claims",
|
|
"db": "db",
|
|
"used_by": [
|
|
"mission",
|
|
"app"
|
|
],
|
|
"sensitive": false
|
|
},
|
|
{
|
|
"id": "submission_table",
|
|
"type": "domain",
|
|
"label": "submissions",
|
|
"db": "db",
|
|
"used_by": [
|
|
"mission",
|
|
"wallet"
|
|
],
|
|
"sensitive": true
|
|
},
|
|
{
|
|
"id": "wallet_table",
|
|
"type": "domain",
|
|
"label": "wallets",
|
|
"db": "db",
|
|
"used_by": [
|
|
"wallet"
|
|
],
|
|
"sensitive": true
|
|
},
|
|
{
|
|
"id": "transaction_table",
|
|
"type": "domain",
|
|
"label": "transactions",
|
|
"db": "db",
|
|
"used_by": [
|
|
"wallet",
|
|
"ledger"
|
|
],
|
|
"sensitive": true
|
|
},
|
|
{
|
|
"id": "slo_auth",
|
|
"type": "slo",
|
|
"label": "Auth Availability",
|
|
"target": "99.9%",
|
|
"measured_by": "unknown"
|
|
},
|
|
{
|
|
"id": "slo_mission",
|
|
"type": "slo",
|
|
"label": "Mission API Latency",
|
|
"target": "p95 < 200ms",
|
|
"measured_by": "unknown"
|
|
},
|
|
{
|
|
"id": "slo_payout",
|
|
"type": "slo",
|
|
"label": "Payout Processing",
|
|
"target": "< 24h",
|
|
"measured_by": "unknown"
|
|
},
|
|
{
|
|
"id": "risk_stripe_down",
|
|
"type": "risk",
|
|
"label": "Stripe Outage",
|
|
"impact": "high",
|
|
"probability": "low",
|
|
"mitigation": "manual_retry"
|
|
},
|
|
{
|
|
"id": "risk_db_down",
|
|
"type": "risk",
|
|
"label": "Database Failure",
|
|
"impact": "critical",
|
|
"probability": "low",
|
|
"mitigation": "none_documented"
|
|
},
|
|
{
|
|
"id": "risk_kyc_fraud",
|
|
"type": "risk",
|
|
"label": "KYC Fraud",
|
|
"impact": "high",
|
|
"probability": "medium",
|
|
"mitigation": "ai_review+manual"
|
|
}
|
|
],
|
|
"edges": [
|
|
{
|
|
"from": "zoomer",
|
|
"to": "app",
|
|
"relation": "uses",
|
|
"protocol": "HTTPS"
|
|
},
|
|
{
|
|
"from": "customer",
|
|
"to": "app",
|
|
"relation": "uses",
|
|
"protocol": "HTTPS"
|
|
},
|
|
{
|
|
"from": "admin",
|
|
"to": "bernt",
|
|
"relation": "directs"
|
|
},
|
|
{
|
|
"from": "app",
|
|
"to": "api",
|
|
"relation": "calls",
|
|
"protocol": "HTTPS/REST"
|
|
},
|
|
{
|
|
"from": "api",
|
|
"to": "auth",
|
|
"relation": "routes",
|
|
"paths": [
|
|
"/auth/*"
|
|
]
|
|
},
|
|
{
|
|
"from": "api",
|
|
"to": "mission",
|
|
"relation": "routes",
|
|
"paths": [
|
|
"/missions/*",
|
|
"/claims/*",
|
|
"/submissions/*"
|
|
]
|
|
},
|
|
{
|
|
"from": "api",
|
|
"to": "wallet",
|
|
"relation": "routes",
|
|
"paths": [
|
|
"/wallet/*",
|
|
"/payouts/*"
|
|
]
|
|
},
|
|
{
|
|
"from": "api",
|
|
"to": "kyc",
|
|
"relation": "routes",
|
|
"paths": [
|
|
"/identity/*",
|
|
"/kyc/*"
|
|
]
|
|
},
|
|
{
|
|
"from": "api",
|
|
"to": "notification",
|
|
"relation": "routes",
|
|
"paths": [
|
|
"/notifications/*"
|
|
]
|
|
},
|
|
{
|
|
"from": "auth",
|
|
"to": "user_table",
|
|
"relation": "reads_writes"
|
|
},
|
|
{
|
|
"from": "auth",
|
|
"to": "db",
|
|
"relation": "connects",
|
|
"protocol": "PostgreSQL"
|
|
},
|
|
{
|
|
"from": "mission",
|
|
"to": "mission_table",
|
|
"relation": "reads_writes"
|
|
},
|
|
{
|
|
"from": "mission",
|
|
"to": "claim_table",
|
|
"relation": "reads_writes"
|
|
},
|
|
{
|
|
"from": "mission",
|
|
"to": "submission_table",
|
|
"relation": "reads_writes"
|
|
},
|
|
{
|
|
"from": "mission",
|
|
"to": "db",
|
|
"relation": "connects",
|
|
"protocol": "PostgreSQL"
|
|
},
|
|
{
|
|
"from": "wallet",
|
|
"to": "wallet_table",
|
|
"relation": "reads_writes"
|
|
},
|
|
{
|
|
"from": "wallet",
|
|
"to": "transaction_table",
|
|
"relation": "reads_writes"
|
|
},
|
|
{
|
|
"from": "wallet",
|
|
"to": "db",
|
|
"relation": "connects",
|
|
"protocol": "PostgreSQL"
|
|
},
|
|
{
|
|
"from": "wallet",
|
|
"to": "stripe",
|
|
"relation": "calls",
|
|
"protocol": "HTTPS/REST",
|
|
"purpose": "process_payments"
|
|
},
|
|
{
|
|
"from": "kyc",
|
|
"to": "user_table",
|
|
"relation": "reads_writes"
|
|
},
|
|
{
|
|
"from": "kyc",
|
|
"to": "db",
|
|
"relation": "connects",
|
|
"protocol": "PostgreSQL"
|
|
},
|
|
{
|
|
"from": "kyc",
|
|
"to": "s3",
|
|
"relation": "writes",
|
|
"purpose": "store_id_documents"
|
|
},
|
|
{
|
|
"from": "notification",
|
|
"to": "ses",
|
|
"relation": "calls",
|
|
"protocol": "HTTPS/REST",
|
|
"purpose": "send_emails"
|
|
},
|
|
{
|
|
"from": "app",
|
|
"to": "cloudfront",
|
|
"relation": "served_by"
|
|
},
|
|
{
|
|
"from": "cloudfront",
|
|
"to": "s3",
|
|
"relation": "fetches_from"
|
|
},
|
|
{
|
|
"from": "auth",
|
|
"to": "lambda",
|
|
"relation": "calls",
|
|
"protocol": "HTTPS/REST",
|
|
"purpose": "forgot_password"
|
|
},
|
|
{
|
|
"from": "lambda",
|
|
"to": "ses",
|
|
"relation": "calls",
|
|
"protocol": "HTTPS/REST",
|
|
"purpose": "send_reset_email"
|
|
},
|
|
{
|
|
"from": "lambda",
|
|
"to": "db",
|
|
"relation": "connects",
|
|
"protocol": "PostgreSQL"
|
|
},
|
|
{
|
|
"from": "lambda",
|
|
"to": "user_table",
|
|
"relation": "reads_writes"
|
|
},
|
|
{
|
|
"from": "zoomer_onboarding",
|
|
"to": "app",
|
|
"relation": "executed_via"
|
|
},
|
|
{
|
|
"from": "zoomer_onboarding",
|
|
"to": "auth",
|
|
"relation": "uses"
|
|
},
|
|
{
|
|
"from": "zoomer_onboarding",
|
|
"to": "kyc",
|
|
"relation": "uses"
|
|
},
|
|
{
|
|
"from": "zoomer_onboarding",
|
|
"to": "user_table",
|
|
"relation": "modifies"
|
|
},
|
|
{
|
|
"from": "mission_flow",
|
|
"to": "app",
|
|
"relation": "executed_via"
|
|
},
|
|
{
|
|
"from": "mission_flow",
|
|
"to": "mission",
|
|
"relation": "uses"
|
|
},
|
|
{
|
|
"from": "mission_flow",
|
|
"to": "wallet",
|
|
"relation": "uses"
|
|
},
|
|
{
|
|
"from": "mission_flow",
|
|
"to": "stripe",
|
|
"relation": "uses"
|
|
},
|
|
{
|
|
"from": "mission_flow",
|
|
"to": "mission_table",
|
|
"relation": "modifies"
|
|
},
|
|
{
|
|
"from": "mission_flow",
|
|
"to": "claim_table",
|
|
"relation": "modifies"
|
|
},
|
|
{
|
|
"from": "mission_flow",
|
|
"to": "submission_table",
|
|
"relation": "modifies"
|
|
},
|
|
{
|
|
"from": "mission_flow",
|
|
"to": "wallet_table",
|
|
"relation": "modifies"
|
|
},
|
|
{
|
|
"from": "mission_flow",
|
|
"to": "transaction_table",
|
|
"relation": "modifies"
|
|
},
|
|
{
|
|
"from": "password_reset",
|
|
"to": "app",
|
|
"relation": "executed_via"
|
|
},
|
|
{
|
|
"from": "password_reset",
|
|
"to": "lambda",
|
|
"relation": "uses"
|
|
},
|
|
{
|
|
"from": "password_reset",
|
|
"to": "ses",
|
|
"relation": "uses"
|
|
},
|
|
{
|
|
"from": "password_reset",
|
|
"to": "user_table",
|
|
"relation": "modifies"
|
|
},
|
|
{
|
|
"from": "risk_stripe_down",
|
|
"to": "stripe",
|
|
"relation": "threatens"
|
|
},
|
|
{
|
|
"from": "risk_stripe_down",
|
|
"to": "wallet",
|
|
"relation": "impacts"
|
|
},
|
|
{
|
|
"from": "risk_stripe_down",
|
|
"to": "mission_flow",
|
|
"relation": "disrupts"
|
|
},
|
|
{
|
|
"from": "risk_db_down",
|
|
"to": "db",
|
|
"relation": "threatens"
|
|
},
|
|
{
|
|
"from": "risk_db_down",
|
|
"to": "auth",
|
|
"relation": "impacts"
|
|
},
|
|
{
|
|
"from": "risk_db_down",
|
|
"to": "mission",
|
|
"relation": "impacts"
|
|
},
|
|
{
|
|
"from": "risk_db_down",
|
|
"to": "wallet",
|
|
"relation": "impacts"
|
|
},
|
|
{
|
|
"from": "risk_db_down",
|
|
"to": "kyc",
|
|
"relation": "impacts"
|
|
},
|
|
{
|
|
"from": "risk_db_down",
|
|
"to": "zoomer_onboarding",
|
|
"relation": "disrupts"
|
|
},
|
|
{
|
|
"from": "risk_db_down",
|
|
"to": "mission_flow",
|
|
"relation": "disrupts"
|
|
},
|
|
{
|
|
"from": "risk_db_down",
|
|
"to": "password_reset",
|
|
"relation": "disrupts"
|
|
},
|
|
{
|
|
"from": "risk_kyc_fraud",
|
|
"to": "kyc",
|
|
"relation": "threatens"
|
|
},
|
|
{
|
|
"from": "risk_kyc_fraud",
|
|
"to": "user_table",
|
|
"relation": "impacts"
|
|
}
|
|
],
|
|
"queries": {
|
|
"impact_analysis": {
|
|
"description": "Given a component change, what is affected?",
|
|
"example": "wallet",
|
|
"algorithm": "traverse_edges_from_node",
|
|
"depth": "unlimited",
|
|
"include_indirect": true
|
|
},
|
|
"failure_analysis": {
|
|
"description": "Given a component failure, what breaks?",
|
|
"example": "stripe",
|
|
"algorithm": "find_nodes_without_alternative_path",
|
|
"include_business_processes": true
|
|
},
|
|
"blast_radius": {
|
|
"description": "Given a database table, what uses it?",
|
|
"example": "missions",
|
|
"algorithm": "reverse_traverse_from_domain_node"
|
|
}
|
|
}
|
|
} |