@mudraforge/statutory 2.12.1 → 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +19 -0
  3. package/okf/corporate_ma_restructuring/business_combinations_indas_103/ast.json +20 -0
  4. package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/ast.json +20 -0
  5. package/okf/corporate_ma_restructuring/loss_carryforward_sec79/ast.json +33 -0
  6. package/okf/corporate_ma_restructuring/share_based_payments_indas_102/ast.json +20 -0
  7. package/okf/corporate_ma_restructuring/slump_sale_50b/ast.json +21 -0
  8. package/okf/corporate_ma_restructuring/tax_clearance_sec281/ast.json +21 -0
  9. package/okf/direct_tax/corporate_tax_115baa_115jb/ast.json +23 -0
  10. package/okf/direct_tax/income_taxes_deferred_tax_indas_12/ast.json +20 -0
  11. package/okf/direct_tax/special_rates_non_filer_206ab/ast.json +26 -0
  12. package/okf/direct_tax/statutory_disallowance_43b/ast.json +35 -0
  13. package/okf/direct_tax/tcs_goods_206c_1h/ast.json +69 -0
  14. package/okf/direct_tax/tds_commission_194h/ast.json +60 -0
  15. package/okf/direct_tax/tds_contractor_194c/ast.json +71 -0
  16. package/okf/direct_tax/tds_ecommerce_194o/ast.json +48 -0
  17. package/okf/direct_tax/tds_goods_194q/ast.json +71 -0
  18. package/okf/direct_tax/tds_goods_393/ast.json +59 -0
  19. package/okf/direct_tax/tds_individual_contract_194m/ast.json +59 -0
  20. package/okf/direct_tax/tds_interest_194a/ast.json +59 -0
  21. package/okf/direct_tax/tds_perquisites_194r/ast.json +47 -0
  22. package/okf/direct_tax/tds_property_194ia/ast.json +70 -0
  23. package/okf/direct_tax/tds_rent_194i/ast.json +60 -0
  24. package/okf/direct_tax/tds_rent_individual_194ib/ast.json +59 -0
  25. package/okf/direct_tax/tds_services_194j/ast.json +60 -0
  26. package/okf/indirect_tax_gst/blocked_itc_17_5/ast.json +26 -0
  27. package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/ast.json +26 -0
  28. package/okf/indirect_tax_gst/composite_mixed_supplies_sec8/ast.json +21 -0
  29. package/okf/indirect_tax_gst/composition_levy_sec10/ast.json +23 -0
  30. package/okf/indirect_tax_gst/credit_debit_notes_sec34/ast.json +21 -0
  31. package/okf/indirect_tax_gst/e_invoicing_rule48_4/ast.json +20 -0
  32. package/okf/indirect_tax_gst/export_services_lut_sec16/ast.json +20 -0
  33. package/okf/indirect_tax_gst/gst_tds_sec51/ast.json +23 -0
  34. package/okf/indirect_tax_gst/itc_eligibility_16_2/ast.json +20 -0
  35. package/okf/indirect_tax_gst/itc_reversal_rule37_37a/ast.json +45 -0
  36. package/okf/indirect_tax_gst/rcm_liability_sec9_3/ast.json +26 -0
  37. package/okf/international_tax/cross_border_remittance_195/ast.json +39 -0
  38. package/okf/international_tax/financial_instruments_ecl_indas_109/ast.json +24 -0
  39. package/okf/international_tax/foreign_exchange_indas_21_109/ast.json +20 -0
  40. package/okf/international_tax/foreign_tax_credit_irc_901_904/ast.json +20 -0
  41. package/okf/international_tax/transfer_pricing_alp_92c/ast.json +25 -0
  42. package/okf/manifest.json +49 -3
  43. package/okf/msme_commercial/delayed_payments_15_16/ast.json +38 -0
  44. package/okf/msme_commercial/enterprise_classification_sec7/ast.json +25 -0
  45. package/okf/msme_commercial/lease_accounting_indas_116/ast.json +20 -0
  46. package/okf/msme_commercial/mca_msme_1_filing/ast.json +20 -0
  47. package/okf/msme_commercial/provisions_contingencies_indas_37/ast.json +20 -0
  48. package/okf/msme_commercial/revenue_recognition_indas_115/ast.json +20 -0
  49. package/okf/msme_commercial/statutory_disclosures_sec22/ast.json +21 -0
  50. package/package.json +16 -4
  51. package/src/calculators.js +139 -3
  52. package/src/constants.js +1 -1
  53. package/src/index.js +16 -2
  54. package/src/payroll.js +506 -0
  55. package/src/usvm/evaluation_vm.js +504 -0
  56. package/src/usvm/index.js +65 -0
  57. package/src/usvm/math_rational.js +165 -0
  58. package/src/usvm/rules/sec_115baa_115jb_mat.json +23 -0
  59. package/src/usvm/rules/sec_192_salary_tds.json +23 -0
  60. package/src/usvm/rules/sec_194a_interest.json +59 -0
  61. package/src/usvm/rules/sec_194c_contractors.json +71 -0
  62. package/src/usvm/rules/sec_194h_commission.json +60 -0
  63. package/src/usvm/rules/sec_194i_rent.json +60 -0
  64. package/src/usvm/rules/sec_194ia_property.json +70 -0
  65. package/src/usvm/rules/sec_194ib_rent_ind.json +59 -0
  66. package/src/usvm/rules/sec_194j_services.json +60 -0
  67. package/src/usvm/rules/sec_194m_contract_ind.json +59 -0
  68. package/src/usvm/rules/sec_194o_ecommerce.json +48 -0
  69. package/src/usvm/rules/sec_194q_goods.json +71 -0
  70. package/src/usvm/rules/sec_194r_perquisites.json +47 -0
  71. package/src/usvm/rules/sec_195_cross_border.json +39 -0
  72. package/src/usvm/rules/sec_206ab_non_filer.json +26 -0
  73. package/src/usvm/rules/sec_206c1h_tcs.json +69 -0
  74. package/src/usvm/rules/sec_281_tax_clearance.json +21 -0
  75. package/src/usvm/rules/sec_393_goods.json +59 -0
  76. package/src/usvm/rules/sec_43bh_disallowance.json +35 -0
  77. package/src/usvm/rules/sec_50b_slump_sale.json +21 -0
  78. package/src/usvm/rules/sec_79_loss_continuity.json +33 -0
  79. package/src/usvm/rules/sec_92c_transfer_pricing.json +25 -0
  80. package/src/usvm/rules/sec_ftc_dtaa_relief.json +20 -0
  81. package/src/usvm/rules/sec_gst_blocked_itc_17_5.json +26 -0
  82. package/src/usvm/rules/sec_gst_composite_mixed_8.json +21 -0
  83. package/src/usvm/rules/sec_gst_composition_levy_10.json +23 -0
  84. package/src/usvm/rules/sec_gst_credit_debit_notes_34.json +21 -0
  85. package/src/usvm/rules/sec_gst_einvoicing_rule48_4.json +20 -0
  86. package/src/usvm/rules/sec_gst_ewaybill_rule138.json +21 -0
  87. package/src/usvm/rules/sec_gst_export_lut_16.json +20 -0
  88. package/src/usvm/rules/sec_gst_itc_eligibility_16_2.json +20 -0
  89. package/src/usvm/rules/sec_gst_itc_reversal_rule37_37a.json +45 -0
  90. package/src/usvm/rules/sec_gst_rcm_liability_9_3.json +26 -0
  91. package/src/usvm/rules/sec_gst_rule42_43_apportionment.json +26 -0
  92. package/src/usvm/rules/sec_gst_tds_sec51.json +23 -0
  93. package/src/usvm/rules/sec_indas102_esop.json +20 -0
  94. package/src/usvm/rules/sec_indas103_mna.json +20 -0
  95. package/src/usvm/rules/sec_indas109_ecl.json +24 -0
  96. package/src/usvm/rules/sec_indas115_revenue.json +20 -0
  97. package/src/usvm/rules/sec_indas116_leases.json +20 -0
  98. package/src/usvm/rules/sec_indas12_deferred_tax.json +20 -0
  99. package/src/usvm/rules/sec_indas21_fx_reval.json +20 -0
  100. package/src/usvm/rules/sec_indas36_impairment.json +20 -0
  101. package/src/usvm/rules/sec_indas37_provisions.json +20 -0
  102. package/src/usvm/rules/sec_msme_classification_sec7.json +25 -0
  103. package/src/usvm/rules/sec_msme_delayed_payments_15_16.json +38 -0
  104. package/src/usvm/rules/sec_msme_disclosures_sec22.json +21 -0
  105. package/src/usvm/rules/sec_msme_mca_form_1.json +20 -0
  106. package/src/usvm/schemas/statutory_ast_schema.js +203 -0
  107. package/src/usvm/usvm_domain_evaluators.js +1021 -0
  108. package/types/index.d.ts +134 -0
  109. package/conformance/README.md +0 -54
  110. package/conformance/fixtures/invalid_malformed_temporal_dates.json +0 -10
  111. package/conformance/fixtures/invalid_missing_effective_period.json +0 -6
  112. package/conformance/fixtures/invalid_missing_section_code.json +0 -9
  113. package/conformance/fixtures/valid_circular_frontmatter.md +0 -16
  114. package/conformance/fixtures/valid_full_section.json +0 -35
  115. package/conformance/fixtures/valid_minimal_section.json +0 -11
  116. package/conformance/test_conformance.js +0 -129
  117. package/docs/ACCOUNTING_ASSURANCE_AUDIT_DOSSIER.md +0 -276
  118. package/docs/ADESHA_ASSURANCE_OVERVIEW.md +0 -166
  119. package/docs/ARCHITECTURE.md +0 -750
  120. package/docs/ARCHITECTURE_DECISIONS.md +0 -138
  121. package/docs/CASE_01_FORM_TEXT.txt +0 -48
  122. package/docs/CATALOG.md +0 -1901
  123. package/docs/CA_PILOT_BENCHMARK_CASES.md +0 -282
  124. package/docs/CORPUS_QUALITY.md +0 -106
  125. package/docs/DATA_LICENSING.md +0 -73
  126. package/docs/DOMAIN_BREADTH_AND_DEPTH_COMPARISON.md +0 -209
  127. package/docs/ENTERPRISE_GOVERNANCE.md +0 -159
  128. package/docs/OKF_MAINTENANCE_SOP.md +0 -286
  129. package/docs/PILOT_EVALUATION_GUIDE.md +0 -214
  130. package/docs/PROVENANCE.md +0 -33
  131. package/docs/VERIFICATION.md +0 -106
  132. package/examples/README.md +0 -56
  133. package/examples/invoice_deduction_trace.json +0 -149
  134. package/examples/simulate_end_to_end_trace.js +0 -106
