Skip to content

RFC candidate: final ReviewDecision protected-effect contract - #17

Draft
samovers wants to merge 7 commits into
mainfrom
rfc/review-decision-protected-effect-contract-v0-1
Draft

samovers wants to merge 7 commits into
mainfrom
rfc/review-decision-protected-effect-contract-v0-1

Conversation

@samovers

@samovers samovers commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Closes #15

Outcome

Current head 9ef08030b25eb3db1c2da14d6595300198384ff2 applies the three non-blocking alignment items from the latest exact-head re-review:

  • the section 12.2 trace vocabulary now includes dependency-bound NOT_EVALUATED, distinct from legitimate NOT_APPLICABLE, and requires named contract-declared prerequisite IDs;
  • a hostile case prevents a failed prerequisite from becoming a fabricated conclusion in a dependent mapping;
  • issue Define governed human-approval transaction and consumption protocol #19 is an explicit external prerequisite before machine materialization, hostile conformance, or runtime implementation relies on the shared atomic transaction and consumption gate; and
  • the family-enum and assertion-subtype deltas use PR RFC candidate: executable authorization evidence v0.2 #11's WIDENING and NARROWING vocabulary while remaining explicitly on the separate result-carrier axis.

The preceding ff02d571400f80a4db0c47c424ec8308836ed315 amendment addressed the source-verified review:

The amendment:

  • binds RD_SCOPES only to the complete scope value produced from the common authorization envelope by the selected PR RFC candidate: executable authorization evidence v0.2 #11 rule and extractor;
  • requires the materialized contract to bind exact source/destination selectors, cardinality, and array/set posture, with a hard stop if the common scope cannot map completely and unambiguously to anchorScopes;
  • defines optional prior-decision lineage as a governed ReviewDecision-domain field inside the validated, digest-bound intent, never as an authority source or caller side channel;
  • discloses the future reviewedArtifactFamily widening from six to nine values by adding PLANNED_INTERVENTION, EXECUTION_REPORT, and REVIEW_REQUEST;
  • discloses the exact ASSERTION_RECORD narrowing from six current subtypes to structure, operation-claim, and compliance, excluding observation, lot, and other assertions;
  • distinguishes the excluded REVIEW_REQUEST action / REVIEW_REQUESTED outcome from an eligible governed REVIEW_REQUEST target;
  • updates migration rules, hostile cases, traceability, and the steward approval card; and
  • refreshes the authorization dependency to approved PR RFC candidate: executable authorization evidence v0.2 #11 head 03a21f669ee04f96d444e14f00ae7212cab04803.

The header now renders as separate fields, and the chat-style closing line was removed from the candidate.

Primary trust boundary

Final ReviewDecision domain semantics and commit classification.

Intended PR boundary

This draft changes only:

package_meta/history/clean_baseline_migration/phase_reports/review_decision_final_protected_effect_contract_rfc_candidate_v0_1.md

It defines the exact intent-to-result mapping for REVIEW_ACCEPT, REVIEW_REJECT_OR_CONTEST, and REVIEW_SUPERSEDE, the minimum future ReviewDecision carrier, exact target/family resolution, fixed GovernanceEvent / governance decision classification, postconditions, validation evidence, and hostile cases needed to review that mapping.

It does not amend authorization law, grants, delegation, PR #11, current schemas, accepted RFCs, Event Grammar, accepted-consequence construction, generic composition, shared evidence envelopes, transaction coordination, runtime behavior, OFARM2, or current/default selection.

Decisions proposed

  • A future non-default ReviewDecision v0.2 carrier is necessary; current v0.1 history is not reinterpreted.
  • Each authorized final-review intent produces exactly one immutable ReviewDecision as this contract's result.
  • Only REVIEW_ACCEPT / ACCEPTED may carry companion accepted-consequence bindings under a separately reviewed composition; reject, contest, and supersede require absence.
  • Scope is authorization-relevant and comes only from PR RFC candidate: executable authorization evidence v0.2 #11's common intent envelope and selected extractor. This contract cannot invent extra result scopes.
  • Optional lineage is ReviewDecision-domain input covered by effectIntentDigest; if it ever affects authority, PR RFC candidate: executable authorization evidence v0.2 #11 must be separately amended and reapproved.
  • The nine-value result-family WIDENING and three-of-six assertion-subtype NARROWING require explicit steward approval.
  • Action/outcome closure, actor/finalization posture, target identity, mapping, classification, postconditions, and failure behavior remain exact and fail closed.
  • Dependency-bound mappings use NOT_EVALUATED rather than fabricating a pass or failure, and overall PASS still requires every required item to pass.
  • A protected-effect failure aborts the domain effect without rewriting the authorization result.
  • Issue Define governed human-approval transaction and consumption protocol #19 must close its separately governed transaction protocol before downstream materialization or conformance relies on that gate.

Authorization dependency

PR #11 received renewed steward semantic approval at exact head 03a21f669ee04f96d444e14f00ae7212cab04803. PR #17 consumes and pins that authorization boundary without reproducing or changing it. Any later semantic change to that head invalidates this dependency before machine materialization.

This dependency approval does not approve PR #17 in advance.

Drift and over-design check

Scope stayed inside issue #15's ReviewDecision protected-effect boundary. The patch exposes hidden semantic deltas and removes ambiguity; it adds no action, authorization target, schema, generic policy language, runtime service, duplicated bundle authority, or compatibility engine.

Validation

  • python3 package_meta/tools/run_repository_validation_suite.py — PASS
  • python3 package_meta/tools/check_generated_currentness.py — PASS
  • candidate structure — 11 target rows, 3 action/outcome rows, 18 mapping IDs, 15 postcondition IDs, 14 well-formed Markdown tables
  • no stale 5974bb9 dependency or candidate-local What is next: line
  • git diff --check — PASS
  • all four current-head GitHub checks — PASS
  • one changed non-authoritative candidate file

Review requested

Please review the updated section 18 approval card and exact head 9ef08030b25eb3db1c2da14d6595300198384ff2. Explicit steward semantic approval remains a separate decision. Any requested authorization, schema, shared-evidence, transaction, runtime, or currentness change must stay in its own trust-boundary PR.

What is next: confirm whether the three PR #11 alignment edits are closed and whether this exact head is ready for steward semantic approval.

@samovers

samovers commented Sep 1, 2026

Copy link
Copy Markdown
Owner Author

Steward semantic review requested for head 0727957f22a22653145389db1824ef0599150edc.

Primary trust boundary: final ReviewDecision domain semantics and commit classification.

Please decide the section 21 approval card, especially the need for a future v0.2 carrier, the exact reject-versus-contest intent binding, single-result/no-consequence-effect closure, human-versus-represented-Party fields, GovernanceEvent/governance-decision classification, and complete mapping/postcondition trace.

Scope check: this draft changes one non-authoritative candidate file. It does not amend the renewed authorization semantics from PR #11, create a schema or executable contract, define the separate REVIEW_REQUEST result, change Event Grammar/runtime/currentness, or promote anything.

The full local repository suite and all current GitHub checks pass. If a requested change would alter authorization, authorization-evidence carriers, runtime transactions, or currentness, please identify it as a separate prerequisite or follow-up rather than extending this PR.

@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 changes

Reviewed PR #17 at head 0727957f22a22653145389db1824ef0599150edc. It is correctly scoped as a draft, one-file, non-authoritative Phase A candidate for the final ReviewDecision protected-effect boundary. Both current-head workflows pass.

The candidate’s core direction is sound, but three semantic problems should be corrected before steward approval. These are bounded changes; they do not justify reopening PR #11’s broader authorization architecture.

1. Blocker — the transaction-wide “one result and no other effect” rule contradicts active review/consequence law

The candidate repeatedly requires:

  • exactly one ReviewDecision;
  • zero additional governed effects;
  • prohibition of resultingAcceptedConsequenceRefs;
  • failure when an AcceptedEventConsequence is inserted in the same protected transaction.

That goes beyond the issue’s legitimate boundary. It does not merely say that this contract does not own accepted-consequence semantics; it changes the existing relationship between a review decision and its resulting consequences.

Active source-truth law requires the ReviewDecision family to support resulting accepted-consequence references where relevant. The current carrier contains resultingAcceptedConsequenceRefs, and an active example uses that field for an accepted operation claim.

The Event Grammar also explicitly allows one governed event to produce multiple linked records or consequences. The current ingress result can separately report emitted review decisions and emitted accepted consequences.

