natsmsg, backoff: retire the legacy JetStream publishing bridges (COR-1004)
main·
Commit

Phase 3 (COR-985) moved every service onto the shared seams; the legacy nats.JetStreamContext bridges were documented as transitional and can now go:
- Publisher.JS is retyped from the concrete jetstream.JetStream to a narrow JetStream publish interface (the modern mirror of the deleted LegacyJetStream), so callers keep single-method test fakes instead of faking the full client. jetstream.JetStream satisfies it unchanged.
- DLQPublisher/DeadLetter move onto that modern surface (ctx-native PublishMsg); provenance headers, bounded publish, and the capture-before-dispose contract are unchanged.
- LegacyPublisher and LegacyJetStream are deleted; the shared publish core is inlined into Publisher.Publish now that one path remains.
- backoff's *Legacy entry points (LegacyMsg, NakOrTermLegacy, NumDeliveredLegacy, IsFinalDeliveryLegacy) had zero callers anywhere and are deleted, along with the disposer indirection that existed only to share logic between the two paths. natsmsgtest.FakeLegacyMsg goes with them.
The disposition matrix, publish span/header/ack contract, and DLQ integration tests carry over on the modern path.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_019HHfXGjkxcLUpuso8gZGYL Entire-Checkpoint: 3e8fdf2fac2e
Checkpoints
Checkpoint 1