Terraria 1.4.5.8 - private JSON-first V2FC candidate for Keldrin 0.9.111

This package selects shared NativeFileOutput for the ordinary game launch.
The game's stdout and stderr are connected directly to separate private files
through inherited native file handles, not parent-owned pipes or a helper host.
There is no retained stdin requirement, console controller or executable adapter
handler. No -logfile mirror is selected: its exclusive sharing prevents live
readers. The rejected timestamped mirror draft is retained only for review.

Stop uses existing KillProcessTree behavior, explicitly requested by the
operator. Termination is not a final-save guarantee: changes not yet saved by
Terraria can be lost. Stopped backup/export preserves saved files only.
The package never calls a forced kill a saving Stop or successful save.

The established official 1.4.5.8 HTTPS distribution, managed process identity,
nine launch arguments, configuration/world preparation, password mappings,
world paths, firewall and backup/import/export declarations are retained.
ConsoleOwner selects only the reviewed configuration/world preparation facts;
it does not create a controller for this ordinary KillProcessTree launch.

Raw stdout is Data/Servers/{profile-id}/NativeLogs/terraria.log and stderr is
Data/Servers/{profile-id}/NativeLogs/terraria-error.log. Three current/retained
files per stream are requested. Raw native output is not sanitized at write
time and no live byte-size cap is claimed. Existing readers and diagnostic
archives must sanitize output before exposing it. These private native logs
are not part of the world ZIP, which contains main.wld and optional .bak/.bak2.

Observed readiness and join/leave patterns are unchanged, but native file
creation, actual bytes/framing, sanitized diagnostics, retention, current-run
binding and Service-update adoption require consolidated live acceptance.
File handles alone do not prove process identity, complete player history,
a final save, LAN reachability or outside-LAN response. Full V2FC acceptance
and public release have not been certified.

Player events use signed AmbiguousLinePrefixes=["<"]. Matching ambiguous records
make count/names/activity unknown instead of inventing a player; ordinary chat
remains nonmatching. This is not a guarantee for all native nickname grammars.
