secubox-deb/packages/secubox-profiles/api
CyberMind-FR fc28ab7678 fix(profiles): unbuildable package, rc collision on scan, data-driven protection
C1: drop debian/compat (kept debhelper-compat (= 13) Build-Depends) — the
package was the only one in the repo carrying both, which debhelper refuses
to build.

C2: cli._run() now returns rc=None for "did not execute" (OSError/timeout),
mirroring observe._run_cmd's contract. _cmd_scan checks rc for both
systemctl list-unit-files and lxc-ls and aborts rather than silently
deriving LXC modules as runtime="native" from empty output; a non-root
invocation (rc=0, empty output) is refused explicitly since it is
indistinguishable from "no containers" by rc alone.

C3: PROTECTED_IDS moves from scan.py to manifest.py (a schema property, not
a profiler detail) and load_manifest() now forces protected=True for those
ids regardless of what a shipped manifest declares, closing the gap where a
sloppy module package could silently unprotect auth/aggregator/core/etc.

Co-Authored-By: Gerald KERMA <devel@cybermind.fr>
2026-07-17 13:14:02 +02:00
..
__init__.py feat(profiles): schéma et chargement des manifestes module 2026-07-17 11:39:28 +02:00
cli.py fix(profiles): unbuildable package, rc collision on scan, data-driven protection 2026-07-17 13:14:02 +02:00
diff.py feat(profiles): diff ordonné désiré vs réel 2026-07-17 12:11:45 +02:00
manifest.py fix(profiles): unbuildable package, rc collision on scan, data-driven protection 2026-07-17 13:14:02 +02:00
observe.py fix(profiles): stop fabricating False in observe() systemd/routes branches 2026-07-17 12:04:55 +02:00
scan.py fix(profiles): unbuildable package, rc collision on scan, data-driven protection 2026-07-17 13:14:02 +02:00
state.py feat(profiles): résolution de l'état désiré (protected > pin > profil > off) 2026-07-17 11:51:20 +02:00