# A policy table is a logic check

Run `python reproduce.py` with numpy and matplotlib to recreate policy.csv, study.json, validation.json and the original truth-matrix PNG/SVG/PDF. Six Boolean fields produce exactly64combinations: known, authorized, fresh, interlock, confirmation_required and confirmed. All are supplied assumptions, not implemented recognizers, authenticators, clocks or physical sensors.

The first four conditions are prerequisites. A failure gives deny, with displayed reason priority unknown command, unauthorized, stale request, then failed interlock. Every failed prerequisite is also listed in the CSV, so displaying one reason does not imply the others passed. If all four pass, required-but-absent confirmation gives await_confirmation; otherwise the result is permit. Confirmation cannot override a failed prerequisite.

The complete table has60denials,1wait and3permits. The three permits occur because when confirmation is unnecessary either confirmed value is irrelevant, and when confirmation is required it must be present. These counts are properties of the chosen logical enumeration, not real-event frequencies, false-accept rates or accident probabilities. The matrix colors are categorical, with explicit words in every cell.

Independent Boolean-expression checks verify every outcome and uniqueness of all64combinations. Permit requires known AND authorized AND fresh AND interlock AND (NOT confirmation_required OR confirmed). No outcome establishes that a physical action is safe or that a control system meets a standard.

This static study contains no pending command, bound request identifier, expiry, cancellation or execution-time state recheck. Those require separate stateful scenarios. A generic confirmation flag must not be mistaken for an actual transaction-bound authentication mechanism. The output controls no hardware.
