# Graph Report - /Users/etlab/projects/maxai-ops  (2026-08-23)

## Corpus Check
- 531 files · ~932,362 words
- Verdict: corpus is large enough that graph structure adds value.

## Summary
- 5299 nodes · 13630 edges · 61 communities detected
- Extraction: 66% EXTRACTED · 34% INFERRED · 0% AMBIGUOUS · INFERRED: 4615 edges (avg confidence: 0.77)
- Token cost: 0 input · 0 output

## Community Hubs (Navigation)
- [[_COMMUNITY_Community 0|Community 0]]
- [[_COMMUNITY_Community 1|Community 1]]
- [[_COMMUNITY_Community 2|Community 2]]
- [[_COMMUNITY_Community 3|Community 3]]
- [[_COMMUNITY_Community 4|Community 4]]
- [[_COMMUNITY_Community 5|Community 5]]
- [[_COMMUNITY_Community 6|Community 6]]
- [[_COMMUNITY_Community 7|Community 7]]
- [[_COMMUNITY_Community 8|Community 8]]
- [[_COMMUNITY_Community 9|Community 9]]
- [[_COMMUNITY_Community 10|Community 10]]
- [[_COMMUNITY_Community 11|Community 11]]
- [[_COMMUNITY_Community 12|Community 12]]
- [[_COMMUNITY_Community 13|Community 13]]
- [[_COMMUNITY_Community 14|Community 14]]
- [[_COMMUNITY_Community 15|Community 15]]
- [[_COMMUNITY_Community 16|Community 16]]
- [[_COMMUNITY_Community 17|Community 17]]
- [[_COMMUNITY_Community 18|Community 18]]
- [[_COMMUNITY_Community 19|Community 19]]
- [[_COMMUNITY_Community 20|Community 20]]
- [[_COMMUNITY_Community 21|Community 21]]
- [[_COMMUNITY_Community 22|Community 22]]
- [[_COMMUNITY_Community 23|Community 23]]
- [[_COMMUNITY_Community 24|Community 24]]
- [[_COMMUNITY_Community 25|Community 25]]
- [[_COMMUNITY_Community 26|Community 26]]
- [[_COMMUNITY_Community 27|Community 27]]
- [[_COMMUNITY_Community 28|Community 28]]
- [[_COMMUNITY_Community 29|Community 29]]
- [[_COMMUNITY_Community 30|Community 30]]
- [[_COMMUNITY_Community 31|Community 31]]
- [[_COMMUNITY_Community 32|Community 32]]
- [[_COMMUNITY_Community 33|Community 33]]
- [[_COMMUNITY_Community 34|Community 34]]
- [[_COMMUNITY_Community 35|Community 35]]
- [[_COMMUNITY_Community 36|Community 36]]
- [[_COMMUNITY_Community 37|Community 37]]
- [[_COMMUNITY_Community 38|Community 38]]
- [[_COMMUNITY_Community 39|Community 39]]
- [[_COMMUNITY_Community 40|Community 40]]
- [[_COMMUNITY_Community 41|Community 41]]
- [[_COMMUNITY_Community 42|Community 42]]
- [[_COMMUNITY_Community 43|Community 43]]
- [[_COMMUNITY_Community 44|Community 44]]
- [[_COMMUNITY_Community 45|Community 45]]
- [[_COMMUNITY_Community 46|Community 46]]
- [[_COMMUNITY_Community 47|Community 47]]
- [[_COMMUNITY_Community 48|Community 48]]
- [[_COMMUNITY_Community 49|Community 49]]
- [[_COMMUNITY_Community 50|Community 50]]
- [[_COMMUNITY_Community 51|Community 51]]
- [[_COMMUNITY_Community 52|Community 52]]
- [[_COMMUNITY_Community 53|Community 53]]
- [[_COMMUNITY_Community 54|Community 54]]
- [[_COMMUNITY_Community 55|Community 55]]
- [[_COMMUNITY_Community 56|Community 56]]
- [[_COMMUNITY_Community 57|Community 57]]
- [[_COMMUNITY_Community 58|Community 58]]
- [[_COMMUNITY_Community 59|Community 59]]
- [[_COMMUNITY_Community 60|Community 60]]

