{
  "generated_at": "2026-04-10T07:27:37.109Z",
  "services": [
    {
      "name": "spokeplus",
      "script": "server.js",
      "cwd": ".",
      "instances": 1,
      "exec_mode": "fork"
    },
    {
      "name": "spokeplus-web",
      "script": "npm",
      "cwd": "./web",
      "instances": 1,
      "exec_mode": "fork"
    }
  ],
  "workers": [],
  "queues": [
    "tts",
    "word-enrichment"
  ],
  "database_tables": [
    "achievements",
    "admin_users",
    "ai_action_logs",
    "ai_conversation_summary",
    "ai_conversations",
    "ai_prompt_versions",
    "app_events",
    "app_pages",
    "app_projects",
    "app_themes",
    "attempts",
    "cefr_levels",
    "cefr_progress_profiles",
    "characters",
    "chunk_components",
    "collocation_categories",
    "collocation_category_links",
    "collocation_misuse_patterns",
    "collocation_statistics",
    "collocation_strength",
    "collocation_variants",
    "collocations",
    "concept_relations",
    "content_generation_jobs",
    "content_item_taxonomies",
    "content_metadata",
    "content_tag_map",
    "content_tags",
    "conversation_lemmas",
    "conversation_turns",
    "cosmetics",
    "course_content_items",
    "course_units",
    "courses",
    "curricular_nodes",
    "daily_platform_stats",
    "dependency_relation_catalog",
    "did_you_know_cards",
    "difficulty_signals",
    "docs_index",
    "enhanced_dependencies",
    "exercise_difficulty",
    "exercise_variants",
    "feature_flags",
    "grammar_card_assets",
    "grammar_card_examples",
    "grammar_cards",
    "grammar_concepts",
    "grapheme_phoneme_rules",
    "health_check",
    "inflection_paradigms",
    "irregular_forms",
    "language_dependency_profiles",
    "league_divisions",
    "league_seasons",
    "learner_error_frequency",
    "learner_error_pattern_matches",
    "learner_error_patterns",
    "learner_error_statistics",
    "learner_errors",
    "learner_remediation_actions",
    "legacy_content_entries",
    "lemma_assets",
    "lemma_cefr_levels",
    "lemma_concept_links",
    "lemma_forms",
    "lemma_frequency",
    "lemma_frequency_bands",
    "lemma_grammar",
    "lemma_morphology_features",
    "lemma_paradigm_assignments",
    "lemma_pronunciations",
    "lemma_roles",
    "lemma_semantic_classes",
    "lemma_semantic_domains",
    "lemma_semantic_roles",
    "lemma_taxonomy_view",
    "lemmas",
    "lesson_content_map",
    "lesson_summaries",
    "lessons",
    "lexical_relations",
    "listening_targets",
    "minimal_pairs",
    "modifier_constraints",
    "morphology_features",
    "morphology_rules",
    "notifications",
    "obs_coverage_summaries",
    "obs_edges",
    "obs_entities",
    "obs_evidence",
    "obs_graph_diffs",
    "obs_graph_runs",
    "obs_health_summaries",
    "obs_incident_evidence",
    "obs_incidents",
    "obs_lifecycle_classifications",
    "obs_reconciliation_results",
    "obs_remediations",
    "obs_verification_results",
    "pattern_difficulty",
    "pet_feed_events",
    "phoneme_inventory",
    "pos_colors",
    "practice_queue",
    "practice_queue_items",
    "project_course_bindings",
    "pronunciation_difficulty_profiles",
    "pronunciation_syllables",
    "pronunciation_variants",
    "schema_snapshot",
    "semantic_concepts",
    "semantic_domains",
    "semantic_relations",
    "semantic_roles",
    "semantic_similarity_scores",
    "sense_translations",
    "senses",
    "sentence_difficulty",
    "sentence_lemmas",
    "sentence_pattern_matches",
    "sentence_patterns",
    "sentence_syntax_tokens",
    "sentence_syntax_trees",
    "sentence_tags",
    "sentence_templates",
    "sentence_tokens",
    "sentence_words",
    "sentences",
    "session_continue_events",
    "session_exercises",
    "sessions",
    "skills",
    "sql_audit_log",
    "sql_mutation_allowlist",
    "stages",
    "student_event",
    "student_lemma_progress",
    "syntax_patterns",
    "syntax_token_features",
    "system_error_groups",
    "system_errors",
    "system_events",
    "tags",
    "taxonomy_categories",
    "taxonomy_values",
    "theme_links",
    "themes",
    "translation_pairs",
    "translations",
    "tts_asset_links",
    "tts_assets",
    "units",
    "universal_concepts",
    "user_achievements",
    "user_consents",
    "user_cosmetics",
    "user_course_enrollments",
    "user_daily_stats",
    "user_friends",
    "user_item_state",
    "user_item_stats",
    "user_league_membership",
    "user_pet_state",
    "user_profile",
    "user_security_events",
    "user_settings",
    "user_skill_progress",
    "user_skill_state",
    "user_stage_progress",
    "user_streak",
    "user_subscriptions",
    "user_variant_history",
    "user_wallet",
    "user_xp",
    "verb_conjugations",
    "verb_object_constraints",
    "verb_tenses",
    "vocabulary",
    "vocabulary_components",
    "vocabulary_relations",
    "vocabulary_themes",
    "voice_languages",
    "voices",
    "vw_dashboard_metrics",
    "vw_leaderboard_global",
    "vw_league_leaderboard",
    "vw_recent_activity",
    "vw_schema_snapshot",
    "vw_session_summary",
    "vw_skill_unlock_state",
    "vw_user_achievements",
    "vw_user_streak",
    "vw_user_today_stats",
    "vw_wallet_overview",
    "wallet_transactions",
    "word_assets",
    "word_forms",
    "word_grammar",
    "word_revisions",
    "word_senses",
    "word_tags",
    "word_translations",
    "worlds",
    "xp_transactions"
  ],
  "important_endpoints": [
    "POST /admin/content-bank/conversation/process-turn",
    "POST /admin/content-bank/exercises/generate",
    "GET /admin/content-bank/grammar-cards",
    "POST /admin/content-bank/grammar-cards",
    "DELETE /admin/content-bank/grammar-cards/:id",
    "GET /admin/content-bank/grammar-cards/:id",
    "PUT /admin/content-bank/grammar-cards/:id",
    "POST /admin/content-bank/grammar-cards/:id/assets",
    "DELETE /admin/content-bank/grammar-cards/:id/assets/:asset_id",
    "POST /admin/content-bank/grammar-cards/:id/examples",
    "DELETE /admin/content-bank/grammar-cards/:id/examples/:example_id",
    "GET /admin/content-bank/grammar-cards/:id/qa",
    "POST /admin/content-bank/grammar-cards/:id/qa",
    "GET /admin/content-bank/grammar-concepts",
    "POST /admin/content-bank/grammar-concepts",
    "DELETE /admin/content-bank/grammar-concepts/:id",
    "GET /admin/content-bank/grammar-concepts/:id",
    "PUT /admin/content-bank/grammar-concepts/:id",
    "POST /admin/content-bank/grammar-engine/generate-followups",
    "POST /admin/content-bank/grammar-engine/validate-sentence",
    "GET /admin/content-bank/lemmas",
    "POST /admin/content-bank/lemmas",
    "POST /admin/content-bank/lemmas",
    "DELETE /admin/content-bank/lemmas/:id",
    "GET /admin/content-bank/lemmas/:id",
    "GET /admin/content-bank/lemmas/:id",
    "PATCH /admin/content-bank/lemmas/:id",
    "GET /admin/content-bank/lemmas/:id/audio",
    "GET /admin/content-bank/lemmas/:id/audio",
    "PUT /admin/content-bank/lemmas/:id/classifications",
    "POST /admin/content-bank/lemmas/:id/collocations",
    "DELETE /admin/content-bank/lemmas/:id/collocations/:relationId",
    "PATCH /admin/content-bank/lemmas/:id/collocations/:relationId",
    "POST /admin/content-bank/lemmas/:id/editor-save",
    "POST /admin/content-bank/lemmas/:id/examples",
    "DELETE /admin/content-bank/lemmas/:id/examples/:sentenceId",
    "POST /admin/content-bank/lemmas/:id/morphology/forms",
    "DELETE /admin/content-bank/lemmas/:id/morphology/forms/:formId",
    "PATCH /admin/content-bank/lemmas/:id/morphology/forms/:formId",
    "GET /admin/content-bank/lemmas/:id/relations",
    "GET /admin/content-bank/lemmas/:id/relations",
    "GET /admin/content-bank/lemmas/:id/senses",
    "GET /admin/content-bank/lemmas/:id/senses",
    "POST /admin/content-bank/lemmas/:id/senses",
    "DELETE /admin/content-bank/lemmas/:id/senses/:senseId",
    "PATCH /admin/content-bank/lemmas/:id/senses/:senseId",
    "POST /admin/content-bank/lemmas/:id/senses/:senseId/translations",
    "DELETE /admin/content-bank/lemmas/:id/senses/:senseId/translations/:translationId",
    "PATCH /admin/content-bank/lemmas/:id/senses/:senseId/translations/:translationId",
    "GET /admin/content-bank/lemmas/:id/sentences",
    "GET /admin/content-bank/lemmas/:id/sentences",
    "PUT /admin/content-bank/lemmas/:id/taxonomies",
    "GET /admin/content-bank/lemmas/:id/translations",
    "GET /admin/content-bank/lemmas/:id/translations",
    "PATCH /admin/content-bank/lemmas/:lemmaId",
    "POST /admin/content-bank/lemmas/ai-classify",
    "POST /admin/content-bank/lemmas/audit",
    "POST /admin/content-bank/lemmas/bootstrap-bulk",
    "POST /admin/content-bank/lemmas/bootstrap",
    "GET /admin/content-bank/lemmas/editor-metadata",
    "POST /admin/content-bank/lemmas/upsert",
    "GET /admin/content-bank/sentences",
    "POST /admin/content-bank/sentences",
    "DELETE /admin/content-bank/sentences/:id",
    "GET /admin/content-bank/sentences/:id",
    "PUT /admin/content-bank/sentences/:id",
    "POST /admin/content-bank/sentences/:id/mark-ready",
    "POST /admin/content-bank/sentences/create",
    "GET /admin/courses/:id/content-bank/:type",
    "POST /admin/courses/:id/content-bank/link",
    "GET /admin/observability/tts",
    "POST /admin/observability/tts/actions",
    "POST /admin/system/architecture/build",
    "GET /admin/system/docs",
    "POST /admin/system/docs/reindex",
    "GET /admin/system/docs/search",
    "PATCH /admin/system/error-groups/:id",
    "POST /admin/system/error-groups/:id/resolve",
    "POST /admin/system/error-groups/:id/unresolve",
    "GET /admin/system/error-replay/:id",
    "GET /admin/system/feature-flags",
    "PATCH /admin/system/feature-flags",
    "GET /admin/system/github-status",
    "POST /admin/system/github/push",
    "GET /admin/system/integrity/report",
    "POST /admin/system/integrity/run",
    "DELETE /admin/system/logs",
    "GET /admin/system/logs",
    "GET /admin/system/logs/explorer",
    "GET /admin/system/logs/stream",
    "GET /admin/system/observability/coverage-health",
    "GET /admin/system/observability/coverage",
    "POST /admin/system/observability/governance/evaluate",
    "POST /admin/system/observability/governance/retirement/preflight",
    "GET /admin/system/observability/graph/digest",
    "GET /admin/system/observability/health",
    "GET /admin/system/observability/incidents",
    "PATCH /admin/system/observability/incidents/:id",
    "GET /admin/system/observability/incidents/:id/evidence",
    "GET /admin/system/observability/incidents/:id/remediations",
    "GET /admin/system/observability/incidents/overview",
    "GET /admin/system/observability/incidents/summary",
    "GET /admin/system/observability/incidents/surface",
    "GET /admin/system/observability/inventory",
    "GET /admin/system/observability/legacy-candidates",
    "GET /admin/system/observability/remediations",
    "GET /admin/system/observability/remediations/:id",
    "PATCH /admin/system/observability/remediations/:id",
    "GET /admin/system/observability/remediations/overview",
    "GET /admin/system/observability/remediations/summary",
    "GET /admin/system/observability/remediations/surface",
    "GET /admin/system/observability/verification/results",
    "GET /admin/system/observability/verification/summary",
    "GET /admin/system/queues",
    "DELETE /admin/system/queues/:queueName/failed",
    "POST /admin/system/queues/:queueName/retry-failed",
    "GET /admin/tts/assets",
    "DELETE /admin/tts/assets/:id",
    "GET /admin/tts/assets/:id",
    "PATCH /admin/tts/assets/:id",
    "POST /admin/tts/batch",
    "POST /admin/tts/generate-batch",
    "POST /admin/tts/generate",
    "GET /content-bank/grammar-cards",
    "GET /content-bank/grammar-cards/:id"
  ],
  "copilot_capabilities": [
    "Create and enrich vocabulary words via admin content bank workflows",
    "Search indexed documentation snippets from docs_index",
    "Generate and queue TTS assets"
  ],
  "source_inventory": {
    "controllers": [
      "controllers/adminAppCmsController.js",
      "controllers/adminConfirmationController.js",
      "controllers/adminContentBankOpsController.js",
      "controllers/adminContentEngineController.js",
      "controllers/adminContentTtsController.js",
      "controllers/adminCopilotController.js",
      "controllers/adminDashboardController.js",
      "controllers/adminDocsEditorController.js",
      "controllers/adminGrammarEngineController.js",
      "controllers/adminImageController.js",
      "controllers/adminLemmaContentBankController.js",
      "controllers/adminStudentsController.js",
      "controllers/adminSystemController.js",
      "controllers/adminTaxonomyKnowledgeGraphController.js",
      "controllers/adminTtsController.js",
      "controllers/adminWordContentBankController.js",
      "controllers/authBootstrapController.js",
      "controllers/grammarContentBankController.js",
      "controllers/practiceController.js",
      "controllers/statusController.js"
    ],
    "routes": [
      "routes/adminAppCmsRoutes.js",
      "routes/adminConfirmationRoutes.js",
      "routes/adminContentBankOpsRoutes.js",
      "routes/adminContentEngineRoutes.js",
      "routes/adminContentTtsRoutes.js",
      "routes/adminCopilotRoutes.js",
      "routes/adminDashboardRoutes.js",
      "routes/adminDocsEditorRoutes.js",
      "routes/adminGrammarContentBankRoutes.js",
      "routes/adminImageRoutes.js",
      "routes/adminLemmaContentBankRoutes.js",
      "routes/adminStudentsRoutes.js",
      "routes/adminSystemRoutes.js",
      "routes/adminTaxonomyKnowledgeGraphRoutes.js",
      "routes/adminTtsRoutes.js",
      "routes/adminWordContentBankRoutes.js",
      "routes/authBootstrapRoutes.js",
      "routes/internalDocsRoutes.js",
      "routes/practiceRoutes.js",
      "routes/publicGrammarContentBankRoutes.js",
      "routes/statusRoutes.js"
    ],
    "services": [
      "services/ai-orchestrator/auditLogService.js",
      "services/ai-orchestrator/capabilityRegistryService.js",
      "services/ai-orchestrator/confirmationService.js",
      "services/ai-orchestrator/dangerousApprovalAuditService.js",
      "services/ai-orchestrator/dangerousApprovalTokenService.js",
      "services/ai-orchestrator/executionPolicyService.js",
      "services/ai-orchestrator/openaiClient.js",
      "services/ai-orchestrator/orchestratorService.js",
      "services/ai-orchestrator/providerConfig.js",
      "services/ai-orchestrator/toolsRegistry.js",
      "services/aiContentHooks.js",
      "services/aiGrammarEngineService.js",
      "services/cache/redisCache.js",
      "services/cefrDifficultyService.js",
      "services/collocationEngineService.js",
      "services/collocationService.js",
      "services/contentBankAuditService.js",
      "services/contentBankSchema.js",
      "services/contentBankSentencesService.js",
      "services/contentBankSmartInsertService.js",
      "services/contentBankWordsService.js",
      "services/contextLoader.js",
      "services/conversationEngineService.js",
      "services/copilotAttachmentService.js",
      "services/difficultyEngineService.js",
      "services/docsIndexerService.js",
      "services/docsManifestService.js",
      "services/docsSearchService.js",
      "services/envValidationService.js",
      "services/exerciseGenerationService.js",
      "services/featureFlagService.js",
      "services/imageGenerationService.js",
      "services/languageSignalService.js",
      "services/lexicalGraphGateService.js",
      "services/lexicalRoleEngineService.js",
      "services/lexicalSeedService.js",
      "services/lexicalUnlockGraphService.js",
      "services/morphologicalEvaluationService.js",
      "services/morphologicalEvaluationService.test.js",
      "services/morphologyGenerationService.js",
      "services/morphologyService.js",
      "services/observability/context/coverageHealthSurface.js",
      "services/observability/context/dependencyGraphSurface.js",
      "services/observability/context/incidentSurface.js",
      "services/observability/context/inventorySurface.js",
      "services/observability/context/legacyCandidateSurface.js",
      "services/observability/context/remediationSurface.js",
      "services/observability/context/responseEnvelope.js",
      "services/observability/governance/executionIntentControlAuditRecord.js",
      "services/observability/governance/executionIntentEntrySurface.js",
      "services/observability/governance/executionIntentTransitionGuard.js",
      "services/observability/governance/governanceDecisionAuditRecord.js",
      "services/observability/governance/policyGateEvaluator.js",
      "services/observability/governance/retirementCanaryExecutor.js",
      "services/observability/governance/retirementExecutionPreflight.js",
      "services/observability/governance/retirementExpansionExecutor.js",
      "services/observability/governance/retirementRollbackController.js",
      "services/observability/graph/contracts.js",
      "services/observability/graph/idFactory.js",
      "services/observability/graph/repository.js",
      "services/observability/graph/runGraphDiscovery.js",
      "services/observability/incidents/ingestIncidentsBaseline.js",
      "services/observability/incidents/knownLimitationDisposition.js",
      "services/observability/incidents/repository.js",
      "services/observability/incidents/verificationIncidentClassification.js",
      "services/observability/remediations/buildRecommendationsBaseline.js",
      "services/observability/remediations/repository.js",
      "services/observability/verification/contractScope.js",
      "services/observability/verification/fixtureStateBroker.js",
      "services/observability/verification/personaAuthBroker.js",
      "services/observability/verification/repository.js",
      "services/observability/verification/runActiveVerificationBaseline.js",
      "services/observability/verification/runCoverageHealthSnapshot.js",
      "services/observability/verification/runtimeSchemaTruth.js",
      "services/observabilityService.js",
      "services/placementEngineService.js",
      "services/pronunciationService.js",
      "services/queues/wordQueue.js",
      "services/redisClient.js",
      "services/remediationService.js",
      "services/rubricEngineService.js",
      "services/sandboxExecutionService.js",
      "services/schemaHealthService.js",
      "services/schemaSnapshot.js",
      "services/semanticConstraintsEngineService.js",
      "services/semanticGraphService.js",
      "services/sentenceConstructionEngineService.js",
      "services/storageSignedUrlService.js",
      "services/studentLemmaProgressEngineService.js",
      "services/supabaseClient.js",
      "services/syntaxService.js",
      "services/systemArchitectureGraph.js",
      "services/systemErrorsService.js",
      "services/systemEventsService.js",
      "services/systemFeatureRegistry.js",
      "services/systemIntegrityService.js",
      "services/taxonomyLoaderService.js",
      "services/tts/providers/elevenlabsProvider.js",
      "services/tts/providers/index.js",
      "services/tts/providers/mockProvider.js",
      "services/tts/providers/openaiProvider.js",
      "services/tts/ttsQueue.js",
      "services/tts/ttsService.js",
      "services/tts/ttsWorkerProcessor.js",
      "services/ttsService.js",
      "services/vocabularyDifficultyService.js",
      "services/vocabularyDifficultyService.test.js",
      "services/wordEnrichmentService.js"
    ],
    "sql_files": [
      "sql/0001_user_provision.sql",
      "sql/0002_views_if_missing.sql",
      "sql/0004_enrollment.sql",
      "sql/0005_dashboard_metrics.sql",
      "sql/0006_content_engine.sql",
      "sql/0007_content_bank_consolidation.sql",
      "sql/0008_drop_legacy_content_model.sql",
      "sql/0009_content_bank_hardening.sql",
      "sql/0010_morphological_engine.sql",
      "sql/0011_schema_snapshot_view.sql",
      "sql/0012_grammar_content_bank.sql",
      "sql/0013_content_bank_relationship_hardening.sql",
      "sql/0013_tts_assets.sql",
      "sql/0014_ai_action_logs.sql",
      "sql/0014_sentences_admin_v2.sql",
      "sql/0015_word_senses.sql",
      "sql/0016_verb_conjugation.sql",
      "sql/0017_word_revision_audit.sql",
      "sql/0018_global_linguistic_engine.sql",
      "sql/0019_ai_conversation_summary.sql",
      "sql/0020_ai_conversations.sql",
      "sql/0021_copilot_conversation_indexes.sql",
      "sql/0022_ai_conversations_hardening.sql",
      "sql/0022_tts_elevenlabs_content.sql",
      "sql/0023_spok_sql_guardrails.sql",
      "sql/0024_sql_audit_execution_policy.sql",
      "sql/0025_sql_audit_dangerous_approval.sql",
      "sql/0026_word_sentence_curriculum_links.sql",
      "sql/0027_course_content_and_app_cms.sql",
      "sql/0027_tts_themes_manual_audio.sql",
      "sql/0029_course_scoped_content_bank.sql",
      "sql/0030_courses_language_pair_model.sql",
      "sql/0031_courses_constraints.sql",
      "sql/0032_vocabulary_chunks.sql",
      "sql/0033_vocabulary_themes_multi_select.sql",
      "sql/0034_fix_themes_migration.sql",
      "sql/0035_system_errors_registry.sql",
      "sql/0036_observability_content_indexes.sql",
      "sql/0037_system_events.sql",
      "sql/0038_observability_index_hardening.sql",
      "sql/0039_docs_index.sql",
      "sql/0040_performance_integrity_hardening.sql",
      "sql/0041_system_error_groups.sql",
      "sql/0042_system_error_statuses.sql",
      "sql/0043_course_structure_relations_guardrails.sql",
      "sql/0044_elevenlabs_tts_final.sql",
      "sql/0045_elevenlabs_voice_language_locale_cache.sql",
      "sql/0046_voice_languages_unique_columns.sql",
      "sql/0047_tts_assets_library_schema.sql",
      "sql/0048_fix_tts_assets_schema.sql",
      "sql/0049_taxonomy_lexical_knowledge_graph_engine.sql",
      "sql/0049_tts_assets_linguistic_integration.sql",
      "sql/0050_taxonomy_expansion_and_integrity.sql",
      "sql/0051_universal_taxonomy_enforcement.sql",
      "sql/0052_manual_dataset_cleanup.sql",
      "sql/0053_route_latency_index_hardening.sql",
      "sql/0054_vocabulary_taxonomy_ui_support.sql",
      "sql/0055_language_scoped_content_bank.sql",
      "sql/0056_hierarchical_curriculum_taxonomy.sql",
      "sql/0057_vocabulary_difficulty_score.sql",
      "sql/0058_language_scoped_grammar_topics.sql",
      "sql/0059_lexical_unlock_graph.sql",
      "sql/0060_ai_grammar_engine.sql",
      "sql/0061_conversation_infrastructure.sql",
      "sql/0062_language_engine_expansion.sql",
      "sql/0063_morphology_engine.sql",
      "sql/0064_syntax_engine.sql",
      "sql/0065_semantic_graph_engine.sql",
      "sql/0066_learner_error_engine.sql",
      "sql/0067_collocation_engine.sql",
      "sql/0068_cefr_difficulty_engine.sql",
      "sql/0069_pronunciation_engine.sql",
      "sql/0070_schema_cleanup_soft_legacy.sql",
      "sql/0071_tts_assets_taxonomy_only.sql",
      "sql/0072_taxonomy_categories_backfill.sql",
      "sql/0073_english_grammar_topics_classification_seed.sql",
      "sql/0074_observability_graph_phase1.sql",
      "sql/0075_observability_phase2_summaries.sql",
      "sql/0076_observability_phase2_verification_results.sql",
      "sql/0077_observability_verification_execution_grouping.sql",
      "sql/0078_observability_reconciliation_run_id_index.sql",
      "sql/0079_observability_incidents_phase3.sql",
      "sql/0080_observability_remediations_phase4.sql",
      "sql/0081_observability_remediations_ordering_indexes.sql",
      "sql/0082_observability_remediations_p4s1_lifecycle_metadata.sql",
      "sql/0083_observability_remediations_created_at_index.sql",
      "sql/9000_schema_tables.sql",
      "sql/9001_schema_columns.sql"
    ]
  }
}
