// Hybrid-Chain offline teaching model: decentralized-neobanking // Fictional fields/states; NOT an API client, authorization system or production implementation. // No network calls, credentials, payments or file writes. Review before running. // Requires Node.js 22+. Run: node --test decentralized-neobanking.mjs import test from 'node:test'; import assert from 'node:assert/strict'; export function inspect(record) { if (record.callerTenant !== record.recordTenant) return 'DENY_TENANT'; if (!record.providerApproved) return 'WAIT_FOR_PROVIDER'; if (!record.operationEnabled) return 'SERVICE_UNAVAILABLE'; return 'READY_FOR_SERVICE_REVIEW'; } const baseline = { "callerTenant": "DEMO-A", "recordTenant": "DEMO-A", "providerApproved": true, "operationEnabled": true }; const cases = [ { "name": "scoped service review", "patch": {}, "expected": "READY_FOR_SERVICE_REVIEW" }, { "name": "other tenant", "patch": { "recordTenant": "DEMO-B" }, "expected": "DENY_TENANT" }, { "name": "provider pending", "patch": { "providerApproved": false }, "expected": "WAIT_FOR_PROVIDER" }, { "name": "operation not enabled", "patch": { "operationEnabled": false }, "expected": "SERVICE_UNAVAILABLE" } ]; for (const example of cases) { test(example.name, () => { assert.equal(inspect({...baseline, ...example.patch}), example.expected); }); }