An agent can reason, plan, and propose. Limren becomes relevant when that proposal is about to change an external system. A positive decision made earlier is not permanent permission to execute later.
Invariant
Decision is not execution. The facts that justified a decision must still be valid at the final state-changing boundary.
How to use these docs
If you are new to Limren, read Core lifecycle and Commit boundary, then use the Playground. If you are evaluating implementation behavior, move to Action envelope, Preconditions & conflict, and the Reference section.
API status
These docs intentionally do not publish package names, authentication flows, or production endpoints that are not yet part of the public surface.
An intent is the requested state change: who is acting, what should change, which target is affected, and what authority supports the request.
Bind
Limren binds the decision to the exact target, payload, authority, evidence, and dependencies it evaluated. If any of those values change, the old decision cannot silently authorize the new action.
Validate and decide
Limren checks the action against current authority, policy, state, constraints, and dependencies. It then returns ALLOW, DENY, MODIFY, STEP-UP, HOLD, or DEFER.
Revalidate
Immediately before the state change, Limren checks the decision again. Stale state, expired authority, changed dependencies, or a changed binding stop the commit.
Commit
COMMIT performs the protected state change. No other stage may write to the protected target.
Verify
After commit, Limren observes the target and compares the result with the intended state. If they differ, Limren records drift and the action moves to reconciliation.
Run action scenarios, change the conditions between decision and commit, and observe whether Limren commits, holds, verifies, or reports drift.
What you can test
Scenario
Valid action
Verified
Intent
Change requested.
Decision
ALLOW
Commit
Accepted after revalidation.
Observed result
Matches intended effect.
Scenario
Dependency drift
Held
Decision
ALLOW
Before commit
Dependency changed.
Commit
HELD
Verdict
Revalidation required.
Scenario
Expired authority
Stopped
Decision
Earlier approval is valid.
Before commit
Authority expires.
Commit
Not attempted.
Outcome
Action must be re-authorized.
Scenario
Duplicate execution
No second effect
Intent
Same logical action is replayed.
Revalidation
Duplicate is detected.
Commit
No second state change is sent.
Evidence
Replay is linked to the existing result.
Scenario
Competing write
Conflict
Decision
Built against an expected target version.
Reality
Another actor changes the target first.
Commit
Target precondition rejects the stale write.
Outcome
Re-evaluate against current state.
Scenario
Observed drift
Reconcile
Commit
Protected write is accepted.
Intended state
Expected effect is known.
Observed state
Reality differs from the intended effect.
Verdict
DRIFT → reconciliation.
Why the Playground comes first
The Playground is the most concrete way to understand Limren through cause and effect: change the conditions around an action and watch the final boundary respond.
Failure mode
The important test is not whether a proposal once received ALLOW. Change the world after the decision and verify that the final boundary notices.
The final point at which Limren decides whether a proposal may become an external state change.
Why it exists
A decision can be valid when it is made and invalid seconds later. State can change, authority can expire, a dependency can move, another actor can write first, or the payload can change.
Invariant
Decision is not execution. The facts that justified a decision must still be valid at the final state-changing boundary.
How it works
Bind the proposal to its target, payload, authority, evidence, and dependencies.
Evaluate the proposal and produce a decision.
Wait if approval or another condition is required.
Revalidate immediately before the protected write.
Commit only if the required guarantees still hold.
Observe the real result and verify it against the intended effect.
Strict commit rule
A strict commit requires a target-enforced precondition. If the target cannot enforce the precondition, the operation cannot honestly be described as strict.
What crosses the boundary
The boundary does not govern reasoning. It governs a specific state change bound to a target, payload, authority, and the facts that justified the decision.
Failure mode · Expired authority
A proposal can be allowed and still become ineligible before execution. If its authority expires before COMMIT, revalidation must stop the write rather than inherit the earlier ALLOW.
Typical reasons the boundary stops
Authority expired.
A dependency became stale.
The target version changed.
The payload no longer matches the approved proposal.
The action is a duplicate.
A required approval is missing or no longer valid.
An action carries the values that must remain bound from decision through commit: actor, target, payload, authority, evidence, dependencies, and constraints.
Current Playground shape
The current public Playground represents an action with fields such as actor, action, target, evidence, and approval.
Who or what is permitted to request, approve, and execute the change.
Target
The exact resource, record, system, or object the proposal intends to change.
Payload
The exact mutation or effect that would be committed.
Dependencies
Facts or resources that must still be current for the decision to remain valid.
Constraints
Hard limits the proposed change must not violate.
Sufficiency
Whether enough information exists to make a justified commit decision.
Closure
Whether the relevant effects and dependencies have been accounted for.
Validity
Whether the decision is still true at the final moment before commit.
Why bindings matter
The action that executes must be the action Limren evaluated. If the payload, target, authority, or evidence changes, the old decision must not carry over.
A verdict tells the system what may happen next. It does not itself perform the protected write.
Verdicts
Verdict
Meaning
ALLOW
The action may continue toward commit, subject to commit-time revalidation.
DENY
The action is not permitted under the current identity, policy, state, or effect constraints.
MODIFY
The requested effect must be changed into a permitted form before execution.
STEP-UP
Additional authority or explicit approval is required.
HOLD
The action cannot safely cross now, commonly because current reality no longer supports the earlier decision.
DEFER
Execution waits for a required condition, dependency, or decision path.
Approval is not execution
Human approval can satisfy a decision requirement, but it does not bypass commit-time checks. The target, payload, authority window, dependencies, and duplicate state still have to be valid when the write is attempted.
Compound effects
Several actions can each be safe on their own and unsafe together. Limren can delay them, serialize them, require joint approval, or hold the change set until the combined constraint is satisfied.
Commit records what Limren sent. Verification checks what the external system actually became.
Intended state vs observed state
Intended state
The state the committed effect was expected to create.
Observed state
The state returned by, or independently observed from, the real system after execution.
Verified
If the observed state satisfies the intended effect, the execution can be recorded as verified.
Drift
If reality differs from the intended effect, the mismatch becomes explicit drift. Limren should not silently treat “request accepted” as equivalent to “desired business state achieved.”
Failure mode · Accepted is not verified
An external system can accept a request while the resulting business state still differs from the intended effect. Verification exists to make that mismatch explicit.
Reconciliation
If verification finds drift, Limren must decide what happens next. That can mean a safe retry, a compensating action, human review, or holding dependent work.
Evidence
The decision, commit attempt, observed result, and verification outcome should remain connected in one evidence record.
Protected mutations must pass through the commit boundary. Agents and applications can read and propose, but they must not bypass Limren to change protected targets.
Do not give agents independent credentials for protected mutations. The commit worker should be the only component that can send the protected state change.
Read and propose
Reading state and proposing a change do not require write access. The real mutation stays behind one enforceable commit path.
The strongest commit is one the target itself can reject if the expected state is no longer true.
Strict
The target enforces a version, ETag, compare-and-set value, transaction condition, or equivalent precondition as part of the write.
Fenced
Exclusive writer control is established through a lease, lock, fencing token, or similar mechanism. This can reduce competing writes when a native target precondition is unavailable.
Non-strict
The system can check immediately before sending, but the target cannot guarantee that nothing changes between the check and the actual write.
Assurance
What enforces the final condition
Meaning
STRICT
Target
The write itself is conditional on the expected state.
FENCED
Exclusive writer mechanism
Competing writers are prevented or fenced out.
NON-STRICT
Best-effort pre-send check
A race can still exist between validation and write.
STALE vs CONFLICT
STALE means Limren detects drift before the write is sent. CONFLICT means the target rejects the attempted write because its enforced precondition no longer holds.
Failure mode · Race at the boundary
A pre-send check can be correct and still lose a race before the target applies the write. Only target-enforced conditions or an effective fencing mechanism close that gap.
Stopping an unsafe state change is only one failure case. Limren also records what failed, whether anything changed, and what must happen next.
Before send
Examples include expired authority, stale dependencies, invalid payload binding, duplicate execution, or an unmet target precondition. No protected write should be attempted.
Target rejection
A target can reject a conditional write because its version or precondition changed. Limren records this as CONFLICT.
After commit
The external system can accept a request and still end in the wrong state. Verification records that mismatch as drift.
Recovery actions
Recovery can include retrying a safe idempotent operation, producing a compensating change, escalating to an approver, serializing related work, or holding dependent actions until reconciliation completes.
Evidence records what the action depended on, what Limren decided, whether commit was attempted, and what the target returned.
Minimum useful evidence
Principal or actor identity.
Authority or approval reference.
Target identity.
Evidence identifier and observed version/freshness signal.
Decision outcome and reason.
Whether a real commit was attempted.
The observed post-commit state when execution occurs.
Model status
This page describes the evidence model documented by the current product behavior. A final public wire schema should be published only with the stable integration contract.
Why the record should be durable
A later reviewer should be able to reconstruct the decision from the original evidence. Newer state must not overwrite the evidence that was used at the time.
Limren tracks proposal, decision, commit, and verification as separate states. An action is not treated as successful just because a request was accepted.
Control outcomes such as HOLD are not transport failures. Reason codes explain why an action did not proceed.
Currently demonstrated reason
Reason
Meaning
Commit attempted?
DEPENDENCY_STALE
A dependency no longer matches the state/version relied on by the decision.
No, in the documented HOLD example.
Control outcome vs technical failure
DENY, HOLD, or STEP-UP are valid control outcomes, not necessarily infrastructure errors. A network timeout, target rejection, worker failure, or verification mismatch belongs to a different layer of the model.
Do not over-publish
Additional reason-code enums should be documented when the product contract is stable, not guessed in advance.