@MidnightNetwork
I was stepping through a Compact contract this morning and something didn’t line up.
A condition evaluated true.
The circuit behaved as if it didn’t exist.
No error.
No failure.
Just… gone.
I checked the inputs.
Correct.
Checked the conditions.
Still true.
But when I traced it through compilation, that branch never became constraints.
A conditional path depending on external input evaluated true, but never entered the circuit at all.
Not rejected.
Not broken.
Just erased.
That’s where it broke for me.
The circuit doesn’t execute your logic.
It defines what logic is allowed to exist.
If something can’t be reduced to constraints, Compact doesn’t reject it.
It erases it.
I keep coming back to this as constraint exclusion.
Not incorrect logic.
Just logic the system was never built to represent.
Which means something can be true…
and still be unprovable.
And the verifier will never know the difference.
Because from its perspective, the proof is complete.
But complete over what?
Not reality.
Only what the circuit allowed to exist.
That’s where it starts to matter.
Because now the system can prove correctness…
over an incomplete version of reality.
$NIGHT only matters if what Compact excludes never becomes part of what the verifier assumes is complete.
Because if it does, nothing breaks.
The proof still passes.
Only the truth disappears.
So the real question becomes this.
If something can be true but never provable, what exactly is the system verifying?


