Skip to content

Retract 7 5 cancel invariant - #30

Merged
yahalomran merged 3 commits into
masterfrom
retract-7-5-cancel-invariant
Sep 20, 2026
Merged

yahalomran merged 3 commits into
masterfrom
retract-7-5-cancel-invariant

Conversation

@yahalomran

Copy link
Copy Markdown
Collaborator

No description provided.

The invariant rested on the claim that a booking left pending by an abandoned
checkout remains confirmable. Section 5.3.4 restricts confirm to
business-initiated manual-mode approval, so that claim does not hold as stated
and the invariant has no established hazard to protect against.

Withdraws the invariant, cancellation.reason_code and its checkout_abandoned
value, the canceled_at cross-read stability requirement, the notification
suppression rule, the Section 5.2 missing-terminal-path note, and flow vector
105. Also removes the pre-existing clause requiring cancel_checkout to
transition the pending booking to canceled, which cited derivation rule 2 as
authority that rule does not carry.

Keeps the derivation rule 2 clarification and the cancel-response shape rule,
both of which stand independently of the withdrawn invariant.

Section 5.1.1 and Section 5.3.4 disagree on whether confirm is legal from
pending in auto mode. That conflict is tracked separately and is the
precondition for deciding whether any cancel-path requirement is needed.
- Made Section 5.3.4 authoritative over the Section 5.1.1 `pending`/`confirm` cell, so `confirm` from `pending` is legal only in manual confirmation mode and an auto-mode booking that is not already `confirmed` MUST be rejected with `invalid_transition`. That closes the contradiction that would otherwise let a platform confirm an unpaid UCP-Native leftover sitting in `pending`
- Marked REST `POST /bookings/{booking_id}/confirm` and MCP `usp_bookings_confirm` as `business_only`, stripping platform `USP-Agent`/`_meta` and booking-scoped credentials, because a scoped credential that can confirm would still grant a free appointment on that unpaid leftover
- Added flow vector `105-confirmation-mode-guard` and a coherence check for the `business_only` access class so the cell cannot drift untested again

---
…invariant

# Conflicts:
#	CHANGE_LOG.md
#	tests/vectors/README.md
@yahalomran
yahalomran enabled auto-merge (squash) September 20, 2026 13:55
@yahalomran
yahalomran disabled auto-merge September 20, 2026 13:55
@yahalomran
yahalomran merged commit d05bbe2 into master Sep 20, 2026
1 check passed
@yahalomran
yahalomran deleted the retract-7-5-cancel-invariant branch September 20, 2026 13:55
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.

1 participant