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…
⎇ 534014c3ec69daea789a1d0523e1d00a69c6ed65
crates/takana-core/src/kernel/mod.rs
History
Who touched what
raw
takana etapa 5d: comentarios de crates, CLAUDE.md y el skill de granja
1//! El armador de kernel: catálogo de bundles, clausuras sobre Kconfig y modo reversa.
2//!
3//! Implementa `docs/22-configurador-kernel.md`, que a su vez contesta
4//! `tawasuyu/HANDOFF-KERNEL-CONFIG-A-HAMMER.md`.
5//!
6//! **El hecho que ordena todo el módulo** (SDD 22 §1): las fases de build entran en
7//! `Recipe::hash_inputs`, y el config del kernel vive en la fase `configure` ⇒ **el config ES la
8//! identidad del artefacto**. Cambiar un símbolo cambia el `ArtifactHash`. De ahí dos consecuencias
9//! que el código respeta literalmente:
10//!
11//! 1. Una «perilla» de la UI **no es un parámetro de runtime, es una edición de receta**. Por eso
12//! `plan` emite una **receta derivada**, no un binario parametrizable.
13//! 2. Atestar «este config booteó en esta huella» sale casi gratis: ya es un artefacto CAS.
14//!
15//! Y la regla dura que nunca se cruza: **takana no resuelve Kconfig**. Emite fragmentos
16//! (`scripts/config -e/-d`) y deja que el `olddefconfig` del propio kernel produzca el `.config`.
17//! Ver [`kconfig`].
18
19pub mod catalog;
20pub mod config;
21pub mod contract;
22pub mod gate;
23pub mod hw;
24pub mod kconfig;
25pub mod modmap;
26pub mod plan;
27pub mod reverse;
28
29pub use catalog::{Bundle, Catalog, Knob, Objective, Side};
30pub use gate::{GateReport, Verdict};
31pub use modmap::ModMap;
32pub use config::{ConfigValue, KernelConfig};
33pub use contract::{Capability, Contract, ContractReport, Profile as ContractProfile};
34pub use hw::Hardware;
35pub use kconfig::{Expr, KconfigTree, SelectLeak, SymKind, Symbol};
36pub use plan::{diff_back, make_plan, DiffBack, Plan};
37pub use reverse::{BundleState, HwSignal, ReverseReport};