This page records the source-truth architecture for Lucia’s payment truth foundation after the Stripe sandbox, durable ledger, LIEA attention, and Admin rendering work completed in Development.
Canon Doctrine
Payment truth must preserve Lucia’s broader truth-state doctrine:
Canon records source truth.
Runtime code proves live behavior.
Eval Labs proves behavior quality.
No fake completion.
No false capability claims.
No production or staging claim unless explicitly proven.
This page records Development/live-dev truth. It does not claim production readiness, staging promotion, a full billing system, durable policy persistence, or Admin payment writes.
Purpose
Lucia payment truth separates:
what should be owed
what actually moved
what is durable
what deserves attention
what Admin renders
The architecture chain is:
Property policy truthcalendar/booking temporal truthStripe movement truthLucia Core durable ledgerLIEA financial judgmentAdmin payment truth rendering
Definitions:
Property Settings / Payment Policy = what should be due
Calendar/booking temporal truth = when obligation timing matters
Stripe = what the guest actually attempted or paid
Lucia Core Supabase durable ledger = restart-safe Stripe financial record/event storage
LIEA = what deserves attention now
Admin = read-only rendering surface for Engine truth
Current boundary:
Signal Stream is not yet wired to LIEA.
Admin-local Signal Stream scoring remains a bridge.
Implemented In Development
Engine Development:
Branch: dev
Live dev API: https://api-dev.hellolucia.ai
Visible live-dev Engine commit tag: 88a09a1
Implemented:
Stripe sandbox checkout foundation
Stripe payment record index
Durable Stripe financial ledger
Stripe financial record/event storage
Stripe financial truth wired into attention suppression
Engine service-role-only Supabase ledger access
Preserved Engine route contracts:
GET /admin/stripe/payment-status
GET /admin/stripe/payment-status/:bookingId
POST /admin/stripe/create-checkout-session
POST /webhooks/stripe
Engine Stripe ledger storage modes:
Admin Development:
Branch: dev
Live dev UI: https://dev.hellolucia.ai
Visible live-dev Admin commit tag: 7c9683a
Implemented:
/payments renders global durable Engine payment truth
/bookings/:bookingId renders a read-only Payment Truth card
/property renders Admin-only read-only/draft-safe Payment Policy Baseline v0
/ops/actions can open payment reconciliation context without mutating payment state
Admin boundaries:
Admin does not store payment truth.
Admin does not talk directly to Supabase.
Admin renders payment truth returned by Engine only.
Admin has no payment write controls.
Admin does not create, collect, refund, or mark payments paid.
Admin has no charge, refund, mark-paid, or create-checkout operator UI yet.
The Engine payment creation route exists, but Admin UI has not exposed it as an operator control.
Lucia Core Supabase Truth
Configured:
Project name: lucia-core-dev
Project ref: jgnxomyzqotnqsmlxlsz
Purpose: Lucia Core development durable ledger
Eval Labs Supabase: separate and untouched
Durable ledger tables:
stripe_financial_records
stripe_financial_events
Security posture:
RLS enabled on both durable ledger tables
No anon read policies
No authenticated-user read policies
Engine uses service-role-only access
Admin never talks directly to Supabase
Configured Render Engine Development environment:
SUPABASE_URL
SUPABASE_SERVICE_ROLE_KEY
LUCIA_STRIPE_FINANCIAL_LEDGER_STORE=dual
LUCIA_STRIPE_LEDGER_DURABLE_REQUIRED=true
Status:
Implemented: durable Stripe movement record/event storage
Configured: Engine dev service-role-only durable ledger access
Tested: durable payment truth survived Engine restart
Deferred: durable Engine-owned property payment policy contract
Not yet implemented: Admin policy persistence or payment write UI
Tested Live-Dev Proof
Harper Quinn proof:
Booking: Harper Quinn #29110012
Stripe sandbox checkout: completed
Amount: $500.00 USD
Payment purpose: booking_deposit
Durable record written: yes
Durable event written: yes
Last Stripe event: checkout.session.completed
Engine restarted via Render after payment completion
GET /admin/stripe/payment-status/29110012 returned known=true
GET /admin/stripe/payment-status/29110012 returned financialTruthState=confirmed_paid
GET /admin/stripe/payment-status included Harper Quinn after restart
/admin/operational-attention suppressed Harper Quinn as a payment blocker
/admin/operational-attention kept only non-payment arrival readiness for Harper Quinn
Admin live-dev proof:
https://dev.hellolucia.ai/payments loaded successfully
Page labeled Durable Ledger
Source truth banner confirmed records are read from Engine durable Stripe financial ledger
Read-only / Engine source / no writes badges visible
Payment summary: total records 1, confirmed paid 1, pending/review 0, failed/disputed/refunded 0
Harper Quinn #29110012 visible with Settled, Paid, Confirmed Paid
Amount paid $500.00, amount due $500.00, balance due $0.00, currency USD
No payment action controls visible
https://dev.hellolucia.ai/bookings/29110012 loaded successfully
Payment Truth section visible
Engine-backed Harper Quinn payment record visible
Settled, Paid, Confirmed Paid visible
Amount paid $500.00, amount due $500.00, balance due $0.00, currency USD
Booking detail context still rendered around the payment card
https://dev.hellolucia.ai/ops/actions?intent=payment_reconciliation&booking_id=29110012&focus=payment_reconciliation loaded successfully
DAW opened a Lucia Payment Action for Harper Quinn #29110012
Header showed Payment Paid
Lucia side chat identified payment as paid and arrival details as the remaining issue
Best next move: Review Harper Quinn's payment record
DAW stated payment updates are saved as booking notes and do not change payment status
No mutation, charge, refund, or mark-paid control visible
https://dev.hellolucia.ai/property loaded successfully
Payment Policy Baseline section visible
Section labeled POLICY DRAFT / NO PERSISTENCE
Warning confirmed Admin is not saving this to Engine, Supabase, Signal Stream, or LIEA
No save, edit, or payment action controls visible
Property Payment Policy Baseline visible fields:
Default currency
Deposit required
Deposit amount or percent
Final balance due timing
Security deposit policy
Accepted payment methods
Concierge / extra charges separate
Operator payment verification owner
What counts as paid
What counts as pending review
What counts as overdue
Notes / policy caveats
LIEA Attention Behavior
Implemented:
LIEA receives Stripe financial truth sufficient to suppress confirmed-paid payment blockers.
Payment attention can distinguish confirmed financial truth from unresolved operational issues.
Confirmed-paid Harper Quinn no longer remains a payment blocker after durable payment proof.
Arrival readiness remains an attention candidate when arrival details are still missing.
Deferred:
LIEA does not yet consume durable property payment policy truth.
Signal Stream is not yet wired to LIEA.
Full policy-aware due/overdue/partial/pending judgment is not implemented.
Deposit-paid but final-balance-not-yet-due judgment still needs policy + temporal truth.
Final-balance-overdue judgment still needs Engine-owned policy + temporal truth.
Property Payment Policy v0
Property Payment Policy v0 is visible in Admin as a draft-safe baseline only.
Implemented:
Admin /property displays a read-only Payment Policy Baseline section.
The section exposes the shape of the policy Lucia will eventually need.
The UI explicitly warns that there is no persistence to Engine, Supabase, Signal Stream, or LIEA.
Not yet implemented:
Durable Engine-owned property payment policy contract
Admin policy editing
Admin policy persistence
LIEA policy-aware payment due/overdue judgment
Signal Stream -> LIEA policy wiring
Important Commits
Engine:
e8427ec39b9e2132ec423a58545af4d3d3a4fd1c - feat: add stripe sandbox payment foundation
eea713127cb47db0ea99294f52ffd9378d01fc25 - feat: wire stripe financial truth into attention
35cee2415bb020a59c52a5700041ce6a509f8c22 - fix: harden financial truth wording
162f7d9a6844d8f60e9744b5a7eb7795bc2ed799 - feat: add stripe payment records index
88a09a1cfe37bdfcaf44723821a86155a849c63c - feat: add durable stripe financial ledger
Admin:
a7367ace42860c620e260fd20d18713545447f57 - feat: add read-only payments page
c32a97056b74b8aaf82a4c8d31959e60a02d2351 - feat: add booking payment truth card
7c9683a37c89dc95a2c673a7603825d3c82fb77b - feat: add property payment policy baseline
Deferred / Not Yet Implemented
Deferred:
Durable Engine-owned property payment policy contract
Admin policy editing and persistence
Payment creation UI
Refund UI
Charge UI
Mark-paid UI
Signal Stream -> LIEA wiring
Full policy-aware due/overdue/partial/pending judgment
Eval coverage for policy-driven financial attention
Not claimed:
production readiness
staging promotion
durable property payment policy truth
Signal Stream LIEA wiring
Admin payment writes
Eval Labs Supabase usage
full billing system
Next Target
The next architecture target is:
Engine-owned property payment policy contract
That contract should make policy truth durable before LIEA is asked to reason about deposit timing, final balance due dates, overdue state, partial payments, or property-specific verification rules.
See Also