Raw source access

Two endpoints bypass normalisation and return a source in its native shape, for
cases where the projection loses something needed.

GET /api/bng/audit/log?limit=<n>                       read_only
GET /api/bng/audit/journal?lines=<n>&units=<csv>       read_only

The first tail-reads the controller's audit log directly and returns its records
verbatim, newest first, alongside a count of lines that failed to parse. It
returns 404 with an explanatory body if the log file does not exist.

The second shells journalctl across a default set of BNG service units —
the deploy service, the controller, VPP, the VPP bridge, the portal, and the
platform apply units — and projects each record to timestamp, unit, priority,
message, syslog identifier, and PID. The journal's native microsecond
timestamps are passed through as strings
, unlike everywhere else in the
operational plane. Units may be overridden by parameter. Failure modes are
explicit: 500 if journalctl is unavailable or exits non-zero, 504 if it
exceeds its fifteen-second budget.