publ betaReference (MCP guide)
Open publ console

E00003 event default tier pricing

# E00003 event default tier pricing

Use [ticket_pricing_get](../tools/ticket_pricing_get.md) and [ticket_pricing_apply](../tools/ticket_pricing_apply.md) to inspect an existing event's default policy, change one price, link an existing global tier label at a free/paid price, or unlink selected price rows. These are existing methods and the existing `commerce-ticket-pricing` task type; this Reference adds no registration.

Discover the connected endpoint before use.

## Channel and transport requirements

Use the selected authorized channel with one exact installed E00003 pApp, its verified consumer and its KRW/USD base currency. OWNER is allowed; a DELEGATEE requires MANAGE_P_APPS and a current manual-action policy proving that the channel is not content-only. Missing or unverified policy fails closed. Account scope and another channel's resource cannot operate this workflow.

The current connection, credential version, actor, channel, currency, installation, consumer and permission are bound and rechecked around requests. Callers cannot override them. BOOK_AND_TICKET_V3 maps to the existing selected API origin. No separate inferred ticket origin, shop-store lookup or COMMERCE_V2/BCS fallback is used. Authentication and endpoint configuration belong to the host, not tool arguments.

Changing its app code to E00003 does not migrate or recover an old task.

## Read and prepare

1. Obtain the existing event's business ID from a current authorized observation, such as the original console. The connected ticket methods do not expose an event list.
2. Call ticket_pricing_get without an operation to inspect the event's unique active default policy. Read the exact policy and price business IDs from that result.
3. Prepare the intended operation through the same getter. For `tierPrice`, select one active price and explicit free/paid payment. For `tierLink`, use an already observed active global label ID with no price row in this policy. For `tierUnlink`, select 1–100 distinct active price IDs and `UNLINK_TIER_PRICES`.
4. Keep the successful preparation's `revision`, `policy.eventPolicyId` and complete operation unchanged for apply. A plain-read revision is not a write preparation. Changes to targets or payment require another preparation.

Link/unlink preparation reads complete LISTED and ARCHIVED global-label inventories, bounded at 500 combined rows. Returned `availableTierLabels` contains only active labels with no policy price row, including no deleted row. Plain reads and existing-price preparation do not return these options. A new link needs an already observed global label ID; use the original console when no valid ID is known. Do not invent a global-label discovery tool or probe with a dummy ID. There is no global-label creation/editing in this connection.

## Inspect the plan and apply

