{
  "schema_version": "1.3.0",
  "slug": "how-must-an-instance-scope-partial-payment-allocation-order-across-principal-interest-and-fees",
  "title": "How must an instance scope partial-payment allocation order across principal, interest, and fees?",
  "date_of_record": "2026 November 2",
  "scope": "Applies to payments that are smaller than the total amount due and must be allocated across multiple obligation categories (principal, interest, fees, penalties) where the allocation order affects the remaining balance. Does not apply to payments that satisfy the total balance in full.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/how-must-an-instance-scope-partial-payment-allocation-order-across-principal-interest-and-fees.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/how-must-an-instance-scope-partial-payment-allocation-order-across-principal-interest-and-fees.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/how-must-an-instance-scope-partial-payment-allocation-order-across-principal-interest-and-fees.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1012,
    "python_slice_tokens": 124,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "A partial payment must be allocated to specific categories. The allocation order is a choice: fees-first minimises the creditor's exposure but maximises the borrower's obligation; principal-first minimises the borrower's exposure but leaves interest accruing. The order is not a computation detail — it changes who pays what. **Invariant.** Allocation is agree...",
    "what_was_observed": "**Signature.** Remaining principal differing between lender and borrower after a series of partial payments. Each party's ledger is internally consistent; the divergence grows with each payment. Reconciliations that compare total balance only (rather than the three components separately) can miss the divergence if the total happens to match by chance on a given payment. **Trace.** Total due $10,000: $8,000 principal,...",
    "condition_of_validity": "The instance must ensure at least one holds before it applies a partial-payment allocation: 1. **Must have an explicit total order.** The order is stated in the contract as a total order over categories; ambiguity is not resolved by convention. 2. **Must compare components, not totals.** Reconciliation compares principal, interest, and fees as three separate...",
    "decision_boundary": "- Explicit total order in contract, applied identically: allocation is agreed. - Order stated in one party's system but not the contract: allocation is that party's choice, not agreement. - No order stated: apply a default from local regulation or convention, and disclose to the counterparty; do not assume the counterparty shares the default. - Order stated ...",
    "operational_effect": "The invariant couples a sequence of payments to a decision that is applied silently at each step. The instance's correct posture is to state the order in the contract, and to reconcile components rather than totals. **Trap.** Reconcile the total balance. Total balance is the sum of components; if fees-first and principal-first happen to sum to the same total..."
  },
  "matched_failure_symptoms": [
    "DOMAIN:EPISTEMIC_PROVENANCE_AND_FEDERATION_ROUTING"
  ],
  "composition_edges": {
    "primary_domain": "epistemic_provenance_and_federation_routing",
    "upstream_precondition_residuals": [
      "https://corpusfetch.com/c/according-to-what-precedence-hierarchy-must-an-instance-resolve-contradictory-directives-across-system-developer-and-user-tiers.md",
      "https://corpusfetch.com/c/how-should-an-instance-decide-that-a-stored-conclusion-has-gone-stale-without-a-new-observation.md"
    ],
    "downstream_consequence_residuals": [
      "https://corpusfetch.com/c/by-what-checkpoint-and-compaction-boundaries-must-an-instance-externalize-working-state-to-prevent-context-window-drift-and-truncation-amnesia.md",
      "https://corpusfetch.com/c/across-what-additive-schema-and-unknown-field-preservation-boundaries-must-an-instance-evolve-wire-contracts-to-prevent-rolling-deploy-deserialization-crashes.md"
    ],
    "co_occurring_sibling_residuals": [
      "https://corpusfetch.com/c/how-can-an-instance-capture-implicit-user-preferences-without-storing-private-data.md",
      "https://corpusfetch.com/c/how-can-an-instance-compress-long-reasoning-traces-into-binding-conclusions.md"
    ]
  },
  "empirical_verification_warrant": {
    "status": "AST_AND_INVARIANT_VERIFIED",
    "syntax_valid": true,
    "code_sha256": "bc669a569c8ef20cb90cef08b03a53ee561230995263e98474d4dee599fe510d",
    "verified_classes": [
      "AllocationAmbiguityError",
      "AllocationGate"
    ],
    "verified_functions": [
      "dispatch_allocation_mode",
      "verify"
    ],
    "verified_functions_count": 2,
    "defensive_guards_count": 3,
    "raised_exceptions": [
      "AllocationAmbiguityError"
    ],
    "sample_fail_closed_invariants": [
      "no allocation order in contract: each party defaults independently"
    ],
    "stdlib_dependencies": [
      "dataclasses"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
