Legacy journal compatibility bridge (.NET 8 console)

This development-only project compiles the exact previous-release source
snapshots in Legacy/ with the .NET 8 serializer. It only constructs legacy
ChangeRecord/Approval data and never constructs StartupManager or calls a
registry, startup-enumeration or UI operation. The snapshots are not built
into the shipped application. Legacy/provenance.json retains exact source
hashes with public relative origin names instead of private build paths.

Build separately from the source package's net472 application:
  dotnet build LegacyJournalBridge.csproj -c Release

Commands:
  dotnet bin/Release/net8.0/LegacyJournalBridge.dll emit <newFixtureDirectory>
  dotnet bin/Release/net8.0/LegacyJournalBridge.dll verify <roundtripDirectory>

emit refuses existing output files. It writes five synthetic fixtures and
cases.json, using the genuine previous ChangeRecord/Approval types. Cases
cover absent approval, full prior bytes, Prepared after write, Prepared
before write, and an already Restored record. They contain demo commands,
synthetic IDs and a fixed test timestamp; they are not customer journals.

The candidate app can read the fixtures only in its isolated SelfTest
registry namespace, perform guarded restore, and place the serialized
roundtrip files in a new directory. verify is read-only: it requires the
exact five IDs, case-sensitive schema, Base64 byte arrays, unchanged
DateTimeOffset ticks/offset, and expected Restored states. It prints JSON
and exits zero only when those checks pass. It does not create a report.

Running these developer checks is not evidence that real installer
migration, administrator prompts, RK choices or another Windows version
has been exercised. No generated test logs or private profile are supplied.
