No Log = No Action

A non-bypassable execution invariant for deterministic state integrity, evidentiary continuity, and guaranteed post-execution traceability within the Ternary Logic framework.

Framework Ternary Logic (TL)
Author Lev Goukassian
ORCID 0009-0006-5966-1243
Classification Core Doctrine · Execution Integrity
Primary Invariant — LTL Formulation
◇exec(a) → (¬exec(a) U (log(a) ∧ ¬exec(a))) AG(∀a ∈ Act : exec(a) → logged(a))
For all actions a: if execution ever occurs on any trace, then exec(a) must not hold until log(a) holds, and log(a) must be physically committed to a hardware-backed non-volatile accumulator before the gate releases.
§ I

Problem Definition: Optional Logging Failure

🎧

Audio Briefing — No Log = No Action

A 4:46-minute overview of the execution integrity invariant: cryptographic enforcement, Epistemic Hold, and the dual-lane commitment architecture.

Traditional computing and control architectures treat logging as a telemetry concern, decoupled from execution by asynchronous buffering, deferred writes, and best-effort delivery semantics. In such systems, the execution path and the persistence path are independent: an action completes on the main processor pipeline while a log entry is enqueued in a memory buffer, forwarded through a network stack, and eventually written to a storage backend. This architectural separation introduces non-determinism between execution and persistence, because the temporal ordering of action completion and log commitment is not enforced by any structural constraint.

Actions routinely complete while their corresponding log entries remain in volatile buffers, transit queues, or write-back caches, any of which may be lost to power interruption, process termination, memory pressure eviction, or network partition. The result is that the observability layer provides a probabilistic, best-effort record of system behavior rather than a deterministic, complete, and tamper-evident proof of every externally visible effect.

Post-hoc reconstruction, the standard forensic technique applied when logs are incomplete, is fundamentally unreliable under these conditions. Reconstruction depends on correlating timestamps across distributed components, but clock skew, NTP drift, and deliberate clock manipulation introduce timing inconsistencies that make causal ordering ambiguous. Under adversarial conditions, an attacker with sufficient privilege can selectively delete, modify, or forge log entries, rendering post-hoc analysis not merely incomplete but actively misleading.

Two classes of execution path are particularly dangerous because they reach physical interfaces without traversing any software logging stack. Emergency shutdown sequences in industrial control systems bypass normal software layers entirely, driving actuators through dedicated hardware circuits. Direct Memory Access and memory-mapped I/O paths allow DMA-capable peripherals to read and write physical memory without CPU intervention or software mediation, triggering externally observable effects with no logging whatsoever. Even IOMMU protections are insufficient: documented vulnerabilities include early boot gaps, deferred DMA attacks exploiting stale mappings, and message-signaled interrupt forgery. Telemetry provides observability but not enforcement; any architecture that permits action without structurally guaranteed prior log commitment cannot provide the evidentiary integrity that Ternary Logic demands.

§ II

The Invariant: No Log = No Action

This specification defines the No Log = No Action invariant as a structural execution constraint requiring that no state transition, transaction, API call, or physical actuation may be released unless a corresponding log entry has been fully committed to a local hardware-backed non-volatile accumulator. The invariant is not a policy, a configuration parameter, or a software check; it is an architectural coupling enforced through the physical topology of the execution path.

The invariant is defined over a transition system TS = (S, Act, T, I, AP, L). Two atomic propositions are distinguished: log(a), which holds when a log entry for action a has been fully committed with integrity verified, and exec(a), which holds when action a has produced an externally observable effect.

LTL Primary Invariant — Strict Until Semantics (Dwyer-Avrunin-Corbett) // For all actions a in the action space: ◇exec(a) → (¬exec(a) U (log(a) ∧ ¬exec(a))) // Past-time equivalent (O = Once operator): □(exec(a) → O(log(a)))
CTL Formulation — Universal Path Quantification // No path exists where exec(a) precedes log(a): ¬E[¬log(a) U exec(a)] // Weak Until: exec(a) does not occur until log(a) holds: A[¬exec(a) W log(a)] // Global safety property: AG(∀a ∈ Act : exec(a) → logged(a))

Log completeness is defined as the conjunction of four conditions: (1) canonical serialization through a deterministic form such as JCS (RFC 8785) or deterministic CBOR; (2) cryptographic hashing with collision-resistant output included in the Merkle accumulator and linked via hash chain; (3) physical persistence to a hardware-backed non-volatile storage element that retains data across power loss; and (4) read-back confirmation with integrity check verifying that the stored hash matches the recomputed hash.