Use a stable requestId, the preparation revision and `dryRun:true`. Inspect the selected target, operation and [price rules](../tools/ticket_pricing_apply.md#price-rules). A new dry run makes no business write and creates no job. When the intended new change is authorized, repeat the same input with dryRun:false.

Price changes preserve the selected tier assignment and all other returned data. Linking creates exactly one new policy price for an existing global label and needs its durably returned ID. Unlinking removes the selected price links, including all active links when requested, without deleting global labels. Readback verifies requested state and preserved data; partial results stay pending.

## Keep uncertain tasks intact

Save the original request, taskId and taskType `commerce-ticket-pricing`. [Status](../tools/publ_task_status.md#e00003-ticket-pricing-status) reports history under current authorization. [Resume](../tools/publ_task_resume.md#e00003-ticket-pricing-recovery) is observation-only in the shared host. Prepared work requires the identical original apply; sent work is never dispatched again.

A saved creation receipt allows observation of that exact new price. A missing receipt cannot be replaced by a matching label, title or list difference. Partial unlinking does not trigger another delete. Completed replay is historical; use a fresh getter for current values. Do not change requestId, bypass a changed connection/installation or assume automatic restoration.

## Console destination

Fresh validated reads, preparations, dry runs and confirmed completions use screen `channel.ticket-pricing` and the exact selected event path `/channels/{channelCode}/p-apps/E00003/events/{eventId}/base-pricing/detail`. This is the event's pricing detail, not a parent list. Use the returned labeled URL with its actual configured host.

The host checks the current event/default policy and prepared PATCH/CREATE/DELETE target before returning a usable destination. Verified link creation must identify an active returned price. Pending, error and historical results have no current verified link. Opening a plan's link does not prove that a price changed.

## Limits of this connection

The [metadata operation](#policy-names-and-management-labels-candidate) is connected. It edits existing default-policy names and management-label membership. New policies/events/global labels, discount or sales-term editing, refund configuration/execution and settlement are not part of these two methods. Domain source or schema presence alone does not make another operation callable.

Matching stable observations do not provide an atomic snapshot or prove causality. Preservation covers returned event/policy/refund fields, existing prices and the relevant bounded inventory. Separately loaded translations/discounts, omitted projections, schedules, issued tickets, checkout/charging, visitor rights and restoration remain outside that proof.

## Installation-default cancellation settings

These configure the installed E00003 default cancellation policy. They do not execute cancellations/refunds or rewrite event-specific copies, bookings or customer charges. The tier-pricing methods above still do not accept these operations, and their metadata connection is documented below.

The same selected-channel, one-installation, OWNER or permitted MANAGE_P_APPS delegate, current manual-policy and credential/consumer/currency guards apply. This uses the selected API origin for BOOK_AND_TICKET_V3, with no shop store or account fallback. No eventId is accepted.

1. Read ticket_refund_settings_get without an operation and observe refundPolicy.refundPolicyId, isUsed and the existing ordered rule IDs. A discovery revision is not mutation preparation.
2. For usage, prepare operation.kind:usage with the desired isUsed, copy that operation's revision and policy ID into apply, inspect dryRun:true, then perform the intended authorized apply. This changes the installation policy flag only.
3. For rules, the policy must already be enabled. If an enable is needed, complete that separate operation and read again before preparing rules. Select 1–100 distinct editable row IDs with a fee, dayBoundary or both, then inspect the complete prepared request. Purchase-time rows are read-only; edits run in original row order. A before-event boundary also updates the next row's maximum. Invalid or overlapping final ranges are rejected.
4. Keep the full prepared operation unchanged for apply. Fee values are cancellation fees, not refund amounts. [Fee/period rules](../tools/ticket_refund_settings_get.md#period-and-fee-rules) distinguish NONE, fixed amounts and percentage ratios; USD fixed fees have a 1.00 minimum even where ticket prices allow 0.30. Omitted fields/rows and unknown returned data are preserved except required adjacent-period changes.
5. Keep taskType commerce-ticket-refund-settings and its original request/task ID. [Status](../tools/publ_task_status.md#e00003-cancellation-settings-status) is historical; [resume](../tools/publ_task_resume.md#e00003-cancellation-settings-recovery) only observes sent work. Known-unsent prepared work needs identical original apply; a prepared journal with its own durable claim is observation-only. Partial/uncertain saves never trigger another dispatch or a new request ID. Matching full readback may resolve a lost acknowledgement because this edits an existing policy, without proving causality.

Discovery/usage opens the exact installation settings screen. Rules, including no-ops, open its rule editor; see [exact destinations](../tools/ticket_refund_settings_apply.md#console-destination). Historical/pending results provide no current verified link.

Resolve any uncertain task before considering a separate authorized reverse change.

<a id="policy-names-and-management-labels-candidate"></a>

## Policy names and management labels

1. On the existing authorized E00003 event/default policy, inspect [metadata with settings:{}](../tools/ticket_pricing_get.md#policy-metadata-candidate). This reads availableLabels from the EVENT_POLICY management-label catalog. It is separate from availableTierLabels used for price links.
2. Choose the intended management title, public presentationalTitle and complete labelIds selection. Names are 3–50 UTF-16 code units, nonblank with no CR/LF; leading/trailing whitespace is preserved. Omitted fields preserve values. Omitted labelIds preserves membership, while [] unlinks every management label from this policy without deleting global labels. Existing IDs only, at most 10; no ordering, translation or global-label editor is supplied.
3. Prepare the exact final settings again and use its revision and policy.eventPolicyId for [metadata apply](../tools/ticket_pricing_apply.md#policy-metadata-candidate). Empty-settings inspection is not a revision for a different edit. Inspect dryRun:true and the complete final form before an authorized apply. Both retained/final names must be valid.
4. Check requested/preserved values through stable readback. Prices, tier assignments, other policies, returned event/refund fields and the management-label catalog remain unchanged. Partial names, catalog/linked-projection drift or collateral edits cannot complete. Shared recovery observes sent work without another POST; prepared work requires identical apply. Completed history is not current verification.

Metadata uses the exact event base-pricing/home screen, including plans and no-ops. Plain event/pricing reads and tier operations retain base-pricing/detail. Use the operation's single returned destination, with no current link on pending/error/historical results. The original console's display ordering and separate translations are not proven by these sorted returned labels.

These metadata operations do not edit discount policies.

## Existing event discount settings

These edit a selected nondefault policy that references the event's exact active default policy. The default-pricing and installation-cancellation methods above do not accept discount operations. Confirm endpoint availability separately.

1. Obtain the existing event ID from an authorized observation. Read one discount-policy list page, choose an observed policy ID and inspect its exact detail. Each page has fixed size 100 and completeInventory:false; the list is not mutation preparation.
2. Prepare the complete intended operation on the selected policy. Metadata edits names and existing management-label links; salesTerms edits language/code/unit/minimum-quantity conditions; tierPrice, tierLink and tierUnlink edit override prices or links. Empty metadata settings inspect management-label options; changed settings need another preparation.
3. Preserve omitted fields. Explicit labelIds:[] clears this policy's management-label links without deleting labels. Explicit null disables only the selected sales condition; unknown terms remain. Codes are purchase/display conditions, not coupon issuance. See the [input limits](../tools/ticket_discount_settings_get.md#operations).
4. For price edits/linking, require the verified inherited-price projection and obey both source currency/channel limits and the matching base-price cap. Provide an explicit final amount, not a percentage formula. Linking needs an observed active global label with no existing override row; unlinking removes only selected active overrides. Base prices and global labels remain intact.
5. Copy the operation-specific revision and discountPolicy.eventPolicyId into apply with the same complete operation and a stable requestId. Inspect dryRun:true before an authorized new save. New dry runs and equal settings make no business write; plans are not actual save evidence.
6. For nondelete settings keep the original task/request under commerce-ticket-discount-settings. [Status](../tools/publ_task_status.md#e00003-discount-settings-status) is historical; [resume](../tools/publ_task_resume.md#e00003-discount-settings-recovery) only observes sent effects. Prepared work requires identical original apply. Lost link receipts, partial changes and collateral edits remain unresolved without resend or guessed identity.

The [returned destination](../tools/ticket_discount_settings_apply.md#console-destination) is the exact valid list page, the selected policy's conditions/pricing screen, or a surviving page-one list for metadata/plain reads because the editor is a modal. For that parent list, select the same policy again. This differs from default-policy metadata's base-pricing/home destination. Pending, errors and history provide no current verified link.

Policy creation/copy, translations, global labels, coupons, payment/refund/settlement execution, current schedules and issued tickets are outside this configuration connection. Stable returned-state comparisons are not atomic or causal proof. Resolve uncertainty before a separately authorized reverse change with fresh preparation; no automatic restoration is supplied.

## Schedule availability and parking operations

These prepare/save single or bulk holds, releases and parking metadata, or delete one eligible unoccupied schedule. Discount-policy deletion uses the separate existing discount settings methods. Confirm endpoint availability separately.

1. Observe the exact event, hall, schedule and sheet item IDs through the authorized original console. Every getter call requires a complete intended operation; there is no plain listing/discovery mode. Select sheetItemId, not seatId or slotId.
2. Prepare the chosen single/bulk variant with its exact selection, confirmations and complete parking values. Parking memo is at most 200 UTF-16 units, may be empty and is not trimmed. Availability changes require CHANGE_TICKET_AVAILABILITY; deletion requires DELETE_SCHEDULE. Metadata-only edits need no confirmation field.
3. Inspect the complete sheet, eligibility and proposed changed targets. Occupied selected items reject the whole request; ordinary paid prices alone do not mean occupied. Satisfied rows are omitted. Release preserves the same existing tier/policy prices, rejects overrides and requires one common tier among changed bulk targets. Unrelated occupied rows remain untouched.
4. Copy that operation's revision into apply with a stable requestId and identical fields. Inspect dryRun:true before an authorized new save. New dry runs create no job; no-ops perform no business write. Partial effects and collateral changes cannot complete.
5. Keep taskType commerce-ticket-operation and the original task/request. [Status](../tools/publ_task_status.md#e00003-ticket-operation-status) is historical and [resume](../tools/publ_task_resume.md#e00003-ticket-operation-recovery) observes only. Prepared work requires identical original apply; sent work is never resent. Do not create a new request ID for uncertainty.

Current availability/metadata results open the exact selected schedule control room. Deletion uses its surviving schedule list, where filters may differ; see [destinations](../tools/ticket_operation_apply.md#console-destination). An explicit same-identity DELETED detail is required for completion, while a 404 remains unconfirmed. Releasing seats does not restore old slot identities or erase history; deleted schedules have no automatic undo.

Readback is configuration evidence, not a payment, purchaser-lifecycle or visitor-outcome guarantee. Existing default pricing, discount settings and cancellation-fee methods keep their own scope.

## Additional connected price and deletion options

It adds [seated-ticket price preparation](../tools/ticket_operations_get.md#seated-ticket-price-preparation) and [apply](../tools/ticket_operation_apply.md#change-one-seated-ticket-price) to the existing operation tools, and [discount deletion preparation](../tools/ticket_discount_settings_get.md#prepare-selected-discount-deletion) and [apply](../tools/ticket_discount_settings_apply.md#delete-selected-discount-policies) to the existing discount tools. There is no new public lifecycle pair. Schedule listing was not connected at this boundary; the later [schedule workflow](#read-create-or-edit-one-ticket-schedule) supplies bounded discovery and separate create/edit preparation.

For price, select 1–100 eligible seated-ticket sheet IDs sharing the same policy projections and override map, plus one exact observed eventPolicyTierPriceId and free/paid payment. Prepare the whole operation, inspect the plan and apply its revision. Preserve every other override and original schedule price. Recovery remains commerce-ticket-operation and current results use the exact control room. The original single/bulk price entry exposes SEATING only; its modal STANDING display does not enable standing edits, and no explicit override reset/removal call was found. Saving a base amount retains the override. Tier changes remain outside this option; restoring an amount is a separate prepared change. The [source action boundaries](../tools/ticket_operations_get.md#source-action-boundaries) distinguish this from the separate [schedule-policy PATCH_EVENT_POLICY OVERRIDE/CHANGE flow](#replace-or-refresh-applied-schedule-policies) and the unresolved carry/reset contract for override-bearing parking release.

For discount deletion, use view.kind:delete with policyIds and DELETE_DISCOUNT_POLICIES, then the same fields under operation in apply with no root policyId. Its preparation verifies the complete active inventory; ordinary page discovery cannot supply that revision. The existing writer returns the canonical internal taskType commerce-ticket-policy-lifecycle, which must also be used for [status](../tools/publ_task_status.md#e00003-discount-policy-deletion-status) and [resume](../tools/publ_task_resume.md#e00003-discount-policy-deletion-recovery). This removes selected active discounts while preserving the default and unselected data. The result uses a surviving event discount list, not a removed detail. Never replay uncertain removal or assume automatic recreation.

These gates, integration, translation backlog and D-PLAN-1 remain separate.

## Read, create or edit one ticket schedule

Existing [ticket_schedules_get](../tools/ticket_schedules_get.md) and [ticket_schedule_apply](../tools/ticket_schedule_apply.md) now connect bounded lists, single creation with optional initial parking, and exact metadata edits.

1. For discovery, supply hallId, optional eventId and view:list with actual inclusive date labels up to 93 days. The result contains up to 1000 source rows with local publication filtering and safe summaries, but no mutation revision. Date echo and coverage.completeInventory:false do not prove complete interval membership or live bookability.
2. For an edit, supply the observed business scheduleId, eventId/hallId and complete operation.settings to the getter. Empty settings inspect only. For creation, supply one full UTC draft, existing template and selected policies, CREATE_SCHEDULE and any initial template seatIds. Do not combine view with operation or send list inputs to apply.
3. Copy the unchanged prepared operation and revision into apply with a stable requestId; inspect dryRun:true first. Titles/time/purchase limits, source UTF-16 limits, complete policy/seat dependencies and [readback preservation](../tools/ticket_schedule_apply.md#one-schedule-creation) remain explicit. No recurrence or policy replacement is implied by the CREATE_LOOP transport name.
4. Retain the commerce-ticket-schedule task after dispatch. A creation needs one durably saved exact identity. Missing identity is never recovered by title or list difference; sent recovery only observes. Prepared work needs identical original apply and completed replays are historical.
5. Use the returned create wizard for a new preparation, or the surviving list and metadata modal for existing/created schedules. The list URL preserves at most hall/event selection; manually select dates, publication and view. No destination is actual-save or public-access evidence.

Multiple-date creation is connected by the createBatch continuation below. Policy replacement/refresh is connected by the subsequent continuation below.

## Replace or refresh applied schedule policies

MCP supersedes the earlier schedule-policy connection gap for the bounded configuration flow; the earlier exact-source records retain their own scope.

1. Discover observed schedule and policy IDs, then use [ticket_schedules_get](../tools/ticket_schedules_get.md#prepare-schedule-policy-replacement-or-refresh) with one hall/event and the complete policies operation. A list response has no mutation revision.
2. Choose OVERRIDE for the complete ordered replacement, including explicit empty clearing. Choose CHANGE to refresh selected already-applied policies in place; it neither reorders nor adds a policy absent from a schedule. Sparse inherited prices and cross-event selection are unsupported.
3. Inspect the request preview and submit the unchanged operation/revision through [ticket_schedule_apply](../tools/ticket_schedule_apply.md#apply-schedule-policy-changes). A fresh dry run creates no task; a real equal-state no-op creates a done task without writing.
4. Keep the returned commerce-ticket-schedule-policies identity for status/resume. Any global REQUESTED work can block preparation or keep a sent task pending. Neither acknowledgement nor global DONE is a completion receipt; fresh schedule configuration and preservation must match. Sent requests are observed, never resent.
5. Open the returned hall/event list and reselect the dates, schedules and policy modal. The URL does not carry those selections. Confirm actual console behavior separately.

This changes applied schedule policy configuration, not per-item override removal, ticket issuance, sheet/slot propagation, purchaser prices or checkout. Reverse selection may use changed policy definitions and does not guarantee raw restoration. Existing live/UI/visitor/restoration/LLM/hosted limits, translation backlog and D-PLAN-1 remain open.

## Create schedules on multiple dates

This adds no public tool. Use [the preparation contract](../tools/ticket_schedules_get.md#prepare-multiple-date-schedule-creation) and [batch apply](../tools/ticket_schedule_apply.md#apply-multiple-date-schedule-creation) for new schedules in one exact E00003 event/hall, separately from editing several existing schedules.

1. Select observed active event/hall, one populated seat template and complete existing event policies under current OWNER or permitted MANAGE_P_APPS authority. Use the exact selected installation.
2. Convert intended dates, time and weekdays to UTC. Choose CUSTOM with 1–31 distinct dates, DAILY with at most 90 elapsed days, or WEEKLY with at most 120 elapsed days and distinct Sun–Sat days. Range endpoints are inclusive; DAILY can produce 91 occurrences and WEEKLY 121. Every occurrence shares one HH:mm:00 time and a 1–300-minute duration. The rule does not infer local timezone transitions.
3. Prepare the complete draft with confirmation:CREATE_SCHEDULES. Optional initial parkedSeats applies the same selected seats/type/memo on every occurrence; it is not a per-date override. Check the ordered occurrences, UTC warning, dependencies and exact request preview. Preparation saves nothing.
4. Copy revision to expectedRevision, retain the exact operation and a stable requestId, and inspect a fresh dryRun:true. The authorized real apply sends one CREATE_LOOP request after saving sent. Every occurrence needs its own authoritative identity; the complete receipt set must be persisted before readback.
5. Accept completion only when every exact occurrence and preserved dependency matches. Partial effects, missing receipts or any later-occurrence mismatch keep the whole task pending. Do not retry the batch, recreate a missing subset, adopt by title or change requestId to bypass uncertainty.
6. Keep taskType:commerce-ticket-schedule-batch and the original task. Shared [status](../tools/publ_task_status.md#multiple-date-schedule-status) is historical; [resume](../tools/publ_task_resume.md#multiple-date-schedule-recovery) observes only. Prepared work needs identical original apply, while sent work never sends again. Old flat journals retain their identities without migration.

The single console link opens the parent schedules list without event/hall/date queries or multiple-ID modal state. Reselect event, hall, dates, publication and filters, then inspect each returned scheduleId. A completion supplies no shared edit revision; prepare later changes individually. No automatic cleanup or rollback is supplied.

All-or-pending verification is not an atomic service transaction.

## Edit metadata on selected schedules

The existing tools, guarded transport, canonical task recovery and parent navigation are connected in source.

1. Select 1–100 observed schedules in one E00003 hall/event. Prepare [editMany](../tools/ticket_schedules_get.md#prepare-metadata-changes-for-selected-schedules) with EDIT_SCHEDULES and at least one title, UTC startAtTime, duration or purchase-limit field. Dates, publication and availability are excluded.
2. Keep omitted values unchanged per target. The clock preserves each UTC date, and duration can change independently. Null purchase limit means unlimited; omission is not a reset. The source UI's mixed-value/full-form behavior is not silently replayed.
3. Inspect each before/requested/willSend target and the complete ordered selection. Apply the exact operation/revision with a stable requestId and dryRun:true first. A real change sends one array PATCH containing only changed IDs; a matching selection is a no-op only after the current [guarded no-op checks](../tools/ticket_schedule_apply.md#matching-values-still-check-pending-work).
4. Require requestedValuesMatch and preservedValuesMatch for all selected targets. Partial application, missing reads or collateral drift remain pending. Shared results retain currentStateVerified:false.
5. Retain the original task. The shared single/editMany guard blocks new whole-set/subset/single edits of unresolved sent targets in the same namespace. Fresh get, requestId, ACK or elapsed time does not release a claim. An empty HTTP 204 stays uncertain under the connected HTTP 200/data acknowledgement contract. Recover the original task: sent recovery only reads, with no repeated or subset PATCH; prepared task_resume returns status without dispatch.
6. Check the [guard scope and pre-upgrade requirements](../tools/ticket_schedule_apply.md#scope-and-pre-upgrade-pending-work). Old unregistered pending tasks need inspection/settlement or explicit enrollment before enabling new edits. Another OAuth grant, other commerce features and manual console actions are not globally protected.
7. Use the validated hall/event parent link when returned and reselect dates, schedule rows and modal state. Pending/historical results have no current result link.

The [apply contract](../tools/ticket_schedule_apply.md#edit-selected-schedule-metadata) separates target state, execution and observationScope, including historical stored_resolution and no-op rows. No automatic rollback or issued-price/ticket-sheet propagation is claimed.

## Publish or hide selected schedules

The existing get/apply methods, transport, canonical task guard and publication-aware navigation are connected in source.

Use the existing [reader](../tools/ticket_schedules_get.md#prepare-publication-for-selected-schedules) and [writer](../tools/ticket_schedule_apply.md#change-publication-for-selected-schedules) with operation.kind:publication. This is one explicit public/private boolean for 1–100 unique observed IDs in one E00003 hall/event, not availability/sale status or a toggle inferred from a mixed selection.

1. Prepare the exact ordered IDs, isPublished and CHANGE_SCHEDULE_PUBLICATION. Inspect every before/requested/willSend row and copy the operation-bound revision.
2. Dry-run the unchanged operation, then apply it under the same stable requestId. One STATUS request includes only changed IDs; matching rows remain in the result.
3. Check requested and preserved values for every selected target. ACK alone is insufficient; empty204/lost responses remain uncertain under HTTP200/data.
4. Recover the original commerce-ticket-schedule-edit-many task. Prepared resume sends nothing; sent recovery observes only. New IDs, subsets and inverse requests cannot bypass unresolved claims in this namespace.
5. A matching no-op still checks all selected IDs and a fresh stable snapshot under the guard before completion. This includes metadata/single no-ops. Get/dryRun or historical completion cannot release a claim or authorize later work.
6. After resolution, any restoration uses fresh requests grouped by each target's original boolean. Never invert an entire mixed set; resetting flags does not undo prior exposure/cache/bookings/notifications.

Use the independently validated hall/event parent URL and reselect dates, rows and the dropdown. Stored resolutions are historical, not a simultaneous current snapshot. Pre-upgrade unregistered pending work retains rollout HOLD. Different grants/namespaces, manual changes and other commerce functions are outside this guard.

## Pending cancellation-policy changes

They correct admission to the existing cancellation-settings workflow without changing its inputs, transport or task type.

Follow [whole-policy admission](../tools/ticket_refund_settings_apply.md#shared-policy-admission-and-recovery) for installation-default fees and periods. Rules and usage share one protected policy, even when a later request selects a different rule or already-matching/inverse value. A fresh revision/requestId cannot bypass an unresolved claim.

Keep the original commerce-ticket-refund-settings task. Shared prepared resume returns stored status; identical apply alone may continue known-unsent work after revalidation. A prepared task with its own durable claim and all sent tasks only observe. Requested/preserved readback must be stable and completion durably saved before the original claim can be released. If release fails after completion is stored, status remains historical and does not release; original apply/resume can finish its own release without another policy write.

Older unregistered sent journals require original-task enrollment or separate rollout inspection; no automatic inventory/migration is supplied. Other grant namespaces and manual/external changes remain outside protection. Do not change grants, discard journals or remove locks to bypass uncertainty. Fee/period configuration is distinct from refund/PG execution, and source correction does not verify actual saves, original-console comparison, restoration or money movement.