# Canonical list of builtin server modules (#620).
#
# This file replaces the compile-time DefaultsModule registry with a
# data-driven manifest. Bootstrap reads this file and loads modules
# either statically (via feature flag) or dynamically (via .so files).
#
# Fields:
#   id       - Module identifier (matches Module::id())
#   tier     - Initialization tier (1 = service, 2 = utility, 3 = policy, 4 = feature)
#   library  - Shared library name (without lib prefix or .so suffix)
#
# Tier ordering provides a hint for canonical init order. Within a tier,
# modules are listed in declaration order. The depgraph resolver determines
# actual initialization order based on declared dependencies.

[[modules]]
id = "undo"
tier = 1
library = "reovim_module_undo"

[[modules]]
id = "buffer-simple"
tier = 1
library = "reovim_module_buffer_simple"

[[modules]]
id = "search"
tier = 1
library = "reovim_module_search"

[[modules]]
id = "scratch-buffer"
tier = 1
library = "reovim_module_scratch_buffer"

[[modules]]
id = "vfs-local"
tier = 1
library = "reovim_module_vfs_local"

[[modules]]
id = "clipboard"
tier = 1
library = "reovim_module_clipboard"

[[modules]]
id = "codec-utf8"
tier = 1
library = "reovim_module_codec_utf8"

[[modules]]
id = "codec-hex"
tier = 1
library = "reovim_module_codec_hex"

[[modules]]
id = "codec-cjk"
tier = 1
library = "reovim_module_codec_cjk"

[[modules]]
id = "codec-legacy"
tier = 1
library = "reovim_module_codec_legacy"

[[modules]]
id = "codec-pdf"
tier = 1
library = "reovim_module_codec_pdf"

[[modules]]
id = "codec-binary-struct"
tier = 1
library = "reovim_module_codec_binary_struct"

[[modules]]
id = "codec-csv"
tier = 1
library = "reovim_module_codec_csv"

[[modules]]
id = "layout"
tier = 1
library = "reovim_module_layout"

[[modules]]
id = "keymap"
tier = 2
library = "reovim_module_keymap"

[[modules]]
id = "commands"
tier = 2
library = "reovim_module_commands"

[[modules]]
id = "editor"
tier = 3
library = "reovim_module_editor"

[[modules]]
id = "motions"
tier = 3
library = "reovim_module_motions"

[[modules]]
id = "vim"
tier = 3
library = "reovim_module_vim"

[[modules]]
id = "window-ops"
tier = 3
library = "reovim_module_window_ops"

[[modules]]
id = "git"
tier = 3
library = "reovim_module_git"

[[modules]]
id = "git-signs"
tier = 3
library = "reovim_module_git_signs"

[[modules]]
id = "git-statusline"
tier = 3
library = "reovim_module_git_statusline"

[[modules]]
id = "git-blame"
tier = 3
library = "reovim_module_git_blame"

[[modules]]
id = "cmdline"
tier = 3
library = "reovim_module_cmdline"

[[modules]]
id = "whichkey"
tier = 3
library = "reovim_module_whichkey"

[[modules]]
id = "notification"
tier = 3
library = "reovim_module_notification"

[[modules]]
id = "picker-files"
tier = 4
library = "reovim_picker_files"

[[modules]]
id = "picker-buffers"
tier = 4
library = "reovim_picker_buffers"

[[modules]]
id = "picker-commands"
tier = 4
library = "reovim_picker_commands"

[[modules]]
id = "picker-grep"
tier = 4
library = "reovim_picker_grep"

[[modules]]
id = "picker-options"
tier = 4
library = "reovim_picker_options"

[[modules]]
id = "picker-git-branches"
tier = 4
library = "reovim_picker_git_branches"

[[modules]]
id = "picker-git-log"
tier = 4
library = "reovim_picker_git_log"

[[modules]]
id = "picker-git-stash"
tier = 4
library = "reovim_picker_git_stash"

[[modules]]
id = "picker-git-status"
tier = 4
library = "reovim_picker_git_status"

[[modules]]
id = "microscope"
tier = 4
library = "reovim_module_microscope"

[[modules]]
id = "treesitter-rust"
tier = 4
library = "reovim_module_treesitter_rust"

[[modules]]
id = "treesitter-markdown"
tier = 4
library = "reovim_module_treesitter_markdown"

[[modules]]
id = "lsp"
tier = 4
library = "reovim_module_lsp"

[[modules]]
id = "lsp-navigation"
tier = 4
library = "reovim_module_lsp_navigation"

[[modules]]
id = "textobjects"
tier = 4
library = "reovim_module_textobjects"

[[modules]]
id = "snippet"
tier = 4
library = "reovim_module_snippet"

[[modules]]
id = "range-finder"
tier = 4
library = "reovim_module_range_finder"

[[modules]]
id = "completion"
tier = 4
library = "reovim_module_completion"

[[modules]]
id = "explorer"
tier = 4
library = "reovim_module_explorer"

[[modules]]
id = "tetromino"
tier = 4
library = "reovim_module_tetromino"

[[modules]]
id = "profiles"
tier = 4
library = "reovim_module_profiles"

[[modules]]
id = "health-check"
tier = 4
library = "reovim_module_health_check"

[[modules]]
id = "module-manager"
tier = 4
library = "reovim_module_module_manager"

[[modules]]
id = "illuminate"
tier = 4
library = "reovim_module_illuminate"

[[modules]]
id = "format"
tier = 4
library = "reovim_module_format"

[[modules]]
id = "diagnostics-panel"
tier = 4
library = "reovim_module_diagnostics_panel"

[[modules]]
id = "bufferline"
tier = 4
library = "reovim_module_bufferline"

# Alternative personality — not loaded by default (requires explicit config)
[[modules]]
id = "emacs"
tier = 3
library = "reovim_module_emacs"
