gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1471Shell 173Rust 105Markdown 943545 Sutichaykuna

⎇ 8bf1623044075274682e4351a0f8e120047c2bed crates/hammerd/src/main.rs Rust · 44 siq'ikuna · 1.6 KB Ñawpa willay Pi imata llamkarqan ch'uya

Scaffold inicial: workspace Rust + SDDs completos 8bf162304 · sergio ·

1//! `hammerd` — daemon de hammer. Dos responsabilidades:
2//!   1. Bus de agente: /run/agent.sock (JSON-líneas, SO_PEERCRED). Ver `docs/07-agent-bus.md`.
3//!   2. Diario de mutaciones: fanotify sobre /bin,/sbin,/lib,/etc. Ver `docs/05-journal.md`.
4//!
5//! Esqueleto de arranque. Las dos subsistemas (Fases 3 y 5) se implementarán por separado;
6//! aquí queda el binario navegable y el cableado básico de logging/argumentos.
7
8use clap::Parser;
9
10#[derive(Parser)]
11#[command(name = "hammerd", version, about = "Daemon de hammer: bus de agente + diario.")]
12struct Args {
13    /// Socket del bus de agente.
14    #[arg(long, default_value = "/run/agent.sock")]
15    agent_sock: String,
16    /// FIFO de control humano del init.
17    #[arg(long, default_value = "/run/init.control")]
18    init_control: String,
19    /// Directorio del diario de mutaciones.
20    #[arg(long, default_value = "/var/lib/hammer/journal")]
21    journal: String,
22}
23
24fn main() -> anyhow::Result<()> {
25    tracing_subscriber::fmt()
26        .with_env_filter(
27            tracing_subscriber::EnvFilter::try_from_default_env()
28                .unwrap_or_else(|_| "info".into()),
29        )
30        .init();
31
32    let args = Args::parse();
33    tracing::info!(
34        agent_sock = %args.agent_sock,
35        init_control = %args.init_control,
36        journal = %args.journal,
37        "hammerd: arranque (esqueleto)"
38    );
39
40    // TODO(fase-3): iniciar el watcher fanotify → diario.
41    // TODO(fase-5): servir el bus de agente en agent_sock (JSON-líneas, SO_PEERCRED).
42    tracing::warn!("subsistemas pendientes: diario (Fase 3) y bus de agente (Fase 5)");
43    Ok(())
44}