Inductive Proof Obligations Let Inv(s) ≡ ∀a ∈ Act : executing(a, s) → ∃e ∈ Log(s) : (e.action = a) ∧ (e.timestamp < exec_time(a, s)) ∧ verified(e.hash, s) Base: ∀s₀ ∈ I : Inv(s₀) // No actions executing at init Step: Inv(s) ∧ T(s,a,s') → Inv(s') // Gate enforces prior commitment Safety: Inv(s) → AG(exec(a) → logged(a))
§ III

Cryptographic Actuator Interlock & Execution Coupling

The No Log = No Action invariant transforms logging into a protocol-level gate embedded directly in the execution path, enforcing a strict write-before-release model. The core mechanism is a Merkle accumulator whose root hash serves as the current execution capability token, stored in a hardware-protected register accessible only to the logging subsystem and the actuator interlock, and not writable by any other component regardless of privilege level.

Any attempt to execute an action without presenting a valid capability token that matches the current Merkle root triggers an immediate fault condition, halting the action and initiating a safe harbor transition. Actuator release requires the simultaneous satisfaction of three independent cryptographic requirements:

Three-Part Actuator Release Condition Release(a) ⟺ ValidHash(log_entry(a)) // Preimage + collision resistance (≥128-bit) ∧ HWAttestation(merkle_root, n) // TPM/enclave signed quote with nonce ∧ InferenceContained(a) // Decision vector logged before propagation

This specification states explicitly that no administrative privilege, software override, hypervisor code, or System Management Mode firmware can bypass execution gating. The actuator interlock operates at a layer below all software privilege levels: the electrical path from the decision logic to the external actuator physically traverses the interlock hardware, and there is no alternate routing that circumvents it. Transactional semantics enforce atomic commit or full abort: the sequence Idle → Proposed → Logging → Committed → Executing → Complete admits no partial states.

§ IV

Hardware Root of Trust

The invariant depends on a hardware root of trust anchoring the entire enforcement chain in tamper-resistant physical components. The trust chain extends from immutable boot ROM through measured firmware stages to the execution gate hardware, with each link cryptographically verified before control passes to the next.

Trust Chain — Boot ROM to Execution Gate
L1
Boot ROM / Root of Trust for Measurement
Mask ROM or OTP memory — cannot be modified post-manufacture. Contains first measurement code. Extends hash into TPM PCR 0.
IMMUTABLE
L2
TPM 2.0 (ISO/IEC 11889) — PCR Measurement Chain
PCR_new = Hash(PCR_old ∥ measurement). Irreversible extend operation. Signs current PCR values as attestation quotes via Endorsement Key.
TAMPER-EVIDENT
L3
Secure Enclave (Intel SGX / ARM TrustZone)
Logging subsystem executes in hardware-protected memory. MRENCLAVE hash in remote attestation reports. TrustZone enforces Normal/Secure World boundary at bus level.
ISOLATED
L4
HSM (FIPS 140-3 Level 3/4)
Key material never leaves boundary in plaintext. Tamper-detection via conductive mesh, light sensors, voltage/temp monitors. Level 4: full tamper-reactive envelope.
ZEROIZE
L5
Physical Unclonable Function (PUF)
Device-unique identity from silicon manufacturing variance (SRAM power-up states, ring oscillator deltas). No stored key — reconstructed from physics on demand. Invasion destroys identity.
UNCLONABLE
L6
Cryptographic Actuator Interlock (FPGA/ASIC Gate)
Physical electrical path to actuator traverses verification gate. No software path bypasses it. Merkle root register accessible only to logging subsystem. Fault triggers safe harbor.
GATED

The insufficiency of software-only enforcement is demonstrated through four attack vectors: kernel compromise (full physical memory access enables log suppression); hypervisor escape (documented exploits grant host memory modification); SMM subversion (SMM operates above hypervisor privilege, SMM callout vulnerabilities enable OS-level code to run at SMM privilege); and supply chain substitution (compromised UEFI modules or device firmware subvert the entire software stack before OS load). Hardware enforcement is the only sufficient countermeasure.

§ V

The Ternary Logic Mapping & Epistemic Hold / Solvency Protocol

The Ternary Logic framework defines a triadic decision space T = {+1, 0, −1} governing every decision cycle. Every decision cycle must produce a committed log entry recording which state was reached, the complete decision vector, confidence metrics, raw input data, and the specific trigger condition — before the result is released to any downstream consumer.

+1
Act
Sufficient confidence. Action aligned with operational constraints, risk thresholds, and input validity. Log entry must commit before action releases.
−1
Refuse
Hard constraint violated. Risk boundary exceeded. Validity check failed. Refusal notification must be logged before release to downstream.
0
Epistemic Hold
/ Solvency Protocol
System cannot determine. Confidence below threshold, conflicting inputs, incomplete data, or out-of-distribution input detected. Execution suspended. All intermediate artifacts logged before any continuation.

