feat(p7oo): port c_ircd_main boot spine from ircd.c to Rust — P7 COMPLETE
Port `main` (renamed `c_ircd_main` via `-Dmain=c_ircd_main`, ircd.c:837) to
ircd-common/src/ircd.rs as `#[no_mangle] c_ircd_main`, config-resolved to the
locked build (CHROOTDIR/ZIP_LINKS/CMDLINE_CONFIG/USE_SYSLOG/DEBUGMODE/IRC_UID/
IRC_GID OFF; USE_IAUTH/TKLINE ON; IRCDCONF_DELIMITER='|'): sbrk0/uid setup, the
argv flag-parse loop, the setuid-root guard, the vfork/execl iauth-presence
check, the init*/initconf/listener-scan/M-line/SID/split checks + make_isupport,
setup_me/check_class/ircd_writetune, the BOOT_INETD block, the startup banner,
mysrand/daemonize/logfiles_open/write_pidfile/dbuf_init, and `loop { io_loop() }`.
Guarded out of ircd_link.o by -DPORT_IRCD_MAIN_P7oo; ircd-rs/src/main.rs is
unchanged (still calls ircd_sys::c_ircd_main, which now resolves to the Rust def).
nm confirms `T c_ircd_main` from Rust; ircd_link.o now defines no main/c_ircd_main,
only data globals.
This is the LAST C function with logic. P7 is COMPLETE: all C *logic* is now
Rust; only data globals + the ~25 variadic sender trampolines remain (deleted in
P8 when call sites adopt a non-variadic Rust sender API).
Faithfulness: me.serv->sid is [c_char;5] (an array) so C's `!me.serv->sid` is
always-false dead code — reproduced as a never-taken branch. configfile/tunefile
keep their C static-initializers. vfork kept to match C. flags is c_long,
aConfItem::status is u32.
L2-gated, no L1 (the boot spine forks iauth, daemonizes, never returns — the
P7mm/P7jj precedent): the full ircd-golden suite (86 tests) boots through it
byte-identical vs reference-C. The lone failure (golden_s2s_s_serv_stats "sq"
field) is the documented pre-existing p5-s2s-stats-flake (uninitialized-sendq
garbage), proven not a regression by re-running on clean HEAD.