package/CHANGELOG.md CHANGED
@@ -7,6 +7,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ---
9
9
 
10
+ ## [2.14.0] - 2026-11-08
11
+
12
+ ### Deprecated
13
+ - **Procedural Calculators Subsystem (`@mudraforge/statutory/calculators`)**:
14
+ - Formally deprecated all procedural calculator functions in `src/calculators.js` and `types/index.d.ts` in favor of declarative Abstract Syntax Tree (AST) evaluation via the Universal Statutory Virtual Machine (`@mudraforge/statutory/usvm` -> `evaluateStatutoryAst`).
15
+ - Added JSDoc `@deprecated` annotations across all 43 procedural calculation exports with explicit guidance to migrate to USVM.
16
+ - Procedural calculation APIs remain 100% backward compatible throughout v2.x and are scheduled for sunset in v3.0.0.
17
+
18
+ ### Changed
19
+ - **Package Distribution Footprint Optimization**:
20
+ - Excluded internal development artifacts (`docs/`, `conformance/`, `examples/`) from the npm publish tarball (`package.json` `"files"`), reducing unpacked install size by ~440 kB (1.7 MB vs 2.1 MB) and compressed tarball by ~25% (404 kB vs 536 kB).
21
+ - Aligned `STATUTORY_PACKAGE_VERSION` and `OKF_CORPUS_VERSION` constants in `src/calculators.js` to `2.14.0`.
22
+ - Pinned verified release Merkle root digest: `sha256-7ffc75e8611a9c966eea756dd544fdae9144e2318d3478633232bb876d05e364`.
23
+ - Package version bumped to `2.14.0` in accordance with SemVer Rule 7.
24
+
25
+ ## [2.13.0] - 2026-11-08
26
+
27
+ ### Added
28
+ - **Universal Statutory Virtual Machine (USVM) Kernel (`@mudraforge/statutory/usvm`)**:
29
+ - Stateless execution kernel (`evaluation_vm.js`, 355 lines) evaluating declarative AST rules with sub-microsecond latency (p50: 14.32 microseconds).
30
+ - 5-stage rational BigInt arithmetic (`math_rational.js`) eliminating floating-point rounding drift.
31
+ - Strict AST schema validator and operator allowlists (`statutory_ast_schema.js`).
32
+ - Pre-cached 48 declarative AST packages in `src/usvm/rules/*.json`.
33
+ - Co-located 46 `ast.json` rule packages across the 5 canonical OKF domains.
34
+ - **Tree-Shakable Package Subpath (`@mudraforge/statutory/usvm`)**:
35
+ - Exposes `evaluateStatutoryAst`, `validateStatutoryAst`, and `toBigIntPaise` for ultra-lightweight client bundles (~12 kB GZIP vs 92.9 kB).
36
+
37
+ ### Changed
38
+ - Re-computed Merkle manifest SHA-256 root digest: `sha256-7ffc75e8611a9c966eea756dd544fdae9144e2318d3478633232bb876d05e364`.
39
+ - Attached `ast` object to `lookupLocalStatute` return envelopes.
40
+ - Package version bumped to `2.13.0`.
41
+
10
42
  ## [2.12.1] - 2026-11-06