Epistemic Hold is a mandatory state triggered by any of four conditions: confidence below a calibrated per-domain threshold; conflicting inputs providing contradictory evidence; incomplete data with missing, corrupted, or stale-beyond-freshness-bound fields; and out-of-distribution inputs falling outside the convex hull or statistical boundary of the training distribution, as detected by distance metrics, anomaly scores, or distribution shift detectors.

Forced continuation prevention is enforced through three mechanisms: cryptographic time-lock functions (Wesolowski VDF — sequential squaring in a group of unknown order, not parallelizable) that require proof of elapsed time before exit from Epistemic Hold; external pressure detection through timing analysis flagging anomalous latency acceleration; and a complete audit trail of every override attempt with origin attribution, itself requiring log commitment before evaluation.

Epistemic Hold Formal Trigger Conditions EpistemicHold(a) ⟺ (confidence(a) < θ_domain) // Below calibrated threshold ∨ (∃ i,j : input_i(a) ⊕ input_j(a)) // Conflicting inputs ∨ (∃ f : missing(f) ∨ stale(f)) // Incomplete data ∨ (dist(input(a), D_train) > δ_ood) // Out-of-distribution // All of the following must be logged BEFORE continuation: Log_Hold(a) := { uncertainty_vector, calibration_metadata, raw_input_bytes, ood_detector_output, vdf_proof, override_audit_trail }
§ VI

Cryptographic Non-Repudiation of Action

Every action committed under the invariant must satisfy verifiable prior log requirements establishing an unbroken chain of cryptographic proof from system initialization through the current state. This chain begins at the boot measurement sequence (TPM PCR values) and extends through every logged decision and action via the Merkle accumulator's append-only structure.

For any action a executed at time t, a Merkle inclusion proof of O(log n) hash values demonstrates that the log entry for a is a leaf in the accumulator whose root was the active capability token at time t. A Merkle consistency proof of O(log n) hash values demonstrates that the accumulator state at any earlier time t' is a prefix of the accumulator state at t, confirming no entries were deleted, modified, or reordered.

Identity-Integrity-Logging Triad — Non-Repudiation Structure Signature covers: canonical_bytes(log_entry(a)) || TL_state ∈ {+1, 0, -1} || decision_vector || timestamp || monotonic_counter // TPM NV counter — irreversible || Hash(prev_entry) // Chain link Invalid states → immediate response: Orphan: exec(a) without log entry → safe harbor + key rotation Mismatch: stored_hash ≠ recomputed → safe harbor + quarantine Sig_fail: verify(sig, pk) = ⊥ → safe harbor + key revocation

No component of the identity-integrity-logging triad can be satisfied without the other two: an unsigned entry lacks identity attribution; a signed entry outside the Merkle accumulator lacks integrity verification; and an executed action without a prior committed entry violates the fundamental invariant. The committed log serves as behavioral proof enabling complete trace reconstruction with third-party verification independent of continued operator cooperation.

§ VII

Cryptographic Primitives & Adversarial Resistance

Canonicalization is the first defense against ambiguity-based attacks. Every log entry is serialized through a deterministic canonical form — conforming to RFC 8785 (JSON Canonicalization Scheme) or deterministic CBOR (dCBOR) — before hashing. The canonical form defines exact field ordering (lexicographic by key for JSON), exact numeric representation (IEEE 754 double-precision), and prohibits duplicate keys, optional whitespace, or alternative representations.

Cryptographic Primitive Requirements Canonicalization: RFC 8785 (JCS) or dCBOR Hash function: SHA-256 (≥128-bit collision resistance) Accumulator: RFC 9162 (Certificate Transparency v2) Merkle tree Monotonic counter: TPM 2.0 NV counter (irreversible increment) Nonce source: Hardware TRNG (within trust boundary) Signatures: ECDSA P-256 or Ed25519 (key in HSM/enclave) Replay nonce: ≥256-bit, hardware-generated per entry Byzantine channels: ≥ 3f+1 nodes to tolerate f Byzantine faults PBFT protocol (Castro-Liskov) Formally verified: Logres (Isabelle/HOL)

Silent action prevention leverages observable energy consumption correlation: power consumption during periods logged as idle that exceeds the baseline profile indicates unlogged computation. Known operation types produce characteristic signatures matchable against a reference library. This provides a physical-layer tamper detection capability independent of all software-layer mechanisms.

Post-commit immutability is enforced through hardware WORM storage ensuring committed log segments cannot be overwritten. Software-layer enforcement through systems such as SealFS (Linux kernel module with HMAC ratchet chains) ensures that even root-level modifications to committed data are cryptographically detectable. The combination ensures the committed log is immutable in both the physical and logical senses.

§ VIII

Failure Modes & Safe Harbor States

This specification requires fail-closed behavior across all critical failure modes: any failure in logging, hashing, storage, key management, or communication subsystems results in immediate cessation of action execution. Failure classification is biased toward conservative interpretation — when the nature of a failure is ambiguous, the system defaults to full halt rather than degraded operation.

