You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Define the canonical transaction protocol for a state-affecting action whose immutable action rule selects humanFinalizationRequirement = NOT_REQUIRED.
The first concrete handoff is ASSERT_OPERATION_CLAIM: one eligible submission creates exactly one immutable PENDING_REVIEW AssertionRecord, together with its complete authorization, transaction, validation, consumption, and receipt evidence, in one short guarded protected-effect transaction.
An exact retry must discover the original operation rather than create another claim. Lost responses and concurrent duplicates must not cause another protected effect or another consumption of the write decision. A conclusively rolled-back attempt may proceed only through fresh current evaluation. An uncertain commit blocks reapplication until authoritative reconciliation resolves it.
Atomicity applies to the successful effect set, not to the erasure of failure evidence. The complete successful set commits together or none of its successful components becomes visible. Truthful ingress-rejection, authorization-refusal, and non-consumable failure-attempt evidence follow their separately defined persistence rules.
No human approval step is fabricated. No successful submission becomes accepted execution, a ReviewDecision, current state, or another implied domain effect.
2. Exact Phase A dependencies
These candidates have semantic approval at the following exact heads but remain draft and non-authoritative:
compatible transaction, idempotency, consumption, and reconciliation concepts; its applicability remains limited to fresh approval and direct human action
These are explicit PR comments rather than formal APPROVED review objects and are the exact-head steward approval records in the current project history.
PR #20 explicitly excludes NOT_REQUIRED. PR #23 therefore leaves operation-claim execution blocked on this separate transaction profile.
Any semantic change to a pinned dependency requires renewed dependency review. Neither the pins nor this issue override active authority. Apply the repository order: 00_active_baseline/, then 02_accepted_rfcs/, then 01_companion_artifacts/, then 03_machine_contracts/.
The candidate must contain the proposed protocol, exact operation-binding rules, compatibility ledger, failure matrix, first operation-claim handoff, falsifiable cases, traceability, and steward approval card.
Change classification: proposed RFC extension, with later machine-contract and implementation/conformance implications. No active-baseline file is affected by this Phase A PR. In particular, do not edit the Constitution or Platform Runtime architecture.
This PR changes no accepted RFC, companion policy, machine schema, current/default selection, runtime code, database implementation, or readiness claim.
4. Ownership and compatibility ledger
PR #11 remains the owner of authorization meaning. PR #23 remains the owner of AssertionRecord meaning. This issue coordinates their exact handoffs; it does not create a second authorization evaluator or duplicate domain mappings.
Include an explicit compatibility ledger against PR #20, distinguishing:
mode-specific concepts not applicable here: approval reservation/generation, challenge, intended approver, human-finalization act, approval, approval consumption, and direct-human finalization evidence; and
the new NOT_REQUIRED transaction/evidence profile and its exact relationship to the shared evidence package.
Adoption of compatible concepts does not widen PR #20's applicability. Its existing human-finalization profiles remain unchanged.
The candidate must also include an evidence-profile ownership table shaped like PR #20 §18. For the operation binding, transaction attempt, mode-correct NOT_REQUIRED evidence, authorization request/result/internal trace, decision consumption, protected result, gate traces, governed-effect receipt, refusal evidence, and non-consumable failure-attempt evidence, the table must name the semantic owner, proposed package/profile, exact truth claim, success-set placement, and failure/retry posture.
The NOT_REQUIRED transaction-attempt and evidence profiles are owned by #25. They may be proposed as tagged additions within the already proposed AuthorizationFinalizationEvidence v0.2 package using PR #20 §18's mechanism, without widening #19. If exact machine-schema review later proves that package cannot represent the distinct truth claims, stop and split the schema decision. This Phase A issue defines ownership and semantics only; it does not materialize schema bytes.
OFARM2 #173 owns runtime UnitOfWork foundations, #178 owns command-idempotency implementation, and #353 owns authorization-evaluator implementation. Those issues must consume promoted canonical meaning rather than invent it.
5. Required semantic closure
A. Rule-selected admission and mode-correct evidence
Admit a new execution attempt only when the immutable current action rule selects NOT_REQUIRED, the action is state-affecting, and the exact protected-effect contract and transaction profile are validly bound. RECEIVE_READ_DATA is not admitted merely because it also uses NOT_REQUIRED; its separately owned governed-read protocol remains unchanged.
A caller cannot select, downgrade, or substitute the mode. Missing, mutable, unsupported, or digest-invalid bindings fail closed.
Create no approval reservation, challenge, intended-approver record, human-finalization-act record, approval, approval consumption, reservation terminal record, or direct-human finalization evidence. Inapplicable fields are absent, not synthetic values, empty objects, or fabricated proof.
This restriction does not prohibit natural-person submission or erase AssertionRecord-domain assertion-act provenance. In particular, PR #23's VERIFIED_OFFLINE_SUBMISSION may require immutable assertion-act evidence even though no human approval is required for transaction finalization. Preserve that distinction explicitly.
Define the exact NOT_REQUIRED evidence truth claim, its placement in the transaction sequence, its immutable bindings, and its owner within the proposed shared AuthorizationFinalizationEvidence v0.2 package. It must record the rule-selected absence of a human-finalization requirement without pretending that an approval occurred.
B. Separate the lookup key from the operation digest
Use this authoritative idempotency lookup scope, compatible with PR #20 §6.2:
The rule-selected mode, effect-intent schema, effect-intent digest, result digest, and transaction-profile version must not create extra lookup namespaces that allow the same tuple to evade its earlier operation.
Separately define the exact canonical operationBindingDigest over the complete logical-operation binding, including the tuple, immutable requester and applicable representation bindings, rule-selected mode, effect-intent schema binding, and exact effectIntentDigest. Close the object shape, required absence/null posture, canonicalization, and digest construction in the candidate; do not leave them to runtime authors.
For retry and conflict detection, the authoritative comparison oracle is the exact caller-owned submission projection required by section 5C, not a newly recomputed full operationBindingDigest. The full operationBindingDigest is fixed exactly once when the first durable logical-operation binding is admitted and is recovered thereafter. The candidate must define the exact admission point at which that binding first exists, the atomic winner rule for concurrent first admissions, and the treatment of failures before and after that point.
The same tuple identifies one logical operation. The same tuple with changed bound operation content is a conflict, not a second operation. Result substitution must also be detected against the exact admitted or committed result binding; result digests are not lookup-key dimensions.
If an existing logical operation has a durable NO_EFFECT attempt under NOT_REQUIRED and the current rule later selects a different human-finalization mode, the same-key retry is TERMINAL_REQUIRES_NEW_OPERATION_KEY. It cannot enter this profile or borrow another profile under the old key. A genuinely new submission requires a new caller key and follows the newly selected mode.
Lookup and conflict detection must work across relevant transaction handlers/profiles. A later governed mode or schema change cannot hide an earlier success or unresolved attempt. Discover/reconcile the earlier operation before deciding whether the retry conflicts. A deliberately new operation requires a new caller key.
The Phase A candidate must either bind an accepted canonical identifier profile for operationIdempotencyKey or define its exact grammar and equality semantics. It must state whether equality is byte-exact or code-point-exact and explicitly address trimming, case folding, Unicode normalization, collation, and punctuation reinterpretation. It must not silently import an OFARM2 implementation convention as canonical law.
Retention or governed deletion may remove bulky evidence only when separately permitted, but it must not make a caller-key tuple reusable while a committed effect, receipt, unresolved attempt, replay obligation, or authoritative historical operation binding remains reachable. A durable binding or tombstone must preserve conflict detection. This issue does not select a retention duration, encryption mechanism, or storage table.
C. Preserve trusted intent enrichment across retries
Close the admission order between stable-key lookup, comparison of caller-owned submission content, trusted runtime completion of the intent, intent validation/digest calculation, and current execution evaluation.
For TRUSTED_ONLINE_SUBMISSION, the assertion act of a logical operation is its first admitted submission at the durable binding point defined in section 5B. The runtime supplies and binds assertedAt once before the full intent digest is fixed. Every later attempt under that logical operation recovers the same authoritative assertion-act binding; its later receipt, retry, authorization, or commit time is not a new assertion act. If no durable operation binding was ever admitted, the candidate must not claim that an earlier assertion-act binding survives.
PR #23 §6.2 requires the runtime to supply assertedAt for TRUSTED_ONLINE_SUBMISSION before intent validation and hashing. Therefore:
for an existing committed or unresolved operation, recover its authoritative runtime-completed intent and trusted timestamp binding before comparing retry digests; do not generate a new timestamp and misclassify the identical caller submission as changed intent;
a caller-provided timestamp, digest, receipt, or cached response cannot substitute for authoritative stored evidence;
define an exact comparison/projection for the retried caller-owned content and its relationship to the full immutable intent; this comparison cannot omit a caller field that changes the operation, weaken full-intent hashing, or become a second source of authorization facts;
concurrent identical submissions must resolve to one authoritative operation binding; independently generated timestamps must not turn identical submissions into artificial payload conflicts; and
after conclusive rollback, state exactly what binding evidence survives, how any originally trusted fields are recovered, and what happens when no original binding is durably provable. Never reconstruct a trusted timestamp from caller memory or claim an original digest that cannot be proven.
The candidate must choose and document these rules, not defer them to schema or database implementation. Solve them without introducing an approval reservation, a portable precommitted authorization decision, or a second authoritative effect intent. Preserve PR #23's distinction between assertion time, receipt/synchronization time, authorization time, and commit time.
D. One short guarded protected-effect transaction
Bind the exact immutable transaction-policy identity/digest and its trusted time source, deadline calculation, atomic persistence boundary, snapshot proof, isolation/commit-guard mode, and authoritative status-lookup mechanism. The caller cannot choose or extend these values.
Within the transaction, re-resolve current principal/session, representation, applicable CP3 evidence, authority sources, revocations, policy/rule bindings, resources, evidence, scope, sovereignty, target and protected-effect state, and every other applicable EnforcementChain input.
A read snapshot alone is insufficient. Guard the complete relevant read/write set, including negative and set-valued facts such as absence of revocation and absence of an existing prospective result. Guard coverage must be explicit; locking only positive grant records is insufficient.
Compute decisionValidUntil using PR #11's exact cutoff function, including the trusted transaction deadline. Enforce the exclusive cutoffs through successful commit. Do not invent a universal wall-clock duration or claim that an undocumented isolation level satisfies the guard.
The ordered protocol must obtain the truthful final authorization result, validate all applicable non-authorization gates, validate the exact domain handoff, construct the complete success set, and recheck deadlines, uniqueness, and state guards before atomic commit. Inapplicable gates must not be reported as passed.
E. Exact handoff and atomic success set
Require the rule-bound protected-effect contract identity/version/digest, contract-owned result-schema binding, complete proposed result bytes/digest, mapping/postcondition trace, required immutable state inputs, absence guards, and overall passing disposition.
The transaction coordinator verifies that handoff and commits the validated bytes. It does not reinterpret AssertionRecord fields or create unbound companion effects.
The successful commit atomically includes the operation binding and required transaction evidence, final authorization request/result/full internal trace and bundle digest, mode-correct NOT_REQUIRED evidence, exactly one decision-consumption record, the exact protected result, protected-effect and other applicable gate traces, and exactly one governed-effect receipt identifying the complete set.
No protected effect becomes visible without all required matching success evidence. Consumption becomes durable only with successful commit. Mutable coordination rows may support the protocol but cannot replace immutable operation, attempt, consumption, or receipt evidence as the surviving audit account.
F. Failure evidence is not successful effect evidence
Define EFFECT_COMMITTED, NO_EFFECT, and OUTCOME_UNKNOWN as transaction outcomes through the compatibility ledger, not authorization outcomes or new public RuntimeProblem codes.
The candidate must state the exact PR #11 §18.1/admission step at which a durable logical-operation binding first exists. An ingress rejection before that point may lack the authenticated principal, action class, or complete idempotency tuple and therefore has no logical-operation lifecycle consequence.
Condition
Required posture
Required lifecycle consequence
Malformed request, invalid intent, or invalid ingress binding
Follow PR #11's ingress-rejection rules; do not fabricate a validated authorization result. No protected effect or consumption.
Before the durable operation-binding point, NO_OPERATION_CONSEQUENCE. After that point, the candidate must assign the exact conclusive attempt consequence or unresolved posture supported by the evidence.
Schema-valid non-ALLOW authorization
Preserve the truthful request/result/internal-trace refusal bundle under PR #11 §18.7. No protected effect, successful finalization evidence, consumption, or success receipt.
A conclusively committed refusal is NO_EFFECT and receives exactly one immutable attempt consequence from the lifecycle matrix.
Authorization ALLOW, followed by domain or another gate failure
Preserve the authority-gate conclusion. No protected effect or consumption. Any durably retained failure-attempt evidence is explicitly non-consumable and cannot later be upgraded in place.
A conclusively committed no-effect failure receives exactly one immutable attempt consequence from the lifecycle matrix.
Transaction failure with proven rollback
NO_EFFECT; any later execution attempt obtains a new transaction-bound evaluation and repeats all current checks. Do not reuse the failed attempt's decision as authority.
If no durable attempt consequence committed, the prior authoritative operation state controls. If conclusive no-effect evidence committed separately, it receives exactly one immutable attempt consequence.
Failure-evidence persistence fails
Fail closed without claiming a durable rejection, refusal, or attempt record that did not commit.
NO_NEW_CONSEQUENCE; prior authoritative operation evidence controls. If no durable operation binding exists, no logical-operation retry claim exists.
No NO_EFFECT consequence is recorded for that attempt. The derived operation state is BLOCKED_PENDING_RECONCILIATION and names the exact unresolved attempt or fact.
Only part of the required success set exists
Invariant breach; quarantine for separately governed repair. No automatic evidence synthesis, deletion, or effect replay.
No fabricated NO_EFFECT consequence. The operation is quarantined and blocked under the exact partial-set evidence.
Every conclusively proven durable NO_EFFECT attempt under an existing logical operation records exactly one immutable attempt consequence:
RETRYABLE_SAME_OPERATION; or
TERMINAL_REQUIRES_NEW_OPERATION_KEY.
Equivalent final names are acceptable, but the candidate must assign exact semantics and one consequence to every durable failure class. An OUTCOME_UNKNOWN attempt records neither value. BLOCKED_PENDING_RECONCILIATION is a separately derived operation-level reapplication state, not an immutable NO_EFFECT attempt consequence.
For RETRYABLE_SAME_OPERATION, the earlier attempt and evidence remain immutable, the operation binding and original trusted intent facts remain fixed, a new transaction attempt obtains a fresh current authorization decision, the earlier decision is never reused or consumed, and at most one attempt may eventually commit the protected effect.
For TERMINAL_REQUIRES_NEW_OPERATION_KEY, a later submission requires a new caller key and cannot masquerade as a retry. A mode change away from the operation's bound NOT_REQUIRED value always has this terminal consequence.
The candidate must define immutable attempt ordering and one deterministic admission view when attempts disagree. At minimum: an existing matching successful receipt makes the operation complete; a partial success set quarantines it; any unresolved attempt blocks reapplication while naming that attempt; otherwise the most recent conclusively ordered durable NO_EFFECT consequence controls whether another attempt may begin.
The lifecycle matrix must cover at least committed DENY, committed REQUIRE_REVIEW, authorization ALLOW followed by a committed non-consumable domain failure, a deterministic invalid protected result, a transient infrastructure failure with conclusive no-effect evidence, failure-evidence persistence failure, and failures before versus after durable operation admission.
Absence of a receipt from a cache, replica, timed-out lookup, or incomplete result is not proof of rollback. A failure to write audit evidence does not establish that an earlier uncertain effect failed.
G. Retry, concurrency, and receipt disclosure
Enforce at most one successful receipt and one successful write-decision consumption per logical operation, at most one consumption of each decision, and one immutable byte sequence for every committed result identity. Application-level check-then-insert without an atomic uniqueness or commit guard is insufficient.
An exact retry after success resolves the original decision/result/receipt identities and digests without rebuilding the effect or consuming the write decision again. Matching concurrent duplicates converge on that same committed result. Conflicting operation or result content cannot borrow the winner's receipt as its own success.
Reconciliation verifies the complete matching success set and transaction status. Only authoritative complete success or conclusive rollback resolves uncertainty. A new transaction attempt may not apply the effect while an earlier attempt remains unresolved.
Receipt lookup is not blanket disclosure authority. Authenticate the requester and scope the lookup before exposing operation information. Apply PR #11's existing safe-response, trace, and disclosure rules to returned content. A caller key is not a read credential. Preserve the original historical result internally even when current permissions require withholding or redacting the response; do not re-execute the completed write to retrieve it. Any separately required read authorization remains a separate action, not another consumption of the original write decision.
6. First concrete handoff: ASSERT_OPERATION_CLAIM
Consume PR #23's exact contract ofarm.protectedeffect.assertionrecord.submit.v0.1, with the operation branch of the future ofarm.assertionrecord.v0.2 carrier.
The asserted Party remains the selected authority subject. The alleged performer remains separate, and performer authority remains NOT_EVALUATED_BY_AUTHORIZATION. Preserve the contract's online/offline assertion-act rules, intended/performed subject-time profiles, exact body/evidence bindings, and conditional correction-lineage checks.
The transaction provides the trusted starting-snapshot proof and state guards required by that handoff; it does not redefine the correction predicate. Optional semantic-event association remains owned and validated as specified by PR #23 and Event Ingress. Do not derive an event family from the assertion subtype.
No accepted execution, review, current-state materialization, prior-record mutation, or implicit companion effect is admitted. Other state-affecting NOT_REQUIRED actions remain unsupported until their own approved contracts and exact transaction bindings exist.
7. Required falsifiable cases
The Phase A candidate must give an explicit expected disposition for each case. These are obligations for later executable conformance, not a claim that runtime tests ran in this documentation PR.
Case
Required result
Eligible initial operation claim
One complete atomic success set; one pending-review assertion.
Exact retry after commit, including lost response
Original authoritative IDs, digests, assertedAt, result, and receipt; no second write consumption/effect.
Identical online submissions with the same authoritative idempotency tuple arrive concurrently at different receipt times
One authoritative trusted intent binding and one success; no artificial conflict caused solely by independently generated timestamps.
Same scoped key with changed caller content, effect schema, mode, or proposed result
Earlier operation is discovered; conflict/reconciliation as applicable, never a new hidden namespace.
Durable NO_EFFECT under NOT_REQUIRED, followed by a current rule selecting FRESH_HUMAN_APPROVAL_REQUIRED or another mode, then retry with the same caller key
Discover the earlier operation and return TERMINAL_REQUIRES_NEW_OPERATION_KEY; do not enter either profile under the old key.
Retry recomputes the full operation digest from a new runtime-generated timestamp
Conflict logic uses the stored caller-owned projection and recovers the bind-once full digest and first-admitted assertedAt; no artificial conflict.
Caller supplies an online assertion timestamp or substitutes cached binding evidence
Cannot create trusted time or override the stored operation.
Verified offline assertion has distinct assertion, receipt, and commit times
Preserve each governed time and its evidence; no fabricated human-finalization artifacts.
Human-required rule is routed to this profile, or approval artifacts are inserted
Admission/profile failure; no protected effect or consumption.
Revocation is inserted after lookup, or a relevant resource/evidence/policy/state input changes before commit
Complete guard blocks stale success, including negative/set-valued facts.
Deadline or decision validity reaches its exclusive cutoff at commit
No successful commit claim.
Result bytes, result schema, contract binding, or trace are substituted
Handoff/integrity failure; no effect or consumption.
Domain validation fails after authorization ALLOW
Preserve ALLOW as the authority-gate result; truthful non-consumable failure evidence only.
Committed DENY, followed by an authority change and retry
Apply the declared durable NO_EFFECT consequence; never reuse the earlier decision or silently choose between cached denial and fresh evaluation. If retry is permitted, recover the original first-admitted assertedAt and obtain a fresh current decision.
Committed REQUIRE_REVIEW, followed by retry
Apply the declared durable NO_EFFECT consequence; no protected effect and no reuse of the earlier decision.
Authorization ALLOW plus committed non-consumable domain failure, followed by retry
Apply the declared durable NO_EFFECT consequence; preserve the earlier attempt and evidence immutably and never treat them as consumption or effect.
Deterministically invalid protected-result bytes are retried unchanged
The declared consequence prevents an indefinite retry loop; no protected effect or consumption.
Transient infrastructure failure has conclusive durable no-effect evidence
Follow the declared retryability; any permitted retry uses fresh current evaluation and never reuses the earlier decision.
Idempotency keys differ only by case, trailing space, Unicode representation, or punctuation
The bound canonical profile produces one deterministic validation and equality result without implementation-local normalization.
Retention or governed deletion removes bulky evidence while an operation, effect, receipt, unresolved attempt, replay obligation, or historical binding remains reachable
A durable binding or tombstone preserves conflict detection and the caller-key tuple cannot be rebound.
Valid request is refused, or refusal-evidence persistence fails
Required refusal evidence survives when committed; otherwise no false durable-refusal claim.
Malformed or invalid ingress fails before the durable operation-binding point
Record only the truthful ingress rejection permitted by PR #11; no logical-operation lifecycle consequence is invented.
Failure-evidence persistence fails after a proven rollback
Record no new durable consequence; prior authoritative operation evidence controls and no failed write is claimed to exist.
One attempt is conclusively NO_EFFECT while a different attempt remains unresolved
Keep the conclusive attempt's immutable consequence, derive the operation as BLOCKED_PENDING_RECONCILIATION, and identify the separate unresolved attempt.
Conclusive rollback followed by retry
Apply the explicit surviving-binding rule and repeat every current check with a new transaction-bound decision.
Commit status is ambiguous or receipt lookup is stale/incomplete
Remain blocked from reapplication.
Partial success set is visible
Quarantine; no automatic synthesis, deletion, or replay.
Receipt retry occurs after disclosure permissions change
Preserve historical success and prevent duplicate execution while applying current safe disclosure rules.
Unapproved effect family or governed-read action attempts to use this state-affecting profile
Unsupported; no inferred transaction support.
Later executable tests must enter through the real admission, authorization, protected-effect, persistence, and reconciliation paths. Helper-only tests do not establish the protocol claim.
8. Non-goals and stop conditions
No authorization-matrix/action-class change; no change to PR #20's human-finalization modes; no AssertionRecord or Event Grammar redesign; no accepted-law, schema, currentness, or runtime edits in Phase A.
No generic workflow engine, separate authorization registry, portable decision cache, new domain truth store, external dispatch, public reason-code invention, retention/encryption/key-custody policy, database authority, administrative repair, break-glass authorization, or production-readiness claim.
Outcome reconciliation belongs here. Database recovery and repair execution do not.
Stop and split before changing a pinned dependency's semantics, introducing another trust boundary, inventing missing domain/evidence/time-trust law, creating machine schemas in the candidate PR, or implementing OFARM2 behavior before canonical promotion and extraction. Exposing a missing prerequisite is acceptable; silently filling it in or marking it closed is not.
9. Staged delivery and completion gate
Prepare the one-file non-authoritative Phase A candidate.
Obtain source-verified review and explicit semantic approval at its exact head.
Separately materialize non-default transaction/evidence profiles and the required domain/shared-evidence prerequisites.
Complete the required hostile conformance and record its evidence without overstating what is exercised.
Change current/default selections only through a separate steward-approved promotion.
Extract promoted canonical bytes into OFARM2, verify digests, then undertake separately reviewable runtime work.
Phase A is complete only when every requirement above has a closed proposed disposition, the exact dependency heads remain approved, the compatibility ledger and steward approval card are explicit, and no required semantic choice is left to schema or runtime authors. Unresolved choices remain named blockers to approval.
The completion gate specifically includes the exact NO_EFFECT versus OUTCOME_UNKNOWN separation, deterministic operation-level admission precedence, the mode-change terminal rule, failure classes with no operation consequence, the caller-projection conflict oracle and bind-once full digest, first-admitted assertion-act identity, evidence-profile ownership table, idempotency-key grammar and equality, the no-unsafe-forgetting invariant, and their production-reachable cases.
Also verify GitHub generated-currentness and repository-validation, exact dependency heads and source sections, one changed candidate file, and no active/current contract changes. Report actual results at the reviewed head; do not infer semantic correctness from a green repository suite.
Source anchors for the review-sensitive requirements:
Next action: draft the one-file candidate against this specification and request exact-head semantic review. Keep it non-authoritative; do not merge, promote, materialize schemas, or start OFARM2 runtime implementation on the strength of this comment.
Parent: #10
Related: #12, #21, #22
Downstream runtime work: samovers/OFARM2#353, samovers/OFARM2#178, samovers/OFARM2#176
Runtime UnitOfWork foundation: samovers/OFARM2#173
1. Outcome
Define the canonical transaction protocol for a state-affecting action whose immutable action rule selects
humanFinalizationRequirement = NOT_REQUIRED.The first concrete handoff is
ASSERT_OPERATION_CLAIM: one eligible submission creates exactly one immutablePENDING_REVIEWAssertionRecord, together with its complete authorization, transaction, validation, consumption, and receipt evidence, in one short guarded protected-effect transaction.An exact retry must discover the original operation rather than create another claim. Lost responses and concurrent duplicates must not cause another protected effect or another consumption of the write decision. A conclusively rolled-back attempt may proceed only through fresh current evaluation. An uncertain commit blocks reapplication until authoritative reconciliation resolves it.
Atomicity applies to the successful effect set, not to the erasure of failure evidence. The complete successful set commits together or none of its successful components becomes visible. Truthful ingress-rejection, authorization-refusal, and non-consumable failure-attempt evidence follow their separately defined persistence rules.
No human approval step is fabricated. No successful submission becomes accepted execution, a ReviewDecision, current state, or another implied domain effect.
2. Exact Phase A dependencies
These candidates have semantic approval at the following exact heads but remain draft and non-authoritative:
03a21f669ee04f96d444e14f00ae7212cab04803NOT_REQUIRED,TRANSACTION_BOUND_V0_2,SINGLE_USE,decisionValidUntil, refusal evidence, and disclosure limits98f8c4fafbae42c8f7fd931f43f53adcb4733713622376e2998cf8b3954ca19e81d2cce6fd57e5feThe exact-head steward semantic approval records are:
03a21f669ee04f96d444e14f00ae7212cab04803;98f8c4fafbae42c8f7fd931f43f53adcb4733713; and622376e2998cf8b3954ca19e81d2cce6fd57e5fe.These are explicit PR comments rather than formal
APPROVEDreview objects and are the exact-head steward approval records in the current project history.PR #20 explicitly excludes
NOT_REQUIRED. PR #23 therefore leaves operation-claim execution blocked on this separate transaction profile.Any semantic change to a pinned dependency requires renewed dependency review. Neither the pins nor this issue override active authority. Apply the repository order:
00_active_baseline/, then02_accepted_rfcs/, then01_companion_artifacts/, then03_machine_contracts/.3. Primary trust boundary and Phase A PR boundary
Primary trust boundary: transaction admission, guarded ordering, atomic success, single-use consumption, retry identity, and authoritative outcome reconciliation for
NOT_REQUIREDstate-affecting actions.Create one non-authoritative candidate file:
The candidate must contain the proposed protocol, exact operation-binding rules, compatibility ledger, failure matrix, first operation-claim handoff, falsifiable cases, traceability, and steward approval card.
Change classification: proposed RFC extension, with later machine-contract and implementation/conformance implications. No active-baseline file is affected by this Phase A PR. In particular, do not edit the Constitution or Platform Runtime architecture.
This PR changes no accepted RFC, companion policy, machine schema, current/default selection, runtime code, database implementation, or readiness claim.
4. Ownership and compatibility ledger
PR #11 remains the owner of authorization meaning. PR #23 remains the owner of AssertionRecord meaning. This issue coordinates their exact handoffs; it does not create a second authorization evaluator or duplicate domain mappings.
Include an explicit compatibility ledger against PR #20, distinguishing:
NOT_REQUIREDtransaction/evidence profile and its exact relationship to the shared evidence package.Adoption of compatible concepts does not widen PR #20's applicability. Its existing human-finalization profiles remain unchanged.
The candidate must also include an evidence-profile ownership table shaped like PR #20 §18. For the operation binding, transaction attempt, mode-correct
NOT_REQUIREDevidence, authorization request/result/internal trace, decision consumption, protected result, gate traces, governed-effect receipt, refusal evidence, and non-consumable failure-attempt evidence, the table must name the semantic owner, proposed package/profile, exact truth claim, success-set placement, and failure/retry posture.The
NOT_REQUIREDtransaction-attempt and evidence profiles are owned by #25. They may be proposed as tagged additions within the already proposedAuthorizationFinalizationEvidence v0.2package using PR #20 §18's mechanism, without widening #19. If exact machine-schema review later proves that package cannot represent the distinct truth claims, stop and split the schema decision. This Phase A issue defines ownership and semantics only; it does not materialize schema bytes.OFARM2 #173 owns runtime UnitOfWork foundations, #178 owns command-idempotency implementation, and #353 owns authorization-evaluator implementation. Those issues must consume promoted canonical meaning rather than invent it.
5. Required semantic closure
A. Rule-selected admission and mode-correct evidence
Admit a new execution attempt only when the immutable current action rule selects
NOT_REQUIRED, the action is state-affecting, and the exact protected-effect contract and transaction profile are validly bound.RECEIVE_READ_DATAis not admitted merely because it also usesNOT_REQUIRED; its separately owned governed-read protocol remains unchanged.A caller cannot select, downgrade, or substitute the mode. Missing, mutable, unsupported, or digest-invalid bindings fail closed.
Create no approval reservation, challenge, intended-approver record, human-finalization-act record, approval, approval consumption, reservation terminal record, or direct-human finalization evidence. Inapplicable fields are absent, not synthetic values, empty objects, or fabricated proof.
This restriction does not prohibit natural-person submission or erase AssertionRecord-domain assertion-act provenance. In particular, PR #23's
VERIFIED_OFFLINE_SUBMISSIONmay require immutable assertion-act evidence even though no human approval is required for transaction finalization. Preserve that distinction explicitly.Define the exact
NOT_REQUIREDevidence truth claim, its placement in the transaction sequence, its immutable bindings, and its owner within the proposed sharedAuthorizationFinalizationEvidence v0.2package. It must record the rule-selected absence of a human-finalization requirement without pretending that an approval occurred.B. Separate the lookup key from the operation digest
Use this authoritative idempotency lookup scope, compatible with PR #20 §6.2:
The rule-selected mode, effect-intent schema, effect-intent digest, result digest, and transaction-profile version must not create extra lookup namespaces that allow the same tuple to evade its earlier operation.
Separately define the exact canonical
operationBindingDigestover the complete logical-operation binding, including the tuple, immutable requester and applicable representation bindings, rule-selected mode, effect-intent schema binding, and exacteffectIntentDigest. Close the object shape, required absence/null posture, canonicalization, and digest construction in the candidate; do not leave them to runtime authors.For retry and conflict detection, the authoritative comparison oracle is the exact caller-owned submission projection required by section 5C, not a newly recomputed full
operationBindingDigest. The fulloperationBindingDigestis fixed exactly once when the first durable logical-operation binding is admitted and is recovered thereafter. The candidate must define the exact admission point at which that binding first exists, the atomic winner rule for concurrent first admissions, and the treatment of failures before and after that point.The same tuple identifies one logical operation. The same tuple with changed bound operation content is a conflict, not a second operation. Result substitution must also be detected against the exact admitted or committed result binding; result digests are not lookup-key dimensions.
If an existing logical operation has a durable
NO_EFFECTattempt underNOT_REQUIREDand the current rule later selects a different human-finalization mode, the same-key retry isTERMINAL_REQUIRES_NEW_OPERATION_KEY. It cannot enter this profile or borrow another profile under the old key. A genuinely new submission requires a new caller key and follows the newly selected mode.Lookup and conflict detection must work across relevant transaction handlers/profiles. A later governed mode or schema change cannot hide an earlier success or unresolved attempt. Discover/reconcile the earlier operation before deciding whether the retry conflicts. A deliberately new operation requires a new caller key.
The Phase A candidate must either bind an accepted canonical identifier profile for
operationIdempotencyKeyor define its exact grammar and equality semantics. It must state whether equality is byte-exact or code-point-exact and explicitly address trimming, case folding, Unicode normalization, collation, and punctuation reinterpretation. It must not silently import an OFARM2 implementation convention as canonical law.Retention or governed deletion may remove bulky evidence only when separately permitted, but it must not make a caller-key tuple reusable while a committed effect, receipt, unresolved attempt, replay obligation, or authoritative historical operation binding remains reachable. A durable binding or tombstone must preserve conflict detection. This issue does not select a retention duration, encryption mechanism, or storage table.
C. Preserve trusted intent enrichment across retries
Close the admission order between stable-key lookup, comparison of caller-owned submission content, trusted runtime completion of the intent, intent validation/digest calculation, and current execution evaluation.
For
TRUSTED_ONLINE_SUBMISSION, the assertion act of a logical operation is its first admitted submission at the durable binding point defined in section 5B. The runtime supplies and bindsassertedAtonce before the full intent digest is fixed. Every later attempt under that logical operation recovers the same authoritative assertion-act binding; its later receipt, retry, authorization, or commit time is not a new assertion act. If no durable operation binding was ever admitted, the candidate must not claim that an earlier assertion-act binding survives.PR #23 §6.2 requires the runtime to supply
assertedAtforTRUSTED_ONLINE_SUBMISSIONbefore intent validation and hashing. Therefore:The candidate must choose and document these rules, not defer them to schema or database implementation. Solve them without introducing an approval reservation, a portable precommitted authorization decision, or a second authoritative effect intent. Preserve PR #23's distinction between assertion time, receipt/synchronization time, authorization time, and commit time.
D. One short guarded protected-effect transaction
Bind the exact immutable transaction-policy identity/digest and its trusted time source, deadline calculation, atomic persistence boundary, snapshot proof, isolation/commit-guard mode, and authoritative status-lookup mechanism. The caller cannot choose or extend these values.
Within the transaction, re-resolve current principal/session, representation, applicable CP3 evidence, authority sources, revocations, policy/rule bindings, resources, evidence, scope, sovereignty, target and protected-effect state, and every other applicable
EnforcementChaininput.A read snapshot alone is insufficient. Guard the complete relevant read/write set, including negative and set-valued facts such as absence of revocation and absence of an existing prospective result. Guard coverage must be explicit; locking only positive grant records is insufficient.
Compute
decisionValidUntilusing PR #11's exact cutoff function, including the trusted transaction deadline. Enforce the exclusive cutoffs through successful commit. Do not invent a universal wall-clock duration or claim that an undocumented isolation level satisfies the guard.The ordered protocol must obtain the truthful final authorization result, validate all applicable non-authorization gates, validate the exact domain handoff, construct the complete success set, and recheck deadlines, uniqueness, and state guards before atomic commit. Inapplicable gates must not be reported as passed.
E. Exact handoff and atomic success set
Require the rule-bound protected-effect contract identity/version/digest, contract-owned result-schema binding, complete proposed result bytes/digest, mapping/postcondition trace, required immutable state inputs, absence guards, and overall passing disposition.
The transaction coordinator verifies that handoff and commits the validated bytes. It does not reinterpret AssertionRecord fields or create unbound companion effects.
The successful commit atomically includes the operation binding and required transaction evidence, final authorization request/result/full internal trace and bundle digest, mode-correct
NOT_REQUIREDevidence, exactly one decision-consumption record, the exact protected result, protected-effect and other applicable gate traces, and exactly one governed-effect receipt identifying the complete set.No protected effect becomes visible without all required matching success evidence. Consumption becomes durable only with successful commit. Mutable coordination rows may support the protocol but cannot replace immutable operation, attempt, consumption, or receipt evidence as the surviving audit account.
F. Failure evidence is not successful effect evidence
Define
EFFECT_COMMITTED,NO_EFFECT, andOUTCOME_UNKNOWNas transaction outcomes through the compatibility ledger, not authorization outcomes or new public RuntimeProblem codes.The candidate must state the exact PR #11 §18.1/admission step at which a durable logical-operation binding first exists. An ingress rejection before that point may lack the authenticated principal, action class, or complete idempotency tuple and therefore has no logical-operation lifecycle consequence.
NO_OPERATION_CONSEQUENCE. After that point, the candidate must assign the exact conclusive attempt consequence or unresolved posture supported by the evidence.ALLOWauthorizationNO_EFFECTand receives exactly one immutable attempt consequence from the lifecycle matrix.ALLOW, followed by domain or another gate failureNO_EFFECT; any later execution attempt obtains a new transaction-bound evaluation and repeats all current checks. Do not reuse the failed attempt's decision as authority.NO_NEW_CONSEQUENCE; prior authoritative operation evidence controls. If no durable operation binding exists, no logical-operation retry claim exists.OUTCOME_UNKNOWN; block reapplication pending authoritative reconciliation.NO_EFFECTconsequence is recorded for that attempt. The derived operation state isBLOCKED_PENDING_RECONCILIATIONand names the exact unresolved attempt or fact.NO_EFFECTconsequence. The operation is quarantined and blocked under the exact partial-set evidence.Every conclusively proven durable
NO_EFFECTattempt under an existing logical operation records exactly one immutable attempt consequence:RETRYABLE_SAME_OPERATION; orTERMINAL_REQUIRES_NEW_OPERATION_KEY.Equivalent final names are acceptable, but the candidate must assign exact semantics and one consequence to every durable failure class. An
OUTCOME_UNKNOWNattempt records neither value.BLOCKED_PENDING_RECONCILIATIONis a separately derived operation-level reapplication state, not an immutableNO_EFFECTattempt consequence.For
RETRYABLE_SAME_OPERATION, the earlier attempt and evidence remain immutable, the operation binding and original trusted intent facts remain fixed, a new transaction attempt obtains a fresh current authorization decision, the earlier decision is never reused or consumed, and at most one attempt may eventually commit the protected effect.For
TERMINAL_REQUIRES_NEW_OPERATION_KEY, a later submission requires a new caller key and cannot masquerade as a retry. A mode change away from the operation's boundNOT_REQUIREDvalue always has this terminal consequence.The candidate must define immutable attempt ordering and one deterministic admission view when attempts disagree. At minimum: an existing matching successful receipt makes the operation complete; a partial success set quarantines it; any unresolved attempt blocks reapplication while naming that attempt; otherwise the most recent conclusively ordered durable
NO_EFFECTconsequence controls whether another attempt may begin.The lifecycle matrix must cover at least committed
DENY, committedREQUIRE_REVIEW, authorizationALLOWfollowed by a committed non-consumable domain failure, a deterministic invalid protected result, a transient infrastructure failure with conclusive no-effect evidence, failure-evidence persistence failure, and failures before versus after durable operation admission.Absence of a receipt from a cache, replica, timed-out lookup, or incomplete result is not proof of rollback. A failure to write audit evidence does not establish that an earlier uncertain effect failed.
G. Retry, concurrency, and receipt disclosure
Enforce at most one successful receipt and one successful write-decision consumption per logical operation, at most one consumption of each decision, and one immutable byte sequence for every committed result identity. Application-level check-then-insert without an atomic uniqueness or commit guard is insufficient.
An exact retry after success resolves the original decision/result/receipt identities and digests without rebuilding the effect or consuming the write decision again. Matching concurrent duplicates converge on that same committed result. Conflicting operation or result content cannot borrow the winner's receipt as its own success.
Reconciliation verifies the complete matching success set and transaction status. Only authoritative complete success or conclusive rollback resolves uncertainty. A new transaction attempt may not apply the effect while an earlier attempt remains unresolved.
Receipt lookup is not blanket disclosure authority. Authenticate the requester and scope the lookup before exposing operation information. Apply PR #11's existing safe-response, trace, and disclosure rules to returned content. A caller key is not a read credential. Preserve the original historical result internally even when current permissions require withholding or redacting the response; do not re-execute the completed write to retrieve it. Any separately required read authorization remains a separate action, not another consumption of the original write decision.
6. First concrete handoff: ASSERT_OPERATION_CLAIM
Consume PR #23's exact contract
ofarm.protectedeffect.assertionrecord.submit.v0.1, with the operation branch of the futureofarm.assertionrecord.v0.2carrier.Preserve the exact mapping:
The asserted Party remains the selected authority subject. The alleged performer remains separate, and performer authority remains
NOT_EVALUATED_BY_AUTHORIZATION. Preserve the contract's online/offline assertion-act rules, intended/performed subject-time profiles, exact body/evidence bindings, and conditional correction-lineage checks.The transaction provides the trusted starting-snapshot proof and state guards required by that handoff; it does not redefine the correction predicate. Optional semantic-event association remains owned and validated as specified by PR #23 and Event Ingress. Do not derive an event family from the assertion subtype.
No accepted execution, review, current-state materialization, prior-record mutation, or implicit companion effect is admitted. Other state-affecting
NOT_REQUIREDactions remain unsupported until their own approved contracts and exact transaction bindings exist.7. Required falsifiable cases
The Phase A candidate must give an explicit expected disposition for each case. These are obligations for later executable conformance, not a claim that runtime tests ran in this documentation PR.
assertedAt, result, and receipt; no second write consumption/effect.NO_EFFECTunderNOT_REQUIRED, followed by a current rule selectingFRESH_HUMAN_APPROVAL_REQUIREDor another mode, then retry with the same caller keyTERMINAL_REQUIRES_NEW_OPERATION_KEY; do not enter either profile under the old key.assertedAt; no artificial conflict.ALLOWALLOWas the authority-gate result; truthful non-consumable failure evidence only.DENY, followed by an authority change and retryNO_EFFECTconsequence; never reuse the earlier decision or silently choose between cached denial and fresh evaluation. If retry is permitted, recover the original first-admittedassertedAtand obtain a fresh current decision.REQUIRE_REVIEW, followed by retryNO_EFFECTconsequence; no protected effect and no reuse of the earlier decision.ALLOWplus committed non-consumable domain failure, followed by retryNO_EFFECTconsequence; preserve the earlier attempt and evidence immutably and never treat them as consumption or effect.NO_EFFECTwhile a different attempt remains unresolvedBLOCKED_PENDING_RECONCILIATION, and identify the separate unresolved attempt.Later executable tests must enter through the real admission, authorization, protected-effect, persistence, and reconciliation paths. Helper-only tests do not establish the protocol claim.
8. Non-goals and stop conditions
No authorization-matrix/action-class change; no change to PR #20's human-finalization modes; no AssertionRecord or Event Grammar redesign; no accepted-law, schema, currentness, or runtime edits in Phase A.
No generic workflow engine, separate authorization registry, portable decision cache, new domain truth store, external dispatch, public reason-code invention, retention/encryption/key-custody policy, database authority, administrative repair, break-glass authorization, or production-readiness claim.
Outcome reconciliation belongs here. Database recovery and repair execution do not.
Stop and split before changing a pinned dependency's semantics, introducing another trust boundary, inventing missing domain/evidence/time-trust law, creating machine schemas in the candidate PR, or implementing OFARM2 behavior before canonical promotion and extraction. Exposing a missing prerequisite is acceptable; silently filling it in or marking it closed is not.
9. Staged delivery and completion gate
NOT_REQUIREDtransaction-bound rows. Do not edit the historical approved PR RFC candidate: executable authorization evidence v0.2 #11 candidate in this Phase A PR, and candidate approval alone performs none of this step.Phase A is complete only when every requirement above has a closed proposed disposition, the exact dependency heads remain approved, the compatibility ledger and steward approval card are explicit, and no required semantic choice is left to schema or runtime authors. Unresolved choices remain named blockers to approval.
The completion gate specifically includes the exact
NO_EFFECTversusOUTCOME_UNKNOWNseparation, deterministic operation-level admission precedence, the mode-change terminal rule, failure classes with no operation consequence, the caller-projection conflict oracle and bind-once full digest, first-admitted assertion-act identity, evidence-profile ownership table, idempotency-key grammar and equality, the no-unsafe-forgetting invariant, and their production-reachable cases.10. Verification for the candidate PR
Required checks:
Also verify GitHub
generated-currentnessandrepository-validation, exact dependency heads and source sections, one changed candidate file, and no active/current contract changes. Report actual results at the reviewed head; do not infer semantic correctness from a green repository suite.Source anchors for the review-sensitive requirements:
Next action: draft the one-file candidate against this specification and request exact-head semantic review. Keep it non-authoritative; do not merge, promote, materialize schemas, or start OFARM2 runtime implementation on the strength of this comment.