Commit
Scope
This page defines commit-time validation, pricing, and settlement behavior for lease-backed usage.
Required inputs
Idempotency-Keyis required.leaseis required and is resolved inside the current billing account/user namespace.feature_codemust match the lease feature.quantity_minoris required and must be> 0.meters[]is optional; when omitted, primary activity meter is used.
Validation sequence
- Resolve and lock the lease by its caller-owned or Vluna-generated reference.
- Validate feature match against lease metadata.
- Validate lease state and expiry status.
- Resolve quota windows from lease metadata; missing/mismatched window metadata causes quarantine semantics.
- Validate meter set against feature-meter allowlist for activity semantic kind.
- Resolve pricing for each meter line.
- Build aggregate pricing and apply settlement.
Quarantine semantics
Commit supports non-fatal quarantine behavior:
- Invalid or disallowed meter mapping
- Missing policy window metadata at commit time
- Missing pricing for one or more meters
- Lease not active or late commit beyond grace
When quarantined:
application_statusisquarantined- applied quantity is set to
0 - settlement amount is set to
0 - rating/line records are still written for traceability
- hints and reason codes are returned
Pricing and settlement semantics
- Pricing is resolved at commit time (floating model).
- Feature quantity and meter quantities are separate dimensions.
- Rated lines are a discriminator-based union:
rating_status=pricedcarries exact rational revenue and cost rates, identities, fingerprints, and snapshots;rating_status=missing_pricecarries explicit missing-price snapshots and zero amounts, with no synthetic zero rate.
- A rational snapshot uses
schema=gate/rational-pricing-snapshot:v1andalgorithm=integer_rational_floor_v1. A missing snapshot usesschema=gate/missing-pricing-snapshot:v1andalgorithm=not_rated_missing_price_v1. unit_price_xusd / unit_quantity_minorandunit_cost_xusd / cost_unit_quantity_minorare exact rates. The reference quantities are divisors, not billing blocks or minimum charge quantities.- Revenue and cost each expose a stable
rate_identity(the cost side iscost_rate_identity) and their own remainder chain. - Residual numerators are scoped by billing user + meter + pricing kind + rate identity. Changing a resolved rate starts a distinct remainder chain instead of carrying fractions across unlike rates.
- Settlement allocates funding sources and persists pending settlement facts.
Hint semantics at commit
Commit may emit:
lease.closed_at_commitlease.expiredpolicy.window_not_foundfeature.meter_not_allowedpricing.not_configuredpricing.meter_price_missingpricing.contract_term_invalidpricing.changedquota.remainingbudget.low_headroom
Idempotency behavior
- Commit idempotency is scoped to lease + key.
- Same key + same request hash returns stored response snapshot.
- Same key + different request hash returns
409.
Verify checklist
- Replayed idempotent commit returns stable commit id and lines.
- Quarantined commits write traceable facts but do not settle.
- Missing pricing meters are reflected in hints and reason codes.
- Late commit within grace emits hint; beyond grace quarantines application.