Failure Mode Detection Mechanism Required Response
Storage Failure Write ACK timeout or read-back mismatch Immediate execution halt → safe harbor
Hash Inconsistency Recomputed hash ≠ stored hash in active segment Halt + segment quarantine + forensic investigation
Buffer Exhaustion Queue capacity reached, no new entries accepted Automatic halt via structural backpressure
HSM Comm Loss Heartbeat timeout Execution halt — attestation quotes cannot be generated
Key Rotation Failure M-of-N quorum failure or HSM unavailability Grace period (current key validity), then halt
Certificate Expiration Validity period expired for signing cert Immediate halt; pre-emptive warning thresholds required
Failure State Machine — CTL Model-Checked Properties States: {Normal, Degraded, Logging_Failure, Safe_Harbor_Transition, Safe_Harbor_Steady, Recovery} Safety: AG(state ∈ {Normal, Degraded, SH_Transition, SH_Steady, Recovery}) Liveness: AG(Logging_Failure → AF(Safe_Harbor_Steady)) // Within bounded convergence time T_safe Kinetic SH: V̇(x) ≤ −αV(x), α > 0 // Lyapunov exponential convergence Financial SH: AG(Log_Failure → AF(transactions_frozen ∧ liquidity_preserved))

Manual override procedures require physical presence verified through local authentication (physical key, biometric sensor, or hardware token on chassis); multi-party authorization (M ≥ 2 of N organizationally independent authorities); and complete logging — all override actions must be committed to a secondary battery-backed recording device if the primary logging subsystem is inoperative, with records integrated into the primary log upon restoration.

§ IX

Integration with Dual-Lane Architecture

The dual-lane architecture resolves the tension between sub-millisecond latency requirements and global auditability by separating log commitment into two concurrent, independent lanes with distinct latency characteristics, durability guarantees, and failure domains.

Fast Lane
Local Hardware Commitment
Latency: < 2 ms (strict bound)
Implementation: FPGA / ASIC pipeline
Storage: MRAM or battery-backed nvSRAM
Steps: Canonicalize → Hash → Merkle update → Counter increment → NV write → Read-back verify
No dependency on: OS, CPU scheduler, GC, network
Invariant: AG(exec(a) → fast_committed(a))
Slow Lane
Distributed Anchoring
Latency: Asynchronous (minutes–hours)
Mechanisms: RFC 3161 TSA · OpenTimestamps/Bitcoin · RFC 9162 CT logs
Batching: Merkle trees with per-entry inclusion proofs
Failure isolation: Does NOT block fast lane
Gap tolerance: Domain-specific, formally bounded
Property: ◇(fast_committed(a) → slow_anchored(a))
Dual-Lane Formal Properties // Invariant preserved by fast lane alone: □(exec(a) → fast_committed(a)) // Slow lane provides eventual global proof: □(exec(a) → fast_committed(a)) ∧ ◇(fast_committed(a) → slow_anchored(a)) // Gap tolerance bound: AG(fast_committed(a) → A[¬gap_exceeded U slow_anchored(a)]) // Slow lane failure does not block fast lane: □(slow_failure → ¬(fast_lane_blocked))

Circuit breaker behaviors govern the interaction: when the slow lane anchoring queue depth exceeds a high-water threshold, backpressure propagates to monitoring but does not affect fast lane throughput. When the queue exceeds a critical threshold, the circuit breaker opens, suspending new anchoring attempts. Exponential backoff prevents resource exhaustion during outages. The gap between fast lane commitment and slow lane anchoring is bounded by safety-critical time constants specified per deployment domain, with rate limiting enforced when the gap approaches the tolerance bound.

Conclusion

Binding Architectural Statement

The No Log = No Action invariant constitutes a binding architectural constraint that transforms logging from an optional telemetry service into a structurally enforced prerequisite for every externally observable effect in a Ternary Logic system. The invariant's enforcement rests on three interlocking pillars: formal temporal logic properties verified through model checking against the system's complete state space; cryptographic coupling through Merkle accumulators, digital signatures, and hardware attestation quotes that make log entries unforgeable and actor identity non-repudiable; and hardware root of trust mechanisms anchoring the entire enforcement chain in physical components resistant to software compromise, side-channel extraction, and physical tampering.

The integration of the triadic decision space into this enforcement framework ensures that Epistemic Hold — the system's admission that it does not know — receives the same structural protection as Act and Refuse. The dual-lane architecture resolves the latency-auditability tension without compromising the invariant. The fail-closed design ensures that any failure results in safe harbor transition rather than unlogged operation. The resulting system does not trust its operators, its software, or its firmware to maintain log integrity. It structurally prevents any of them from violating it.