The candidate is right that one authorization for REVIEW_ACCEPT must not silently create an unbound consequence. The mistake is turning that into a universal prohibition.

Smallest patch:

  • Define the result cardinality locally: this contract validates exactly one ReviewDecision.
  • State that this contract neither authorizes nor validates an AcceptedEventConsequence.
  • Preserve an optional exact companion-consequence binding in ReviewDecision v0.2.
  • Permit such a binding only when a separately reviewed accepted-consequence contract and an enclosing atomic composition rule bind both results before commit.
  • Replace PC_NO_EXTRA_EFFECT with PC_NO_UNBOUND_EFFECT.
  • Continue to prohibit implicit consequence creation and direct current-state mutation.

This preserves the single-effect safety objective without deleting an active source-truth relationship.

2. Blocker — the candidate conflates the governance event with the ReviewDecision record

The document says the result “is classified as one GovernanceEvent with commit class governance decision” and later treats the ReviewDecision itself as both.

Active Event Grammar explicitly distinguishes:

  • event family — what kind of governed act occurred;
  • commit class — what truth-bearing record entered OFARM authority.

The accepted event-ingress RFC likewise keeps the SemanticEventEnvelope distinct from ReviewDecision, AssertionRecord, and AcceptedEventConsequence. The current event-envelope contract is a separate governed object.

Required correction:

  • The final review act has primary event family GovernanceEvent.
  • The ReviewDecision record has commit class governance decision.
  • A SemanticEventEnvelope, where required by the ingress path, is a separately governed event record linked to the exact decision.
  • Validation evidence remains separately classified as EvidenceEvent / evidence record.
  • Do not put event-envelope semantics into the ReviewDecision carrier itself.

This is mainly a wording and postcondition correction, but it matters because the current text could produce a machine contract that treats an event family as a property of the source-truth record rather than of the governed act.

3. Blocker — EVIDENCE_SUFFICIENCY_CASE is silently removed from final-review scope

The proposed ReviewDecision v0.2 target table contains ten target kinds and explicitly excludes EVIDENCE_SUFFICIENCY_CASE as “v0.1-only.”

That exclusion is not owned by this protected-effect contract:

  • the current ReviewDecision contract permits EVIDENCE_SUFFICIENCY_CASE;
  • the accepted Authority Action Matrix gives REVIEW_ACCEPT and REVIEW_REJECT_OR_CONTEST “case scope”;
  • EvidenceSufficiencyCase v0.2 is an active current contract and directly supports linked review decisions.

PR #11’s current RP_FINAL_REVIEW_TARGET_ONE also omits that family. PR #17 cannot repair or ratify that omission locally because target eligibility is authorization law, not result-mapping law.

Required disposition:

Before machine-readable contract materialization, the authorization boundary must explicitly decide one of these:

  1. Add EVIDENCE_SUFFICIENCY_CASE to the applicable final-review actions; or
  2. Explicitly amend the existing case-review posture and identify the replacement governed action.

PR #17 should record this as an upstream stop condition. It should not declare the active family ineligible by itself.

Carrier simplification

The proposed carrier replaces the existing decidedByPartyRef with:

  • decidedByHumanPrincipalRef;
  • decisionRepresentationPosture;
  • represented-Party fields;
  • representation-basis fields.

That is machine-expressible, but it makes the canonical deciding Party conditional and moves detailed authorization-proof structure into the domain record. Active source-truth law still describes a ReviewDecision as carrying its deciding Party.

A cleaner carrier would retain:

  • decidedByPartyRef — the accountable authority subject: the person when acting for self, otherwise the represented Party;
  • decidedByHumanPrincipalRef — the authenticated natural person who performed the final act;
  • finalizationEvidenceRef — immutable reference to the detailed representation and authorization evidence.

This is not an independent blocker, but it is the simpler and more stable domain model. It avoids forcing every consumer to reconstruct the deciding Party from authorization-specific conditional fields.

Over-design assessment

The document is 642 lines for one result family. Length alone is not a defect, and the exact action/outcome mappings, immutable target binding, postconditions, and hostile cases are justified.

The avoidable duplication is in generic machinery:

  • contract-digest construction;
  • validation-trace mechanics;
  • transaction sequencing;
  • generic finalization evidence;
  • generic atomic-commit rules.

Those belong to the parent protected-effect program and the authorization-finalization evidence boundary. Repeating them in every effect-family candidate creates a future drift risk: two domain contracts may eventually define slightly different digest or atomicity protocols.

PR #17 should own only:

  • the ReviewDecision carrier delta;
  • reviewed-target resolution;
  • action/outcome mapping;
  • deciding-Party and human-act mapping;
  • ReviewDecision-specific forbidden widening;
  • ReviewDecision-specific postconditions and hostile cases.

It should reference the shared digest, trace, and transaction protocol rather than restating it.

What should remain unchanged

The following parts are sound:

  • a future ReviewDecision v0.2 rather than pretending v0.1 has stronger proof;
  • exact immutable target revision or digest;
  • exact REVIEW_ACCEPTACCEPTED;
  • exact REVIEW_SUPERSEDESUPERSEDED;
  • intent-bound choice between REJECTED and CONTESTED;
  • prohibition on target mutation;
  • separation from current-state materialization;
  • no result-local defaults for action, outcome, target, rationale, evidence, or time;
  • protected-effect failure does not rewrite authorization ALLOW;
  • separate schema, conformance, acceptance, promotion, and OFARM2 extraction stages.

Final disposition: keep PR #17 in draft and do not approve its section 21 card until the three blockers above are closed.

@samovers

samovers commented Sep 1, 2026

Copy link
Copy Markdown
Owner Author

Addressed the review at new head 975d48af0940485eddf2f434bf097c75ef9c2539.

Primary trust boundary remains final ReviewDecision domain semantics and commit classification. This PR still changes one non-authoritative candidate file.

Blocker 1 — companion consequences

Closed. The contract now validates exactly one ReviewDecision as its own result rather than imposing a transaction-wide one-record rule. It:

  • preserves optional exact resultingAcceptedConsequenceBindings;
  • neither authorizes nor validates an AcceptedEventConsequence itself;
  • permits companion links only when separate authority, a separate consequence contract, and a separately reviewed enclosing composition bind both intents/contracts/results before atomic commit;
  • replaces PC_NO_EXTRA_EFFECT with PC_NO_UNBOUND_EFFECT; and
  • continues to prohibit implicit consequence creation and direct current-state writes.

The v0.1 inventory now explicitly records the two current acceptance examples that carry consequence references.

Blocker 2 — act versus record classification

Closed. The candidate now states separately that:

  • the governed final-review act has primary event family GovernanceEvent;
  • the immutable ReviewDecision record has commit class governance decision;
  • a SemanticEventEnvelope, when required, is a separate governed event record; and
  • validation/finalization evidence remains separate evidence.

No event-envelope field is proposed inside ReviewDecision.

Blocker 3 — EVIDENCE_SUFFICIENCY_CASE

Closed as a controlled upstream prerequisite, not locally widened. Issue #16 was reopened and PR #11 now has a separate authorization-only amendment at 5974bb916ac8a2c5a6230facbb9836f639c754c3.

The source check narrowed that amendment further than a shared three-action policy: only REVIEW_ACCEPT and REVIEW_REJECT_OR_CONTEST select the case-eligible resource policy because those are the accepted matrix rows that explicitly carry case scope. REVIEW_SUPERSEDE, REVIEW_REQUEST, and unrelated actions remain unchanged.

PR #17 records renewed approval of that PR #11 head as a blocking prerequisite before machine materialization. The previous PR #11 approval is not treated as applying to changed rule semantics.

Carrier simplification

Adopted. The future carrier retains decidedByPartyRef, adds decidedByHumanPrincipalRef, and uses one immutable finalizationEvidenceBinding. Representation-basis and authorization internals remain in linked finalization evidence rather than the domain record.

Over-design reduction

The candidate is reduced from 642 to 475 lines. Generic challenge, receipt, retention, transaction sequencing, and persistence mechanics are no longer restated. The document retains only the ReviewDecision-specific closure explicitly required by issue #15:

  • v0.1 capability/gap inventory;
  • exact 11-kind target map with action-specific case eligibility;
  • 3 action/outcome branches;
  • 18 stable mapping IDs and permitted derivations;
  • 15 stable postconditions;
  • contract identity and deterministic contract-digest projection;
  • ReviewDecision-specific trace payload and required digests;
  • hostile cases; and
  • later AuthorizationPolicyBundle binding.

