proto.computer / section 2 refreshed

finexa — from operator story to source-composed world

yes, these needed an update. the new companion docs made the missing boundary mechanics explicit: source composing, admitted datum vs raw signal, proto as membrane/orb, and the authored core + derived structure split in the build world. this pass pushes those ideas all the way through finexa instead of leaving them as a hand-wave.

source → binding → port → face → gate → switch → chamber → proto bay admitted d is not raw packet proto = membrane + keyspace + bind/birth rules authored: face/anchor/track/dock/screen · derived: gate/switch/chamber/bridge

section 1 / core abstractions · abstraction matrix v2 · build world grammar v2 · world spec

2.0 refresh axiom

the old finexa mapping was mostly right at the business layer, but it still flattened the boundary too early. a qr, a webhook body, a sheet row, or a trello move is not yet business truth. first it has to be caught by some concrete binding, admitted at a face, and then either bind to an existing resident epi or birth a new one at a proto orb.

raw signal ≠ d
d = admitted local datum after source composition + admit policy
inbound: source → binding → port → face → gate → switch → chamber → proto orb
outbound: obligation → dock → chamber → port → binding → target system

that is the crucial cleanup. it lets “implementing an api” become legible as a composed bay instead of a magical invisible tunnel.

2.1 plain-business restatement

finexa finances motorcycle purchases. most demand begins on partner sales floors through qr-triggered whatsapp entry. applicants and sales assistants both participate in origination. requests move through interview, document collection, bureau review, risk decision, activation, servicing, payment reconciliation, and investor funding/reporting across a mess of current tools.

same story as before. the difference now is that we keep the semantic boundary visible instead of leaping straight from “message arrived” to “record exists”.

2.2 finexa cross-section

outside sources binding racks + ports faces + admission proto bays / orbs tracks, docks, screens partner qr surface whatsapp webhook google form docs / bureau trello operator move bank sheet row croop api snapshot onedrive funding row mattermost / reports qr mapping + parser meta auth + json parser google auth + form parser file parser + mime checks board watch + matcher sheet auth + row parser api auth + drift policy excel parser + row matcher qr_entry whatsapp_chat whatsapp_flow google_form_interview docs_upload / bureau trello_pipeline bank_sheet croop_api onedrive_excel origination risk_review activation servicing investor_funding send_whatsapp trello_sync payment_sync pipeline_board risk_queue / lenses port: http_in / file_in / human_desk gate → switch → chamber d begins only after admission gate switch commit chamber credit_request bind or birth credit activation only payment party docs assessment investor pos orb = membrane + keyspace + rules
source composition lives on the left. the semantic boundary is at the face/gate/switch/chamber zone. the orb is where local residency starts: not every caught signal becomes an epi, and not every epi is born there; some signals only bind to an existing resident.

2.3 source composition matrix

raw source binding + port face admitted datum d what must match before d exists main proto bay crossed
partner qr surface or starter whatsapp message qr mapping or meta webhook → http_in_shortlink / http_in_whatsapp qr_entry or whatsapp_chat origination_entry known qr context, or starter template/token that maps to an origination rule credit_request bind/birth bay, with partner/store/brand context
whatsapp flow completion event meta webhook → http_in_whatsapp whatsapp_flow flow_submission configured flow id, valid signature, minimally complete fields party and credit_request
google form submission google auth → http_in_google_forms google_form_interview interview_answers known interview ref or resolvable request ref interview and usually credit_request
docs upload or bureau report file parser / bureau api → file_in_docs / http_in_bureau docs_upload or credit_bureau dossier_input mime/schema valid, request ref/phone/credit ref resolvable, file not duplicate document_packet and credit_assessment
trello move, label, comment, or future fibo action trello watch → http_in_trello trello_pipeline risk_decision or activation_command watched board/list, canonical decision mapping, actor/ref present credit_request, credit_assessment, maybe credit
bank consolidation row sheet auth + row parser → http_in_bank_sheet bank_sheet payment_candidate amount/date/bank ref present and credit can be resolved payment bind/birth via credit
croop api snapshot or manual desk observation croop auth → http_in_croop / human_desk_in_croop croop_api or croop_web_desk balance_observation known croop id or credit id; snapshot freshness within policy credit observation bay; may only refresh readout, not birth credit
onedrive funding row workbook parser → file_in_onedrive_excel onedrive_excel funding_allocation investor ref, credit ref, amount, and settlement window valid investor_position via party and credit

