{
  "provenance": "Copied subset of supplied docs/feature_coverage.json. Coverage status was not independently reclassified.",
  "summary": {
    "app": "HisabNeer",
    "requirements": 12,
    "implemented_local": 5,
    "partial": 4,
    "blocked": 3
  },
  "requirements": [
    {
      "id": "HN-F01",
      "app": "HisabNeer",
      "slug": "hisabneer",
      "source_title": "Company and branch boundaries",
      "original_priority": "P0",
      "source_requirement": "Maintain separate company ledgers, branches, warehouses, fiscal periods and role assignments; consolidation uses explicit mapping.\nAcceptance: A cashier in company A cannot query company B even when product codes match.",
      "status": "partial",
      "implementation_scope": "One tenant per company, company-scoped ledgers, branches/warehouses, fiscal periods and app roles.",
      "residual_limitation": "Branch-specific membership, a company switcher and explicit consolidation mappings are not implemented.",
      "evidence_paths": [
        "docs/blueprint_requirements.json",
        "docs/COMMERCE_SCHOOL.md",
        "suite/apps/hisabneer.py",
        "suite/core.py",
        "suite/server.py",
        "tests/test_security_recovery.py"
      ],
      "test_references": [
        {
          "path": "tests/test_security_recovery.py",
          "class": "SecurityCoreTests",
          "method": "test_record_ids_and_posted_scope_cannot_cross_tenant_or_app"
        },
        {
          "path": "tests/test_security_recovery.py",
          "class": "HttpSecurityTests",
          "method": "test_other_tenant_cannot_read_search_export_or_overwrite_a_record"
        }
      ],
      "verification_note": "Listed tests support the named invariants, not every sentence of the original feature or production operation."
    },
    {
      "id": "HN-F02",
      "app": "HisabNeer",
      "slug": "hisabneer",
      "source_title": "Chart of accounts",
      "original_priority": "P0",
      "source_requirement": "Configure account codes, type, parent and posting status; require accountant approval for changes affecting posted reports.\nAcceptance: An inactive or summary account rejects new posting while historical reports remain unchanged.",
      "status": "implemented_local",
      "implementation_scope": "Accountant-controlled codes, types, parents, active/posting gates and preserved posted classifications/snapshots.",
      "residual_limitation": "The company must supply its reviewed chart; no statutory chart is certified.",
      "evidence_paths": [
        "docs/blueprint_requirements.json",
        "docs/COMMERCE_SCHOOL.md",
        "suite/apps/hisabneer.py",
        "tests/test_commerce_school.py"
      ],
      "test_references": [
        {
          "path": "tests/test_commerce_school.py",
          "class": "HisabNeerTests",
          "method": "test_unbalanced_cannot_post_and_posted_manual_reversal_nets_zero"
        }
      ],
      "verification_note": "Listed tests support the named invariants, not every sentence of the original feature or production operation."
    },
    {
      "id": "HN-F03",
      "app": "HisabNeer",
      "slug": "hisabneer",
      "source_title": "Purchase and receiving",
      "original_priority": "P0",
      "source_requirement": "Link purchase order, supplier invoice and received quantities; record discrepancies and prohibit silent over-receipt.\nAcceptance: Receiving more than ordered requires a named approval and discrepancy reason.",
      "status": "implemented_local",
      "implementation_scope": "Immutable purchase terms, supplier invoice linkage, partial receipt and distinct-person bounded over-receipt approval.",
      "residual_limitation": "Supplier evidence is operator-entered; no procurement-provider integration is claimed.",
      "evidence_paths": [
        "docs/blueprint_requirements.json",
        "docs/COMMERCE_SCHOOL.md",
        "suite/apps/hisabneer.py",
        "tests/test_commerce_school.py"
      ],
      "test_references": [
        {
          "path": "tests/test_commerce_school.py",
          "class": "HisabNeerTests",
          "method": "test_named_extra_receipt_approval_cannot_be_self_approved_or_reused"
        },
        {
          "path": "tests/test_commerce_school.py",
          "class": "HisabNeerTests",
          "method": "test_receiving_pos_fifo_journal_and_reprint_invariants"
        }
      ],
      "verification_note": "Listed tests support the named invariants, not every sentence of the original feature or production operation."
    },
    {
      "id": "HN-F04",
      "app": "HisabNeer",
      "slug": "hisabneer",
      "source_title": "Inventory ledger",
      "original_priority": "P0",
      "source_requirement": "Record every receipt, sale, transfer and adjustment as a signed movement; use documented costing policy and stock-count approvals.\nAcceptance: Opening quantity plus movements equals closing quantity for each product and warehouse.",
      "status": "implemented_local",
      "implementation_scope": "FIFO layers and receipt/sale/return/transfer/count movements with separate approval, costing and inventory-difference journals.",
      "residual_limitation": "Multi-unit conversion/manufacturing are outside this edition; operator costing policy review remains required.",
      "evidence_paths": [
        "docs/blueprint_requirements.json",
        "docs/COMMERCE_SCHOOL.md",
        "suite/apps/hisabneer.py",
        "tests/test_commerce_school.py"
      ],
      "test_references": [
        {
          "path": "tests/test_commerce_school.py",
          "class": "HisabNeerTests",
          "method": "test_branch_transfer_and_approved_count_preserve_inventory_value"
        },
        {
          "path": "tests/test_commerce_school.py",
          "class": "HisabNeerTests",
          "method": "test_a_stock_count_cannot_overwrite_intervening_sales"
        }
      ],
      "verification_note": "Listed tests support the named invariants, not every sentence of the original feature or production operation."
    },
    {
      "id": "HN-F05",
      "app": "HisabNeer",
      "slug": "hisabneer",
      "source_title": "Fast POS checkout",
      "original_priority": "P0",
      "source_requirement": "Support keyboard and barcode entry, transparent discounts, split tenders, bilingual receipts and print retry without duplicate sales.\nAcceptance: Reprinting a receipt changes no stock, revenue or payment total.",
      "status": "partial",
      "implementation_scope": "Atomic online POS, configured discounts, cash/credit remainder and repeatable bilingual receipt printing without side effects.",
      "residual_limitation": "Scanner-device integration, specialized keyboard ergonomics and arbitrary digital split tenders are not implemented.",
      "evidence_paths": [
        "docs/blueprint_requirements.json",
        "docs/COMMERCE_SCHOOL.md",
        "suite/apps/hisabneer.py",
        "tests/test_commerce_school.py"
      ],
      "test_references": [
        {
          "path": "tests/test_commerce_school.py",
          "class": "HisabNeerTests",
          "method": "test_receiving_pos_fifo_journal_and_reprint_invariants"
        },
        {
          "path": "tests/test_commerce_school.py",
          "class": "HisabNeerTests",
          "method": "test_insufficient_sale_rolls_back_all_effects_and_full_return_is_linked"
        }
      ],
      "verification_note": "Listed tests support the named invariants, not every sentence of the original feature or production operation."
    },
    {
      "id": "HN-F06",
      "app": "HisabNeer",
      "slug": "hisabneer",
      "source_title": "Balanced journal posting",
      "original_priority": "P0",
      "source_requirement": "Post journals only when debit equals credit per company and currency; lock posted lines and correct through linked reversals.\nAcceptance: An unbalanced voucher cannot reach posted status; an original and its full reversal net to zero.",
      "status": "implemented_local",
      "implementation_scope": "Only balanced vouchers post; posted facts remain immutable and corrections use linked full reversals.",
      "residual_limitation": "The app requires reviewed accounts/periods; it is not an external accounting certification.",
      "evidence_paths": [
        "docs/blueprint_requirements.json",
        "docs/COMMERCE_SCHOOL.md",
        "suite/apps/hisabneer.py",
        "tests/test_commerce_school.py"
      ],
      "test_references": [
        {
          "path": "tests/test_commerce_school.py",
          "class": "HisabNeerTests",
          "method": "test_unbalanced_cannot_post_and_posted_manual_reversal_nets_zero"
        }
      ],
      "verification_note": "Listed tests support the named invariants, not every sentence of the original feature or production operation."
    },
    {
      "id": "HN-F07",
      "app": "HisabNeer",
      "slug": "hisabneer",
      "source_title": "Cash close and variance",
      "original_priority": "P0",
      "source_requirement": "Reconcile opening float, cash sales, refunds, deposits and physical count; require explanations and approval for differences.\nAcceptance: A cash difference remains visible after close and is never hidden as a sale adjustment.",
      "status": "partial",
      "implementation_scope": "Opening float, cash sales, deposits/withdrawals, physical count and preserved variance requiring distinct approval.",
      "residual_limitation": "Finance refunds occur outside the original till; partial refunds from an active drawer are not implemented.",
      "evidence_paths": [
        "docs/blueprint_requirements.json",
        "docs/COMMERCE_SCHOOL.md",
        "suite/apps/hisabneer.py",
        "tests/test_commerce_school.py"
      ],
      "test_references": [
        {
          "path": "tests/test_commerce_school.py",
          "class": "HisabNeerTests",
          "method": "test_cash_difference_stays_visible_and_needs_distinct_approval"
        }
      ],
      "verification_note": "Listed tests support the named invariants, not every sentence of the original feature or production operation."
    },
    {
      "id": "HN-F08",
      "app": "HisabNeer",
      "slug": "hisabneer",
      "source_title": "Receivables and payables",
      "original_priority": "P0",
      "source_requirement": "Maintain customer/supplier open items, allocations, due dates and aging; preserve partial payment and credit note links.\nAcceptance: A payment cannot be allocated beyond its remaining value or the invoice balance.",
      "status": "partial",
      "implementation_scope": "Party open items, due dates, partial evidenced bank settlement and allocations bounded by payment and invoice remainder.",
      "residual_limitation": "Advanced credit notes/refund allocations and a dedicated receivable/payable aging workspace are not implemented.",
      "evidence_paths": [
        "docs/blueprint_requirements.json",
        "docs/COMMERCE_SCHOOL.md",
        "suite/apps/hisabneer.py",
        "tests/test_commerce_school.py"
      ],
      "test_references": [
        {
          "path": "tests/test_commerce_school.py",
          "class": "HisabNeerTests",
          "method": "test_payment_allocation_is_bounded_by_both_invoice_and_payment"
        }
      ],
      "verification_note": "Listed tests support the named invariants, not every sentence of the original feature or production operation."
    },
    {
      "id": "HN-F09",
      "app": "HisabNeer",
      "slug": "hisabneer",
      "source_title": "Batch and serial traceability",
      "original_priority": "P1",
      "source_requirement": "Add lot, expiry, IMEI or serial identifiers by product category; quarantine expired or recalled lots according to approved policy.\nAcceptance: A quarantined lot cannot be sold even when total warehouse stock is positive.",
      "status": "blocked",
      "implementation_scope": "No enabled batch/serial lifecycle.",
      "residual_limitation": "Lot expiry, IMEI, quarantine and recall workflows are not implemented.",
      "evidence_paths": [
        "docs/blueprint_requirements.json",
        "docs/COMMERCE_SCHOOL.md",
        "suite/apps/hisabneer.py"
      ],
      "test_references": [],
      "verification_note": "Implementation/status is source-reviewed here; no dedicated feature test is cited. Consult final suite evidence and required human reviews."
    },
    {
      "id": "HN-F10",
      "app": "HisabNeer",
      "slug": "hisabneer",
      "source_title": "Configurable VAT documents",
      "original_priority": "P1",
      "source_requirement": "Use effective-dated tax rules and versioned invoice templates reviewed by a Bangladesh tax professional before operational use.\nAcceptance: A tax-rule change applies from its effective date and does not rewrite issued invoices.",
      "status": "blocked",
      "implementation_scope": "Receipts make no VAT-certification claim.",
      "residual_limitation": "Effective-dated VAT rules, professionally reviewed statutory invoice templates and filing are not supplied.",
      "evidence_paths": [
        "docs/blueprint_requirements.json",
        "docs/COMMERCE_SCHOOL.md",
        "suite/apps/hisabneer.py"
      ],
      "test_references": [],
      "verification_note": "Implementation/status is source-reviewed here; no dedicated feature test is cited. Consult final suite evidence and required human reviews."
    },
    {
      "id": "HN-F11",
      "app": "HisabNeer",
      "slug": "hisabneer",
      "source_title": "Offline till allocation",
      "original_priority": "P1",
      "source_requirement": "Restrict offline terminals to allocated stock and discount limits; sync append-only events and review conflicting returns centrally.\nAcceptance: A disconnected till stops selling after its allocation is exhausted.",
      "status": "blocked",
      "implementation_scope": "No disconnected till sale allocation.",
      "residual_limitation": "Offline terminal stock/discount budgets and append-only synchronization are not implemented.",
      "evidence_paths": [
        "docs/blueprint_requirements.json",
        "docs/COMMERCE_SCHOOL.md",
        "suite/apps/hisabneer.py"
      ],
      "test_references": [],
      "verification_note": "Implementation/status is source-reviewed here; no dedicated feature test is cited. Consult final suite evidence and required human reviews."
    },
    {
      "id": "HN-F12",
      "app": "HisabNeer",
      "slug": "hisabneer",
      "source_title": "Period controls and reports",
      "original_priority": "P0",
      "source_requirement": "Provide trial balance, profit/loss and stock valuation using posted records only; period reopening requires dual authorization.\nAcceptance: A locked period rejects backdated posting and reports show the selected accounting basis.",
      "status": "implemented_local",
      "implementation_scope": "Posted-only trial balance with opening balances, period P&L, FIFO valuation, locks and distinct-person version-bound reopening.",
      "residual_limitation": "Accountant acceptance, closing policy and real operational reporting review remain external.",
      "evidence_paths": [
        "docs/blueprint_requirements.json",
        "docs/COMMERCE_SCHOOL.md",
        "suite/apps/hisabneer.py",
        "tests/test_commerce_school.py"
      ],
      "test_references": [
        {
          "path": "tests/test_commerce_school.py",
          "class": "HisabNeerTests",
          "method": "test_locked_period_and_two_person_reopening"
        },
        {
          "path": "tests/test_commerce_school.py",
          "class": "HisabNeerTests",
          "method": "test_accounting_report_carries_opening_balances_without_recounting_profit"
        }
      ],
      "verification_note": "Listed tests support the named invariants, not every sentence of the original feature or production operation."
    }
  ]
}