These principles explain how Loop is intended to behave when design tradeoffs appear.
If two choices both look reasonable, this file is the tie-breaker.
Claims about behavior should be backed by:
- Passing checks and tests.
- Reproducible command output.
- Artifact paths for nontrivial validations.
Why:
- Confidence is cheap and usually wrong at scale.
- Evidence survives context switching.
Operational workflows should prefer deterministic outcomes over fragile brilliance.
Examples:
- Policy gates with machine-readable JSON output.
- Stable command sequences in user and developer docs.
- Explicit failure protocols in troubleshooting docs.
External surfaces are contract-sensitive. Internal implementations can evolve, but behavioral contracts need deliberate change control.
Examples:
- Compatibility helper surfaces for Python integration.
- Feature contracts under
docs/spec/. - Adapter efficacy gates that guard real scenarios.
Loop automates aggressively, but not infinitely. Activation, mode escalation, and memory use are bounded and observable.
Why:
- Unbounded autonomy is just expensive drift.
- Bounded systems are easier to debug and trust.
Formal methods are used where they add safety and leverage, not as decoration.
Examples:
- Tiered formalization depth (
Types,Invariants,Contracts,FullProofs). - Proof and sync paths integrated with governance gates.
Docs are part of the product interface. If behavior changes and docs do not, users still experience a bug.
Required habits:
- Update docs in the same change set as behavior.
- Keep navigation indexes current.
- Keep procedures command-driven and falsifiable.
Loop adds process friction at high-risk boundaries:
- Pre-commit and pre-push policy enforcement.
- Coverage and adapter efficacy gates.
- Evidence logging for significant changes.
That friction is intentional. It costs minutes now to save days later.
When unsure, ask:
- Does this change improve reproducibility?
- Does it reduce hidden risk for users or maintainers?
- Can another engineer validate the same outcome independently?
- Is the behavior clear in both code and docs?
If the answer is mostly "no," it is not ready yet.