- Change OrphanedAt from time.Time to *time.Time so JSON omitempty
correctly omits zero values (Go serializes zero time.Time as
"0001-01-01T00:00:00Z" which JS treats as truthy)
- Rewrite reconcileOnce with 4-pass architecture: enrichment, reorg
detection via GetBlock verification, false-positive un-orphaning,
and legacy block stamping
- Use inferOtherChain() to stamp cross-network blocks with the correct
chain identifier (testnet4 reports as "testnet4", not "test")
- Move tailer startup after aggregator's first refresh so blocks are
always stamped with the current chain
- Add StampChain store method, debug-blocks admin endpoint, and
comprehensive reconcile tests for cross-network scenarios