Fase 5: política de caps del bus desde agent-caps.toml
Sustituye la política hardcodeada por una declarativa (SDD 07 §4).
hammer-core/src/caps.rs:
- AgentCapsConfig { default, rule[] }; CapRule { uid?, gid?, caps }.
- caps_for(uid, gid): primera regla que casa (todos los campos
declarados deben coincidir) o default. load(path) → Ok(None) si falta.
- 8 tests: orden de reglas, match uid+gid, fallback, regla vacía ignorada.
hammerd:
- bus::policy_from_config(cfg) construye la CapsPolicy desde la config.
- main: --agent-caps (default /etc/hammer/agent-caps.toml). Con fichero
usa la config; sin fichero o con fichero inválido cae a default_policy
(avisando). +1 test del policy_from_config.
examples/agent-caps.toml: plantilla comentada.
22 binarios de test verdes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
5ec7a81e87
commit
42288230f9
+5
-2
@@ -94,8 +94,11 @@ pre-requisito de validación.
|
||||
- [x] EventBus in-process: el watcher publica `Modified` y todas las conexiones lo reciben.
|
||||
- [x] Subsistemas independientes en `hammerd::main` (FIFO/watcher/bus en threads); si uno
|
||||
falla en init, los demás siguen.
|
||||
- [ ] Política expresiva: hoy es código (`default_policy`), pendiente leerla de
|
||||
`/etc/hammer/agent-caps.toml`.
|
||||
- [x] Política expresiva leída de `/etc/hammer/agent-caps.toml` (`hammerd --agent-caps`).
|
||||
`hammer_core::AgentCapsConfig`: `default` + `[[rule]]` por `uid`/`gid` (primera que casa
|
||||
gana), `caps_for(uid,gid)`. `bus::policy_from_config` la enchufa; sin fichero o con
|
||||
fichero inválido, cae a la política por-UID por defecto (avisando). Ejemplo en
|
||||
`examples/agent-caps.toml`. El `default_policy` hardcoded queda como fallback.
|
||||
- [ ] `CRASHED` real (requiere supervisión de servicios, que llega con el init propio del
|
||||
track posterior).
|
||||
- [ ] `BuildFailed.log_tail` con cola real del lab (hoy es `None`; el `reason` viene del
|
||||
|
||||
Reference in New Issue
Block a user