## God Nodes (most connected - your core abstractions)
1. `calculate_score()` - 296 edges
2. `connect()` - 79 edges
3. `close()` - 73 edges
4. `PublicError` - 60 edges
5. `sha256()` - 57 edges
6. `Settings` - 53 edges
7. `run()` - 53 edges
8. `load_manifest()` - 50 edges
9. `CoreUpgradeError` - 45 edges
10. `template_register()` - 43 edges

## Surprising Connections (you probably didn't know these)
- `test_wrapper_help_is_available()` --calls--> `run()`  [INFERRED]
  /Users/etlab/projects/maxai-ops/deploy/tenant-onboard/test_cli.py → /Users/etlab/projects/maxai-ops/hermes/plugins/academy_ops/server.py
- `run()` --calls--> `test_e2e_run_meets_the_plan_acceptance_criteria()`  [INFERRED]
  /Users/etlab/projects/maxai-ops/hermes/plugins/academy_ops/server.py → /Users/etlab/projects/maxai-ops/experiments/schema-vs-mcp-20260728T194216Z/tests/test_life_schema.py
- `students()` --calls--> `load_students()`  [INFERRED]
  /Users/etlab/projects/maxai-ops/experiments/schema-vs-mcp-20260728T194216Z/src/formula_spec/test_formula_spec.py → /Users/etlab/projects/maxai-ops/experiments/schema-vs-mcp-20260728T194216Z/src/formula_spec/compare.py
- `register()` --calls--> `test_life_record_tools_register()`  [INFERRED]
  /Users/etlab/projects/maxai-ops/hermes/plugins/life_record/__init__.py → /Users/etlab/projects/maxai-ops/hermes/plugins/tests/test_life_record_plugin.py
- `register()` --calls--> `plan_commentary_aux_defaults()`  [INFERRED]
  /Users/etlab/projects/maxai-ops/hermes/plugins/life_record/__init__.py → /Users/etlab/projects/maxai-ops/hermes/plugins/academy_ops/commentary_config.py

## Communities

### Community 0 - "Community 0"
Cohesion: 0.01
Nodes (536): _absence_range_matches(), attendance_absence_days(), _first_nonzero(), normalize_attendance(), _number_or_zero(), _parse_special_note_counts(), Attendance score helpers for official 수시 calculations., Parse notes like '결석:질병 . / 미인정 9 / 기타 . 조퇴:질병 14 / 미인정 9'. (+528 more)

### Community 1 - "Community 1"
Cohesion: 0.01
Nodes (392): close(), FakeConnection, _achievement_ratios(), load_students(), central 스냅샷(읽기 전용)에서 학생별 transcript 를 만든다. 성취도별 비율까지 조인한다., (학년, 학기, 과목) → 성취도별 비율 map. 진로선택 환산등급 산식의 입력이다., _db_path(), _handler() (+384 more)

### Community 2 - "Community 2"
Cohesion: 0.01
Nodes (359): academy_schedules_for_range(), AcademyCalendarClient, _attendance_slot_rows(), _consultation_row(), consultation_schedules_for_range(), _contains_trial_marker(), _count_status(), _days() (+351 more)

### Community 3 - "Community 3"
Cohesion: 0.01
Nodes (309): AcademyApiClient, AcademyApiError, _conflict_message(), Authenticated PACA/Peak API client for academy operations., Raised when PACA/Peak data cannot be fetched safely., API 지도(map call) 전용 generic 호출 — 화이트리스트 검증은 호출자 책임., _student_rows(), _to_int() (+301 more)

### Community 4 - "Community 4"
Cohesion: 0.02
Nodes (284): AdapterDriver, AdapterRegistrationError, build_payload(), _label(), load_driver(), register_adapters(), sha256(), _add_connection_args() (+276 more)