the nice bit is that this makes “implement whatsapp” or “consume croop” no longer metaphysical. it is just a declared source composition plus admit rules and orb rules.

2.4 canonical orbs

party orb

residents: applicant, sales_assistant, operator, risk_analyst, investor.

bind sockets: party_id, phone, whatsapp number, government id, employee code.

birth: on flow submission, manual ops creation, or funding ingestion when no match exists.

credit_request orb

the canonical origination resident. this is where most partner-floor signals actually try to mean something.

bind sockets: request_id, qr_context_id, flow_token, trello_card_id, applicant phone.

birth: allowed from origination.entry.from_partner_qr and origination.request.submit; duplicate suppression matters.

dossier cluster

interview, document_packet, and credit_assessment are separate orbs when history, completeness, or review state matter.

good move for finexa afaict, bc the underwriting trail is not fluff.

credit orb

active loan resident. birth must be explicit at activation, NEVER because some trello card got archived.

bind sockets: credit_id, fibo id, croop id.

payment orb

resident for reconciled payment fact.

birth: from servicing.payment.reconcile after the candidate binds to a credit.

investor_position orb

passive-side funding resident linking investor parties to active credits.

birth/update: from allocation and settlement rows, not from report exports.

this is why the orb metaphor works: each one is a little bay system with lookup sockets, birth law, relation spokes, and track sockets. same grammar, smaller scale.

2.5 canonical motion

origination
  triggered → flow_sent → form_started → submitted → card_created

interview
  scheduled → completed

document_collection
  requested → partial → complete

risk_review
  pending_bureau → analyst_review → approved | rejected | conditional

activation
  approved → exported_to_credits_sheet → synced_to_fibo → active

servicing
  active → payment_due → payment_posted → reconciled | late | closed

investor_funding
  available → allocated → settled → reported

trello’s list choreography is still just one projection of this law. same for gsheets mirrors. keep the business motion canonical and let the tooling paraphrase it.

d → ρ → ι → ℓ → ω → ψ

2.6 corrected route families

raw signal admitted datum ρ route orb crossing likely proposals / obligations
shortlink hit or starter whatsapp message origination_entry origination.entry.from_partner_qr bind open credit_request by qr context or phone; else birth one set partner/store/brand context; mark triggered; emit send_whatsapp_flow
whatsapp flow submission flow_submission origination.request.submit bind/birth party; bind/birth credit_request upsert applicant/request facts; mark submitted; emit create_or_move_trello_card and maybe write_request_row
schedule choice in flow flow_submission origination.interview.schedule bind or birth interview under credit_request reserve slot; mark scheduled; maybe emit confirmation message
google form answers interview_answers origination.interview.complete bind interview; update request dossier context mark completed; maybe emit request_documents
doc file or bureau report dossier_input risk.dossier.attach bind/birth document_packet; update credit_assessment append dossier facts; mark partial/complete; refresh risk queue
operator decision event risk_decision risk.review.decide bind credit_request + credit_assessment approve/reject/condition; emit notifications; maybe queue activation
explicit activation command activation_command activation.credit.create birth credit from approved request create active credit; emit write_credit_row, sync_to_fibo, maybe sync_to_croop
bank consolidation row payment_candidate servicing.payment.reconcile bind credit; bind/birth payment post payment; refresh delinquency readouts; emit sheet/fibo sync
croop snapshot balance_observation servicing.balance.observe bind credit; usually no birth refresh balance lens or raise divergence beacon if the authority disagrees
funding allocation row funding_allocation funding.allocate bind investor party and credit; bind/birth investor_position update exposure; emit settlement/report obligations

2.7 build-world mapping v2

west / shell + ingress faces
  qr_entry, whatsapp_chat, whatsapp_flow, google_form_interview,
  docs_upload, credit_bureau, trello_pipeline,
  bank_sheet, croop_api, croop_web_desk, onedrive_excel

center / orb field
  party, partner_group, brand, store, vehicle_offer,
  credit_request, interview, document_packet,
  credit_assessment, credit, payment, investor_position

north / lifecycle rails
  origination, interview, document_collection,
  risk_review, activation, servicing, investor_funding

south / docks
  send_whatsapp_flow, create_or_move_trello_card, request_documents,
  notify_mattermost, write_credit_row, write_payment_row,
  sync_to_fibo, sync_to_croop, export_report

