Wrote down the non-negotiable invariants and used them to prune scope. When you are building something with this many moving parts, it is easy to spend a week on a feature that does not actually matter. The invariants are the filter.
Here is what we reconfirmed this week:
Evaluate before execution. Always. No fire-and-forget. No "we will check after."
Every decision includes "why." Not just the outcome but the reasoning chain that produced it.
Receipts are first-class artifacts. Not logs. Not telemetry. Artifacts with structure, versioning, and access controls.
Review is real and auditable. If a human approved something, there is a record of who, when, and why.
Exactly-once semantics through claim and finalize. No duplicate executions. No silent drops.
Universal policy surface. A policy that works for one connector works for all of them.
Stripe-like developer flow. If it takes more than 15 minutes to go from "npm install" to "first policy evaluation," the onboarding is too complicated.
Anything that does not reinforce one of these invariants gets deprioritized. Not deleted, just moved to the "nice to have" list that we will get to after the core is solid.