Local validation passes: full repository suite, generated-currentness, repository hygiene, git diff --check, and all 13 Markdown tables. Structural checks report 11 target rows, 3 action rows, 18 mappings, and 15 postconditions. PR #11's amended GitHub checks all pass; PR #17's new-head checks are running.

Re-review is requested for this head. Semantic approval should remain contingent on renewed approval of the separate PR #11 prerequisite.

@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 three bounded changes

Reviewed PR #17 at current head 975d48af0940485eddf2f434bf097c75ef9c2539 against:

  • the previously reviewed head 0727957f22a22653145389db1824ef0599150edc;
  • issue #15’s stated boundary;
  • the approved authorization amendment on PR #11 at 5974bb916ac8a2c5a6230facbb9836f639c754c3;
  • active source-truth, event, and evidence-case law.

The PR remains draft, mergeable, and limited to one non-authoritative candidate file. Both current-head GitHub workflows pass. The rewrite materially closes all three findings from the previous review and removes much of the generic machinery that did not belong in this domain contract.

Three smaller executable gaps remain.

1. Blocker — companion-consequence semantics are still incomplete and require authority that does not exist

Section 7 now correctly says that this contract validates one ReviewDecision rather than prohibiting all other transaction records. It preserves optional resultingAcceptedConsequenceBindings behind a separately reviewed composition. That closes the earlier issue.

The remaining problem has two parts.

First, the field is not closed by review branch. Nothing explicitly states whether companion accepted consequences are:

  • permitted for REVIEW_ACCEPT;
  • prohibited for REJECTED and CONTESTED;
  • permitted or prohibited for REVIEW_SUPERSEDE, where a corrected replacement consequence may conceivably be part of a separate composition.

The branch postconditions suggest that reject and contest must not create a contrary accepted state, but the carrier and companion section do not turn that into an exact conditional field rule. A schema author would still have to invent whether resultingAcceptedConsequenceBindings is legal under each branch.

Second, section 7 requires every companion effect to have “its own valid authority and intent binding.” No accepted action class or effect-intent profile currently exists for creating an AcceptedEventConsequence. Active source-truth law instead models the consequence as linked to the accepting review decision, and the existing promotion chain emits the review decision and accepted consequence together.

PR #11 itself already uses the narrower pattern for pack activation: one authorized STRUCTURE_EVENT may have a linked successor activation-set consequence, with both results bound by the governed-effect receipt. It does not require an invented second authorization action merely because the linked consequence is a separate immutable result.

Required patch:

  1. Add an exact branch table for resultingAcceptedConsequenceBindings.
    • REVIEW_ACCEPT / ACCEPTED: optional only under the separately reviewed composition.
    • REVIEW_REJECT_OR_CONTEST / REJECTED: absent.
    • REVIEW_REJECT_OR_CONTEST / CONTESTED: absent.
    • REVIEW_SUPERSEDE / SUPERSEDED: explicitly decide whether a replacement consequence is allowed under a correction composition; do not leave this implicit.
  2. Replace “each companion effect has its own valid authority and intent binding” with a rule that the composition must identify the exact governing authority basis.
  3. Permit a consequence to be a contract-defined derived companion of the authorized review intent when active promotion law allows that relationship.
  4. Do not imply a new authority action class. If stewards actually require a separate consequence-creation action, that belongs in a separate authorization amendment.
  5. Add hostile cases for an accepted consequence attached to REJECTED or CONTESTED, and for any supersede posture selected by the steward decision.

This is one domain-composition clarification, not a reason to design a generic workflow or multi-action framework.

2. Blocker — the reviewed target has two possible logical references

The proposed carrier contains both:

  • reviewedArtifactRef; and
  • reviewedArtifactBinding.

The table initially describes the latter as the immutable revision-or-digest selector. Immediately afterward, however, the candidate says that every binding contains a logical ref plus its immutable selector. That means the target logical reference appears both in reviewedArtifactRef and inside reviewedArtifactBinding.

The mapping table then maps PRIMARY_RECORD.resourceRef separately to reviewedArtifactRef, while RD_TARGET_BINDING maps only the “target revision/digest” to the tagged binding. It never states whether the tagged binding repeats the logical reference or defines the required equality between the two copies.

A future schema or validator could therefore produce:

reviewedArtifactRef = assertion:A
reviewedArtifactBinding.logicalRef = assertion:B
reviewedArtifactBinding.digest = digest-of-B

Both components might independently satisfy their mappings while the record names two targets.

Required patch:

Use one target identity representation. The smallest compatibility-preserving form is:

reviewedArtifactRef
exactly one of:
  reviewedArtifactRevisionRef
  reviewedArtifactDigest

Do not put another logical ref inside the immutable selector.

Alternatively, replace all three with one reviewedArtifactBinding object containing the ref and exactly one immutable selector, but then remove the standalone reviewedArtifactRef.

Update RD_TARGET_REF, RD_TARGET_BINDING, the field table, and the hostile cases consistently. No generic binding abstraction is needed.

3. Blocker — valid EvidenceSufficiencyCase v0.1 records are silently made unreviewable

Section 6 maps EVIDENCE_SUFFICIENCY_CASE specifically to the current/default EvidenceSufficiencyCase v0.2 carrier.

The accepted EvidenceSufficiencyCase Promotion RFC says something narrower:

  • v0.2 is the current default for new degraded- or late-evidence work;
  • v0.1 remains valid as a compatibility baseline and remains available for narrow compatibility or minimal deployments.

It does not say that valid v0.1 cases may no longer be reviewed.

A ReviewDecision v0.2 targeting an immutable v0.1 case would not upgrade that case to v0.2 proof strength. It would merely record a governed review of the exact historical record. Making such records unavailable is therefore a compatibility restriction, not a necessary consequence of stronger ReviewDecision evidence.

Required patch:

Change the target posture to:

exact active governed EvidenceSufficiencyCase carrier version selected by the immutable target binding; v0.2 is current/default for new cases, while v0.1 remains valid for compatibility.

The target-resolution profile should bind the exact schema version and digest and reject:

  • the superseded v0.2-draft;
  • unknown versions;
  • mutable or unresolved case records.

If the intended policy is genuinely to prohibit review of valid v0.1 cases, that needs an explicit compatibility decision and steward-card item rather than being embedded in one target-map cell.

Required metadata cleanup

The PR description now reflects the current head and the eleven-target closure, but its review request still points reviewers to section 21. The steward approval card is now in section 18.

The description’s phrase “separately authorized” for every companion consequence should also be aligned with the resolution of finding 1.

What the rewrite now gets right

The following previous concerns are closed:

  • The one-result rule is scoped to this ReviewDecision contract rather than the whole transaction.
  • Companion consequence references are retained instead of deleted from the future carrier.
  • The governed GovernanceEvent act is separated from the governance decision record.
  • EVIDENCE_SUFFICIENCY_CASE eligibility is restored only for accept and reject-or-contest, while supersede remains narrower.
  • decidedByPartyRef is retained alongside the authenticated human principal and finalization evidence.
  • Authorization proof internals are not duplicated into the domain record.
  • Exact action/outcome closure remains intact.
  • Target mutation and direct current-state promotion remain prohibited.
  • Generic challenge, retention, transaction-manager, and receipt mechanics are referenced rather than redefined.
  • The content-addressing and validation-trace sections are now short, contract-specific applications rather than a competing generic framework.

Drift and over-design assessment

There is no broad scope drift in the rewrite. It remains within issue #15’s domain-effect boundary.

There is also no justification for another full rewrite. The remaining changes are local:

  • close companion consequences by branch and authority basis;
  • remove the duplicate target reference;
  • preserve valid EvidenceSufficiencyCase version compatibility;
  • repair the section number in the PR description.

The current companion requirement is mildly overdesigned because it implies a second authorization action that the active model does not define. The duplicate target representation is also unnecessary schema surface. Removing those two elements makes the design smaller and safer.

Final disposition: keep PR #17 in draft and do not approve section 18 until these three bounded changes are closed.

@samovers

samovers commented Sep 1, 2026

Copy link
Copy Markdown
Owner Author

Addressed the current-head review at new head d02a4815437b49f2ce428138dcbfd04e324664d3.

Primary trust boundary remains final ReviewDecision domain semantics and commit classification. This PR still changes one non-authoritative candidate file and does not amend PR #11 authorization law, schemas, runtime, currentness, or OFARM2.

Blocker 1 — companion-consequence closure