### Community 5 - "Community 5"
Cohesion: 0.02
Nodes (152): CalculationAdapter, load_calculation_module(), CapabilityAdapter, FormulaShadowAdapter, PracticalAdapter, AuditStore, BackendClient, _decode_command_result() (+144 more)

### Community 6 - "Community 6"
Cohesion: 0.03
Nodes (134): main(), patch(), atomic_write(), Atomic private-file writes shared by image artifact services., _account_id(), build_codex_headers(), _candidate_tokens(), CodexAuthError (+126 more)

### Community 7 - "Community 7"
Cohesion: 0.02
Nodes (138): calc_anyang_2027(), _evidence(), _group(), _include_semester(), _practical_score(), 안양대 공식 모집표에 없는 잔존 행 차단 및 스포츠과학과 산출., _record_score(), _round2() (+130 more)

### Community 8 - "Community 8"
Cohesion: 0.02
Nodes (171): _absence_note_html(), _absence_notes(), _attendance_rows(), _brand_html(), _calendar_cell(), _calendar_days(), calendar_image_height(), _display_summary() (+163 more)

### Community 9 - "Community 9"
Cohesion: 0.03
Nodes (122): AcademyLoginResult, complete_login(), _complete_remote_pending(), consume_pending_login(), create_login_link(), has_pending_login_for_user(), load_pending_logins(), LoginLink (+114 more)

### Community 10 - "Community 10"
Cohesion: 0.02
Nodes (127): normalize_ratio_map(), parse_ratio_text(), Parse and normalize 성취도별 분포비율 (A/B/C student %)., A(58.0) B(25.9) C(16.0)' -> {'A': 58.0, 'B': 25.9, 'C': 16.0}., Accept dict-like A/B/C maps or ratio text., Pull ratios from a grade dict or its stored raw_row JSON payload., ratios_from_grade_row(), AdapterResult (+119 more)

### Community 11 - "Community 11"
Cohesion: 0.03
Nodes (137): main(), analyze_file(), analyze_plugins(), first_uni(), main(), analyze_file(), analyze_plugins(), deep_check_priority() (+129 more)

### Community 12 - "Community 12"
Cohesion: 0.03
Nodes (132): codex_provider(), _activity_notes(), _after_label(), _behavior_notes(), _clean(), _dedupe_notes(), empty_extraction(), _extract_attendance() (+124 more)

### Community 13 - "Community 13"
Cohesion: 0.03
Nodes (115): _default_resolver(), commentary_fallback_models(), commentary_model(), critical_model(), deep_model(), _env(), _fallbacks(), Codex model role policy for fast academy operations. (+107 more)

### Community 14 - "Community 14"
Cohesion: 0.03
Nodes (120): all_confirmed(), _key(), _majority_threshold(), needs_recheck_fields(), _norm_obj(), _norm_scalar(), Self-consistency reconciliation across multiple vision extractions.  A field/row, Full reconciliation of N extraction results into one consensus structure. (+112 more)

### Community 15 - "Community 15"
Cohesion: 0.03
Nodes (100): _academy_schedule_slots(), _class_day_slot(), _class_days(), _date_keys(), _day_row(), _days(), _has_scheduled_students(), _join_slots() (+92 more)

### Community 16 - "Community 16"
Cohesion: 0.04
Nodes (64): run_core_command(), locked_sync_command(), append_progress(), normalize_exec_start(), restore_gateway_unit(), validate_gateway_command(), validate_gateway_exec_contract(), validate_gateway_unit_file() (+56 more)

### Community 17 - "Community 17"
Cohesion: 0.04
Nodes (86): handleBasicRead(), handleRecordTypes(), handleResolveStudent(), handleStudents(), handleSummary(), normalizeCounts(), createPeakBridgeReadHandler(), startPeakBridgeReadAdapter() (+78 more)

