
An engineering design note for comparing systemd configuration with live kernel state, including trust boundaries, failure modes, and the evidence required before release.
By the OpenFactory Team · February 19, 2026
Linux services are often checked through the same manager that applied their configuration. That is useful operational data, but it is not an independent observation. A service manager can report what it tried to set while the kernel exposes what is active for the running process. Comparing both views can reveal a configuration error, unsupported directive, race, or later mutation.
The proposed OpenFactory design calls this a dual-source observation. It is deliberately narrower than the phrase “proves the machine is secure.” The result would be evidence about a defined set of properties at a defined time, produced inside a stated trust boundary.
A collector could query systemd for the requested setting and the corresponding kernel interface for the live value. The comparison must normalize units and account for inheritance, defaults, container boundaries, kernel version differences, and values that cannot be observed reliably.
| Property | Configuration view | Live-state view |
|---|---|---|
| Memory limit | systemd MemoryMax | cgroup memory.max |
| CPU limit | systemd CPUQuota | cgroup cpu.max |
| Privilege escalation | NoNewPrivileges | /proc process status |
| Capabilities | CapabilityBoundingSet | /proc capability masks |
| Mandatory access control | configured service context | live SELinux or AppArmor state |
| Network exposure | socket-unit intent | kernel listening sockets |
A difference is not automatically an attack. It can result from unit inheritance, an unsupported kernel feature, collection timing, or a legitimate operator change. The report should preserve the raw values, collection method, timestamps, software versions, and the normalization rule so a reviewer can reproduce the decision.
A signature answers “which key signed these bytes?” It does not answer whether the collector was honest, the key was protected, the expected policy was correct, or the report is fresh. A release design therefore needs an explicit chain:
TPM sealing and measured boot may become parts of that design, but they are not magic. A verifier still needs reference measurements, enrollment policy, key rotation, revocation, recovery behavior, and a clear answer for hardware without a usable TPM.
An absent report is not a passing report. The interface should distinguish at least these states: match, mismatch, unsupported, collection error, invalid signature, stale report, unenrolled device, and missing report. “Unknown” must remain unknown instead of being folded into success.
The same rule applies to dashboards. A timeline can help an operator investigate, but the product must expose report age, scope, collector version, policy revision, and validation status. Color alone is not enough, and a historical green result must not describe the current machine after its freshness window expires.
The feature should remain labeled “in development” until an end-to-end test suite proves the following behavior on every supported target:
Security and compliance language needs a separate accountable review. The implementation may provide evidence relevant to a control, but it cannot certify an organization or deployment by itself. Operators and assessors decide whether the evidence is sufficient for their actual obligations and risk model.
OpenFactory currently exposes build artifact hashes, hash-bound CycloneDX records, fleet drift-report ingestion, and an Integrity Center timeline in supported paths. Those pieces are foundations, not the full attestation design. Confirm the artifacts and fresh reports produced by your own build before depending on them.
The maintained status page records this boundary and will stay outside search indexing while the cryptographic runtime layer lacks production evidence. When the design is implemented, the first release note should link to its protocol, supported matrix, test evidence, limitations, security review, and an operator verification procedure.
No. The signed dual-source agent, TPM-bound key path, and dm-verity integration described here are design work, not generally available OpenFactory recipe features.
Current paths include build artifact hashes, hash-bound CycloneDX records, fleet drift-report ingestion, and an Integrity Center timeline. Operators must confirm which artifacts and reports exist for their own build and deployment.
No. A match would show only that the selected observations agree at a particular time. It would not rule out vulnerable software, compromised collection code, stolen keys, malicious behavior outside the measured scope, or an incorrect expected policy.
No. Measured boot records the components involved in startup. A runtime check observes selected live state after startup. A useful design can link the evidence, but neither control substitutes for the other.
Compare published self-service limits, or scope customer-controlled deployment and fleet requirements through a technical pilot.