42. Auction, settlement, accounting, mandate, and transfer engine
The social profile can display a live commercial surface only if the economic nouns remain precise. Appraisal, estimate, asking price, standing offer, proxy maximum, leading eligible bid, close price, invoice amount, escrow-provider balance and settled…
The social profile can display a live commercial surface only if the economic nouns remain precise. Appraisal, estimate, asking price, standing offer, proxy maximum, leading eligible bid, close price, invoice amount, escrow-provider balance and settled consideration are different records produced by different authorities at different times.
#42.1 Economic value and listing semantics
| Object | Who/what produces it | What it does not prove |
|---|---|---|
| Appraisal | identified appraiser/model using a dated comparable set and method | offer, liquidity, title, future price or guaranteed sale |
| AskingPrice | authorized seller/listing manager | accepted value or enforceable bid |
| Offer | authenticated buyer under exact terms and expiry | funds, eligibility, title transfer or auction rank |
| BidAdmission | serialized auction service after eligibility/terms checks | settlement success or legal title |
| CloseReceipt | locked auction algorithm at the close fence | payment, inspection, custody, title or persona transfer |
| SettlementReceipt | completed saga plus provider assertions and journals | government registry truth beyond cited assertion |
Listing is a versioned disclosure and authority package
Listing {
listingId, subjectAssetId, configurationSnapshotId,
sellerPrincipalId, sellerAuthorityRecordId, beneficiaryIds[],
titleAndLienAssertionRefs[], custodyAssertionRefs[],
conditionDossierDigest, disclosureArtifactDigest,
includedItems[], excludedItems[], includedRights[], excludedRights[],
personaDispositionPolicy, jurisdiction, currency, termsDigest,
inspectionPolicy, settlementProfileId, status
}
Listing state:
DRAFT -> AUTHORITY_PENDING -> DISCLOSURE_PENDING -> READY -> SCHEDULED
-> OPEN -> PAUSED -> CLOSE_FENCED -> CLOSED -> SETTLING
-> SETTLED | NO_SALE | FAILED | CANCELLED | DISPUTED#42.2 Auction rule set, bid admission, and anti-sniping
Immutable bid and admission records
AuctionRuleSet {
ruleSetId, auctionMode: DIRECT_ASCENDING|PROXY_MAXIMUM|SEALED,
currency, openingAt, initialCloseAt, hardStopAt?,
minimumIncrementFunction, tieRule, reservePolicy,
bidderEligibilityPolicy, depositPolicy?, antiSnipingWindow?,
extensionDuration?, maximumExtensions?, bidWithdrawalPolicy,
pausePolicy, cancellationPolicy, visibilityPolicy,
settlementProfileId, ruleSetDigest
}
BidIntent {
bidId, auctionId, bidderPrincipalId, bidderAgentId?,
amountMinor, maximumProxyMinor?, currency, termsDigest,
confirmationArtifactId, depositHoldId?, clientCreatedAt,
submittedAt, idempotencyKey, bidDigest
}
BidAdmissionReceipt {
bidId, auctionId, auctionStreamSequence, trustedReceivedAt,
eligibilityDecisionId, fundsDecisionId?, admittedAmountMinor,
encryptedProxyMaximumRef?, ruleSetDigest, bidDigest,
status: ADMITTED|REJECTED, reasonCode?
}Deterministic extension rule
if trustedReceivedAt < currentCloseAt
and trustedReceivedAt >= currentCloseAt - extensionWindow
and bidAdmission == ADMITTED:
newCloseAt = min(hardStopAt,
max(currentCloseAt, trustedReceivedAt + extensionDuration))
append AuctionExtended(triggeringBidId, previousCloseAt, newCloseAt,
ruleSetDigest, auctionStreamSequence)
The close boundary is strict: trustedReceivedAt < currentCloseAt.
Client clocks, feed order, UI refresh and notification delivery do not rank bids.- The reserve is signed/encrypted or independently witnessed before opening. The seller cannot select or change it after observing admitted bids.
- Public projections pseudonymize bidders and never reveal proxy maxima, excluded-account relationships, deposits, funding checks or exact device/network features.
- A bid is immutable. Withdrawal, seller/related-party exclusion, deposit failure and administrative invalidation append separate records with evidence and appeal semantics.
- Proxy bidding stores the authenticated maximum encrypted from public/read models. The close algorithm computes the visible price from eligible maxima, increment function and locked tie rule.
#42.3 Linearizable close and winner selection
Per-auction serialized close transaction
closeAuction(auctionId, expectedStreamHead):
begin SERIALIZABLE transaction
auction = lock auction stream
require auction.streamHead == expectedStreamHead
require auction.state in {OPEN, PAUSED_AS_CLOSEABLE}
require trustedNow >= auction.currentCloseAt
append CloseFence(fenceSequence=nextSequence,
trustedCloseTime, ruleSetDigest)
bids = ADMITTED bids with admissionSequence < fenceSequence
eligible = reevaluate locked close-eligibility policy over bids
result = lockedAlgorithm(eligible, reserveCommitment,
incrementFunction, tieRule)
append AuctionCloseReceipt(
closeFenceSequence, exactEligibleBidIds, excludedBidFindings,
winnerBidId?, closingPriceMinor?, reserveDisposition, noSaleReason?,
algorithmDigest, resultDigest)
transition to CLOSED or NO_SALE
commit
Only AuctionCloseReceipt selects the winner. A later higher offer, payment order,
feed order, seller preference or appraisal cannot replace it.#42.4 Settlement saga and independent legal/physical milestones
Payment, escrow, inspection, custody, title, persona and rights do not collapse
SettlementSaga {
settlementId, auctionCloseReceiptId, buyerPrincipalId, sellerPrincipalId,
beneficiaryIds[], settlementProfileId, purchaseAgreementDigest,
paymentIntentId?, escrowProviderId?, escrowOperationId?,
titleAndLienCheckIds[], inspectionDecisionId?, taxAndFeeQuoteId?,
documentExecutionIds[], custodyHandoffId?, titleTransferAssertionId?,
personaDispositionId?, rightsDispositionIds[], milestoneStates[],
compensationIds[], disputeId?, finalReceiptId?
}
Milestones:
PREFLIGHT -> BUYER_IDENTITY_VERIFIED -> SELLER_AUTHORITY_VERIFIED
-> TITLE_AND_LIEN_REVIEWED -> FUNDS_AUTHORIZED -> FUNDS_IN_ESCROW
-> INSPECTION_PASSED|WAIVED|FAILED -> DOCUMENTS_EXECUTED
-> CUSTODY_HANDOFF_CONFIRMED -> TITLE_TRANSFER_EXTERNALLY_ASSERTED
-> ACCEPTANCE_CONFIRMED -> FUNDS_RELEASED -> COMPLETE
Incomplete milestone -> SUSPENDED -> COMPENSATING
-> REFUNDED | PARTIALLY_COMPENSATED | DISPUTED | OPERATOR_REQUIREDExternal legal authority remains external
The platform does not claim to provide regulated escrow unless the responsible entity is authorized to do so. Payment success does not transfer title. Custody does not transfer persona, voice, media, telemetry or profile rights. Registry output is an attributed assertion, not a fact manufactured by the platform.#42.5 Double-entry subledger and exact money
Canonical accounting invariants
LedgerAccount {
accountId, legalAccountHolderId,
accountType: ASSET|LIABILITY|EQUITY|REVENUE|EXPENSE|MEMORANDUM,
currency, providerRef?, restrictedPurpose?, status
}
JournalBatch {
journalBatchId, economicEventId, journalPolicyDigest,
status: DRAFT|VALIDATED|POSTED|REVERSED,
bookedAt, effectiveAt, currencyGroups[], lines[], sourceReceiptIds[],
reversalOf?, periodId, postingDigest
}
JournalLine {
lineId, accountId, currency, debitMinor, creditMinor,
vehicleId?, personaId?, missionId?, beneficiaryId?,
providerRef?, taxCodeRef?, revenueShareRef?
}
For each currency group: sum(debitMinor) == sum(creditMinor).
Each line has exactly one positive side. Posted batches are immutable.
Corrections append a full/partial reversal and a replacement. One economic event
has at most one active posted batch under one journal policy.| Example event | Debit | Credit |
|---|---|---|
| buyer funds EUR 100,000 | Cash—regulated provider 100,000 | Liability—buyer funds held 100,000 |
| allocate settlement | Liability—buyer funds held 100,000 | Payable—seller 95,000; platform revenue 4,000; tax payable 1,000 |
| seller payout | Payable—seller 95,000 | Cash—regulated provider 95,000 |
| platform transfer | Cash—operating 4,000 | Cash—regulated provider 4,000 |
| tax remittance | Tax payable 1,000 | Cash—regulated provider 1,000 |
The example demonstrates mechanics, not prescribed legal or tax treatment. Currencies balance independently. FX uses explicit balanced currency groups through an FX-clearing account with rate source, quotation direction, timestamp, spread/fee and realized/unrealized treatment. Binary floating money is forbidden.
#42.6 Economic mandates and atomic reservations
Concurrent actions cannot overspend a mandate
EconomicMandate {
mandateId, principalId, beneficiaryId, agentInstanceId,
allowedActionKinds[], allowedCounterparties[], allowedMerchantCategories[],
prohibitedCounterparties[], perActionLimitsByCurrency{},
periodLimitsByCurrency{}, rollingWindowPolicy, confirmationThresholds{},
maximumOpenReservations, validInterval, mandateEpoch
}
BudgetReservation {
reservationId, mandateId, actionId, currency, amountMinor,
status: HELD|CONSUMED|RELEASED|EXPIRED|DISPUTED,
heldAt, expiresAt, consumedByEconomicEventId?
}
lock mandate counter
if postedUsage + activeReservations + requestedAmount > periodLimit: reject
else append HELD reservation and increment active reservation total atomically#42.7 Unknown-effect reconciliation and exactly-once economics
Provider uncertainty remains explicit
reconcile(operationId):
lock operation stream
if state != UNKNOWN_EFFECT: return current state
evidence = query provider by immutable providerOperationId or idempotencyKey
verify provider identity, signature, schema and correlation
if provider proves success:
append EffectConfirmed
create entitlement/payment/market records exactly once
post journal exactly once; consume reservation; settle action
elif provider proves no effect:
append ProvenNotEffected; release reservation
retry only if proposal, confirmation, grants and connector policy remain valid
elif evidence conflicts or reconciliation deadline passes:
append OperatorRequired; preserve reservation or book explicit exposure
prohibit automatic retry
Webhook and poll races converge on one provider operation, economic event and
active journal batch. Timeout never means failure; ambiguous not-found never
authorizes blind retry for a non-idempotent provider.#42.8 Asset transfer and persona succession saga
Transfer is a coordinated revocation and succession transaction
TransferPlan {
transferPlanId, assetId, transferorPrincipalIds[], transfereePrincipalIds[],
titleDisposition, custodyDisposition, profileAdministrationDisposition,
personaDisposition: TRANSFER|RETAIN|LICENSE|FORK|RETIRE,
followerGraphDisposition, historicalContentDisposition,
mediaRightsDisposition, telemetryAndPrivateDataDisposition,
outstandingListingIds[], outstandingAuctionIds[], outstandingActionIds[],
scheduledPublicationIds[], economicMandateIds[], providerCredentialRefs[],
legalHoldRefs[], effectiveAt, approvalRequirements[], state
}
DRAFT -> COUNTERPARTIES_VERIFIED -> RIGHTS_RESOLVED
-> OUTSTANDING_EFFECTS_RESOLVED -> QUIESCING -> HANDOVER_COMMITTED
-> EPOCHS_ADVANCED -> CREDENTIALS_ROTATED
-> PUBLIC_SUCCESSION_DISCLOSED -> COMPLETE
Any pre-commit state -> ABORTED
Any unresolved post-effect state -> OPERATOR_REQUIRED- EPOCHS_ADVANCED invalidates sale, publication, spending and profile grants; active sessions/tokens; provider credentials/webhooks; cached decisions; scheduled content; campaigns; unconsumed confirmations; recovery delegates and prior-steward invitations.
- Historical content retains original creator, source, rights and publication receipts. Followers receive an explicit transfer, licensed continuation, fork or retirement notice instead of a silent account takeover.
- Title, custody, profile administration, persona, follower graph, media, voice, telemetry, private data and economic rights each receive an explicit disposition; an omitted disposition blocks completion.
- Autonomous earning or service operation remains a mandate-bound workflow for named beneficiaries and accountable principals. The vehicle persona does not own money merely because it generates revenue.