1
2 Comments

My "proof" was never independent, and I didn't notice until today

Been building toward a three-proof model for confirmed execution: plan integrity, execution-time validity, post-dispatch evidence. Today someone asked a question that broke the third one cleanly.

The question: if the only evidence that something executed comes from the same system you're trying to verify, is that actually evidence, or just the system's own claim about itself?

My planned post-dispatch check was going to be an SMS provider's delivery webhook, a calendar API's confirmation response. Then it hit me: that's not independent evidence. That's the system I'm verifying, reporting on itself. I don't have a second phone confirming a text arrived, or a separate account reading the calendar from outside. For a solo build, true independent verification of a third-party API might not be achievable at all — only degrees of how much I trust a given provider's own word.

Which means DENIED_UNRESOLVED might not be a temporary state I eventually close for a lot of actions. It might be honestly permanent — not because the verification isn't built yet, but because independent evidence genuinely isn't available at this resource level.

The provider's webhook is still evidence. It's just weaker evidence than true independence, and I think the actual discipline is labeling that difference explicitly instead of letting a provider's self-report quietly earn the same trust an independent check would.

Three weeks into this model and I keep finding the next layer down instead of the bottom.

on September 13, 2026
  1. 1

    The distinction between provider evidence and independent evidence is easy to miss, especially in a solo build. I like the idea of making DENIED_UNRESOLVED permanent rather than quietly treating a webhook as confirmation. Even a simple trust label in the UI would help users understand what was actually verified. The second-account or second-channel check sounds like a good test for which actions deserve more confidence.

    1. 1

      Appreciate that — the trust label is actually the part I'm least sure how to do well. A binary "verified/unverified" flag feels honest but almost useless to a user in the moment; a full explanation of why it's unresolved feels like too much friction for a confirmation screen that's supposed to be fast.

      The second-channel check is the one I'm most excited about and least sure is affordable. For SMS specifically I don't have an obvious second channel — I don't control the carrier or the recipient's phone. Where it might actually work is something like calendar events, where I could re-query the calendar API after dispatch and see if the event exists with the right parameters, instead of trusting my own "it returned 200" moment. That's still not fully independent since it's the same provider, but it's a step better than trusting my own write call to also grade its own homework.

      Curious if you've run into a case where the second-channel check was worth building versus one where it wasn't worth the complexity — that tradeoff is the part I don't have good intuition for yet.