Skip to content

Define the NOT_REQUIRED transaction and consumption protocol v0.1 - #26

Draft
samovers wants to merge 2 commits into
mainfrom
rfc/not-required-transaction-v0-1
Draft

samovers wants to merge 2 commits into
mainfrom
rfc/not-required-transaction-v0-1

Conversation

@samovers

@samovers samovers commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Summary

Trust boundary

Primary trust boundary: canonical transaction admission, guarded ordering, atomic success, single-use consumption, retry identity, and authoritative outcome reconciliation for state-affecting NOT_REQUIRED actions.

The PR boundary stayed inside that trust boundary: one historical Phase A Markdown candidate plus PR metadata. It changes no authorization meaning, human-finalization mode, AssertionRecord mapping, Event Grammar, accepted law, machine schema, currentness, runtime, database authority, retention or key custody, or OFARM2 implementation.

Exact dependency pins

All three live heads were rechecked before drafting and still matched their approved pins.

Review-sensitive closure

  • A complete success receipt counts only after its complete matching atomic set is verified.
  • Partial success is quarantined before unresolved and no-effect handling.
  • Any unresolved attempt blocks reapplication and is considered before mode-change terminal handling.
  • Trusted online assertedAt remains the runtime-observed pre-validation assertion time selected by first durable admission, not operation-binding commit time or effect commit time.
  • Exact caller content, rather than a recomputed full digest with a new runtime timestamp, is the retry conflict oracle.
  • No approval, challenge, reservation, intended-approver, approval-consumption, or direct-human-finalization artifact is fabricated.

Review corrections at head e042efa

Addresses the review of the previous head:

  • Defines an acyclic digest construction order: preallocate the receipt ID, hash consumption without a receipt digest, then hash the attempt and complete-set receipt. Receipt self-membership is identifier-only, and later reconciliation never rewrites the original receipt.
  • Adds complete committed-NO_EFFECT recovery, with attempt-specific membership verification and distinct protected-effect, first-admission, and separate failure-evidence transaction identities. Lost replies preserve the original binding and consequence, including the original assertedAt.
  • Restores non-default materialization and exact schema/manifest binding review before accepted-law promotion under PR RFC candidate: executable authorization evidence v0.2 #11 section 24.

Adds the corresponding falsifiable cases, invariants, traceability, and approval-card items in the same candidate. Historical admission traces remain provenance; each later successful attempt still requires its own fresh validation trace.

The steward reported no additional findings or blockers and gave Phase A semantic approval at this exact head, recorded from the user's explicit message in the task. The PR remains draft and unmerged. Semantic approval does not authorize merging, accepted-law promotion, schema materialization, currentness changes, or runtime implementation. Any semantic change requires renewed review and approval.

Verification at head e042efa

These checks establish repository consistency only. They are not semantic approval, accepted law, schema materialization, promotion, conformance evidence, or runtime authorization.

Closes #25

@samovers samovers left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review disposition: request bounded changes

Reviewed exact head eb2ea5c0470e3f60ee6a6368625039be9621ba1b. At review time, the PR remained draft and changed one candidate document only. Its scope is appropriate, but two protocol defects and one delivery-order mismatch should be corrected before semantic approval.

All findings concern:

package_meta/history/clean_baseline_migration/phase_reports/not_required_transaction_and_consumption_protocol_rfc_candidate_v0_1.md

Exact reviewed candidate

1. Blocker — consumption and receipt digests form a circular dependency

Locations: §§9.4, 12.1, and 13.3.

Section 9.4 requires the governed-effect receipt to bind the decision-consumption reference and digest. Section 13.3 requires the consumption record to bind the receipt reference and digest. Section 12.1 removes only each record’s own top-level self-digest, while leaving other members covered.

That creates this dependency:

consumption digest depends on receipt digest
receipt digest depends on consumption digest

Neither final digest can be constructed first using the stated ordinary hashing procedure. Hashing a provisional receipt, constructing consumption, and then replacing the receipt digest changes bytes already covered by the other digest.

Removing each record’s own self-digest does not remove this cross-record cycle. The candidate needs an explicit construction order rather than leaving schema authors to invent exclusions or interpret refs/digests differently.

Smallest patch

Preallocate the immutable receipt identifier. Let consumption contain that identifier without the receipt digest, and let the receipt contain the finalized consumption reference and digest:

allocate receipt ID
    ↓
construct and hash consumption, including receipt ID
    ↓
