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…
harkaq: la granja VPS ya puede ser el compilador continuo — golden bumpeada a 6.17 (ABI 7)
1/* harkaq-uapi.h — las constantes del ABI de Landlock/audit, con respaldo propio.
2 *
3 * Por qué existe: **el kernel y los headers envejecen por separado**. El worker de la granja
4 * corre kernel 6.17 (Landlock ABI 7, con audit de denegaciones) pero su `linux-libc-dev` es
5 * 6.8 y no define NADA de lo que hace falta — ni los flags de log de ABI 7/8, ni
6 * `AUDIT_LANDLOCK_ACCESS`, ni `IOCTL_DEV` de ABI 5. El kernel puede; el compilador no sabe
7 * pedírselo. Medido en Ubuntu 24.04 + HWE 6.17 (SDD 16 §4.8).
8 *
9 * Es el mismo error de fondo que §3.1 advierte al revés: allá, deducir el ABI de la versión del
10 * kernel; acá, deducirlo de la versión de los headers. **Ninguna de las dos dice la verdad.** La
11 * única fuente es el syscall en runtime (`LANDLOCK_CREATE_RULESET_VERSION`), y estas constantes
12 * son números de contrato del kernel — estables por definición de UAPI, seguros de fijar.
13 *
14 * Sin esto, harkaq sólo compila en distros con headers al día, que es justo lo que un
15 * compilador continuo NO puede exigir.
16 */
17#ifndef HARKAQ_UAPI_H
18#define HARKAQ_UAPI_H
19
20#include <linux/audit.h>
21#include <linux/landlock.h>
22
23/* ABI 1 */
24#ifndef LANDLOCK_CREATE_RULESET_VERSION
25#define LANDLOCK_CREATE_RULESET_VERSION (1U << 0)
26#endif
27
28/* ABI 2 — sin REFER no compila software real (D7) */
29#ifndef LANDLOCK_ACCESS_FS_REFER
30#define LANDLOCK_ACCESS_FS_REFER (1ULL << 13)
31#endif
32
33/* ABI 3 */
34#ifndef LANDLOCK_ACCESS_FS_TRUNCATE
35#define LANDLOCK_ACCESS_FS_TRUNCATE (1ULL << 14)
36#endif
37
38/* ABI 5 */
39#ifndef LANDLOCK_ACCESS_FS_IOCTL_DEV
40#define LANDLOCK_ACCESS_FS_IOCTL_DEV (1ULL << 15)
41#endif
42
43/* ABI 6 — scoping de IPC (D8) */
44#ifndef LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET
45#define LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET (1ULL << 0)
46#endif
47#ifndef LANDLOCK_SCOPE_SIGNAL
48#define LANDLOCK_SCOPE_SIGNAL (1ULL << 1)
49#endif
50
51/* ABI 7 — los flags de logging. LOG_NEW_EXEC_ON es del que cuelga TODO el proyecto: sin él el
52 * kernel no audita ninguna denegación posterior al execve y harkaq certificaría como herméticos
53 * todos los builds, sin un solo error visible (§3.4). */
54#ifndef LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF
55#define LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF (1U << 0)
56#endif
57#ifndef LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON
58#define LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON (1U << 1)
59#endif
60#ifndef LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF
61#define LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF (1U << 2)
62#endif
63
64/* ABI 8 */
65#ifndef LANDLOCK_RESTRICT_SELF_TSYNC
66#define LANDLOCK_RESTRICT_SELF_TSYNC (1U << 3)
67#endif
68
69/* Tipos de registro de audit. Sin éstos el lector no reconoce la evidencia AUNQUE el kernel la
70 * emita: filtraría por un número que no conoce y vería cero denegaciones — el falso `Hermetico`
71 * de D9, esta vez por headers viejos. */
72#ifndef AUDIT_LANDLOCK_ACCESS
73#define AUDIT_LANDLOCK_ACCESS 1423
74#endif
75#ifndef AUDIT_LANDLOCK_DOMAIN
76#define AUDIT_LANDLOCK_DOMAIN 1424
77#endif
78
79/* Grupo multicast de sólo-lectura del audit (requiere CAP_AUDIT_READ). */
80#ifndef AUDIT_NLGRP_READLOG
81#define AUDIT_NLGRP_READLOG 1
82#endif
83
84#endif /* HARKAQ_UAPI_H */