Closed with an exact branch table:

  • REVIEW_ACCEPT / ACCEPTED: the companion field is absent for standalone validation and may be present only under the separately reviewed composition;
  • REVIEW_REJECT_OR_CONTEST / REJECTED: absent;
  • REVIEW_REJECT_OR_CONTEST / CONTESTED: absent; and
  • REVIEW_SUPERSEDE / SUPERSEDED: absent.

Supersede is deliberately consequence-free because active law provides no accepted replacement-consequence composition. A future correction-composition proposal must amend this boundary separately rather than infer permission.

The composition rule now identifies the exact governing authority basis. It permits an accepted consequence to be a contract-defined derived companion of the authorized review intent when active promotion law allows it, without inventing a second action class or nonexistent second effect intent. The candidate recognizes no separate consequence action and still leaves consequence construction and generic composition outside this PR. Branch-specific postconditions and hostile cases enforce the closure.

Blocker 2 — one target identity

Closed. reviewedArtifactBinding was removed. The future carrier now has:

  • one sole logical identity, reviewedArtifactRef; and
  • exactly one immutable selector, reviewedArtifactRevisionRef or reviewedArtifactDigest.

RD_TARGET_REF, RD_TARGET_BINDING, the carrier table, and hostile cases now reject zero selectors, two selectors, or any second logical target ref.

Blocker 3 — EvidenceSufficiencyCase compatibility

Closed. Case resolution now selects the exact active governed carrier through the immutable target selector:

  • v0.2 remains current/default for new cases;
  • valid v0.1 remains reviewable for compatibility without gaining v0.2 proof strength; and
  • superseded v0.2-draft, unknown versions, mutable records, and unresolved records fail.

The resolution binds the exact schema ref, version, digest, and immutable case bytes. Hostile cases cover improper v0.1 rejection or upgrade and every invalid carrier posture.

Metadata and validation

The PR description now points to the section 18 approval card at this exact head and no longer says every companion must be separately authorized. It reports 11 target rows, 3 action/outcome rows, 18 mapping IDs, 15 postcondition IDs, and 14 well-formed Markdown tables.

Local validation passes:

  • full repository validation suite;
  • generated-currentness;
  • repository hygiene;
  • Markdown table consistency;
  • structural counts; and
  • git diff --check.

All four current-head GitHub checks pass. The exact approved PR #11 dependency remains 5974bb916ac8a2c5a6230facbb9836f639c754c3.

Re-review is requested for d02a4815437b49f2ce428138dcbfd04e324664d3. Explicit steward semantic approval remains a separate decision.

What is next: confirm whether these three bounded findings are closed or identify the remaining ReviewDecision-domain delta.

@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: Request one bounded change

Reviewed current head d02a4815437b49f2ce428138dcbfd04e324664d3 against the previously reviewed head 975d48af0940485eddf2f434bf097c75ef9c2539.

The delta is one commit, one candidate file, and 91 changed lines. PR #17 remains draft, mergeable, and non-authoritative. Both current-head validation workflows pass.

The previous three findings are closed

Companion consequences: closed. The candidate now has an exact branch table:

  • only REVIEW_ACCEPT / ACCEPTED may carry companion accepted-consequence bindings;
  • REJECTED, CONTESTED, and SUPERSEDED require absence;
  • an accepted consequence may be a contract-defined derived companion under active promotion law;
  • no second action class or nonexistent second effect intent is invented;
  • the composition must bind its authority basis, derivation, contracts, and result digests.

Target identity: closed. reviewedArtifactBinding has been removed. The carrier now has one logical target reference and exactly one immutable selector: reviewedArtifactRevisionRef or reviewedArtifactDigest. The mapping and hostile cases reject zero selectors, both selectors, and any second logical target reference.

EvidenceSufficiencyCase compatibility: closed. Exact target resolution now:

  • keeps v0.2 as current/default for new cases;
  • preserves valid v0.1 cases as reviewable compatibility records without upgrading their proof strength;
  • rejects the superseded v0.2 draft, unknown versions, mutable records, and unresolved records.

The PR description is also current: it names the correct head, points to section 18, and accurately describes the companion-effect posture.

Remaining blocker — section 16 duplicates domain semantics into the authorization bundle

Section 8 correctly says the protected-effect contract itself owns and content-addresses:

  • the intent-schema binding;
  • the result-schema binding;
  • every field mapping;
  • every permitted derivation;
  • forbidden widening;
  • classification;
  • postconditions; and
  • trace requirements.

Section 16 then requires AuthorizationPolicyBundle v0.2 to bind the result schema again and to carry “the exact intent/result selector pointers for every RD_* mapping.” That creates a second representation of semantics already owned by the domain contract.

This is problematic for two reasons.

First, several mappings do not have an intent source at all:

  • RD_DECIDING_PARTY comes from the selected authority subject in finalization evidence;
  • RD_HUMAN comes from the authenticated principal;
  • RD_FINALIZATION_EVIDENCE comes from trusted finalization evidence;
  • RD_TIME comes from trusted human-act time;
  • RD_TARGET_FAMILY requires target-schema and immutable-byte resolution;
  • RD_COMPANION_CONSEQUENCES comes from the optional composition binding.

Therefore, “intent/result selector pointers for every mapping” is not executable as written. It would require mirrored fields, omit material sources, or force the bundle author to reinterpret each mapping.

Second, the parent protected-effect program deliberately assigns mappings, result schemas, derivations, and postconditions to the owning domain contract. The authorization evaluator is supposed to bind and consume the contract identity and validation disposition, not reproduce its internal semantics. PR #11 likewise defines the policy bundle as holding separately owned protected-effect contract bindings, rather than copies of every domain mapping.

Duplicating selectors and result-schema authority creates a precedence question:

  • Does the domain contract win?
  • Does the authorization bundle win?
  • Must both match?
  • What happens if the contract digest is unchanged but a duplicated bundle selector differs?

No such second authority surface is needed.

Smallest required patch

Revise section 16 so that AuthorizationPolicyBundle v0.2 must:

  1. bind the exact protected-effect contract ID, version, ref, digest, and owning family;
  2. bind that contract to the three final-review action rules;
  3. preserve the PR #11 action-specific target-policy split;
  4. exclude REVIEW_REQUEST; and
  5. include the protected-effect contract binding in each affected per-action ruleDigest.

Remove the requirements for the authorization bundle to independently bind:

  • the result schema; and
  • every RD_* selector.

The result-schema binding and mapping selectors remain inside the content-addressed protected-effect contract. Changing either changes contractDigest, which then changes the affected action-rule digest. That already supplies deterministic invalidation without two sources of semantic truth.

A runtime-oriented index may expose the contract’s result-schema or mapping metadata for lookup, but it must be explicitly derived, non-authoritative, and digest-checked against the contract. That optimization does not belong in this Phase A semantic requirement.

Drift and over-design assessment

The current commit does not otherwise drift beyond the ReviewDecision domain boundary. It introduces no new action, generic composition language, runtime transaction mechanism, currentness change, or accepted-consequence contract.

The one remaining issue is itself an over-design seam: copying domain-contract internals into AuthorizationPolicyBundle adds machinery and competing authority without increasing safety. Removing that duplication makes the design smaller and more faithful to issues #12 and #15.

No other blocking finding remains. After the section 16 binding rule is narrowed, current head is ready for Phase A steward semantic approval. That approval would still not promote schemas, accept RFC law, change currentness, merge the PR, or authorize OFARM2 runtime work.

@samovers

samovers commented Sep 1, 2026

Copy link
Copy Markdown
Owner Author

Addressed the remaining review finding at new head 0cfd8066b0d09e84c474734e0e42f08cd8e09d99.

Primary trust boundary remains final ReviewDecision domain semantics and commit classification. The delta is limited to the existing non-authoritative candidate file.

Section 16 — whole-contract bundle handoff

Closed. The later AuthorizationPolicyBundle v0.2 requirement now does only five things:

  1. binds the exact protected-effect contract ID, version, ref, digest, and owning family;
  2. binds that contract to the three final-review action rules;
  3. preserves the approved PR RFC candidate: executable authorization evidence v0.2 #11 action-specific target-policy split;
  4. excludes REVIEW_REQUEST; and
  5. includes the protected-effect contract binding in each affected complete per-action ruleDigest.

The independent bundle requirements for the result-schema binding and every RD_* selector have been removed. Result-schema identity, mapping selectors, derivations, forbidden-widening rules, classification, postconditions, and trace requirements remain solely inside the content-addressed protected-effect contract. Changing any of them changes contractDigest, which deterministically changes the affected action-rule digests without creating a second semantic authority surface.