construct and hash receipt, including consumption digest
    ↓
commit both atomically and enforce their linkage

This preserves the bidirectional relationship without requiring bidirectional hashing. State the distinction explicitly in both sections and in the evidence-profile contract.

The same review should cover receipt membership: naming the receipt itself in the complete atomic set must not insert another copy of its own digest into a nested member that remains hashed. Later reconciliation evidence should point back to the original receipt; it must not require changing a receipt already committed.

Required conformance case: construct a complete success set in the declared order, verify every final digest independently, and prove that no provisional sentinel, post-hash mutation, or undocumented digest exclusion remains.

This is an executable evidence-contract defect, not a cosmetic naming issue.

2. Blocker — reconciliation does not close the committed-NO_EFFECT case

Locations: §§6.1, 10.3, 11.1–11.4.

The candidate permits a logical operation to be admitted through a committed no-effect record set. Its lifecycle matrix expressly permits committed authorization refusals and committed non-consumable domain-failure evidence.

However, §10.3 allows an uncertain attempt to be resolved only through a verified complete success set or proof that the transaction rolled back. It then describes recording NO_EFFECT after rollback. There is no explicit reconciliation branch for a transaction that committed a valid no-effect evidence set.

The missing case is:

A valid request receives DENY.
The operation binding, refusal bundle, and NO_EFFECT attempt evidence commit.
The commit response is lost.
Reconciliation finds the committed no-effect evidence and no protected effect.

The database commit succeeded, but the protected operation did not. It would be false to describe that evidence transaction as rolled back, and it does not contain a successful protected-effect set.

Where failure evidence is written in a separate transaction after the effect transaction rolled back, the protocol must also distinguish those two transaction identities. A lost acknowledgement for the failure-evidence commit is not resolved by pretending that evidence commit rolled back.

Smallest patch

Make reconciliation distinguish these outcomes explicitly:

Authoritatively verified condition Resolution
Complete matching protected-effect success set committed EFFECT_COMMITTED; return or reconcile the original receipt.
Complete matching no-effect evidence set committed, with no protected effect or consumption for that attempt NO_EFFECT; preserve its recorded consequence and immutable binding.
Effect transaction conclusively rolled back NO_EFFECT; apply the existing surviving-binding and failure-evidence rules without inventing a committed record.
Evidence remains incomplete or contradictory Continue blocking, or quarantine a proven invariant breach.

Define which transaction each status proof names: the protected-effect transaction, first-admission evidence commit, or later failure-evidence commit. Verification must be attempt-specific; pre-existing operation bindings are not evidence that a rolled-back attempt partially succeeded.

Add lost-response cases for a committed DENY, a committed ALLOW plus domain-gate failure, and a separate first-admission failure-evidence commit.

The distinction is between database commit outcome and protected-effect outcome. Resolving it requires no new authorization outcome or domain state. The brief’s “success or rollback” shorthand is insufficient once durable no-effect commits are admitted.

3. Required correction — §21 reverses the agreed materialization/acceptance order

Location: §21, steps 3–6.

The candidate’s required sequence currently puts:

3. Accepted semantic promotion
4. Non-default transaction/evidence materialization
5. Domain/shared-evidence prerequisites
6. Authorization policy-bundle binding

That accepts the RFC before the relevant machine profiles and exact bindings exist.

Issue #25 instead requires non-default materialization and exact binding review before the accepted-law step in the sequence governed by PR #11. The pinned authorization candidate, §24 likewise separates semantic approval from accepted law and places exact schema/manifest review before acceptance.

Smallest patch: retain exact-head Phase A semantic approval, then materialize the required non-default profiles and prerequisites, review the exact bindings, and only then perform the applicable accepted-law promotion. Current/default promotion and OFARM2 extraction remain later, separately governed steps.

This is a correction to the candidate’s delivery instructions—not a reason to amend the historical approved PR #11 or redesign the promotion process.

What is already sound

The candidate implements the important distinctions established during issue review:

Area Assessment
Retry identity The shared tuple is separate from caller-content comparison and the bind-once full operation digest.
Trusted assertion time The winning runtime-observed pre-validation assertedAt is preserved rather than replaced with commit or retry time.
Failure lifecycle Attempt outcomes, immutable no-effect consequences, and operation-level reconciliation blocks are distinct.
Mode correctness NOT_REQUIRED does not fabricate approval artifacts, weaken agent authority checks, or absorb governed reads.
Domain boundary The first handoff remains one pending-review operation claim, without accepted execution, review, current state, or implicit companion effects.