11
43
 
12
44
  ### Fixed
package/README.md CHANGED
@@ -57,10 +57,29 @@ console.log(exportEvaluation.igstPayableInr); // 0 (0% IGST)
57
57
  // 4. Temporal Legislative Sunset Check
58
58
  const isActive = await isStatuteActive('206C(1H)', '2025-06-01');
59
59
  console.log(isActive); // false (Omitted w.e.f. 1 April 2025 by Finance Act, 2025)
60
+
61
+ // 5. Universal Statutory Virtual Machine (USVM) Subpath (<15µs latency, ~12 kB GZIP bundle)
62
+ import { evaluateStatutoryAst, getStatutoryAst } from '@mudraforge/statutory/usvm';
63
+
64
+ const ast194Q = getStatutoryAst('194Q');
65
+ const voucher = evaluateStatutoryAst(ast194Q, {
66
+ invoiceAmount: 2000000,
67
+ priorFyPurchases: 4500000,
68
+ hasPan: true,
69
+ transactionDate: '2026-03-15'
70
+ });
71
+ console.log(voucher.calculatedTdsInr); // 1500 (TDS on incremental excess)
72
+ console.log(voucher.isAuthorizedToDisburse); // false (Fiduciary invariant)
60
73
  ```
61
74
 
62
75
  ---
63
76
 
77
+ > [!NOTE]
78
+ > **v2.14.0 Architecture Notice: USVM Declarative Engine & Procedural Deprecation**
79
+ > As of v2.14.0, the declarative **Universal Statutory Virtual Machine (`@mudraforge/statutory/usvm`)** is the primary, canonical execution engine for all statutory determination. Legacy procedural calculator functions in `@mudraforge/statutory/calculators` are marked `@deprecated` and will be retired in v3.0.0. In addition, internal development documentation and test suites have been decoupled from the npm tarball, shrinking package size from 536 kB to 404 kB (~25% reduction).
80
+
81
+ ---
82
+
64
83
  ## Overview: Why We Open-Source Adesha's Statutory Substrate
65
84
 
66
85
  In enterprise finance, no CFO, audit committee, or enterprise risk officer will permit an autonomous AI agent to propose payment instructions or touch the corporate general ledger if its tax withholding and regulatory logic is an opaque, black-box prompt. Large language models hallucinate tax rates, invert statutory obligations, and defend computational errors (*Rule 11: Agreement with the Engine ≠ Agreement with the Law*).
@@ -0,0 +1,20 @@
1
+ {
2
+ "sectionId": "INDAS103_BUSINESS_COMBINATIONS",
3
+ "version": "1.0.0",
4
+ "governingStatute": "Companies (Indian Accounting Standards) Rules, 2015",
5
+ "statutorySection": "Ind AS 103 / IFRS 3",
6
+ "successorStatute": "Ind AS 103",
7
+ "successorSection": "Ind AS 103",
8
+ "triggerPolicy": {
9
+ "type": "TRANSACTION_DATE",
10
+ "description": "Acquisition method purchase price allocation & goodwill / capital reserve"
11
+ },
12
+ "computation": {
13
+ "archetype": "BUSINESS_COMBINATIONS_INDAS103",
14
+ "acquisitionMethodRequired": true
15
+ },
16
+ "rounding": {
17
+ "transactionLine": "COMMERCIAL_PAISA",
18
+ "assessmentTotal": "COMMERCIAL_PAISA"
19
+ }
20
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "sectionId": "INDAS36_IMPAIRMENT",
3
+ "version": "1.0.0",
4
+ "governingStatute": "Companies (Indian Accounting Standards) Rules, 2015",
5
+ "statutorySection": "Ind AS 36 / IAS 36",
6
+ "successorStatute": "Ind AS 36",
7
+ "successorSection": "Ind AS 36",
8
+ "triggerPolicy": {
9
+ "type": "TRANSACTION_DATE",
10
+ "description": "CGU recoverable amount vs carrying value test"
11
+ },
12
+ "computation": {
13
+ "archetype": "IMPAIRMENT_TESTING_INDAS36",
14
+ "recoverableAmountRule": "HIGHER_OF_FV_LESS_COSTS_OR_VALUE_IN_USE"
15
+ },
16
+ "rounding": {
17
+ "transactionLine": "COMMERCIAL_PAISA",
18
+ "assessmentTotal": "COMMERCIAL_PAISA"
19
+ }
20
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "sectionId": "ITACT1961_SEC79",
3
+ "version": "1.0.0",
4
+ "governingStatute": "Income-tax Act, 1961",
5
+ "statutorySection": "Section 79",
6
+ "successorStatute": "Income-tax Act, 2025",
7
+ "successorSection": "Section 79 equivalent",
8
+ "triggerPolicy": {
9
+ "type": "TRANSACTION_DATE",
10
+ "description": "Evaluated at annual tax return filing based on beneficial shareholding continuity"
11
+ },
12
+ "guards": [
13
+ {
14
+ "id": "GUARD_IBC_RESOLUTION",
15
+ "field": "isIbcResolutionPlan",
16
+ "operator": "IS_TRUE",
17
+ "onMatch": {
18
+ "action": "HALT_EXEMPT",
19
+ "disposition": "EXEMPT_IBC_RESOLUTION_PLAN",
20
+ "reason": "Section 79(2)(c) exemption for companies whose resolution plan is approved under IBC 2016"
21
+ }
22
+ }
23
+ ],
24
+ "computation": {
25
+ "archetype": "VOTING_CONTINUITY_PERCENTAGE",
26
+ "standardContinuityThresholdPercent": 51.0,
27
+ "dpiitStartupRelief": true
28
+ },
29
+ "rounding": {
30
+ "transactionLine": "COMMERCIAL_PAISA",
31
+ "assessmentTotal": "COMMERCIAL_PAISA"
32
+ }
33
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "sectionId": "INDAS102_SHARE_BASED_PAYMENTS",
3
+ "version": "1.0.0",
4
+ "governingStatute": "Companies (Indian Accounting Standards) Rules, 2015",
5
+ "statutorySection": "Ind AS 102 / ASC 718",
6
+ "successorStatute": "Ind AS 102",
7
+ "successorSection": "Ind AS 102",
8
+ "triggerPolicy": {
9
+ "type": "TRANSACTION_DATE",
10
+ "description": "Grant date fair value ESOP graded vesting expense amortization"
11
+ },
12
+ "computation": {
13
+ "archetype": "SHARE_BASED_PAYMENTS_INDAS102",
14
+ "vestingModel": "GRADED_VESTING_AMORTIZATION"
15
+ },
16
+ "rounding": {
17
+ "transactionLine": "COMMERCIAL_PAISA",
18
+ "assessmentTotal": "COMMERCIAL_PAISA"
19
+ }
20
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "sectionId": "ITACT1961_SEC50B",
3
+ "version": "1.0.0",
4
+ "governingStatute": "Income-tax Act, 1961",
5
+ "statutorySection": "Section 50B read with Rule 11UAE",
6
+ "successorStatute": "Income-tax Act, 2025",
7
+ "successorSection": "Section 50B equivalent",
8
+ "triggerPolicy": {
9
+ "type": "TRANSACTION_DATE",
10
+ "description": "Lump-sum business undertaking transfer capital gains computation"
11
+ },
12
+ "computation": {
13
+ "archetype": "SLUMP_SALE_NET_WORTH_50B",
14
+ "excludeRevaluationReserve": true,
15
+ "depreciableAssetBasis": "WDV_UNDER_SECTION_43_6"
16
+ },
17
+ "rounding": {
18
+ "transactionLine": "COMMERCIAL_PAISA",
19
+ "assessmentTotal": "COMMERCIAL_PAISA"
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "sectionId": "ITACT1961_SEC281",
3
+ "version": "1.0.0",
4
+ "governingStatute": "Income-tax Act, 1961",
5
+ "statutorySection": "Section 281",
6
+ "successorStatute": "Income-tax Act, 2025",
7
+ "successorSection": "Section 281 equivalent",
8
+ "triggerPolicy": {
9
+ "type": "TRANSACTION_DATE",
10
+ "description": "Evaluation of asset transfer during pending tax assessment proceedings"
11
+ },
12
+ "computation": {
13
+ "archetype": "TAX_CLEARANCE_VOID_TRANSFER_SEC281",
14
+ "deMinimisDemandInr": 5000,
15
+ "deMinimisAssetInr": 10000
16
+ },
17
+ "rounding": {
18
+ "transactionLine": "COMMERCIAL_PAISA",
19
+ "assessmentTotal": "COMMERCIAL_PAISA"
20
+ }
21
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "sectionId": "ITACT1961_SEC115BAA_115JB",
3
+ "version": "1.0.0",
4
+ "governingStatute": "Income-tax Act, 1961",
5
+ "statutorySection": "Sections 115BAA, 115JB & 115JAA",
6
+ "successorStatute": "Income-tax Act, 2025",
7
+ "successorSection": "Section 115BAA & MAT equivalents",
8
+ "triggerPolicy": {
9
+ "type": "FISCAL_YEAR_END",
10
+ "description": "Annual Corporate Tax Return filing & MAT comparison"
11
+ },
12
+ "computation": {
13
+ "archetype": "CORPORATE_TAX_MAT_VS_CONCESSIONAL",
14
+ "concessionalBaseRate": 0.22,
15
+ "matBaseRate": 0.15,
16
+ "surchargeConcessional": 0.1,
17
+ "cessRate": 0.04
18
+ },
19
+ "rounding": {
20
+ "transactionLine": "COMMERCIAL_PAISA",
21
+ "assessmentTotal": "COMMERCIAL_PAISA"
22
+ }
23
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "sectionId": "INDAS12_INCOME_TAXES",
3
+ "version": "1.0.0",
4
+ "governingStatute": "Companies (Indian Accounting Standards) Rules, 2015",
5
+ "statutorySection": "Ind AS 12 / ASC 740",
6
+ "successorStatute": "Ind AS 12",
7
+ "successorSection": "Ind AS 12",
8
+ "triggerPolicy": {
9
+ "type": "FISCAL_YEAR_END",
10
+ "description": "Period-end tax balance sheet timing difference recognition"
11
+ },
12
+ "computation": {
13
+ "archetype": "DEFERRED_TAX_TIMING_DIFFERENCE",
14
+ "prudenceTest": "PROBABLE_FUTURE_TAXABLE_PROFIT"
15
+ },
16
+ "rounding": {
17
+ "transactionLine": "COMMERCIAL_PAISA",
18
+ "assessmentTotal": "COMMERCIAL_PAISA"
19
+ }
20
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "sectionId": "ITACT1961_SEC206AB",
3
+ "version": "1.0.0",
4
+ "governingStatute": "Income-tax Act, 1961",
5
+ "statutorySection": "Section 206AB",
6
+ "successorStatute": "Income-tax Act, 2025",
7
+ "successorSection": "Omitted w.e.f. 1 April 2025 by Finance Act, 2025",
8
+ "triggerPolicy": {
9
+ "type": "EARLIER_OF",
10
+ "events": [
11
+ "creditDate",
12
+ "paymentDate"
13
+ ],
14
+ "description": "Earlier of credit or payment for non-compliant specified persons"
15
+ },
16
+ "computation": {
17
+ "archetype": "NON_FILER_PENAL_RATE_206AB",
18
+ "multiplier": 2,
19
+ "minimumPenalRatePercent": 5,
20
+ "sunsetOmissionDate": "2025-04-01"
21
+ },
22
+ "rounding": {
23
+ "transactionLine": "COMMERCIAL_PAISA",
24
+ "assessmentTotal": "COMMERCIAL_PAISA"
25
+ }
26
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "sectionId": "ITACT1961_SEC43BH",
3
+ "version": "1.0.0",
4
+ "governingStatute": "Income-tax Act, 1961",
5
+ "statutorySection": "Section 43B(h)",
6
+ "successorStatute": "Income-tax Act, 2025",
7
+ "successorSection": "Section 37(2)(g)",
8
+ "triggerPolicy": {
9
+ "type": "PAYMENT_ONLY",
10
+ "description": "Evaluated against invoice date, agreed terms, and March 31 fiscal year-end boundary"
11
+ },
12
+ "guards": [
13
+ {
14
+ "id": "GUARD_TRADER_EXCLUSION",
15
+ "field": "isTrader",
16
+ "operator": "IS_TRUE",
17
+ "onMatch": {
18
+ "action": "HALT_EXEMPT",
19
+ "disposition": "EXEMPT_TRADER_NOT_GOVERNED_BY_43BH",
20
+ "reason": "Retail and wholesale trade (NIC 45, 46, 47) excluded from Section 43B(h) per Ministry OM 02.07.2021"
21
+ }
22
+ }
23
+ ],
24
+ "computation": {
25
+ "archetype": "MSME_FISCAL_BOUNDARY_43BH",
26
+ "maxWrittenDays": 45,
27
+ "statutoryBaselineDays": 15,
28
+ "fiscalYearBoundaryMonth": 3,
29
+ "fiscalYearBoundaryDay": 31
30
+ },
31
+ "rounding": {
32
+ "transactionLine": "COMMERCIAL_PAISA",
33
+ "assessmentTotal": "INCOME_TAX_ACT_1961_SEC288B"
34
+ }
35
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "$schema": "https://mudraforge.in/schemas/statutory-ast-v2.1.json",
3
+ "sectionId": "ITA1961_SEC206C_1H",
4
+ "version": "2.1.0",
5
+ "title": "TCS on Sale of Goods Exceeding Fifty Lakh Rupees",
6
+ "governingStatute": "Income-tax Act, 1961",
7
+ "statutorySection": "Section 206C(1H)",
8
+ "successorStatute": "Income-tax Act, 2025",
9
+ "successorSection": "Section 206C(1H) (Omitted w.e.f. 1 April 2025)",
10
+ "successorTableItem": "OMITTED_SUNSET_BY_FINANCE_ACT_2025",
11
+ "transitionalCutoverDate": "2025-04-01",
12
+ "effectivePeriod": {
13
+ "validFrom": "2020-10-01",
14
+ "validTo": "2025-03-31"
15
+ },
16
+ "triggerPolicy": {
17
+ "type": "DEBIT_OR_RECEIPT",
18
+ "events": [
19
+ "PAYMENT_DISBURSEMENT"
20
+ ],
21
+ "statutoryBasis": "Section 206C(1H) at the time of receipt of amount"
22
+ },
23
+ "guards": [
24
+ {
25
+ "id": "GUARD_SUNSET_OMITTED_FINANCE_ACT_2025",
26
+ "field": "isPostSunset2025",
27
+ "operator": "EQ",
28
+ "value": true,
29
+ "onMatch": {
30
+ "action": "HALT_EXEMPT",
31
+ "disposition": "OMITTED_SUNSET_BY_FINANCE_ACT_2025",
32
+ "reason": "Section 206C(1H) was omitted effective 1 April 2025 by Finance Act, 2025."
33
+ }
34
+ },
35
+ {
36
+ "id": "GUARD_BUYER_LIABLE_FOR_194Q",
37
+ "field": "isBuyerDeducting194Q",
38
+ "operator": "EQ",
39
+ "value": true,
40
+ "onMatch": {
41
+ "action": "HALT_EXEMPT",
42
+ "disposition": "EXEMPT_BUYER_DEDUCTING_194Q",
43
+ "reason": "Section 206C(1H) second proviso: TCS not applicable if buyer is liable and deducting TDS under 194Q."
44
+ }
45
+ },
46
+ {
47
+ "id": "GUARD_MISSING_PAN_TCS_1_PERCENT",
48
+ "field": "payee.isPanValid",
49
+ "operator": "EQ",
50
+ "value": false,
51
+ "onMatch": {
52
+ "action": "OVERRIDE_RATE",
53
+ "overrideRateBps": 100,
54
+ "governingSection1961": "Section 206C(1H) Second Proviso (1% cap)",
55
+ "governingSection2025": "Section 206C(1H)"
56
+ }
57
+ }
58
+ ],
59
+ "computation": {
60
+ "archetype": "EXCESS_OVER_THRESHOLD",
61
+ "thresholdPaisa": "500000000",
62
+ "standardRateBps": 10,
63
+ "baseDetermination": "CUMULATIVE_RECEIPTS_IN_FINANCIAL_YEAR"
64
+ },
65
+ "rounding": {
66
+ "transactionLine": "COMMERCIAL_PAISA",
67
+ "assessmentTotal": "INCOME_TAX_ACT_1961_SEC288B"
68
+ }
69
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "$schema": "https://mudraforge.in/schemas/statutory-ast-v2.1.json",
3
+ "sectionId": "ITA1961_SEC194H",
4
+ "version": "2.1.0",
5
+ "title": "TDS on Commission or Brokerage",
6
+ "governingStatute": "Income-tax Act, 1961",
7
+ "statutorySection": "Section 194H",
8
+ "successorStatute": "Income-tax Act, 2025",
9
+ "successorSection": "Section 393(1), Table 1, Sl. No. 1(ii)",
10
+ "successorTableItem": "TABLE_1_SL_NO_1_II_COMMISSION",
11
+ "transitionalCutoverDate": "2026-04-01",
12
+ "effectivePeriod": {
13
+ "validFrom": "2001-06-01",
14
+ "validTo": null
15
+ },
16
+ "triggerPolicy": {
17
+ "type": "EARLIER_OF",
18
+ "events": [
19
+ "BOOK_CREDIT",
20
+ "PAYMENT_DISBURSEMENT"
21
+ ],
22
+ "statutoryBasis": "Section 194H earlier of credit or payment"
23
+ },
24
+ "guards": [
25
+ {
26
+ "id": "GUARD_MISSING_PAN_206AA",
27
+ "field": "payee.isPanValid",
28
+ "operator": "EQ",
29
+ "value": false,
30
+ "onMatch": {
31
+ "action": "OVERRIDE_RATE",
32
+ "overrideRateBps": 2000,
33
+ "governingSection1961": "Section 206AA (20% missing PAN)",
34
+ "governingSection2025": "Section 397(2) (20% missing PAN)"
35
+ }
36
+ },
37
+ {
38
+ "id": "GUARD_PRE_OCTOBER_2024_5_PERCENT",
39
+ "field": "isPreOctober2024",
40
+ "operator": "EQ",
41
+ "value": true,
42
+ "onMatch": {
43
+ "action": "OVERRIDE_RATE",
44
+ "overrideRateBps": 500,
45
+ "governingSection1961": "Section 194H prior to Finance (No. 2) Act 2024 (5%)",
46
+ "governingSection2025": "Section 393(1)"
47
+ }
48
+ }
49
+ ],
50
+ "computation": {
51
+ "archetype": "CLIFF_THRESHOLD",
52
+ "thresholdPaisa": "1500000",
53
+ "standardRateBps": 200,
54
+ "baseDetermination": "ANNUAL_AGGREGATE"
55
+ },
56
+ "rounding": {
57
+ "transactionLine": "COMMERCIAL_PAISA",
58
+ "assessmentTotal": "INCOME_TAX_ACT_1961_SEC288B"
59
+ }
60
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "$schema": "https://mudraforge.in/schemas/statutory-ast-v2.1.json",
3
+ "sectionId": "ITA1961_SEC194C",
4
+ "version": "2.1.0",
5
+ "title": "TDS on Payments to Contractors and Sub-Contractors",
6
+ "governingStatute": "Income-tax Act, 1961",
7
+ "statutorySection": "Section 194C",
8
+ "successorStatute": "Income-tax Act, 2025",
9
+ "successorSection": "Section 393(1), Table 1, Sl. No. 2",
10
+ "successorTableItem": "TABLE_1_SL_NO_2_CONTRACTORS",
11
+ "transitionalCutoverDate": "2026-04-01",
12
+ "effectivePeriod": {
13
+ "validFrom": "1972-06-01",
14
+ "validTo": null
15
+ },
16
+ "triggerPolicy": {
17
+ "type": "EARLIER_OF",
18
+ "events": [
19
+ "BOOK_CREDIT",
20
+ "PAYMENT_DISBURSEMENT"
21
+ ],
22
+ "statutoryBasis": "Section 194C(1) earlier of credit or payment"
23
+ },
24
+ "guards": [
25
+ {
26
+ "id": "GUARD_TRANSPORTER_EXEMPTION",
27
+ "field": "isTransporterExempt",
28
+ "operator": "EQ",
29
+ "value": true,
30
+ "onMatch": {
31
+ "action": "HALT_EXEMPT",
32
+ "disposition": "EXEMPT_TRANSPORTER_SECTION_194C_6",
33
+ "reason": "Section 194C(6): Goods transport operators owning ten or fewer carriages furnishing PAN declaration are exempt."
34
+ }
35
+ },
36
+ {
37
+ "id": "GUARD_MISSING_PAN_206AA",
38
+ "field": "payee.isPanValid",
39
+ "operator": "EQ",
40
+ "value": false,
41
+ "onMatch": {
42
+ "action": "OVERRIDE_RATE",
43
+ "overrideRateBps": 2000,
44
+ "governingSection1961": "Section 206AA (20% missing PAN)",
45
+ "governingSection2025": "Section 397(2) (20% missing PAN)"
46
+ }
47
+ },
48
+ {
49
+ "id": "GUARD_INDIVIDUAL_HUF_1_PERCENT",
50
+ "field": "isIndividualOrHuf",
51
+ "operator": "EQ",
52
+ "value": true,
53
+ "onMatch": {
54
+ "action": "OVERRIDE_RATE",
55
+ "overrideRateBps": 100,
56
+ "governingSection1961": "Section 194C(1)(a) (1% for Individual/HUF)",
57
+ "governingSection2025": "Section 393(1) Table 1 (1% for Individual/HUF)"
58
+ }
59
+ }
60
+ ],
61
+ "computation": {
62
+ "archetype": "CLIFF_THRESHOLD",
63
+ "thresholdPaisa": "3000000",
64
+ "standardRateBps": 200,
65
+ "baseDetermination": "CONTRACT_VALUE_OR_AGGREGATE_ANNUAL"
66
+ },
67
+ "rounding": {
68
+ "transactionLine": "COMMERCIAL_PAISA",
69
+ "assessmentTotal": "INCOME_TAX_ACT_1961_SEC288B"
70
+ }
71
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "$schema": "https://mudraforge.in/schemas/statutory-ast-v2.1.json",
3
+ "sectionId": "ITA1961_SEC194O",
4
+ "version": "2.1.0",
5
+ "title": "TDS on Payments by E-Commerce Operator to E-Commerce Participants",
6
+ "governingStatute": "Income-tax Act, 1961",
7
+ "statutorySection": "Section 194O",
8
+ "successorStatute": "Income-tax Act, 2025",
9
+ "successorSection": "Section 393(1), Table 1, Sl. No. 15",
10
+ "successorTableItem": "TABLE_1_SL_NO_15_ECOMMERCE",
11
+ "transitionalCutoverDate": "2026-04-01",
12
+ "effectivePeriod": {
13
+ "validFrom": "2020-10-01",
14
+ "validTo": null
15
+ },
16
+ "triggerPolicy": {
17
+ "type": "EARLIER_OF",
18
+ "events": [
19
+ "BOOK_CREDIT",
20
+ "PAYMENT_DISBURSEMENT"
21
+ ],
22
+ "statutoryBasis": "Section 194O earlier of credit or payment"
23
+ },
24
+ "guards": [
25
+ {
26
+ "id": "GUARD_MISSING_PAN_5_PERCENT",
27
+ "field": "payee.isPanValid",
28
+ "operator": "EQ",
29
+ "value": false,
30
+ "onMatch": {
31
+ "action": "OVERRIDE_RATE",
32
+ "overrideRateBps": 500,
33
+ "governingSection1961": "Section 206AA Second Proviso (5% e-commerce cap)",
34
+ "governingSection2025": "Section 397(2)"
35
+ }
36
+ }
37
+ ],
38
+ "computation": {
39
+ "archetype": "FLAT_RATE",
40
+ "thresholdPaisa": "0",
41
+ "standardRateBps": 10,
42
+ "baseDetermination": "GROSS_SALE_CONSIDERATION"
43
+ },
44
+ "rounding": {
45
+ "transactionLine": "COMMERCIAL_PAISA",
46
+ "assessmentTotal": "INCOME_TAX_ACT_1961_SEC288B"
47
+ }
48
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "$schema": "https://mudraforge.in/schemas/statutory-ast-v2.1.json",
3
+ "sectionId": "ITA1961_SEC194Q",
4
+ "version": "2.1.0",
5
+ "title": "Tax Deduction at Source on Purchase of Goods",
6
+ "governingStatute": "Income-tax Act, 1961",
7
+ "statutorySection": "Section 194Q",
8
+ "successorStatute": "Income-tax Act, 2025",
9
+ "successorSection": "Section 393(1), Table 1, Sl. No. 8(ii)",
10
+ "successorTableItem": "TABLE_1_SL_NO_8_II_PURCHASE_OF_GOODS",
11
+ "transitionalCutoverDate": "2026-04-01",
12
+ "effectivePeriod": {
13
+ "validFrom": "2021-07-01",
14
+ "validTo": null
15
+ },
16
+ "triggerPolicy": {
17
+ "type": "EARLIER_OF",
18
+ "events": [
19
+ "BOOK_CREDIT",
20
+ "PAYMENT_DISBURSEMENT"
21
+ ],
22
+ "statutoryBasis": "Section 194Q(1) earlier of credit or payment"
23
+ },
24
+ "guards": [
25
+ {
26
+ "id": "GUARD_FOREIGN_IMPORT",
27
+ "field": "isImportOfGoods",
28
+ "operator": "EQ",
29
+ "value": true,
30
+ "onMatch": {
31
+ "action": "HALT_EXEMPT",
32
+ "disposition": "EXEMPT_IMPORT_OF_GOODS_FOREIGN_VENDOR",
33
+ "reason": "CBDT Circular 13/2021 Question 3: Section 194Q does not apply to import of goods from non-residents."
34
+ }
35
+ },
36
+ {
37
+ "id": "GUARD_NON_RESIDENT_SELLER",
38
+ "field": "payee.isResident",
39
+ "operator": "EQ",
40
+ "value": false,
41
+ "onMatch": {
42
+ "action": "HALT_EXEMPT",
43
+ "disposition": "EXEMPT_IMPORT_OF_GOODS_FOREIGN_VENDOR",
44
+ "reason": "Non-resident seller without PE in India is exempt from 194Q."
45
+ }
46
+ },
47
+ {
48
+ "id": "GUARD_MISSING_OR_INOPERATIVE_PAN",
49
+ "field": "payee.isPanValid",
50
+ "operator": "EQ",
51
+ "value": false,
52
+ "onMatch": {
53
+ "action": "OVERRIDE_RATE",
54
+ "overrideRateBps": 500,
55
+ "governingSection1961": "Section 206AA(1) First Proviso (5% statutory cap for goods)",
56
+ "governingSection2025": "Section 397(2)(b)(i)(C) (5% statutory cap for goods)"
57
+ }
58
+ }
59
+ ],
60
+ "computation": {
61
+ "archetype": "EXCESS_OVER_THRESHOLD",
62
+ "thresholdPaisa": "500000000",
63
+ "standardRateBps": 10,
64
+ "baseDetermination": "CUMULATIVE_TURNOVER_IN_FINANCIAL_YEAR",
65
+ "notes": "Tax applies strictly to the incremental excess over 50 Lakhs."
66
+ },
67
+ "rounding": {
68
+ "transactionLine": "COMMERCIAL_PAISA",
69
+ "assessmentTotal": "INCOME_TAX_ACT_1961_SEC288B"
70
+ }
71
+ }