Any later runtime lookup index is explicitly derived, non-authoritative, and digest-checked rather than part of this Phase A requirement. Traceability, the section 18 approval card, and staged delivery now use the same whole-contract handoff.

No PR #11 authorization rule, policy bundle, schema, runtime, currentness, or OFARM2 file changed.

Validation passes:

  • full repository validation suite;
  • generated-currentness;
  • repository hygiene;
  • 14 Markdown tables with consistent columns;
  • 18 mapping IDs and 15 postcondition IDs;
  • git diff --check; and
  • all four current-head GitHub checks.

Final semantic re-review is requested for 0cfd8066b0d09e84c474734e0e42f08cd8e09d99. Explicit steward approval remains a separate decision.

What is next: confirm whether the section 16 blocker is closed and whether this exact head is ready for Phase A steward semantic approval.

@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: Request one bounded wording correction

Reviewed current head 0cfd8066b0d09e84c474734e0e42f08cd8e09d99 against the previously reviewed head d02a4815437b49f2ce428138dcbfd04e324664d3.

The delta is one commit, one candidate file, and 22 changed lines. PR #17 remains draft, mergeable, and non-authoritative. Both current-head workflows pass.

The previous blocker is substantively closed

Section 16 now correctly requires AuthorizationPolicyBundle v0.2 to bind the protected-effect contract as a single content-addressed unit:

  • contract ID, version, reference, digest, and owning family;
  • association with the three final-review action rules;
  • the action-specific case-target split;
  • exclusion of REVIEW_REQUEST; and
  • inclusion of the contract binding in each affected per-action ruleDigest.

It explicitly keeps the result-schema binding, RD_* mappings, derivations, forbidden-widening rules, classification, postconditions, and trace requirements inside the protected-effect contract. This removes the competing semantic authority identified in the previous review.

The corresponding traceability row, steward card, delivery sequence, and PR description were updated consistently. The optional runtime-index sentence is appropriately non-authoritative and does not create a Phase A requirement.

Remaining inconsistency — section 13 still assigns the result schema to the action rule

Section 13 still requires the protected-effect gate to:

verify the selected action rule’s exact intent, result-schema, and contract bindings

That sentence retains the model section 16 has just removed. Under the corrected design:

  • the action rule directly selects the effect-intent schema and protected-effect contract;
  • the protected-effect contract owns its result-schema binding;
  • the authorization bundle does not independently carry that result-schema binding.

Leaving the current wording would allow the machine-materialization PR to recreate a direct action-rule or bundle-level result-schema field and claim that section 13 requires it. It also makes the document internally contradictory: section 13 assigns the result schema to the action rule, while section 16 says it remains solely inside the protected-effect contract.

Required edit: replace section 13’s opening validation sequence with the equivalent of:

  1. verify the selected action rule’s exact effect-intent-schema and protected-effect-contract bindings;
  2. load and digest-verify the referenced protected-effect contract;
  3. verify the result-schema binding owned by that contract;
  4. validate the proposed result against that result schema;
  5. evaluate every applicable RD_* mapping and PC_* postcondition; and
  6. supply the passing immutable trace to the shared atomic transaction gate.

The result-schema reference, version, and digest should remain in the validation trace. The correction only clarifies which artifact owns them.

Drift and over-design check

No other blocking finding remains.

The current delta:

  • removes semantic duplication rather than adding machinery;
  • introduces no new action or contract family;
  • does not move domain mappings into authorization;
  • does not reopen companion-effect, target-identity, case-version, runtime, currentness, or evidence-carrier decisions;
  • preserves exact invalidation through contractDigest and the affected ruleDigest;
  • keeps runtime indexing optional, derived, and non-authoritative.

The residual problem is a dangling sentence, not an architectural defect. It should be fixed locally rather than reopening the design.

Final assessment: after section 13 is aligned with section 16, PR #17 is ready for Phase A steward semantic approval. That approval would still not create or promote schemas, accept RFC law, change currentness, merge the PR, or authorize OFARM2 runtime work.

@samovers

samovers commented Sep 1, 2026

Copy link
Copy Markdown
Owner Author

Addressed the final wording inconsistency at new head 81893d4ee7a54d27d70d2d99720a73470a987bce.

Primary trust boundary remains final ReviewDecision domain semantics and commit classification. The delta changes only section 13 of the existing non-authoritative candidate.

The protected-effect gate now performs the exact ownership sequence requested by the review:

  1. verify the selected action rule's effect-intent-schema and protected-effect-contract bindings;
  2. load and digest-verify that contract;
  3. verify the result-schema ref, version, and digest owned by the contract;
  4. validate the proposed result against that schema;
  5. evaluate every applicable RD_* mapping and PC_* postcondition; and
  6. supply the passing immutable trace to the shared atomic transaction gate.

The result-schema ref, version, and digest remain in the validation trace. Section 13 no longer implies a direct action-rule or bundle-level result-schema binding and now agrees with section 16's whole-contract handoff.

No authorization rule, policy bundle, schema, mapping, postcondition, runtime, currentness, or OFARM2 file changed.

Validation passes:

  • full repository validation suite;
  • generated-currentness;
  • repository hygiene;
  • 14 Markdown tables with consistent columns;
  • 18 mapping IDs and 15 postcondition IDs;
  • git diff --check; and
  • all four current-head GitHub checks.

Head-specific semantic approval review is requested for 81893d4ee7a54d27d70d2d99720a73470a987bce. Approval remains a separate steward decision.

What is next: confirm whether this exact head is ready for Phase A steward semantic approval.

@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

Reviewed current head 81893d4ee7a54d27d70d2d99720a73470a987bce against the previously reviewed head 0cfd8066b0d09e84c474734e0e42f08cd8e09d99.

PR #17 remains draft, mergeable, one-file, and non-authoritative. The new commit is limited to the requested section 13 correction: six additions and four deletions in the validation sequence.

Previous blocker: closed

The protected-effect validation sequence now has the correct ownership order:

  1. The action rule binds the exact effect-intent schema and protected-effect contract.
  2. The runtime loads and digest-verifies that protected-effect contract.
  3. The result-schema reference, version, and digest are obtained from and verified against the contract.
  4. The proposed result is validated against that schema.
  5. The contract-owned mappings and postconditions are evaluated.
  6. The passing immutable trace is supplied to the shared atomic transaction gate.

This now agrees with section 16, which says the authorization bundle binds the protected-effect contract as one unit while the result schema, RD_* mappings, derivations, classification, postconditions, and trace requirements remain solely inside that contract. There is no longer a contradictory direct action-rule or bundle-level result-schema authority.

The invalidation chain is coherent:

result schema or domain mapping changes
→ protected-effect contractDigest changes
→ affected action ruleDigest changes
→ old binding no longer silently applies

Drift and over-design check

No scope drift. The correction remains inside issue #15’s final ReviewDecision domain-contract boundary. It does not change:

  • authorization meaning or PR #11;
  • action or target eligibility;
  • actor or approval rules;
  • companion-consequence semantics;
  • the future ReviewDecision v0.2 carrier;
  • Event Grammar;
  • runtime transaction architecture;
  • currentness or promotion.

No new over-design. The patch removes a duplicated semantic authority rather than adding another layer. It introduces no new contract family, schema registry, lookup service, or generic abstraction. The optional runtime-index language remains explicitly derived and non-authoritative.

Both visible current-head GitHub workflows—repository validation and generated-currentness validation—completed successfully.

Final assessment

  • Previous blocker: closed
  • New semantic blockers: none
  • Internal ownership consistency: closed
  • Scope drift: none
  • New over-design: none
  • Phase A disposition: ready for steward semantic approval

That approval would approve this head-specific candidate only. It would not create or promote schemas, accept active RFC law, change current/default status, merge the PR, or authorize OFARM2 runtime implementation.

@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

Reviewed current head 81893d4ee7a54d27d70d2d99720a73470a987bce against the previously reviewed head 0cfd8066b0d09e84c474734e0e42f08cd8e09d99.

PR #17 remains draft, mergeable, one-file, and non-authoritative. The new commit is limited to the requested section 13 correction: six additions and four deletions in the validation sequence.

Previous blocker: closed