### Community 18 - "Community 18"
Cohesion: 0.04
Nodes (100): productionDependencies(), run(), _academy_commands(), _academy_resources(), _academy_tools(), catalog_drift(), _formula_tools(), _legacy_inventory() (+92 more)

### Community 19 - "Community 19"
Cohesion: 0.03
Nodes (96): _code_size(), compare(), _delta(), main(), _rank_grade(), iterations 회 실행 후 (마지막 결과, 회당 중앙값 ms)., hook 계열별 재사용 횟수. 2개 학교 이상이 쓰는 계열이 schema v2 슬롯 후보다., 감사 대상 코드량: 학교별 플러그인 합계 vs 공용 계산기 + 선언형 인스턴스. (+88 more)

### Community 20 - "Community 20"
Cohesion: 0.05
Nodes (83): _append_profile(), build_faculty_research(), bundle_sources_match_university(), _clean_korean_name(), _clean_name(), _contains_any(), _english_variants(), extract_faculty_profiles() (+75 more)

### Community 21 - "Community 21"
Cohesion: 0.06
Nodes (44): _http_json(), _normalize_gender(), _normalized(), PeakBridgeClient, _positive_int(), _prefer_single_active(), ProductionDependencies, PDF / NEIS MHTML → LifeRecordSchema v1 instance (Approach A).  One deterministic (+36 more)

### Community 22 - "Community 22"
Cohesion: 0.04
Nodes (49): callMcp(), extractObjectLiteral(), listen(), readResourceCatalog(), adapterReadQuery(), adapterReadResource(), applyProjection(), bridgeModule() (+41 more)

### Community 23 - "Community 23"
Cohesion: 0.07
Nodes (44): cutlineError(), cutlineErrorProjection(), CutlinePublicError, candidateStatement(), identityKey(), identityText(), normalizedCut(), normalizeIdRows() (+36 more)

### Community 24 - "Community 24"
Cohesion: 0.08
Nodes (24): BriefingDependencies, _cutline_for(), _display_number(), _engine_events_to_applied(), _event_detail_line(), _event_raw_text(), _first_number(), _normalized() (+16 more)

### Community 25 - "Community 25"
Cohesion: 0.09
Nodes (39): apply_director_response_policy(), audit_director_response_policy(), _active_release(), _last_json(), _layout(), run_director_response_command(), _runtime_probe(), DirectorResponseError (+31 more)

### Community 26 - "Community 26"
Cohesion: 0.08
Nodes (41): build_report(), collect_tenant_report(), _journal_messages(), load_window_start(), main(), _probe_status(), save_window_end(), _status_line() (+33 more)

### Community 27 - "Community 27"
Cohesion: 0.1
Nodes (17): academyReadDescription(), academyReadResources(), academyReadSchema(), bridge(), buildJungsiConvertPath(), buildJungsiRecommendPath(), buildReadPath(), calendarFailure() (+9 more)

### Community 28 - "Community 28"
Cohesion: 0.14
Nodes (29): _adaptive_list_column(), _as_number(), _best_keys(), _blank_identity_ratio(), _colgroup(), _column_average(), estimate_report_height(), _first_display_column() (+21 more)

### Community 29 - "Community 29"
Cohesion: 0.17
Nodes (18): activate_scope(), FixedScope, Fail-closed tenant scope for the life-record stdio MCP., Create private storage and pin shared plugin state before import., Resolve one tenant and reject cross-tenant or untrusted paths., _require_owned_regular_path(), resolve_fixed_scope(), _layout() (+10 more)

### Community 30 - "Community 30"
Cohesion: 0.19
Nodes (20): apply_tenant(), _atomic_write(), _backup(), _builtin_image_contract(), _entry_bounds(), _indent(), main(), MigrationError (+12 more)

### Community 31 - "Community 31"
Cohesion: 0.19
Nodes (20): _achievement_letter(), calc_hoseo_2027(), _career_grade(), _career_ratio(), _evidence(), _group(), _include_semester(), _is_career_course() (+12 more)

