Expand description
Native GitMarker implementation — the cheap, always-on provenance tier.
Implements solid_pod_rs::provenance::GitMarker by shelling out to the
system git binary via tokio::process::Command, mirroring the style of
crate::api (git_commit/git_add) and crate::service. This is the
single canonical write-provenance path: an LDP PUT/POST/PATCH that
lands in a git-backed pod is followed by a ShellGitMarker::mark_write
call that stages the written file and commits it, so every pod write becomes
a git commit whose SHA is captured and surfaced as a
GitMark.
§Why native-only
The pure provenance surface (types + prov_ttl) lives in
solid-pod-rs::provenance and compiles for wasm32. This implementor
spawns a subprocess, so it is native-only and lives here in
solid-pod-rs-git (which already depends on tokio::process). Wasm
consumers compile against a no-op marker, never this one
(ADR-059 D4).
§Commit identity
Commits are authored as solid-pod-rs <agent_did> — the writer’s
did:nostr (NIP-98 principal) becomes the commit author email, binding
the on-disk git history to the authenticated agent. Identity is injected
per-invocation via git -c user.name=… -c user.email=… so no global git
config is mutated and the repo needs no pre-seeded user.*.
Structs§
- Shell
GitMarker - A
GitMarkerthat commits pod writes by shelling togit.