{
  "schema": "pleasantworks-specs-capabilities/v1",
  "as_of": "2026-10-12",
  "package_version": "3.1.11",
  "source_archive_sha256": "8b2652182bb9bef38442fbcb5f8dde8d0dd7748e86c1534c6e21c2527b67dd57",
  "coverage_statement": "Selected end-to-end scenarios, not exhaustive product or command coverage.",
  "counts": {
    "effective_native_commands": 189,
    "workpapers": 15,
    "preparation_packs": 5,
    "registered_form_ids": 171,
    "mapped_year_subsets": 29,
    "source_files": 1698,
    "python_modules": 305
  },
  "capabilities": [
    {
      "id": "native-books",
      "group": "Accounting",
      "name": "Invoices, bills and recorded payments",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Draft obligations, independent posting, settlements, receivables/payables and exact-cent reports.",
      "limit": "Records completed financial events; does not send money or invoices.",
      "source": [
        "native_books/ledger.py",
        "native_books/base17.py",
        "native_books/settlement_ops.py"
      ]
    },
    {
      "id": "reconciliation",
      "group": "Accounting",
      "name": "Bank reconciliation and period close",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Import a statement, match bank movements, independently review and close/reopen periods.",
      "limit": "Supplied fictional statements and completeness assertions; no live bank feed.",
      "source": [
        "native_books/recon.py",
        "native_books/trust25.py"
      ]
    },
    {
      "id": "financial-reports",
      "group": "Accounting",
      "name": "Financial reports and ledger controls",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Trial balance, cash, AR/AP, revenue, expenses, profit and subledger consistency checks.",
      "limit": "Reports reflect recorded entries; checks do not certify that every business fact was supplied.",
      "source": [
        "native_books/base17.py"
      ]
    },
    {
      "id": "purchasing",
      "group": "Inventory",
      "name": "Purchasing and supplier matching",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Reviewed purchase orders, partial receipts, matched supplier bills, variance and supplier returns.",
      "limit": "Purchase/payment records do not place orders or instruct a bank.",
      "source": [
        "native_books/purchasing31.py"
      ]
    },
    {
      "id": "stock",
      "group": "Inventory",
      "name": "FIFO stock, reservations and locations",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Receipts, reservations, material issues, customer returns, supplier returns, counts and location balances.",
      "limit": "Single-entity USD accrual profile; quantities support up to three decimal places. Separate prior fractional tests extend the fixed demo fixture.",
      "source": [
        "native_books/inventory31.py"
      ]
    },
    {
      "id": "margins",
      "group": "Inventory",
      "name": "Job and product costs and margins",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Material assignments, job costs, revenue attribution and job/product margin reports.",
      "limit": "The selected run demonstrates one job fixture; source supports broader budgets/completeness paths.",
      "source": [
        "native_books/jobcost31.py"
      ]
    },
    {
      "id": "tax-bridge",
      "group": "Tax",
      "name": "Reviewed service-business tax bridge",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Closed books, supplied timing/classification adjustments, distinct reviewer and internal specialist handoff.",
      "limit": "US federal service sole proprietor or qualifying SMLLC; internal 2025/2026 pack, no final 2026 form mapping asserted. Inventory, employees, foreign activity, assets, home office, carryforwards, method changes and special positions require specialist handling.",
      "source": [
        "native_books/assurance27.py",
        "native_books/operations.py"
      ]
    },
    {
      "id": "workpapers",
      "group": "Tax",
      "name": "15 accounting and tax workpapers",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Source/ledger-bound deterministic schedules, independent review/export and three recognition draft bridges. All 15 kinds now have individual source/review/export demonstrations in Demo library.",
      "limit": "The main scenario does not exercise all 15 schedules; recognition review does not post a journal.",
      "source": [
        "native_books/workpapers314.py",
        "native_books/accounting314.py"
      ],
      "demo_library": "15 workpapers"
    },
    {
      "id": "form-packs",
      "group": "Tax",
      "name": "5 form-preparation packs and form catalog",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Internal carryforward, COGS, contractor NEC, payroll reconciliation and Schedule C outputs. All five packs now have individual native source/review/export demonstrations; chosen source years follow mapped fields.",
      "limit": "171 registered identifiers and 29 mapped-year subsets describe a catalog, not 171 complete tax calculators or filing support.",
      "source": [
        "native_books/forms315.py",
        "native_books/form_packs315.py",
        "native_books/form_registry315.py"
      ],
      "demo_library": "5 form packs"
    },
    {
      "id": "return-filing",
      "group": "Tax",
      "name": "Complete tax return and government filing",
      "implementation": "unavailable",
      "evidence": "guard",
      "behavior": "Filing submission is explicitly refused; current outputs are internal workpapers.",
      "limit": "No complete tax-liability engine, official return generation or tax-authority transmission. Outside the agreed workpaper/handoff scope.",
      "source": [
        "native_books/operations.py"
      ],
      "demo_library": "filing-guard"
    },
    {
      "id": "text-intake",
      "group": "Documents",
      "name": "Resumable upload, AV and text extraction",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Separate text-intake run: upload replay, quarantine, real ClamAV, native worker extraction, reviewed bill and workpaper.",
      "limit": "Requires a configured real scanner. Document instructions remain source content and grant no posting authority.",
      "source": [
        "native_books/uploads26.py",
        "controls/vault.py",
        "native_books/processing.py",
        "native_books/intake.py"
      ]
    },
    {
      "id": "pdf-ocr",
      "group": "Documents",
      "name": "Isolated PDF and image OCR intake",
      "implementation": "implemented",
      "evidence": "blocked",
      "behavior": "Pinned no-network PDF/OCR adapters and reviewed evidence contracts exist in the repository.",
      "limit": "Current full HTTP pipeline is blocked: isolated VM unpack failed as free disk fell to 74 MiB. Earlier PDF/OCR component benchmarks are separate historical evidence; current real PDF/image probes wait for missing adapters.",
      "source": [
        "controls/vault.py",
        "native_books/intake.py"
      ]
    },
    {
      "id": "source-review",
      "group": "Documents",
      "name": "Reviewed source packets and corrections",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Retained original, literal fields or reviewed transcription, version-bound packets and stale replacement paths.",
      "limit": "Source extraction alone does not approve accounting classifications or final calculations.",
      "source": [
        "native_books/documents314.py",
        "native_books/accounting314.py",
        "native_books/workflow318.py"
      ],
      "demo_library": "source-correction"
    },
    {
      "id": "practice",
      "group": "Firm work",
      "name": "Monthly plans, teams and tracked handoff",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Practice templates, plans, jobs, teams, questions, readiness and recorded handoff.",
      "limit": "Broader repository workflows; no real recurring client delivery or recipient acknowledgment demonstrated here.",
      "source": [
        "native_books/practice29.py",
        "ops30/recurrence.py"
      ],
      "demo_library": "practice"
    },
    {
      "id": "workflow",
      "group": "Firm work",
      "name": "Tracked requirements, reconciliation and specialists",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Defined requirements, assignments, completion, correction chains and specialist-report bindings.",
      "limit": "Task completion cannot replace journal posting, period close or professional approval.",
      "source": [
        "native_books/workflow317.py",
        "native_books/workflow318.py"
      ],
      "demo_library": "tracked-work"
    },
    {
      "id": "subledgers",
      "group": "Accounting",
      "name": "Processor funds, credits, FX and payroll entries",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Bounded pending/reserve/payout/return, credit, FX and payroll-accounting paths.",
      "limit": "Not exercised by the selected core run; no payroll execution, withholding completeness or processor integration.",
      "source": [
        "native_books/funds.py",
        "native_books/credits.py",
        "native_books/domains.py"
      ],
      "demo_library": "settlement"
    },
    {
      "id": "access",
      "group": "Platform",
      "name": "Book grants and reviewer separation",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Explicit book capabilities, roles, expiry, CSRF, host/origin checks and stale-source guards.",
      "limit": "Demo actor selection uses fictional principals. Repository password/TOTP identity was tested separately; the visible demo does not perform real MFA.",
      "source": [
        "native_books/access25.py",
        "ops30/identity.py",
        "ops30/app.py"
      ],
      "demo_library": "access-guards"
    },
    {
      "id": "recovery",
      "group": "Platform",
      "name": "Exports, encrypted backup and recovery",
      "implementation": "implemented",
      "evidence": "demo",
      "behavior": "Core book ZIP exports verify in the demo; stopped-state encrypted backup/restore passes native report parity.",
      "limit": "File-state backup covers SQLite; PostgreSQL also requires database recovery. Password/key custody and deployment recovery remain operator acceptance work.",
      "source": [
        "native_books/portability25.py",
        "controls/recovery.py",
        "ops30/recovery.py"
      ],
      "demo_library": "export-recovery"
    },
    {
      "id": "postgres",
      "group": "Platform",
      "name": "PostgreSQL runtime and tenant RLS",
      "implementation": "implemented",
      "evidence": "separate",
      "behavior": "Complete selected core scenario runs on PostgreSQL, with verified-TLS browser reads and reviewer mutations.",
      "limit": "Separate local rehearsal; cluster stopped after testing. This URL runs SQLite. Full PostgreSQL intake worker/load profile remains open.",
      "source": [
        "foundation28/pgstore.py",
        "foundation28/migration.py"
      ]
    },
    {
      "id": "statistics",
      "group": "Platform",
      "name": "Persistent demo statistics and session rotation",
      "implementation": "companion",
      "evidence": "demo",
      "behavior": "Run/check history, actor commands, expected guard refusals, other refusals, errors, timings and remaining session capacity.",
      "limit": "30 core runs per session. Full sessions preserve history/downloads on restart; --new-session starts another without deleting the old one. Historical telemetry stays unclassified.",
      "source": [
        "companion/server.py",
        "companion/launcher.py"
      ]
    },
    {
      "id": "jev",
      "group": "Optional",
      "name": "Jev advisory and tracked provider work",
      "implementation": "implemented",
      "evidence": "disabled",
      "behavior": "Source contains bounded requests, exact disclosure approval, cost/usage and provider work controls. Demo library exercises native built-in synthetic advisory/review only; zero live provider calls.",
      "limit": "Not connected or enabled in this demo. Named fake-provider tests do not establish live provider acceptance.",
      "source": [
        "native_books/jev316.py",
        "jev316/provider.py"
      ],
      "demo_library": "jev-synthetic"
    },
    {
      "id": "research",
      "group": "Optional",
      "name": "Official reference research",
      "implementation": "implemented",
      "evidence": "source",
      "behavior": "Separate public-source reference and knowledge tooling.",
      "limit": "No research/provider run here; reference retrieval does not activate a tax rule or authorize disclosure of client records.",
      "source": [
        "foundation28/official.py",
        "foundation28/knowledge.py"
      ]
    },
    {
      "id": "admission",
      "group": "Service",
      "name": "Genuine client onboarding and commercial delivery",
      "implementation": "external",
      "evidence": "outside",
      "behavior": "Commercial product, signed scope/fees, billing, support and delivery must be connected to the exact native book.",
      "limit": "Genuine accounting admission and recipient acknowledgment remain incomplete; the source import and demo do not create an active service.",
      "source": [
        "commercial/native admission gap E84"
      ]
    },
    {
      "id": "deployment",
      "group": "Service",
      "name": "Production deployment and independent acceptance",
      "implementation": "external",
      "evidence": "outside",
      "behavior": "Target identity, host/network, key/object custody, retention, incident response and professional/security review.",
      "limit": "No production or independent accountant/security acceptance has been granted. No target deployment occurs from this page.",
      "source": [
        "ops31/verification.py",
        "deploy/foundation28/topology.json"
      ],
      "demo_library": "deployment-guard"
    }
  ],
  "workpapers": [
    {
      "id": "bank_reconciliation",
      "output": "Statement/reconciliation support",
      "limit": "No automatic matching of arbitrary bank layouts."
    },
    {
      "id": "close",
      "output": "Close readiness checklist",
      "limit": "Does not itself lock or reopen a period."
    },
    {
      "id": "book_tax",
      "output": "Permanent/temporary adjustment bridge",
      "limit": "Adjusted book profit is not final taxable income or tax due."
    },
    {
      "id": "sales_tax",
      "output": "Sales-tax liability reconciliation",
      "limit": "No nationwide nexus, rate, taxability or transmission engine."
    },
    {
      "id": "contractor_1099",
      "output": "NEC payment classification/threshold",
      "limit": "No TIN verification, complete MISC support or recipient delivery."
    },
    {
      "id": "asset_register",
      "output": "Straight-line book depreciation",
      "limit": "No MACRS, elections, bonus or recapture engine."
    },
    {
      "id": "payroll_tieout",
      "output": "Gross/net and ledger tie-out",
      "limit": "No payroll execution or remittance."
    },
    {
      "id": "inventory_tax",
      "output": "Inventory book/tax COGS bridge",
      "limit": "No inventory election or eligibility determination."
    },
    {
      "id": "financial_reporting",
      "output": "Statements and trial-balance workpaper",
      "limit": "No financial-statement assurance."
    },
    {
      "id": "entity_equity",
      "output": "Equity rollforward",
      "limit": "Not shareholder/partner tax basis."
    },
    {
      "id": "prepaids",
      "output": "Monthly expense recognition",
      "limit": "Bounded monthly policy; independent posting still required."
    },
    {
      "id": "deferred_revenue",
      "output": "Monthly revenue recognition",
      "limit": "Not full revenue-standard coverage."
    },
    {
      "id": "loan_schedule",
      "output": "Fixed-rate monthly amortization",
      "limit": "No variable/irregular servicing."
    },
    {
      "id": "multi_state",
      "output": "Jurisdiction obligation register",
      "limit": "No automatic nexus/apportionment engine."
    },
    {
      "id": "tax_notice",
      "output": "Notice status and supplied due dates",
      "limit": "No automatically determined legal deadline or submitted response."
    }
  ],
  "form_packs": [
    {
      "id": "carryforward",
      "output": "Prior-year rollforward",
      "declared_years": "2025, 2026"
    },
    {
      "id": "cogs",
      "output": "Inventory \u2192 COGS workpaper",
      "declared_years": "2025, 2026"
    },
    {
      "id": "contractor_nec",
      "output": "Contractor payments \u2192 NEC workpaper",
      "declared_years": "2025, 2026"
    },
    {
      "id": "payroll_reconciliation",
      "output": "W-2 / W-3 / 941 reconciliation",
      "declared_years": "2025, 2026"
    },
    {
      "id": "schedule_c",
      "output": "Income, COGS and expense workpaper",
      "declared_years": "2025"
    }
  ],
  "profile": {
    "currency": "USD",
    "book_basis": "accrual",
    "inventory_method": "FIFO",
    "stock_quantity_decimals": 3,
    "default_backend": "encrypted SQLite",
    "native_session_hours": 1,
    "principal_hours": 24,
    "core_runs_per_session": 30,
    "upload_mib": 4,
    "chunk_kib": 256
  },
  "tax_scope": "Existing internal workpapers and specialist handoff; no complete return preparation/filing",
  "evidence": "Dated local fictional execution; not production or professional acceptance",
  "command_families": {
    "access": 3,
    "account": 1,
    "accounting": 4,
    "assurance": 4,
    "book": 3,
    "business": 4,
    "consolidation": 2,
    "credit": 3,
    "document": 2,
    "employee": 1,
    "evidence": 1,
    "filing": 3,
    "flow": 31,
    "forms": 11,
    "funds": 10,
    "fx": 3,
    "intake": 5,
    "jev": 10,
    "journal": 4,
    "lifecycle": 1,
    "liquidity": 1,
    "migration": 3,
    "onboarding": 7,
    "party": 1,
    "payroll": 2,
    "period": 3,
    "portability": 4,
    "practice": 13,
    "purchase": 8,
    "reconciliation": 2,
    "settlement": 1,
    "statement": 1,
    "stock": 15,
    "trust": 15,
    "work": 6,
    "year_close": 1
  },
  "command_catalog": [
    {
      "operation": "access.grant",
      "dispatch_roles": [
        "administrator",
        "security"
      ],
      "effective_handler": "access_grant",
      "source": "native_books/ledger.py",
      "line": 65
    },
    {
      "operation": "access.initialize",
      "dispatch_roles": [
        "administrator",
        "security"
      ],
      "effective_handler": "access_initialize",
      "source": "native_books/ledger.py",
      "line": 61
    },
    {
      "operation": "access.revoke",
      "dispatch_roles": [
        "administrator",
        "security"
      ],
      "effective_handler": "access_revoke",
      "source": "native_books/ledger.py",
      "line": 69
    },
    {
      "operation": "account.create",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "account_create",
      "source": "native_books/base17.py",
      "line": 152
    },
    {
      "operation": "accounting.workpaper.export",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "accounting_workpaper_export",
      "source": "native_books/accounting314.py",
      "line": 336
    },
    {
      "operation": "accounting.workpaper.journal.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "accounting_workpaper_journal_prepare",
      "source": "native_books/accounting314.py",
      "line": 343
    },
    {
      "operation": "accounting.workpaper.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "accounting_workpaper_prepare",
      "source": "native_books/accounting314.py",
      "line": 286
    },
    {
      "operation": "accounting.workpaper.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "accounting_workpaper_review",
      "source": "native_books/accounting314.py",
      "line": 324
    },
    {
      "operation": "assurance.tax.prepare",
      "dispatch_roles": [
        "preparer"
      ],
      "effective_handler": "assurance_tax_prepare",
      "source": "native_books/assurance27.py",
      "line": 190
    },
    {
      "operation": "assurance.tax.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "assurance_tax_review",
      "source": "native_books/assurance27.py",
      "line": 249
    },
    {
      "operation": "assurance.validation.create",
      "dispatch_roles": [
        "preparer"
      ],
      "effective_handler": "assurance_validation_create",
      "source": "native_books/assurance27.py",
      "line": 89
    },
    {
      "operation": "assurance.validation.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "assurance_validation_review",
      "source": "native_books/assurance27.py",
      "line": 120
    },
    {
      "operation": "book.create",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "book_create",
      "source": "native_books/ledger.py",
      "line": 174
    },
    {
      "operation": "book.create_related",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "book_related",
      "source": "native_books/operations.py",
      "line": 15
    },
    {
      "operation": "book.upgrade",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "book_upgrade",
      "source": "native_books/ledger.py",
      "line": 189
    },
    {
      "operation": "business.job.allocate.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "business_job_allocate_prepare",
      "source": "native_books/jobcost31.py",
      "line": 223
    },
    {
      "operation": "business.job.allocate.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "business_job_allocate_review",
      "source": "native_books/jobcost31.py",
      "line": 243
    },
    {
      "operation": "business.job.create",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "business_job_create",
      "source": "native_books/jobcost31.py",
      "line": 147
    },
    {
      "operation": "business.job.update",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "business_job_update",
      "source": "native_books/jobcost31.py",
      "line": 176
    },
    {
      "operation": "consolidation.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "consolidation_prepare",
      "source": "native_books/operations.py",
      "line": 43
    },
    {
      "operation": "consolidation.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "consolidation_review",
      "source": "native_books/onboarding.py",
      "line": 266
    },
    {
      "operation": "credit.apply.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "credit_apply",
      "source": "native_books/credits.py",
      "line": 66
    },
    {
      "operation": "credit.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "credit_prepare",
      "source": "native_books/credits.py",
      "line": 35
    },
    {
      "operation": "credit.refund.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "credit_refund",
      "source": "native_books/credits.py",
      "line": 77
    },
    {
      "operation": "document.from_work",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "document_from_work",
      "source": "native_books/operations.py",
      "line": 173
    },
    {
      "operation": "document.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "document_prepare",
      "source": "native_books/base17.py",
      "line": 241
    },
    {
      "operation": "employee.create",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "employee_create",
      "source": "native_books/domains.py",
      "line": 157
    },
    {
      "operation": "evidence.register",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "evidence_register",
      "source": "native_books/funds.py",
      "line": 11
    },
    {
      "operation": "filing.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "filing_prepare",
      "source": "native_books/operations.py",
      "line": 77
    },
    {
      "operation": "filing.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "filing_review",
      "source": "native_books/operations.py",
      "line": 88
    },
    {
      "operation": "filing.submit",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "filing_submit",
      "source": "native_books/operations.py",
      "line": 95
    },
    {
      "operation": "flow.authorization.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "flow_authorization_prepare",
      "source": "native_books/workflow317.py",
      "line": 413
    },
    {
      "operation": "flow.authorization.read",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer",
        "worker"
      ],
      "effective_handler": "flow_authorization_read",
      "source": "native_books/workflow317.py",
      "line": 423
    },
    {
      "operation": "flow.authorization.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "flow_authorization_review",
      "source": "native_books/workflow317.py",
      "line": 427
    },
    {
      "operation": "flow.authorization.revoke",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "flow_authorization_revoke",
      "source": "native_books/workflow317.py",
      "line": 435
    },
    {
      "operation": "flow.budget.configure",
      "dispatch_roles": [
        "administrator",
        "security"
      ],
      "effective_handler": "flow_budget_configure",
      "source": "native_books/workflow317.py",
      "line": 460
    },
    {
      "operation": "flow.budget.read",
      "dispatch_roles": [
        "administrator",
        "security"
      ],
      "effective_handler": "flow_budget_read",
      "source": "native_books/workflow317.py",
      "line": 487
    },
    {
      "operation": "flow.case.read",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "flow_case_read",
      "source": "native_books/workflow318.py",
      "line": 389
    },
    {
      "operation": "flow.catalog.read",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "flow_catalog_read",
      "source": "native_books/workflow317.py",
      "line": 130
    },
    {
      "operation": "flow.profile.apply",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "flow_profile_apply",
      "source": "native_books/workflow318.py",
      "line": 186
    },
    {
      "operation": "flow.profile.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "flow_profile_prepare",
      "source": "native_books/workflow317.py",
      "line": 370
    },
    {
      "operation": "flow.profile.read",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "flow_profile_read",
      "source": "native_books/workflow317.py",
      "line": 385
    },
    {
      "operation": "flow.profile.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "flow_profile_review",
      "source": "native_books/workflow317.py",
      "line": 389
    },
    {
      "operation": "flow.queue.read",
      "dispatch_roles": [
        "worker"
      ],
      "effective_handler": "flow_queue_read",
      "source": "native_books/workflow317.py",
      "line": 508
    },
    {
      "operation": "flow.queue.recover",
      "dispatch_roles": [
        "worker"
      ],
      "effective_handler": "flow_queue_recover",
      "source": "native_books/workflow317.py",
      "line": 524
    },
    {
      "operation": "flow.reconciliation.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "flow_reconciliation_prepare",
      "source": "native_books/workflow317.py",
      "line": 326
    },
    {
      "operation": "flow.reconciliation.read",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "flow_reconciliation_read",
      "source": "native_books/workflow317.py",
      "line": 332
    },
    {
      "operation": "flow.reconciliation.reopen",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "flow_reconciliation_reopen",
      "source": "native_books/workflow318.py",
      "line": 260
    },
    {
      "operation": "flow.reconciliation.resolve",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "flow_reconciliation_resolve",
      "source": "native_books/workflow317.py",
      "line": 348
    },
    {
      "operation": "flow.reconciliation.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "flow_reconciliation_review",
      "source": "native_books/workflow318.py",
      "line": 269
    },
    {
      "operation": "flow.requirement.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "flow_requirement_prepare",
      "source": "native_books/workflow318.py",
      "line": 214
    },
    {
      "operation": "flow.requirement.read",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "flow_requirement_read",
      "source": "native_books/workflow318.py",
      "line": 224
    },
    {
      "operation": "flow.requirement.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "flow_requirement_review",
      "source": "native_books/workflow318.py",
      "line": 243
    },
    {
      "operation": "flow.task.accept",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "flow_task_accept",
      "source": "native_books/workflow317.py",
      "line": 184
    },
    {
      "operation": "flow.task.assign",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "flow_task_assign",
      "source": "native_books/workflow317.py",
      "line": 226
    },
    {
      "operation": "flow.task.cancel",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "flow_task_cancel",
      "source": "native_books/workflow317.py",
      "line": 297
    },
    {
      "operation": "flow.task.read",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "flow_task_read",
      "source": "native_books/workflow317.py",
      "line": 176
    },
    {
      "operation": "flow.task.reopen",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "flow_task_reopen",
      "source": "native_books/workflow317.py",
      "line": 291
    },
    {
      "operation": "flow.task.retarget",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "flow_task_retarget",
      "source": "native_books/workflow318.py",
      "line": 305
    },
    {
      "operation": "flow.task.retarget_review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "flow_task_retarget_review",
      "source": "native_books/workflow318.py",
      "line": 320
    },
    {
      "operation": "flow.task.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "flow_task_review",
      "source": "native_books/workflow317.py",
      "line": 280
    },
    {
      "operation": "flow.task.submit",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "flow_task_submit",
      "source": "native_books/workflow317.py",
      "line": 273
    },
    {
      "operation": "forms.case.add",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "forms_case_add",
      "source": "native_books/forms315.py",
      "line": 134
    },
    {
      "operation": "forms.case.create",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "forms_case_create",
      "source": "native_books/forms315.py",
      "line": 128
    },
    {
      "operation": "forms.case.expect",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "forms_case_expect",
      "source": "native_books/workflow318.py",
      "line": 205
    },
    {
      "operation": "forms.case.read",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "forms_case_read",
      "source": "native_books/forms315.py",
      "line": 196
    },
    {
      "operation": "forms.pack.export",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "forms_pack_export",
      "source": "native_books/forms315.py",
      "line": 345
    },
    {
      "operation": "forms.pack.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "forms_pack_prepare",
      "source": "native_books/forms315.py",
      "line": 266
    },
    {
      "operation": "forms.pack.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "forms_pack_review",
      "source": "native_books/forms315.py",
      "line": 333
    },
    {
      "operation": "forms.registry.read",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "forms_registry_read",
      "source": "native_books/forms315.py",
      "line": 100
    },
    {
      "operation": "forms.source.export",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "forms_source_export",
      "source": "native_books/forms315.py",
      "line": 261
    },
    {
      "operation": "forms.source.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "forms_source_prepare",
      "source": "native_books/forms315.py",
      "line": 199
    },
    {
      "operation": "forms.source.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "forms_source_review",
      "source": "native_books/forms315.py",
      "line": 248
    },
    {
      "operation": "funds.cancel",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "funds_cancel",
      "source": "native_books/funds.py",
      "line": 56
    },
    {
      "operation": "funds.create",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "funds_create",
      "source": "native_books/funds.py",
      "line": 28
    },
    {
      "operation": "funds.expectation",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "funds_expectation",
      "source": "native_books/settlement_ops.py",
      "line": 20
    },
    {
      "operation": "funds.followup",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "funds_followup",
      "source": "native_books/settlement_ops.py",
      "line": 26
    },
    {
      "operation": "funds.hold",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "funds_hold",
      "source": "native_books/funds.py",
      "line": 63
    },
    {
      "operation": "funds.payout.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "funds_payout",
      "source": "native_books/funds.py",
      "line": 159
    },
    {
      "operation": "funds.receipt.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "funds_receipt",
      "source": "native_books/funds.py",
      "line": 156
    },
    {
      "operation": "funds.release.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "funds_release",
      "source": "native_books/funds.py",
      "line": 158
    },
    {
      "operation": "funds.reserve.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "funds_reserve",
      "source": "native_books/funds.py",
      "line": 157
    },
    {
      "operation": "funds.return.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "funds_return",
      "source": "native_books/funds.py",
      "line": 201
    },
    {
      "operation": "fx.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "fx_prepare",
      "source": "native_books/domains.py",
      "line": 121
    },
    {
      "operation": "fx.remeasure.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "fx_remeasure",
      "source": "native_books/domains.py",
      "line": 149
    },
    {
      "operation": "fx.settle.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "fx_settle",
      "source": "native_books/domains.py",
      "line": 135
    },
    {
      "operation": "intake.analyze.enqueue",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "intake_analyze_enqueue",
      "source": "native_books/accounting314.py",
      "line": 124
    },
    {
      "operation": "intake.analyze.reprocess",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "intake_analyze_reprocess",
      "source": "native_books/accounting314.py",
      "line": 132
    },
    {
      "operation": "intake.packet.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "intake_packet_prepare",
      "source": "native_books/accounting314.py",
      "line": 165
    },
    {
      "operation": "intake.packet.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "intake_packet_review",
      "source": "native_books/accounting314.py",
      "line": 203
    },
    {
      "operation": "intake.transcribe",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "intake_transcribe",
      "source": "native_books/accounting314.py",
      "line": 150
    },
    {
      "operation": "jev.catalog.read",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "jev_catalog_read",
      "source": "native_books/jev316.py",
      "line": 75
    },
    {
      "operation": "jev.plan.approve_egress",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "jev_plan_approve_egress",
      "source": "native_books/jev316.py",
      "line": 184
    },
    {
      "operation": "jev.plan.cancel",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "jev_plan_cancel",
      "source": "native_books/jev316.py",
      "line": 267
    },
    {
      "operation": "jev.plan.claim",
      "dispatch_roles": [
        "worker"
      ],
      "effective_handler": "jev_plan_claim",
      "source": "native_books/jev316.py",
      "line": 207
    },
    {
      "operation": "jev.plan.complete",
      "dispatch_roles": [
        "worker"
      ],
      "effective_handler": "jev_plan_complete",
      "source": "native_books/jev316.py",
      "line": 238
    },
    {
      "operation": "jev.plan.fail",
      "dispatch_roles": [
        "worker"
      ],
      "effective_handler": "jev_plan_fail",
      "source": "native_books/jev316.py",
      "line": 248
    },
    {
      "operation": "jev.plan.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "jev_plan_prepare",
      "source": "native_books/jev316.py",
      "line": 117
    },
    {
      "operation": "jev.plan.read",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer",
        "worker"
      ],
      "effective_handler": "jev_plan_read",
      "source": "native_books/jev316.py",
      "line": 170
    },
    {
      "operation": "jev.plan.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "jev_plan_review",
      "source": "native_books/jev316.py",
      "line": 255
    },
    {
      "operation": "jev.plan.simulate",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "jev_plan_simulate",
      "source": "native_books/jev316.py",
      "line": 197
    },
    {
      "operation": "journal.post",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "journal_post",
      "source": "native_books/ledger.py",
      "line": 260
    },
    {
      "operation": "journal.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "journal_prepare",
      "source": "native_books/ledger.py",
      "line": 195
    },
    {
      "operation": "journal.reject",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "journal_reject",
      "source": "native_books/base17.py",
      "line": 225
    },
    {
      "operation": "journal.reverse",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "journal_reverse",
      "source": "native_books/base17.py",
      "line": 231
    },
    {
      "operation": "lifecycle.reverse",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "lifecycle_reverse",
      "source": "native_books/ledger.py",
      "line": 291
    },
    {
      "operation": "liquidity.record",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "liquidity_record",
      "source": "native_books/funds.py",
      "line": 239
    },
    {
      "operation": "migration.cutover",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "migration_cutover",
      "source": "native_books/migration25.py",
      "line": 100
    },
    {
      "operation": "migration.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "migration_review",
      "source": "native_books/migration25.py",
      "line": 77
    },
    {
      "operation": "migration.stage",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "migration_stage",
      "source": "native_books/migration25.py",
      "line": 13
    },
    {
      "operation": "onboarding.cancel",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "onboarding_cancel",
      "source": "native_books/onboarding.py",
      "line": 175
    },
    {
      "operation": "onboarding.create",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "onboarding_create",
      "source": "native_books/onboarding.py",
      "line": 140
    },
    {
      "operation": "onboarding.group.prepare",
      "dispatch_roles": [
        "preparer",
        "reviewer"
      ],
      "effective_handler": "onboarding_group_prepare",
      "source": "native_books/onboarding.py",
      "line": 236
    },
    {
      "operation": "onboarding.payroll.prepare",
      "dispatch_roles": [
        "preparer",
        "reviewer"
      ],
      "effective_handler": "onboarding_payroll_prepare",
      "source": "native_books/onboarding.py",
      "line": 190
    },
    {
      "operation": "onboarding.return",
      "dispatch_roles": [
        "preparer",
        "reviewer"
      ],
      "effective_handler": "onboarding_return",
      "source": "native_books/onboarding.py",
      "line": 167
    },
    {
      "operation": "onboarding.save",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "onboarding_save",
      "source": "native_books/onboarding.py",
      "line": 150
    },
    {
      "operation": "onboarding.submit",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "onboarding_submit",
      "source": "native_books/onboarding.py",
      "line": 158
    },
    {
      "operation": "party.create",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "party_create",
      "source": "native_books/base17.py",
      "line": 167
    },
    {
      "operation": "payroll.payment.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "payroll_payment",
      "source": "native_books/domains.py",
      "line": 197
    },
    {
      "operation": "payroll.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "payroll_prepare",
      "source": "native_books/domains.py",
      "line": 172
    },
    {
      "operation": "period.close",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "period_close",
      "source": "native_books/ledger.py",
      "line": 351
    },
    {
      "operation": "period.create",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "period_create",
      "source": "native_books/base17.py",
      "line": 160
    },
    {
      "operation": "period.reopen",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "period_reopen",
      "source": "native_books/base17.py",
      "line": 466
    },
    {
      "operation": "portability.cancel",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "portability_cancel",
      "source": "native_books/portability319.py",
      "line": 208
    },
    {
      "operation": "portability.part",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "portability_part",
      "source": "native_books/portability319.py",
      "line": 186
    },
    {
      "operation": "portability.prepare",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "portability_prepare",
      "source": "native_books/portability319.py",
      "line": 79
    },
    {
      "operation": "portability.read",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "portability_read",
      "source": "native_books/portability319.py",
      "line": 181
    },
    {
      "operation": "practice.answer",
      "dispatch_roles": [
        "owner"
      ],
      "effective_handler": "practice_answer",
      "source": "native_books/practice29.py",
      "line": 219
    },
    {
      "operation": "practice.answer.check",
      "dispatch_roles": [
        "preparer",
        "reviewer"
      ],
      "effective_handler": "practice_check_answer",
      "source": "native_books/practice29.py",
      "line": 235
    },
    {
      "operation": "practice.ask",
      "dispatch_roles": [
        "preparer",
        "reviewer"
      ],
      "effective_handler": "practice_ask",
      "source": "native_books/practice29.py",
      "line": 206
    },
    {
      "operation": "practice.assign",
      "dispatch_roles": [
        "preparer",
        "reviewer"
      ],
      "effective_handler": "practice_assign",
      "source": "native_books/practice29.py",
      "line": 189
    },
    {
      "operation": "practice.batch.create",
      "dispatch_roles": [
        "preparer",
        "reviewer"
      ],
      "effective_handler": "practice_batch_create",
      "source": "native_books/practice29.py",
      "line": 150
    },
    {
      "operation": "practice.deliver",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "practice_deliver",
      "source": "native_books/practice29.py",
      "line": 306
    },
    {
      "operation": "practice.generate",
      "dispatch_roles": [
        "preparer",
        "reviewer"
      ],
      "effective_handler": "practice_generate",
      "source": "native_books/practice29.py",
      "line": 166
    },
    {
      "operation": "practice.plan.control",
      "dispatch_roles": [
        "preparer",
        "reviewer"
      ],
      "effective_handler": "practice_plan_control",
      "source": "native_books/practice29.py",
      "line": 155
    },
    {
      "operation": "practice.plan.create",
      "dispatch_roles": [
        "preparer",
        "reviewer"
      ],
      "effective_handler": "practice_plan_create",
      "source": "native_books/practice29.py",
      "line": 129
    },
    {
      "operation": "practice.reopen",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "practice_reopen",
      "source": "native_books/practice29.py",
      "line": 297
    },
    {
      "operation": "practice.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "practice_review",
      "source": "native_books/practice29.py",
      "line": 271
    },
    {
      "operation": "practice.start",
      "dispatch_roles": [
        "preparer"
      ],
      "effective_handler": "practice_start",
      "source": "native_books/practice29.py",
      "line": 200
    },
    {
      "operation": "practice.submit",
      "dispatch_roles": [
        "preparer"
      ],
      "effective_handler": "practice_submit",
      "source": "native_books/practice29.py",
      "line": 260
    },
    {
      "operation": "purchase.allowance.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "purchase_allowance_prepare",
      "source": "native_books/purchasing31.py",
      "line": 465
    },
    {
      "operation": "purchase.allowance.revise",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "purchase_allowance_revise",
      "source": "native_books/purchasing31.py",
      "line": 469
    },
    {
      "operation": "purchase.bill.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "purchase_bill_prepare",
      "source": "native_books/purchasing31.py",
      "line": 286
    },
    {
      "operation": "purchase.bill.revise",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "purchase_bill_revise",
      "source": "native_books/purchasing31.py",
      "line": 291
    },
    {
      "operation": "purchase.order.cancel",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "purchase_order_cancel",
      "source": "native_books/purchasing31.py",
      "line": 146
    },
    {
      "operation": "purchase.order.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "purchase_order_prepare",
      "source": "native_books/purchasing31.py",
      "line": 83
    },
    {
      "operation": "purchase.order.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "purchase_order_review",
      "source": "native_books/purchasing31.py",
      "line": 128
    },
    {
      "operation": "purchase.order.revise",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "purchase_order_revise",
      "source": "native_books/purchasing31.py",
      "line": 105
    },
    {
      "operation": "reconciliation.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "reconciliation_prepare",
      "source": "native_books/recon.py",
      "line": 59
    },
    {
      "operation": "reconciliation.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "reconciliation_review",
      "source": "native_books/recon.py",
      "line": 74
    },
    {
      "operation": "settlement.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "settlement_prepare",
      "source": "native_books/base17.py",
      "line": 304
    },
    {
      "operation": "statement.import",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "statement_import",
      "source": "native_books/base17.py",
      "line": 320
    },
    {
      "operation": "stock.bill.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_bill",
      "source": "native_books/purchasing31.py",
      "line": 357
    },
    {
      "operation": "stock.count.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_count",
      "source": "native_books/inventory31.py",
      "line": 540
    },
    {
      "operation": "stock.create",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_create",
      "source": "native_books/inventory31.py",
      "line": 167
    },
    {
      "operation": "stock.issue.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_issue",
      "source": "native_books/inventory31.py",
      "line": 439
    },
    {
      "operation": "stock.location.create",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_location_create",
      "source": "native_books/inventory31.py",
      "line": 140
    },
    {
      "operation": "stock.opening.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_opening",
      "source": "native_books/inventory31.py",
      "line": 315
    },
    {
      "operation": "stock.receive.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_receive",
      "source": "native_books/inventory31.py",
      "line": 294
    },
    {
      "operation": "stock.reserve.create",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_reserve_create",
      "source": "native_books/inventory31.py",
      "line": 395
    },
    {
      "operation": "stock.reserve.release",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_reserve_release",
      "source": "native_books/inventory31.py",
      "line": 417
    },
    {
      "operation": "stock.return.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_return",
      "source": "native_books/inventory31.py",
      "line": 505
    },
    {
      "operation": "stock.settings.save",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_settings_save",
      "source": "native_books/inventory31.py",
      "line": 81
    },
    {
      "operation": "stock.supplier_return.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_supplier_return",
      "source": "native_books/inventory31.py",
      "line": 565
    },
    {
      "operation": "stock.supplier_return.revise",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_supplier_return_revise",
      "source": "native_books/inventory31.py",
      "line": 570
    },
    {
      "operation": "stock.transfer.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_transfer",
      "source": "native_books/inventory31.py",
      "line": 527
    },
    {
      "operation": "stock.update",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "stock_update",
      "source": "native_books/inventory31.py",
      "line": 189
    },
    {
      "operation": "trust.correction.apply",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "trust_correction_apply",
      "source": "native_books/trust25.py",
      "line": 145
    },
    {
      "operation": "trust.correction.propose",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "trust_correction_propose",
      "source": "native_books/trust25.py",
      "line": 127
    },
    {
      "operation": "trust.document.classify",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "trust_document_classify",
      "source": "native_books/trust25.py",
      "line": 352
    },
    {
      "operation": "trust.economics.save",
      "dispatch_roles": [
        "preparer",
        "reviewer"
      ],
      "effective_handler": "trust_economics_save",
      "source": "native_books/trust25.py",
      "line": 333
    },
    {
      "operation": "trust.effort.record",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "trust_effort_record",
      "source": "native_books/trust25.py",
      "line": 321
    },
    {
      "operation": "trust.export",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "trust_export",
      "source": "native_books/portability25.py",
      "line": 36
    },
    {
      "operation": "trust.issue.answer",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "trust_issue_answer",
      "source": "native_books/trust25.py",
      "line": 92
    },
    {
      "operation": "trust.issue.create",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "trust_issue_create",
      "source": "native_books/trust25.py",
      "line": 76
    },
    {
      "operation": "trust.issue.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "trust_issue_review",
      "source": "native_books/trust25.py",
      "line": 108
    },
    {
      "operation": "trust.preferences.save",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "trust_preferences_save",
      "source": "native_books/trust25.py",
      "line": 340
    },
    {
      "operation": "trust.profile.save",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "trust_profile_save",
      "source": "native_books/trust25.py",
      "line": 61
    },
    {
      "operation": "trust.scope.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "trust_scope_review",
      "source": "native_books/trust25.py",
      "line": 196
    },
    {
      "operation": "trust.scope.save",
      "dispatch_roles": [
        "preparer",
        "reviewer"
      ],
      "effective_handler": "trust_scope_save",
      "source": "native_books/trust25.py",
      "line": 175
    },
    {
      "operation": "trust.scope.waive.propose",
      "dispatch_roles": [
        "preparer",
        "reviewer"
      ],
      "effective_handler": "trust_waiver_propose",
      "source": "native_books/trust25.py",
      "line": 203
    },
    {
      "operation": "trust.scope.waive.review",
      "dispatch_roles": [
        "reviewer"
      ],
      "effective_handler": "trust_waiver_review",
      "source": "native_books/trust25.py",
      "line": 211
    },
    {
      "operation": "work.claim",
      "dispatch_roles": [
        "worker"
      ],
      "effective_handler": "work_claim",
      "source": "native_books/operations.py",
      "line": 109
    },
    {
      "operation": "work.control",
      "dispatch_roles": [
        "owner",
        "preparer",
        "reviewer"
      ],
      "effective_handler": "work_control",
      "source": "native_books/operations.py",
      "line": 162
    },
    {
      "operation": "work.enqueue",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "work_enqueue",
      "source": "native_books/operations.py",
      "line": 98
    },
    {
      "operation": "work.fail",
      "dispatch_roles": [
        "worker"
      ],
      "effective_handler": "work_fail",
      "source": "native_books/operations.py",
      "line": 154
    },
    {
      "operation": "work.heartbeat",
      "dispatch_roles": [
        "worker"
      ],
      "effective_handler": "work_heartbeat",
      "source": "native_books/operations.py",
      "line": 135
    },
    {
      "operation": "work.run",
      "dispatch_roles": [
        "worker"
      ],
      "effective_handler": "work_run",
      "source": "native_books/operations.py",
      "line": 139
    },
    {
      "operation": "year_close.prepare",
      "dispatch_roles": [
        "owner",
        "preparer"
      ],
      "effective_handler": "year_close_prepare",
      "source": "native_books/operations.py",
      "line": 26
    }
  ],
  "demo_library": {
    "url": "http://127.0.0.1:8775/demo#library",
    "scenarios": 31,
    "workpaper_scenarios": 15,
    "form_pack_scenarios": 5,
    "broader_scenarios": 11,
    "actual_native_commands_in_acceptance_batch": 549,
    "scenario_checks": 214,
    "browser_checks": 25,
    "synthetic_advisory_ids": [
      "tracked-work",
      "jev-synthetic"
    ],
    "full_product_or_189_command_coverage_claimed": false
  },
  "main_demos": [
    {
      "id": "accounting-core",
      "title": "Accounting & inventory",
      "entry": "/demo/run",
      "scope": "Full selected core workflow; two isolated inventory/service books"
    },
    {
      "id": "showcase-tax",
      "title": "Tax workpapers & form packs",
      "description": "Book-to-tax adjustments, inventory COGS and assets; reviewed Schedule C, COGS and contractor packs; explicit filing guard.",
      "demo_ids": [
        "wp-book_tax",
        "wp-inventory_tax",
        "wp-asset_register",
        "pack-schedule_c",
        "pack-cogs",
        "pack-contractor_nec",
        "filing-guard"
      ]
    },
    {
      "id": "showcase-firm",
      "title": "Firm workflow & handoff",
      "description": "Source correction, recognition draft and reviewer posting, tracked completion, monthly work and recorded handoff, verified recovery.",
      "demo_ids": [
        "source-correction",
        "recognition",
        "tracked-work",
        "practice",
        "export-recovery"
      ]
    }
  ]
}