Those choices are supported by the candidate’s actual rules, not only its PR description.

The admitted-result trace is not an independent blocker

I examined whether §5.6 accidentally freezes validation across retries. There is a valid distinction here: the original admission trace may remain immutable historical provenance, while the current attempt supplies its own fresh validation trace. The candidate separately requires current re-evaluation and handoff validation.

Preserve that distinction explicitly during materialization. PR #23’s pinned validation-trace contract, §11.2 binds the authorization result and, for corrections, the transaction snapshot; a prior trace cannot serve as the current attempt’s proof merely because the proposed result bytes are unchanged. I would not require removing the historical trace from the admission record.

Verification and change impact

GitHub reported successful repository-validation and generated-currentness checks at the reviewed head:

I verified those check results but did not run the repository suite locally. The PR introduces no executable runtime implementation, so the transaction scenarios above are semantic counterexamples, not claims of reproduced runtime failures.

No active-baseline file needs amendment. The smallest correction remains inside this candidate: close the evidence-reference construction, complete no-effect reconciliation, and restore the agreed delivery order. These are proposed RFC and later machine-contract/conformance changes, not Constitution or Platform architecture changes.

Keep PR #26 draft and withhold semantic approval until those three bounded corrections are made. The overall transaction design does not need a rewrite.

@samovers

samovers commented Sep 6, 2026

Copy link
Copy Markdown
Owner Author

The three bounded corrections from the review are pushed at e042efa.

  • Sections 9.4, 12.1–12.2, and 13.3 now define the acyclic construction: receipt ID first, consumption digest before receipt digest, identifier-only receipt self-membership, and append-only recovery references.
  • Sections 6, 10.3, and 11 now recover complete committed no-effect sets and distinguish the protected-effect transaction from any separate failure-evidence commit. Lost responses cannot replace the original binding or consequence. New cases cover committed DENY, ALLOW plus domain failure, separate first-admission evidence, and unresolved evidence commits.
  • Section 21 now puts required non-default materialization and exact binding review before accepted-law promotion. PR RFC candidate: executable authorization evidence v0.2 #11's historical approved candidate is unchanged.

Local git diff --check and the complete repository validation suite passed. GitHub generated-currentness and repository-validation passed at this exact head. The three dependency heads remain pinned and unchanged.

Scope stayed inside the transaction-and-evidence trust boundary: one non-authoritative candidate document and PR metadata. No schemas, active rules, runtime code, or OFARM2 files changed. The added transaction cases are future conformance obligations, not runtime tests executed in this PR.

What is next: fresh source-verified review of this exact head. PR #26 remains draft; no semantic approval, merge, or promotion is claimed.

@samovers samovers left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-review disposition: no blocking findings

All three findings from the previous review are closed. The candidate is ready for exact-head steward semantic approval. I found no new blocking regression in the revised transaction and evidence rules.

Reviewed e042efa2911b2ef0a61603b8e0adaa6911c03ac0, compared with the previously reviewed eb2ea5c0470e3f60ee6a6368625039be9621ba1b. At review time, the PR remained draft, unmerged, and limited to one historical candidate document.

1. Consumption/receipt digest cycle — closed

Sections 9.4, 12.1–12.2, and 13.3 now define a constructible order:

Preallocate immutable receipt ID
    ↓
Finalize prerequisite evidence
    ↓
Hash consumption with receipt ID only
    ↓
Hash the transaction-attempt record
    ↓
Hash the receipt with finalized consumption and attempt digests
    ↓
Verify all digests and links, then commit atomically

Consumption has no receipt-digest field. The receipt binds the finalized consumption digest, while its own membership entry contains only its identifier and role. The rules also prevent the attempt’s admitted-result subobject from introducing a nested reference to its containing attempt’s digest.

This is an actual removal of the circular dependency—not an undocumented hashing exclusion. Later reconciliation points back to the original finalized records and cannot mutate their bytes or membership.

Section 16 adds the requested construction and rejection cases: independently verify final digests, reject future-digest references and nested receipt self-digests, and preserve the original receipt during later reconciliation. These are stated as future executable conformance obligations, not tests already performed by this documentation PR.

2. Committed-NO_EFFECT reconciliation — closed

Sections 6.1, 6.4, 10.3, and 11 now distinguish the protected-effect outcome from the database transaction’s commit status.

