# Gotchas

## God Nodes (high connectivity)

These files have the most connections. Changes here have high blast radius.

- `kernel/string.c` (score: 181.30, imported by 90 files)
- `progs/doomgeneric/doomtype.h` (score: 101.40, imported by 50 files)
- `progs/doomgeneric/doomdef.h` (score: 90.90, imported by 41 files)
- `kernel/syscalls.c` (score: 90.30)
- `progs/doomgeneric/doomstat.h` (score: 84.80, imported by 34 files)
- `progs/doomgeneric/z_zone.h` (score: 81.30, imported by 40 files)
- `progs/doomgeneric/i_system.h` (score: 81.20, imported by 38 files)
- `progs/doomgeneric/d_main.c` (score: 80.90)
- `progs/minios_abi.h` (score: 79.60, imported by 32 files)
- `headers/sched.h` (score: 75.80, imported by 28 files)

## Blast Radius (change impact)

Editing these files can break the listed number of dependents. Run their tests after any change.

- `kernel/string.c` -- 50 direct, 90 total dependents
- `progs/minios_abi.h` -- 32 direct, 63 total dependents
- `progs/doomgeneric/m_fixed.h` -- 9 direct, 59 total dependents
- `progs/doomgeneric/v_patch.h` -- 2 direct, 54 total dependents
- `progs/doomgeneric/d_ticcmd.h` -- 6 direct, 53 total dependents
- `progs/doomgeneric/i_video.h` -- 18 direct, 53 total dependents
- `progs/doomgeneric/sha1.h` -- 5 direct, 52 total dependents
- `headers/vma.h` -- 8 direct, 51 total dependents
- `progs/doomgeneric/d_items.h` -- 2 direct, 51 total dependents
- `progs/doomgeneric/d_mode.h` -- 6 direct, 51 total dependents

## Hotspots (complexity + centrality)

- `kernel/syscalls.c` -- complexity: 0.6, centrality: 0.7, combined: 0.7
- `kernel/string.c` -- complexity: 0.0, centrality: 1.0, combined: 0.6
- `progs/doomgeneric/d_main.c` -- complexity: 0.1, centrality: 0.9, combined: 0.6
- `kernel/shell.c` -- complexity: 0.2, centrality: 0.7, combined: 0.5
- `progs/doomgeneric/g_game.c` -- complexity: 0.1, centrality: 0.8, combined: 0.5
- `headers/kernel.h` -- complexity: 1.0, centrality: 0.2, combined: 0.5
- `progs/doomgeneric/st_stuff.c` -- complexity: 0.3, centrality: 0.5, combined: 0.4
- `kernel/vga_fb.c` -- complexity: 0.5, centrality: 0.4, combined: 0.4
- `kernel/sched.c` -- complexity: 0.3, centrality: 0.4, combined: 0.4
- `progs/doomgeneric/m_menu.c` -- complexity: 0.2, centrality: 0.5, combined: 0.4

## Dependency Cycles

Circular dependencies. Refactor to break the cycle.

- `progs/doomgeneric/r_data.h` -> `progs/doomgeneric/r_state.h` -> `progs/doomgeneric/r_data.h`

## Layer Violations

- `tests/test_httpd.c` (testing) -> `headers/httpd.h` (presentation): testing must not import presentation
- `tests/test_wm.c` (testing) -> `headers/wm_render.h` (presentation): testing must not import presentation
- `tests/test_wm.c` (testing) -> `headers/wm_layout.h` (presentation): testing must not import presentation

## Dataflow Issues (INFERRED, review each lead)

- `boot/uefi_stub.c:518` `efi_main` [UNCHECKED_ALLOC] `rc`: Result of allocator stored in `rc` is never checked against NULL.
- `drivers/sb16.c:259` `sb16_pump` [DEAD_STORE] `dst`: `dst` assigned at line 259 but never read afterwards.
- `drivers/sb16.c:531` `sb16_init` [DEAD_STORE] `major`: `major` assigned at line 531 but never read afterwards.
- `drivers/virtio_blk.c:169` `vblk_desc` [DEAD_STORE] `d`: `d` assigned at line 169 but never read afterwards.
- `drivers/virtio_blk.c:189` `vblk_avail_push` [DEAD_STORE] `a`: `a` assigned at line 189 but never read afterwards.
- `drivers/virtio_net.c:146` `vnet_desc` [DEAD_STORE] `d`: `d` assigned at line 146 but never read afterwards.
- `fs/kfile.c:103` `kpipe_pair` [DEAD_STORE] `ref`: `ref` assigned at line 103 but never read afterwards.
- `kernel/loader.c:932` `ldso_bind_into` [UNINIT_USE] `symname`: `symname` may be read before initialization (declared line 896).
- `kernel/loader.c:1278` `load_exec_elf` [DEAD_STORE] `base`: `base` assigned at line 1278 but never read afterwards.
- `kernel/loader.c:1283` `load_exec_elf` [DEAD_STORE] `max_end`: `max_end` assigned at line 1283 but never read afterwards.