east / screens
  pipeline_board, dossier_lens, risk_queue,
  active_credits_lens, payment_reconciliation_lens,
  investor_exposure_lens, partner_performance_lens

keep the center dominated by the request → credit spine, with smaller context orbs around it. otherwise the world turns into an equal-weight zoo and loses the business plot.

2.8 derived machinery finexa should show

gates
  qr_entry_gate
  whatsapp_flow_gate
  dossier_file_gate
  payment_row_gate
  croop_observation_gate

switches
  whatsapp_classifier_switch
  trello_decision_switch
  payment_match_switch
  croop_drift_switch

chambers
  origination_commit_chamber
  interview_commit_chamber
  risk_commit_chamber
  activation_commit_chamber
  payment_reconciliation_chamber
  funding_commit_chamber

bridges
  request ↔ applicant
  request ↔ sales_assistant
  request ↔ partner_group / brand / store / offer
  request ↔ interview / dossier / assessment
  request ↔ credit
  credit ↔ payment
  credit ↔ investor_position

basic build mode can still let the user mostly place faces, orbs, tracks, docks, and screens. the compiler should derive most of the gates, switches, and chambers automatically, then expose them when you zoom in.

2.9 route explorer

west / faces center / orbs north / tracks east / screens south / docks qr_entry whatsapp_flow trello_pipeline bank_sheet croop_api onedrive_excel origination risk_review activation servicing investor_funding party applicant / sa credit_request bind or birth docs assessment credit activation only payment investor position pipeline_board risk_queue active_lens investor_lens send_whatsapp trello_sync credit_sync payment_sync
same world, different highlighted causality. this is intentionally small and a bit tycoonish: faces west, orbs center, tracks north, docks south, screens east.

entry

raw signal: shortlink hit or starter message.

d: origination_entry, only after the qr/token matcher says “this counts here”.

orb crossing: bind an open credit_request by qr context/phone, else birth one.

likely outcome: set partner context, start origination, emit send_whatsapp_flow, later mirror to board.

risk

raw signal: trello move, label, comment, or a later fibo action.

d: risk_decision, not “trello card state” as ontology.

orb crossing: bind credit_request + credit_assessment; maybe queue activation.

likely outcome: commit approve/reject/conditional facts, emit notifications, open activation chamber when lawful.

payment

raw signal: bank consolidation row.

d: payment_candidate, after row parse and match policy.

orb crossing: bind the candidate to a credit; bind/birth a payment.

likely outcome: commit payment fact, refresh delinquency/balance readouts, emit sync obligations downstream.

funding

raw signal: onedrive allocation or settlement row.

d: funding_allocation.

orb crossing: bind investor party and active credit; bind/birth investor_position.

likely outcome: exposure updates, settlement/report obligations, investor lens refresh.

entry risk payment funding

2.10 what the yaml now says that it did not before

sources

outside origins are first-class now: qr surfaces, webhooks, forms, sheets, croop, trello, workbooks.

bindings + ports

api/file/human ingress is decomposed into auth, parser, matcher, and typed ports.

datum types

d is modeled explicitly as admitted local material, not as whatever packet happened to arrive.

orb rules

each proto now carries lookup sockets, bind rules, and birth rules, so the orb metaphor cashes out formally.

route corrections

activation births credit explicitly; archive alone no longer does occult ontology.

build split

authored core and derived gates/switches/chambers are both present.

authority hooks

id precedence and unresolved balance authority are called out instead of smuggled in by vendor screens.

2.11 open decisions still worth locking

authority + identity

  • who is authoritative for active balances? compiled world, fibo, or croop.
  • what is the bind precedence? request id vs qr context vs phone+store window; credit id vs fibo id vs croop id.
  • is gsheets main ingress or just a mirror? rn it sounds like both, which is semantically perilous.

modeling + control

  • how separate should dossier orbs be? interview, document packet, and assessment probably deserve their own history.
  • where should risk decisions truly enter? trello today, fibo desk tomorrow, maybe both under one semantic face.
  • how do support chats differ from origination chats? same source, different admission and switch rules.

2.12 one-sentence version

finexa is a source-composed credit-ops world where foreign signals enter through configured faces, become admitted datums only after matching local policy, cross glowing proto orbs by bind-or-birth rules, and then move through origination, risk, activation, servicing, and funding as a single observable machine.