The protected-effect validation sequence now has the correct ownership order:

  1. The action rule binds the exact effect-intent schema and protected-effect contract.
  2. The runtime loads and digest-verifies that protected-effect contract.
  3. The result-schema reference, version, and digest are obtained from and verified against the contract.
  4. The proposed result is validated against that schema.
  5. The contract-owned mappings and postconditions are evaluated.
  6. The passing immutable trace is supplied to the shared atomic transaction gate.

This now agrees with section 16, which says the authorization bundle binds the protected-effect contract as one unit while the result schema, RD_* mappings, derivations, classification, postconditions, and trace requirements remain solely inside that contract. There is no longer a contradictory direct action-rule or bundle-level result-schema authority.

The invalidation chain is coherent:

result schema or domain mapping changes
→ protected-effect contractDigest changes
→ affected action ruleDigest changes
→ old binding no longer silently applies

Drift and over-design check

No scope drift. The correction remains inside issue #15’s final ReviewDecision domain-contract boundary. It does not change:

  • authorization meaning or PR #11;
  • action or target eligibility;
  • actor or approval rules;
  • companion-consequence semantics;
  • the future ReviewDecision v0.2 carrier;
  • Event Grammar;
  • runtime transaction architecture;
  • currentness or promotion.

No new over-design. The patch removes a duplicated semantic authority rather than adding another layer. It introduces no new contract family, schema registry, lookup service, or generic abstraction. The optional runtime-index language remains explicitly derived and non-authoritative.

Both visible current-head GitHub workflows—repository validation and generated-currentness validation—completed successfully.

Final assessment

  • Previous blocker: closed
  • New semantic blockers: none
  • Internal ownership consistency: closed
  • Scope drift: none
  • New over-design: none
  • Phase A disposition: ready for steward semantic approval

That approval would approve this head-specific candidate only. It would not create or promote schemas, accept active RFC law, change current/default status, merge the PR, or authorize OFARM2 runtime implementation.

@samovers

samovers commented Sep 1, 2026

Copy link
Copy Markdown
Owner Author

I cloned the repo, checked out PR #17 and PR #11, and verified the document's factual claims against the actual schemas and policy text rather than reading it on its own terms.

What checks out. The v0.1 inventory in §4.1 matches OFARM_ReviewDecision_schema_v0_1.json field for field — six families, three final actions plus REVIEW_REQUEST, five outcomes, no conditional validation, no classification fields. The example tally in §4.2 is exactly right: I counted all ten examples and got seven REVIEW_ACCEPT/ACCEPTED, one REVIEW_SUPERSEDE/SUPERSEDED against ACCEPTED_EVENT_CONSEQUENCE, two REVIEW_REQUEST, and exactly two acceptance examples carrying resultingAcceptedConsequenceRefs. The PR #11 pin at 5974bb9 is real and is still that PR's head commit. The eleven/ten target-kind counts in §6.1 match RP_FINAL_REVIEW_CASE_ELIGIBLE_TARGET_ONE and RP_FINAL_REVIEW_TARGET_ONE precisely. GovernanceEvent and governance decision are both grounded in Constitution RC2.1 §13.2 and §11.1, and all seven cited constitution sections exist. The JCS_RFC8785_SHA256 token and the "remove exactly the top-level member" digest discipline follow the pattern PR #11 already established for ruleDigest. Tables are column-consistent, no trailing whitespace, no tabs.

Blocking finding — RD_SCOPES has no authoritative source.

anchorScopes is required in v0.1 and required in the §5.1 v0.2 carrier. §8.2 sources it from "intent scopes." But the approved EI_REVIEW_DECISION_V0_2 profile on PR #11 line 480 lists only: governed-record revision, proposed decision ID, review action, decisionOutcomeState, rationale, evidence revisions. No scope. This is conspicuous — EI_REVIEW_REQUEST_V0_2 on the line above explicitly lists "review scope," and nearly every other profile lists scope revisions. By §8.2's own closing rule ("a missing, duplicated, ambiguous, type-invalid, or conflicting authoritative source fails the contract"), every ReviewDecision would fail RD_SCOPES. The escape hatch exists — PR #11's preamble says "the schema may add governed fields" beyond the authorization-relevant ones — but the candidate never invokes it. Either state that scopes are a governed non-authorization-relevant intent field, or flag that PR #11 needs the profile amended, which would reopen the dependency pin you spent §3 and §19.1 protecting.

Same defect, smaller: RD_PRIOR_DECISION sources "optional intent lineage binding" from a profile that lists no lineage. §9 then says lineage is recorded "only when the exact immutable binding is present in the validated intent" — so under the pinned profile, REVIEW_SUPERSEDE can never record lineage.

Undisclosed family-enum widening. §6.2's required-family column contains nine values. v0.1 has six. PLANNED_INTERVENTION, EXECUTION_REPORT, and REVIEW_REQUEST are new. §4.1's disposition says only "add exact kind and closed family resolution," §1 doesn't list it among the bounded decisions, and the §18 approval card asks whether family resolution is "exact" without asking whether the enum grows by half. For a document this careful about forbidden widening, stewards should be voting on that explicitly.

Undisclosed narrowing in the other direction. AssertionRecord.assertionType has six values. §6.2 admits three. OBSERVATION_ASSERTION, LOT_ASSERTION, and OTHER_ASSERTION become permanently unreviewable, where v0.1's coarse ASSERTION_RECORD family reviews any of them. The narrowing originates upstream in PR #11's target list, so the candidate is consuming it faithfully — but §2 claims ownership of "exact reviewed-target resolution," which makes the consequence yours to disclose. Nothing in §15 addresses it. No current example breaks (both reviewed assertions are operation-claim and compliance), so this is a forward gap, not a regression.

Token collision. REVIEW_REQUEST is a target kind and family in §6.2 and a reviewAction value in v0.1. §9's "REVIEW_REQUEST / REVIEW_REQUESTED is outside this contract" reads, on a fast pass, as excluding review-request targets. One clause distinguishing the two would fix it.

Cosmetic. Header lines 3–7 lack the trailing double-space breaks; the sibling explainable_current_state_runtime_evidence_rfc_candidate_v0_1.md has them, so your five header fields render as one run-on paragraph on GitHub. And line 500 — "What is next: steward re-review of this bounded ReviewDecision candidate" — is your chat-response convention, not a repo one; the sibling candidate ends with a "Hard stop question" section instead.

One thing to be aware of, not a defect. Every load-bearing identifier this document depends on — EI_REVIEW_DECISION_V0_2, both RP_FINAL_REVIEW_* policies, JCS_RFC8785_SHA256, the digest-exclusion discipline — exists nowhere in the merged baseline. All of it lives on unmerged PR #11. The candidate is honest about the pin, but the practical effect is that a steward cannot verify a single referenced identifier from the repository as it stands.

Verdict: approve after fixing RD_SCOPES. That one is a genuine contradiction against the pinned authority, not a wording problem. The enum widening and assertion-type narrowing are disclosure gaps that belong in §1 and §18 before a steward vote. Everything else is polish.

What is next: tell me if you want these written up as review comments on the PR, or as a patch to the document itself — I have the repo cloned and both branches checked out.

@samovers

samovers commented Sep 2, 2026

Copy link
Copy Markdown
Owner Author

Renewed semantic re-review requested on ff02d571400f80a4db0c47c424ec8308836ed315 against the source-verified findings in issuecomment-5495234773.

The amendment stays in the existing final ReviewDecision protected-effect candidate and closes the findings as follows:

  1. RD_SCOPES: bound only to the complete common authorization-envelope scope value required for every intent profile by approved PR RFC candidate: executable authorization evidence v0.2 #11 section 7.6 and produced by the selected rule's extractor. The materialized contract must bind exact pointers, cardinality, and ordering/set posture. If that value cannot map completely and unambiguously to anchorScopes, materialization stops and returns to PR RFC candidate: executable authorization evidence v0.2 #11; no local or result-only scope is permitted.
  2. RD_PRIOR_DECISION: the optional immutable lineage binding is now explicitly a governed ReviewDecision-domain field inside the validated EI_REVIEW_DECISION_V0_2 intent and effectIntentDigest. It cannot affect authorization; doing so would require a separate PR RFC candidate: executable authorization evidence v0.2 #11 amendment and approval.
  3. Family widening: sections 1, 4, 6, 15, and 18 disclose and require approval of the six-to-nine reviewedArtifactFamily change, naming PLANNED_INTERVENTION, EXECUTION_REPORT, and REVIEW_REQUEST.
  4. Assertion narrowing: the same sections disclose the three-of-six exact assertion closure. OBSERVATION_ASSERTION, LOT_ASSERTION, and OTHER_ASSERTION remain valid v0.1 history but are unavailable for new v0.2 final review unless authorization and this contract are separately amended.
  5. Token collision: section 9 now distinguishes the excluded REVIEW_REQUEST action / REVIEW_REQUESTED outcome from an eligible exact REVIEW_REQUEST target; a hostile case enforces the distinction.
  6. Cosmetic findings: header fields now render separately, and the candidate-local chat-response closing line was removed.
  7. Dependency: every stale 5974bb9 reference was replaced with exact approved PR RFC candidate: executable authorization evidence v0.2 #11 head 03a21f669ee04f96d444e14f00ae7212cab04803.