### Community 32 - "Community 32"
Cohesion: 0.2
Nodes (14): Which file backed each extractor — recorded in the report for auditability., source_versions(), _build_report(), _cell(), _duplicate_loss(), _field_accuracy(), _format_counts(), _markdown() (+6 more)

### Community 33 - "Community 33"
Cohesion: 0.29
Nodes (10): load_runtime_config(), _loopback_bridge_url(), Trusted runtime configuration for the academy Susi capability MCP., Load root-managed capability code and a loopback-only Bridge endpoint., RuntimeConfig, _trusted_capability_root(), _capability_layout(), test_load_runtime_config_accepts_trusted_release_and_loopback() (+2 more)

### Community 34 - "Community 34"
Cohesion: 0.25
Nodes (9): _event_names(), _has_analysis_text(), _payload_value(), Display helpers for practical recommendation events., Normalize practical events for recommendation display., recommendation_event_info(), Recommendation event display normalization tests., test_event_info_keeps_normal_practical_events() (+1 more)

### Community 35 - "Community 35"
Cohesion: 0.35
Nodes (9): _id_text(), _list_payload(), _list_value(), plan_lookup_for_day(), PlanLookupClient, Read-only Peak daily plan lookup., _safe_exercise(), _safe_plan() (+1 more)

### Community 36 - "Community 36"
Cohesion: 0.31
Nodes (5): build_planning_png(), Planning-only image preparation for vision requests., Return a bounded PNG copy without changing the full-resolution source., PlanningImageTests, png_bytes()

### Community 37 - "Community 37"
Cohesion: 0.28
Nodes (5): activate_scope(), FixedOpsScope, Fail-closed tenant scope for life-record central operations., _require_owned_path(), resolve_fixed_scope()

### Community 38 - "Community 38"
Cohesion: 0.36
Nodes (7): imports_by_module(), main(), module_to_path(), Names a module exposes: defs, classes, assignments and re-exports., plugins.life_record.repository -> <release>/plugins/life_record/repository.py, Collect `from <pkg>... import a, b` for packages the release provides., top_level_names()

### Community 39 - "Community 39"
Cohesion: 0.38
Nodes (5): _component_root(), _purge_component_modules(), pytest_collectstart(), Put the experiment ``src`` on sys.path — the harness is not an installed package, Unload one flat MCP package before pytest imports the next one.

### Community 40 - "Community 40"
Cohesion: 0.33
Nodes (1): EtProjectStructureTest

### Community 41 - "Community 41"
Cohesion: 0.4
Nodes (0): 

### Community 42 - "Community 42"
Cohesion: 0.5
Nodes (2): callMcp(), listMcpTools()

### Community 43 - "Community 43"
Cohesion: 0.67
Nodes (3): main(), patch_mcp_messages(), Replace basename-only file hint with full path + MEDIA line.

### Community 44 - "Community 44"
Cohesion: 0.5
Nodes (3): academy_preflight_decision(), Optional deterministic preflight for academy natural routing., Defer natural PACA/Peak routing to the semantic router.      Korean natural-lang

### Community 45 - "Community 45"
Cohesion: 0.5
Nodes (1): Academy request rewrite guard.  Natural-language PACA/Peak requests must stay in

### Community 46 - "Community 46"
Cohesion: 0.5
Nodes (3): Periodic warm-up for the codex router (intent-classifier) connection.  The codex, Fire one tiny router-model call to keep the codex connection warm.      Returns, warm_router_connection()

### Community 47 - "Community 47"
Cohesion: 1.0
Nodes (0): 

### Community 48 - "Community 48"
Cohesion: 1.0
Nodes (0): 

### Community 49 - "Community 49"
Cohesion: 1.0
Nodes (0): 

### Community 50 - "Community 50"
Cohesion: 1.0
Nodes (0): 

### Community 51 - "Community 51"
Cohesion: 1.0
Nodes (0): 

### Community 52 - "Community 52"
Cohesion: 1.0
Nodes (0): 