The revised reconciliation rules cover all relevant branches:

Authoritative evidence Resolution
Complete protected-effect success set committed Recover EFFECT_COMMITTED and the original receipt.
Complete no-effect evidence set committed Recover NO_EFFECT, the original binding, and its recorded consequence. Do not call the database commit a rollback.
Protected-effect transaction rolled back Preserve the proven no-effect fact and independently resolve any separate failure-evidence commit.
Relevant commit status or required evidence remains unresolved Keep the operation blocked; quarantine a proven invariant breach.

The status evidence identifies the protected-effect transaction, first-admission commit, and separate failure-evidence commit, using distinct transaction keys when they are distinct commits. That removes the previous ambiguity around a lost acknowledgement for a successfully committed refusal or failure record.

Section 11.4 also defines what constitutes a complete no-effect set. It requires the attempt, binding, stage-required evidence, exact membership, committed evidence-transaction status, and proof that the protected effect cannot still commit. A refusal bundle or an old operation binding alone is insufficient.

The added cases cover lost responses after committed DENY, committed ALLOW plus domain failure, and a separate first-admission failure-evidence commit. They also cover the important intermediate condition: effect rollback is proven, but the evidence commit remains uncertain. In that condition, the effect fact stays NO_EFFECT while the operation remains blocked.

3. Materialization and accepted-law ordering — closed

Section 21 now places the stages in the required order:

Exact-head Phase A semantic approval
    ↓
Non-default transaction/evidence materialization
    ↓
Domain and shared-evidence prerequisites
    ↓
Non-default policy-bundle binding
    ↓
Exact schema/profile/manifest review
    ↓
Separate accepted-law promotion

Hostile conformance, current/default promotion, extraction, and runtime implementation remain subsequent, separately governed steps. The candidate also explicitly requires completion of the applicable prerequisites under PR #11 §24 before accepted-law work.

This resolves the previous mismatch without editing the historical authorization candidate or changing the promotion model.

Regression checks

The amendment preserves the distinction between historical admission evidence and current validation evidence. The original admitted-result trace remains provenance, but every later successful attempt must supply a fresh passing trace with current authorization and snapshot bindings. The prior trace cannot substitute for current validation merely because the proposed result bytes are unchanged. Section 12.2 now states this explicitly.

The revised reconciliation does not weaken uncertainty blocking, permit a mode change to bypass an unresolved attempt, or turn failure evidence into consumption. The original operation claim remains pending review, and every effect-capable attempt still requires fresh authorization and the applicable gates.

Verification and final decision

At review time, the live dependency heads still matched the pinned inputs:

  • PR #11: 03a21f669ee04f96d444e14f00ae7212cab04803;
  • PR #20: 98f8c4fafbae42c8f7fd931f43f53adcb4733713; and
  • PR #23: 622376e2998cf8b3954ca19e81d2cce6fd57e5fe.

GitHub reported successful checks at e042efa:

I verified the check results and job steps; I did not run the suite locally or execute runtime conformance tests.

No additional candidate revision is requested. The next governance action is explicit steward Phase A semantic approval for this exact head. This review is not that steward approval. It does not merge the PR, accept active law, materialize schemas, change current/default selections, or authorize OFARM2 runtime implementation. Those remain separate stages.

@samovers

samovers commented Sep 6, 2026

Copy link
Copy Markdown
Owner Author

Phase A semantic approval — exact head e042efa

Recorded on behalf of the steward from the user's explicit message in this task:

no additional findings or blockers. approved

The approval applies to the NOT_REQUIRED transaction and consumption protocol v0.1 candidate and its steward approval card at e042efa, including the three corrections described in the exact-head review handoff.

The live PR head was verified unchanged. PR #11, PR #20, and PR #23 still match the candidate's approved dependency pins, and both GitHub checks pass at the approved head.

This is steward Phase A semantic approval recorded from the conversation, not an independent AI review or a formal GitHub APPROVED review object. The trust boundary remains the one-document transaction-and-evidence proposal; scope stayed inside it. No candidate bytes were changed to record approval.

PR #26 remains draft and unmerged. This approval does not authorize merging, accepted-law promotion, schema materialization, current/default changes, or OFARM2 runtime implementation. Any semantic change to the approved head requires renewed review and approval.

What is next: prepare the next separately scoped non-default materialization step under section 21, for its own authorization.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Define the NOT_REQUIRED atomic transaction and single-use consumption profile

1 participant