Single sources of truth

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.

Paths service

Owner
src/platform/paths.c :: qmail_paths_publish_roots(), qmail_paths_client_data(), qmail_paths_server_dir(), qmail_paths_settings_file()
Contract
include/qmail/paths.h
Owns
Installed layout names and synchronized immutable process roots after publication; helper processes may receive Client_Data itself.
Long paths
src/platform/paths.c :: qmail_paths_to_native(), qmail_paths_extended(), qmail_paths_sqlite_vfs(); src/platform/win/qmail.manifest declares longPathAware.
Status
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.

Update manifest schema

Owner
src/update/manifest.c :: qm_manifest_parse(), qm_manifest_unique_tree(), file_spec(), first_string()
Contract
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.

Configuration schemas

Server owner
src/server/cs_daemon_config.c :: cs_daemon_config_defaults(), cs_daemon_config_load(), cs_daemon_config_set(), cs_daemon_config_validate(); include/cs_daemon_config.h.
Core owner
src/coin/core_bootstrap.c :: core_desktop_config_defaults(), apply_desktop_key(), core_bootstrap_write_default_config(); include/core/core_bootstrap.h.
GUI settings owner
src/gui/host/host_ops.c :: settings_path(), desktop_settings_get(), desktop_settings_set(); application consumers choose keys in src/app/main.c and src/gui/host/loop.c.
Hosting persistence/workflow
src/server/hosting_adapter.c :: read_record(), save_record(), daemon_config().
Owns
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.
Transfer owner
src/mail/qmail_transfer_store.c :: qmail_transfer_store_open().
Server registry owner
src/mail/qmail_server_registry.c :: qmail_server_registry_init().
DRD replica owner
src/coin/drd_local_store.c :: drd_local_store_init().
Hosting observation owner
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.

RAIDA timeouts

Owner
src/coin/raida_policy.c :: raida_policy_defaults(), raida_policy_timeout(), raida_policy_set_config_value(), s_timeout_keys; include/core/raida_policy.h defines policy types.
Bootstrap owner
include/core/raida_defaults.h :: RAIDA_BOOTSTRAP_TIMEOUT_MS (5000 ms); src/coin/transport.c :: transport_set_default_timeout(), transport_get_default_timeout().
Owns
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.

Font roles

Owner
include/qmail/font_locator.h :: qm_font_role_t (regular, medium, semibold, mono); src/platform/font_locator.c :: qm_font_locate(), qm_font_locate_all(), qm_font_fallbacks().
Windows owner
src/platform/font_locator_win.c :: platform candidates and registry resolution. Segoe UI role policy and script fallback selection are centralized here.
POSIX owner
src/platform/font_locator_posix.c :: qm_font_platform_role_candidates(), qm_font_platform_resolve(); fixed candidate paths today, CoreText/fontconfig integration TODO.
Consumer
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.