### Community 53 - "Community 53"
Cohesion: 1.0
Nodes (0): 

### Community 54 - "Community 54"
Cohesion: 1.0
Nodes (0): 

### Community 55 - "Community 55"
Cohesion: 1.0
Nodes (0): 

### Community 56 - "Community 56"
Cohesion: 1.0
Nodes (0): 

### Community 57 - "Community 57"
Cohesion: 1.0
Nodes (0): 

### Community 58 - "Community 58"
Cohesion: 1.0
Nodes (0): 

### Community 59 - "Community 59"
Cohesion: 1.0
Nodes (0): 

### Community 60 - "Community 60"
Cohesion: 1.0
Nodes (0): 

## Knowledge Gaps
- **536 isolated node(s):** `Unload one flat MCP package before pytest imports the next one.`, `Manual deep checks for known golden / recently patched schools.`, `청운대학교 2027 수시 — 스포츠과학과 일반전형(실기).  근거: 2027학년도 청운대학교 수시 모집요강 - 일반전형 스포츠과학과: 교과 38`, `Trusted runtime configuration for the academy Susi capability MCP.`, `Load root-managed capability code and a loopback-only Bridge endpoint.` (+531 more)
  These have ≤1 connection - possible missing edges or undocumented components.
- **Thin community `Community 47`** (2 nodes): `invoke()`, `bridge-allowlist.test.js`
  Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 48`** (2 nodes): `renderBoundSql()`, `class-assignments.test.js`
  Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 49`** (2 nodes): `test_ilsan_skill_candidates_use_the_verified_full_sync_lifecycle()`, `test_school_gpa_skill_contract.py`
  Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 50`** (2 nodes): `source()`, `deployment-architecture.test.js`
  Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 51`** (2 nodes): `tenantEnv()`, `susi-adapter-registry.test.js`
  Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 52`** (1 nodes): `class-plans.test.js`
  Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 53`** (1 nodes): `regression.test.js`
  Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 54`** (1 nodes): `training.test.js`
  Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 55`** (1 nodes): `validation.test.js`
  Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 56`** (1 nodes): `basic-routes.test.js`
  Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 57`** (1 nodes): `cohort-routes.test.js`
  Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 58`** (1 nodes): `student-records.test.js`
  Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 59`** (1 nodes): `constants.js`
  Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 60`** (1 nodes): `conftest.py`
  Too small to be a meaningful cluster - may be noise or needs more connections extracted.

## Suggested Questions
_Questions this graph is uniquely positioned to answer:_

- **Why does `calculate_score()` connect `Community 0` to `Community 1`, `Community 2`?**
  _High betweenness centrality (0.189) - this node is a cross-community bridge._
- **Why does `ingest_life_record()` connect `Community 12` to `Community 1`, `Community 2`, `Community 11`, `Community 14`?**
  _High betweenness centrality (0.032) - this node is a cross-community bridge._
- **Why does `PublicError` connect `Community 5` to `Community 1`, `Community 2`, `Community 6`, `Community 12`, `Community 18`?**
  _High betweenness centrality (0.031) - this node is a cross-community bridge._
- **Are the 290 inferred relationships involving `calculate_score()` (e.g. with `normalize_attendance()` and `_connect()`) actually correct?**
  _`calculate_score()` has 290 INFERRED edges - model-reasoned connections that need verification._
- **Are the 68 inferred relationships involving `connect()` (e.g. with `life_schema_diff_central()` and `set_student_identity()`) actually correct?**
  _`connect()` has 68 INFERRED edges - model-reasoned connections that need verification._
- **Are the 71 inferred relationships involving `close()` (e.g. with `life_schema_diff_central()` and `delete_central_student()`) actually correct?**
  _`close()` has 71 INFERRED edges - model-reasoned connections that need verification._
- **Are the 56 inferred relationships involving `PublicError` (e.g. with `FakeCapability` and `FakeCalculation`) actually correct?**
  _`PublicError` has 56 INFERRED edges - model-reasoned connections that need verification._