Skip to content
AtlasOSFramework API
Browse the docs

history

The record of AtlasOS versions this machine has booted, one JSON line each, and the helpers that read and append to it.

The history module reads and writes the boot history: /var/lib/atlas-core/history.jsonl, one JSON object per line, appended by atlas-system-helper record-boot when the booted image digest changes. The path keeps the old atlas-core name because existing systems hold data there. The file format is in On-disk formats.

Example

use atlas_framework_system::history;

// Newest first. A missing file is an empty history.
for e in history::read_default()? {
    println!("{} first booted {}", e.version.as_deref().unwrap_or("?"), e.first_booted);
}

Entry

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct Entry

Field Type Description
version Option<String> The OS version (the image's version label)
digest String The image digest
image String The image reference, such as x:stable. Defaults to empty
timestamp Option<String> The image build time, RFC 3339
first_booted String When this machine first booted it, RFC 3339 UTC

Items

Name Signature Description
DEFAULT_PATH pub const &str /var/lib/atlas-core/history.jsonl
FORMAT pub const u32 1, the line format the writers produce
read_default pub fn read_default() -> io::Result<Vec<Entry>> Reads the history at the default path, newest first
read pub fn read(path: &Path) -> io::Result<Vec<Entry>> Reads a history file, newest first. A missing file is an empty history; lines that do not parse are skipped
append_if_new pub fn append_if_new(path: &Path, entry: &Entry) -> io::Result<bool> Appends entry unless the newest entry has the same digest. Returns whether a line was written. Creates the directory and the file (mode 0644), and refuses a symlink at the file
record_boot pub fn record_boot(path: &Path, status: &bootc::Status, now: &str) -> io::Result<bool> Records the booted deployment of a Status. Errors when bootc reports no booted image
now_rfc3339 pub fn now_rfc3339() -> String The current time as YYYY-MM-DDTHH:MM:SSZ
rfc3339_from_unix pub fn rfc3339_from_unix(secs: u64) -> String Unix seconds as UTC RFC 3339

Writing needs permission to write under /var/lib/atlas-core, which only the root helper has. An app reads.