Validation passes at this exact head: full repository suite, generated currentness, git diff --check, 14 Markdown tables, 11 target rows, 3 action/outcome rows, 18 mappings, 15 postconditions, and all four GitHub checks.

Primary trust boundary: final ReviewDecision domain semantics and commit classification. Scope stayed within the intended one-file, non-authoritative PR boundary. No PR #11 authorization text, schema, runtime, Event Grammar, transaction, currentness, or OFARM2 file changed.

PR #17 remains draft. Please identify any remaining protected-effect semantic defect or confirm that this exact head is ready for a separate steward approval decision.

What is next: exact-head re-review of the scope/lineage mappings and explicitly disclosed target-resolution deltas.

@samovers

samovers commented Sep 2, 2026

Copy link
Copy Markdown
Owner Author

Re-review at ff02d57 (pin bumped to PR #11 03a21f6)

Re-verified against both current heads. PR #17 is at ff02d57; the dependency pin moved from 5974bb9 to 03a21f669ee04f96d444e14f00ae7212cab04803, which is PR #11's current head. Still one file, 525 insertions, no other path touched.

Withdrawing a finding from the prior review

The prior round flagged RD_SCOPES as having no authoritative source, on the grounds that the EI_REVIEW_DECISION_V0_2 row lists no scope. That finding was wrong and is withdrawn.

PR #11 §7.6's opening paragraph — two lines above the profile table — already stated that every profile carries one common authorization envelope containing scope. It was present on the old head 5974bb9, unchanged. The prior review read the table and the paragraph following it, not the one preceding it. The same applies to the lineage concern: the "the schema may add governed fields" allowance was already there too.

The new §5.3 is still worth having. It names the source explicitly rather than saying "intent scopes," and it adds a stop rule that did not exist before:

If the approved common scope cannot be represented completely and unambiguously in anchorScopes, materialization stops and PR #11 requires a separately reviewed authorization amendment; this contract cannot label extra scopes non-authorization-relevant to avoid that gate.

That is a real strengthening. It closed a documentation gap, not a contradiction.

Resolved

  • Family-enum widening is disclosed in four places — §1 decision 8, a new §4.1 row, an explicit §6.2 paragraph, and a §18 approval-card row — with the correct count (six → nine) and the correct three added values.
  • Assertion-subtype narrowing gets the same treatment plus a §14 hostile case and a §15 migration paragraph, and correctly notes that no current example breaks while a new v0.2 decision cannot review an excluded subtype.
  • REVIEW_REQUEST action-versus-target collision is resolved in §9 with a matching §14 conformance case and a §17 traceability row.
  • Header line breaks render. The trailing "What is next:" line is removed.
  • Tables column-consistent, no trailing whitespace, no tabs, no dangling cross-references to the renumbered §1 decisions.

Verified unchanged on the new pin

PR #11's three new commits do not touch this document's dependency surface. RP_FINAL_REVIEW_TARGET_ONE (ten kinds) and RP_FINAL_REVIEW_CASE_ELIGIBLE_TARGET_ONE (eleven kinds) are byte-identical to the previous head, and none of the 193 changed lines mention REVIEW_DECISION, FINAL_REVIEW, the common authorization envelope, or anchorScopes. The re-pin is correct and low-risk.


Three items to pick up from the new pin

None blocking. Each is catch-up with content PR #11 added after the previous pin.

1. NOT_EVALUATED is missing from the §12.2 trace vocabulary

The new head defines NOT_EVALUATED as a first-class trace disposition meaning no pass-or-fail conclusion was reached because a named prerequisite failed, and is explicit that dependent checks are marked this way rather than becoming "fabricated failures."

§12.2 still admits only PASS, FAIL, or NOT_APPLICABLE, and forbids NOT_APPLICABLE for required items. When RD_TARGET_KIND fails, RD_TARGET_FAMILY depends on it and cannot be truthfully evaluated — but FAIL asserts a conclusion that was never reached and NOT_APPLICABLE is forbidden. The trace has no honest disposition available.

PR #11 solved exactly this problem on its own side. Adopting the same token here keeps the two traces consistent.

2. samovers/OFARM#19 is absent from §19 staged delivery

The new head names issue #19 (the governed interactive-approval transaction protocol) as a separate prerequisite, and states the runtime protocol must close before machine materialization or implementation.

This document depends on that gate in three places — PC_ATOMIC_EVIDENCE, §13 step 6, and the §14 state-change-between-validation-and-commit row — all referring to "the shared atomic transaction gate." But §19's nine-step list never names issue #19; step 4 covers shared evidence materialization only. Following the list as written, a reader reaches step 7 (hostile conformance) with no governed-transaction contract in existence.

3. Adopt PR #11 §7.5.1's delta-ledger vocabulary

The new head adds an explicit v0.1-to-v0.2 target delta ledger with closed classification tokens: WIDENING, NARROWING, MIXED_DELTA, RETYPED, CLOSED_EQUIVALENT.

§6.2's new disclosure paragraphs describe the same shape of change in ad-hoc prose. The two ledgers sit on different axes — PR #11 classifies authority targets, this document classifies the result-carrier family enum — so this is alignment rather than duplication. But the family change is cleanly WIDENING and the assertion-subtype change cleanly NARROWING, and using the tokens makes the two documents comparable rather than merely compatible.

Worth noting that both documents independently converged on the same principle: expose every target delta explicitly for steward approval rather than leaving it inferable from a mapping table.

Cosmetic

The header now uses <br>, which renders correctly, but it is the only inline HTML in the phase-reports and accepted-RFC lanes. explainable_current_state_runtime_evidence_rfc_candidate_v0_1.md uses trailing double spaces for the same effect.


Disposition

Approve. No blocking findings. The scope and lineage concerns from the prior round are withdrawn as reviewer error. The three items above are small edits that keep this candidate aligned with the head it now pins.

@samovers

samovers commented Sep 2, 2026

Copy link
Copy Markdown
Owner Author

Renewed semantic re-review requested on 9ef08030b25eb3db1c2da14d6595300198384ff2 against the three non-blocking alignment items in issuecomment-5507650172.

  1. Dependency-aware trace disposition: section 12.2 now permits PASS, FAIL, legitimate NOT_APPLICABLE, or dependency-bound NOT_EVALUATED for every RD_* and PC_* item. NOT_EVALUATED means a named contract-declared prerequisite did not pass, cannot suppress an independent failure, and prevents overall PASS for a required dependent item. A hostile case covers failed RD_TARGET_KIND followed by dependent RD_TARGET_FAMILY.
  2. Governed transaction prerequisite: samovers/OFARM#19 is now named in the header, governing inputs, validation handoff, steward approval card, and staged delivery. It must close separately before machine materialization, hostile conformance, or runtime implementation claims this contract's shared atomic transaction and consumption gate. No transaction semantics were added here.
  3. Delta vocabulary: the future family-enum change is explicitly WIDENING and the assertion-subtype change is explicitly NARROWING. The candidate states that these labels reuse PR RFC candidate: executable authorization evidence v0.2 #11 vocabulary for comparability while classifying the separate result-carrier resolution axis.

The cosmetic <br> header rendering remains unchanged because the review marked it non-blocking and it is outside these three alignment edits.

Validation passes at this exact head: full repository suite, generated currentness, git diff --check, 14 Markdown tables, 11 target rows, 3 action/outcome rows, 18 mappings, 15 postconditions, and all four GitHub checks.

Primary trust boundary: final ReviewDecision protected-effect semantics and validation evidence. Scope stayed within the intended one-file, non-authoritative PR boundary. Issue #19 remains a separate trust-boundary dependency; no authorization, schema, transaction, runtime, Event Grammar, currentness, or OFARM2 file changed.

PR #17 remains draft. Explicit steward approval remains a separate decision.

What is next: confirm whether these three alignment items are closed and whether exact head 9ef08030b25eb3db1c2da14d6595300198384ff2 is ready for steward semantic approval.

@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

Reviewed PR #17 at current head 9ef08030b25eb3db1c2da14d6595300198384ff2 against:

  • the previously reviewed head 81893d4ee7a54d27d70d2d99720a73470a987bce;
  • issue #15’s protected-effect boundary and acceptance criteria;
  • the active Source Truth Record Closure and current source-record contracts;
  • the exact approved PR #11 authorization head 03a21f669ee04f96d444e14f00ae7212cab04803.

PR #17 remains draft, open, mergeable, and limited to one non-authoritative candidate file. The two-commit delta contains 67 additions and 36 deletions.

The current amendments are sound

Scope ownership is now explicit. RD_SCOPES takes its complete value only from the common authorization envelope and the extractor selected by PR #11. The future machine contract must bind exact source and destination pointers, cardinality, and array/set posture. It must stop rather than inventing an extra result-only scope when the authorized value cannot be represented completely in anchorScopes. This preserves authorization ownership while allowing this contract to validate the resulting ReviewDecision.

The earlier claim that PR #11 provided no scope source was correctly withdrawn: the approved authorization candidate already applies a common envelope containing scope to every effect-intent profile. The new text therefore strengthens the handoff rather than repairing an actual contradiction.

Optional decision lineage is correctly separated from authority. supersedesReviewDecisionBinding is now an immutable, digest-bound ReviewDecision-domain field. It cannot change the action, outcome, authority target, scope, authority subject, or path eligibility. Supplying it outside the validated intent, substituting it, or changing it after the intent digest causes RD_PRIOR_DECISION to fail. That is consistent with the active requirement that ReviewDecision support supersession lineage where relevant without turning lineage into an authority source.

The result-carrier changes are no longer hidden. The candidate explicitly asks stewards to approve:

  • a WIDENING of reviewedArtifactFamily from six to nine values by adding PLANNED_INTERVENTION, EXECUTION_REPORT, and REVIEW_REQUEST;
  • a NARROWING of exact ASSERTION_RECORD target coverage from all six current assertion subtypes to structure, operation-claim, and compliance assertions.

The active AssertionRecord contract does contain six subtypes, so this narrowing is substantive. It is now stated in the decision request, inventory, target-resolution section, migration posture, hostile cases, and approval card rather than entering through an apparently neutral mapping table. Existing v0.1 history remains valid and is not reinterpreted.

That narrowing follows the exact target vocabulary already approved on PR #11. PR #17 is not locally deleting an authorized target or changing who may review it; it is exposing the corresponding result-carrier consequence for separate steward approval.

REVIEW_REQUEST is no longer ambiguous. The candidate distinguishes the excluded REVIEW_REQUEST action and REVIEW_REQUESTED outcome from an eligible governed record whose target kind and family are REVIEW_REQUEST. It therefore preserves issue #15’s exclusion of a review-request result contract without accidentally excluding review-request records as final-review targets.

Dependency-aware validation is closed correctly

The validation trace now has four honest dispositions:

  • PASS;
  • FAIL;
  • legitimate NOT_APPLICABLE;
  • dependency-bound NOT_EVALUATED.

NOT_EVALUATED is narrowly defined: a named contract-declared prerequisite did not pass, so no conclusion was reached. It cannot suppress an independent failure, cannot be assigned arbitrarily, and prevents overall PASS when the dependent item is required. The machine contract must enumerate the exact prerequisite IDs.

The hostile case is appropriate: if RD_TARGET_KIND fails, the dependent RD_TARGET_FAMILY check must be NOT_EVALUATED, not a fabricated PASS, FAIL, or NOT_APPLICABLE. This carries PR #11’s evidence-truthfulness principle into the domain-validation trace without importing PR #11’s authorization outcome lattice.

The transaction boundary remains separate

Issue #19 is now named consistently in the header, governing inputs, validation handoff, steward card, and delivery sequence. It must close the atomic transaction and single-use consumption protocol before machine materialization, hostile conformance, or runtime implementation relies on that gate.

PR #17 does not attempt to define reservation, concurrency, retry, uncertain commit, or recovery semantics itself. That is the correct boundary: this candidate defines what the ReviewDecision contract must supply to the gate, while issue #19 owns how the shared transaction actually operates.

The exact PR #11 dependency is also valid. Steward approval was explicitly granted for authorization head 03a21f669ee04f96d444e14f00ae7212cab04803, and that approval authorizes dependent candidates to refresh their pin without approving PR #17 in advance.

Drift and over-design check

No material scope drift. The current changes remain inside final ReviewDecision domain semantics and validation evidence. They do not alter authorization, principal resolution, action eligibility, grants, Event Grammar, accepted-consequence construction, current state, transport, runtime implementation, or currentness.

No new over-design. The amendment adds no:

  • new action class;
  • generic policy language;
  • independent lineage service;
  • transaction coordinator;
  • duplicate authorization-bundle semantics;
  • compatibility theorem engine;
  • current schema or contract.

The NOT_EVALUATED addition is a small trace-truthfulness mechanism, not another outcome model. The WIDENING and NARROWING labels are governance disclosure, not runtime indirection. The issue #19 dependency prevents transaction semantics from leaking into this PR rather than adding them here.

One materialization guard should remain explicit during the later machine-contract review: the phrase “an applicable lineage rule passes” must resolve to an exact contract-owned lineage predicate and dependency binding, or the lineage field must be absent. It must not survive as locally interpreted prose. That does not require another Phase A architecture amendment; it follows from this candidate’s existing requirement that selectors, mapping dependencies, postconditions, and contract bytes be exact and separately reviewed.

The two current-head workflow runs returned by GitHub—repository validation and generated-currentness validation—both completed successfully.

Final assessment

  • PR #11 dependency: correct and approved
  • Scope source and mapping stop condition: closed
  • Lineage source ownership: closed
  • Result-family widening disclosure: closed
  • Assertion-subtype narrowing disclosure: closed
  • REVIEW_REQUEST action/target distinction: closed
  • Dependency-aware NOT_EVALUATED: closed
  • Issue #19 boundary: correctly separated
  • New semantic blocker: none
  • Scope drift: none
  • New over-design: none
  • Phase A disposition: ready for exact-head steward semantic approval

Approval should apply specifically to 9ef08030b25eb3db1c2da14d6595300198384ff2. It would not merge the PR, accept active RFC law, create or promote machine contracts, change current/default status, or authorize OFARM2 runtime implementation. Issue #19 remains a hard downstream prerequisite for any claim relying on the shared atomic transaction and consumption gate.

@samovers

samovers commented Sep 3, 2026

Copy link
Copy Markdown
Owner Author

Steward semantic approval — granted

I explicitly grant Phase A semantic approval for the final ReviewDecision protected-effect contract candidate at commit 9ef08030b25eb3db1c2da14d6595300198384ff2, following the exact-head review with no blocking findings.

This approval accepts the complete candidate and its approval-card decisions at that exact head, including:

  • the exact protected-effect action/outcome, target, subject, scope, path, and prior-decision bindings;
  • the explicit RD_SCOPES mapping to the approved PR RFC candidate: executable authorization evidence v0.2 #11 authorization envelope and its hard-stop posture;
  • the governed optional lineage field without authorization authority;
  • the disclosed WIDENING result-family and NARROWING assertion-subtype resolutions;
  • the action/outcome versus target distinction for REVIEW_REQUEST;
  • dependency-bound NOT_EVALUATED evidence; and
  • the matching invariants, hostile cases, traceability, staged boundaries, and issue Define governed human-approval transaction and consumption protocol #19 prerequisite.

The approved primary trust boundary is the ReviewDecision protected-effect contract. PR #17 stayed within that boundary as a one-file, draft, non-authoritative RFC candidate. Canonical authorization remains governed by the exact approved PR #11 head. Governed approval transaction and consumption coordination remains separately governed by issue #19. Schema creation, contract promotion, currentness, transport release, retention and key custody, and OFARM2 runtime implementation remain separately governed.

This decision does not:

At machine-contract review, the phrase describing an applicable lineage rule must resolve to an exact contract-owned lineage predicate with explicit dependency binding, or the optional lineage field must be absent. This is a later materialization guard and does not amend or block this Phase A approval.

Any later semantic change to PR #17 requires renewed exact-head review and approval. PR #17 remains draft as the durable candidate and approval record.

What is next: preserve this exact approved candidate while selecting the next separately governed issue.

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 final ReviewDecision protected-effect contract

1 participant