Single sources of truth
Source snapshot: 9b4f8a3 (2026-09-23). Code ownership, not deployment certification.
The names below identify current owners and explicitly record consolidation gaps.
working; the wrappers do not prove every retained third-party or legacy call accepts long paths.
VERSION
Owner
Intended VERSION.txt does not exist in this source snapshot.
Current definitions
CMakeLists.txt :: project(QMail VERSION 0.12.0), QMAIL_BUILD_VERSION date/default and QMAIL_DESKTOP_VERSION/QGUI_VERSION_STRING definitions.
Conflicting definitions
src/app/CMakeLists.txt and src/update/CMakeLists.txt also set QMAIL_DESKTOP_VERSION from PROJECT_VERSION. src/server/CMakeLists.txt derives CS_BUILD_VERSION_DATE independently.
Parser owner
src/update/version.c :: qmail_version_parse(), qmail_version_compare(); declarations in src/update/update_download.h, exported by qm_update's public include directory.
Status
partial; single release-version authority is not implemented. Do not infer the built value from competing compile definitions without build evidence. No product code was changed by M13.
include/qmail/component.h; docs/contracts/manifest-v2.txt. The parser resolves implementation disagreements.
Owns
Bounded JSON manifest v2; unique keys; exact top-level legacy-prefix order; matching client/legacy size and hash; three named server files and top-level helper hashes; safe relative URL paths and allowed URL schemes; win-x64 client/server identity. Themes may be absent pending M9.
Compatibility
Legacy readers use first-occurrence strings; the parser validates those observations against the structured manifest. This is no longer merely the draft's strstr-only parser.
Status
working implementation; release publication is outside M13.
Denominations and hosting eligibility
Owner
src/coin/coin_denom.c :: coin_denomination_to_microunits(), byteToDecimal(), denom_values; declarations in include/core/coin_utils.h.
Amounts
src/mail/qmail_amount.c and include/qmail/qmail_amount.h own exact amount parsing; 1 CC = 100,000,000 units.
Eligibility owner
src/server/hosting_adapter.c :: status_snapshot(), daemon_config(), qmail_hosting_request(). Requires denomination 3..5 and a mailbox serial: Mega (0x03, 1,000 CC), Giga, Epic.
Owns
Value conversion is distinct from hosting admission. Hosting is off by default, activation explicit, and DRD advertisement separately opt-in. Do not widen eligibility just because conversion recognizes another denomination.
Status
working local gate; fleet Mega DRD admission remains pending per AGENTS.md.
Separate config dialects and key/value settings, not one universal schema. Paths service chooses locations; readers own accepted keys and value semantics.
Status
partial consolidation; a single shared configuration schema must not be claimed.
Database migrations
Mail owner
src/mail/qmail_db.c :: qmail_db_open(), qmail_db_migrate_units_schema(), qmail_db_read_user_version(). Units migration advances PRAGMA user_version last in its transaction and refuses open on failure.
src/server/hosting_uptime.c :: qmail_hosting_uptime_sample(); owns hosting_uptime_state/minutes schema and fixed 30-day window.
Hosting settings schema
src/server/hosting_adapter.c :: qmail_hosting_request(); creates/additively extends the hosting table in hosting.sqlite.
Funding and Tell persistence
src/coin/qmail_locker_pool.c, src/mail/qmail_tell_outbox.c and included src/mail/qmail_tell_outbox_store.inc own their store operations; shared base mail schema still starts in qmail_db_open().
Owns
Multiple schema owners; SQLite itself is deps/sqlite and is not the owner of application migration policy.
Status
working; catalog does not claim a centralized migration registry.
Theme schema
Owner
include/qgui/theme.h :: qgui_theme_t and QGUI_THEME_DEFAULT_ID; src/gui/layout/theme.c :: qgui_theme_by_id(), qgui_theme_scale().
Owns
C palette/metrics/font-role/texture-slot structure and built-in theme definitions. Default is dark.
Gap
No implemented external theme.txt schema/loader was found in this snapshot. src/app/CMakeLists.txt still packs image themes; M9's complete external pack transition is pending.
Status
partial; component update support for a themes archive is not an external theme parser.
Runtime per-command attempt budgets and bounds; transport default is the bootstrap/fallback, not the only timeout. Executor consumes policy. RKE, DRD, Tell and long-poll operations have their own policy slots.
Status
working.
Port defaults
Content Server owner
src/server/cs_daemon_config.c :: CS_DAEMON_DEFAULT_PORT (28091), cs_daemon_config_defaults(); default bind is 127.0.0.1.
RAIDA owner
src/coin/raida_servers.c :: HARDCODED_PORTS (50000..50024); address loading can replace bootstrap values.
Hosting port choice
src/server/hosting_adapter.c :: qmail_hosting_request() stores/configures the operator port and generates a random high port when requested.
Owns
Different defaults for different services. Local bound_port does not establish public reachability; forwarding and external connectivity checks are separate.
Status
working; no universal shared port constant exists.
src/platform/font_locator_win.c :: platform candidates and registry resolution. Segoe UI role policy and script fallback selection are centralized here.
src/gui/host/host_ops.c :: qgui_host_setup_fonts_with(); src/cbdf/view/text_engine.cpp owns shaping/rasterization rather than choosing the OS UI font policy.
Owns
Role-to-installed-file mapping; theme fonts/CBDF resource fonts are separate document/style inputs. No embedded UI fonts.
Status
partial across platforms; Windows implementation present, full POSIX locator unfinished.