//! The log writers, and the substrate under them. //! //! - [`mod@file`] — the append-only JSONL mechanism every durable log is //! built on: the envelope, the size cap, the rotation, and the invocation //! id that lets a line from one log be laid beside a line from another. //! - [`mod@oauth`] — every OAuth operation, written from under jacquard's //! transport. //! - [`mod@pds`] — every record write leaving the process, and the answer //! that came back. //! - [`mod@git`] — every git subprocess atgc starts, and what it did to the //! checkout. //! - [`mod@debug`] — the fourth channel: `--debug`, ephemeral, to stderr. //! //! # Why the writers are together //! //! They share an envelope, an invocation id, a rotation policy, and one //! invariant: no secret is ever written. That invariant is auditable only //! while every file able to break it can be read in one sitting. A writer //! moved next to the transport it instruments would be easier to find and //! harder to check, and checking is the point. //! //! Nothing here reads a log back. The readers are [`crate::cmd::logs`] — the act //! is here, the noun is there, and the files pair one to one. pub(crate) mod debug; pub(crate) mod file; pub(crate) mod git; pub(crate) mod oauth; pub(crate) mod pds;