@mudraforge/statutory 2.11.0 → 2.13.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 (176) hide show
  1. package/CHANGELOG.md +172 -1
  2. package/CONTRIBUTING.md +2 -2
  3. package/README.md +14 -1
  4. package/SECURITY.md +2 -2
  5. package/SKILL.md +1 -1
  6. package/bin/cli.js +288 -27
  7. package/docs/ACCOUNTING_ASSURANCE_AUDIT_DOSSIER.md +276 -0
  8. package/docs/ARCHITECTURE.md +76 -53
  9. package/docs/ARCHITECTURE_DECISIONS.md +22 -2
  10. package/docs/CASE_01_FORM_TEXT.txt +48 -0
  11. package/docs/CATALOG.md +405 -39
  12. package/docs/CA_PILOT_BENCHMARK_CASES.md +282 -0
  13. package/docs/CORPUS_QUALITY.md +31 -22
  14. package/docs/DOMAIN_BREADTH_AND_DEPTH_COMPARISON.md +5 -5
  15. package/docs/ENTERPRISE_GOVERNANCE.md +2 -1
  16. package/docs/OKF_MAINTENANCE_SOP.md +5 -5
  17. package/docs/PILOT_EVALUATION_GUIDE.md +5 -4
  18. package/docs/PROVENANCE.md +6 -6
  19. package/docs/VERIFICATION.md +6 -6
  20. package/okf/corporate_ma_restructuring/business_combinations_indas_103/ast.json +20 -0
  21. package/okf/corporate_ma_restructuring/business_combinations_indas_103/circulars/mca_notification_indas_103_business_combinations.md +41 -0
  22. package/okf/corporate_ma_restructuring/business_combinations_indas_103/forms/purchase_price_allocation_schedule.json +110 -0
  23. package/okf/corporate_ma_restructuring/business_combinations_indas_103/section.json +65 -0
  24. package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/ast.json +20 -0
  25. package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/circulars/mca_notification_indas_36_impairment.md +45 -0
  26. package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/forms/cgu_impairment_testing_register.json +53 -0
  27. package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/section.json +61 -0
  28. package/okf/corporate_ma_restructuring/loss_carryforward_sec79/ast.json +33 -0
  29. package/okf/corporate_ma_restructuring/share_based_payments_indas_102/ast.json +20 -0
  30. package/okf/corporate_ma_restructuring/share_based_payments_indas_102/circulars/icai_guidance_share_based_payments.md +37 -0
  31. package/okf/corporate_ma_restructuring/share_based_payments_indas_102/forms/esop_graded_vesting_amortization_schedule.json +49 -0
  32. package/okf/corporate_ma_restructuring/share_based_payments_indas_102/section.json +60 -0
  33. package/okf/corporate_ma_restructuring/slump_sale_50b/ast.json +21 -0
  34. package/okf/corporate_ma_restructuring/tax_clearance_sec281/ast.json +21 -0
  35. package/okf/direct_tax/corporate_tax_115baa_115jb/ast.json +23 -0
  36. package/okf/direct_tax/income_taxes_deferred_tax_indas_12/ast.json +20 -0
  37. package/okf/direct_tax/income_taxes_deferred_tax_indas_12/circulars/mca_notification_indas_12_income_taxes.md +40 -0
  38. package/okf/direct_tax/income_taxes_deferred_tax_indas_12/forms/deferred_tax_asset_liability_reconciliation_schedule.json +46 -0
  39. package/okf/direct_tax/income_taxes_deferred_tax_indas_12/section.json +61 -0
  40. package/okf/direct_tax/special_rates_non_filer_206ab/ast.json +26 -0
  41. package/okf/direct_tax/statutory_disallowance_43b/ast.json +35 -0
  42. package/okf/direct_tax/tcs_goods_206c_1h/ast.json +69 -0
  43. package/okf/direct_tax/tds_commission_194h/ast.json +60 -0
  44. package/okf/direct_tax/tds_commission_194h/section.json +5 -4
  45. package/okf/direct_tax/tds_contractor_194c/ast.json +71 -0
  46. package/okf/direct_tax/tds_contractor_194c/section.json +3 -3
  47. package/okf/direct_tax/tds_ecommerce_194o/ast.json +48 -0
  48. package/okf/direct_tax/tds_ecommerce_194o/section.json +3 -3
  49. package/okf/direct_tax/tds_goods_194q/ast.json +71 -0
  50. package/okf/direct_tax/tds_goods_194q/circulars/cbdt_circular_13_2021_guidelines.md +2 -2
  51. package/okf/direct_tax/tds_goods_194q/section.json +9 -3
  52. package/okf/direct_tax/tds_goods_393/ast.json +59 -0
  53. package/okf/direct_tax/tds_goods_393/section.json +6 -4
  54. package/okf/direct_tax/tds_individual_contract_194m/ast.json +59 -0
  55. package/okf/direct_tax/tds_individual_contract_194m/section.json +3 -3
  56. package/okf/direct_tax/tds_interest_194a/ast.json +59 -0
  57. package/okf/direct_tax/tds_interest_194a/section.json +7 -4
  58. package/okf/direct_tax/tds_perquisites_194r/ast.json +47 -0
  59. package/okf/direct_tax/tds_perquisites_194r/section.json +1 -1
  60. package/okf/direct_tax/tds_property_194ia/ast.json +70 -0
  61. package/okf/direct_tax/tds_property_194ia/section.json +3 -3
  62. package/okf/direct_tax/tds_rent_194i/ast.json +60 -0
  63. package/okf/direct_tax/tds_rent_194i/section.json +5 -4
  64. package/okf/direct_tax/tds_rent_individual_194ib/ast.json +59 -0
  65. package/okf/direct_tax/tds_rent_individual_194ib/section.json +2 -2
  66. package/okf/direct_tax/tds_services_194j/ast.json +60 -0
  67. package/okf/direct_tax/tds_services_194j/circulars/cbdt_circular_03_2020_fts_rate_cut.md +1 -1
  68. package/okf/direct_tax/tds_services_194j/section.json +10 -3
  69. package/okf/indirect_tax_gst/blocked_itc_17_5/ast.json +26 -0
  70. package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/ast.json +26 -0
  71. package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/circulars/cbic_circular_170_2022_itc_reporting.md +30 -0
  72. package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/circulars/cbic_notification_18_2022_cutoff_amendment.md +26 -0
  73. package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/forms/gstr_3b_table_4b1_reversal_schedule.json +101 -0
  74. package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/forms/rule_42_43_annual_reconciliation_worksheet.json +87 -0
  75. package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/section.json +65 -0
  76. package/okf/indirect_tax_gst/composite_mixed_supplies_sec8/ast.json +21 -0
  77. package/okf/indirect_tax_gst/composition_levy_sec10/ast.json +23 -0
  78. package/okf/indirect_tax_gst/credit_debit_notes_sec34/ast.json +21 -0
  79. package/okf/indirect_tax_gst/e_invoicing_rule48_4/ast.json +20 -0
  80. package/okf/indirect_tax_gst/export_services_lut_sec16/ast.json +20 -0
  81. package/okf/indirect_tax_gst/gst_tds_sec51/ast.json +23 -0
  82. package/okf/indirect_tax_gst/itc_eligibility_16_2/ast.json +20 -0
  83. package/okf/indirect_tax_gst/itc_reversal_rule37_37a/ast.json +45 -0
  84. package/okf/indirect_tax_gst/itc_reversal_rule37_37a/circulars/cbic_circular_192_2023_ecl_interest_calculation.md +36 -0
  85. package/okf/indirect_tax_gst/itc_reversal_rule37_37a/section.json +8 -1
  86. package/okf/indirect_tax_gst/rcm_liability_sec9_3/ast.json +26 -0
  87. package/okf/indirect_tax_gst/rcm_liability_sec9_3/circulars/cbic_notification_07_2025_composition_rent_exclusion.md +41 -0
  88. package/okf/indirect_tax_gst/rcm_liability_sec9_3/circulars/cbic_notification_09_2024_renting_rcm.md +37 -0
  89. package/okf/indirect_tax_gst/rcm_liability_sec9_3/circulars/gst_council_55th_meeting_renting_rcm_regularization.md +31 -0
  90. package/okf/indirect_tax_gst/rcm_liability_sec9_3/section.json +24 -2
  91. package/okf/international_tax/cross_border_remittance_195/ast.json +39 -0
  92. package/okf/international_tax/financial_instruments_ecl_indas_109/ast.json +24 -0
  93. package/okf/international_tax/financial_instruments_ecl_indas_109/circulars/mca_notification_indas_109_financial_instruments.md +43 -0
  94. package/okf/international_tax/financial_instruments_ecl_indas_109/forms/indas_109_ecl_provision_matrix_schedule.json +43 -0
  95. package/okf/international_tax/financial_instruments_ecl_indas_109/section.json +62 -0
  96. package/okf/international_tax/foreign_exchange_indas_21_109/ast.json +20 -0
  97. package/okf/international_tax/foreign_tax_credit_irc_901_904/ast.json +20 -0
  98. package/okf/international_tax/transfer_pricing_alp_92c/ast.json +25 -0
  99. package/okf/manifest.json +117 -20
  100. package/okf/msme_commercial/delayed_payments_15_16/ast.json +38 -0
  101. package/okf/msme_commercial/enterprise_classification_sec7/ast.json +25 -0
  102. package/okf/msme_commercial/lease_accounting_indas_116/ast.json +20 -0
  103. package/okf/msme_commercial/lease_accounting_indas_116/circulars/mca_notification_indas_116_leases.md +48 -0
  104. package/okf/msme_commercial/lease_accounting_indas_116/forms/lease_rou_asset_and_liability_schedule.json +55 -0
  105. package/okf/msme_commercial/lease_accounting_indas_116/section.json +67 -0
  106. package/okf/msme_commercial/mca_msme_1_filing/ast.json +20 -0
  107. package/okf/msme_commercial/provisions_contingencies_indas_37/ast.json +20 -0
  108. package/okf/msme_commercial/provisions_contingencies_indas_37/circulars/mca_notification_indas_37_provisions.md +36 -0
  109. package/okf/msme_commercial/provisions_contingencies_indas_37/forms/provisions_and_contingent_liabilities_register.json +38 -0
  110. package/okf/msme_commercial/provisions_contingencies_indas_37/section.json +61 -0
  111. package/okf/msme_commercial/revenue_recognition_indas_115/ast.json +20 -0
  112. package/okf/msme_commercial/revenue_recognition_indas_115/circulars/mca_notification_indas_115_revenue_contracts.md +56 -0
  113. package/okf/msme_commercial/revenue_recognition_indas_115/forms/revenue_contract_5step_allocation_schedule.json +54 -0
  114. package/okf/msme_commercial/revenue_recognition_indas_115/section.json +69 -0
  115. package/okf/msme_commercial/statutory_disclosures_sec22/ast.json +21 -0
  116. package/package.json +22 -1
  117. package/src/calculators.js +2195 -260
  118. package/src/constants.js +1 -1
  119. package/src/index.js +421 -23
  120. package/src/payroll.js +506 -0
  121. package/src/tally.js +812 -0
  122. package/src/usvm/evaluation_vm.js +504 -0
  123. package/src/usvm/index.js +65 -0
  124. package/src/usvm/math_rational.js +165 -0
  125. package/src/usvm/rules/sec_115baa_115jb_mat.json +23 -0
  126. package/src/usvm/rules/sec_192_salary_tds.json +23 -0
  127. package/src/usvm/rules/sec_194a_interest.json +59 -0
  128. package/src/usvm/rules/sec_194c_contractors.json +71 -0
  129. package/src/usvm/rules/sec_194h_commission.json +60 -0
  130. package/src/usvm/rules/sec_194i_rent.json +60 -0
  131. package/src/usvm/rules/sec_194ia_property.json +70 -0
  132. package/src/usvm/rules/sec_194ib_rent_ind.json +59 -0
  133. package/src/usvm/rules/sec_194j_services.json +60 -0
  134. package/src/usvm/rules/sec_194m_contract_ind.json +59 -0
  135. package/src/usvm/rules/sec_194o_ecommerce.json +48 -0
  136. package/src/usvm/rules/sec_194q_goods.json +71 -0
  137. package/src/usvm/rules/sec_194r_perquisites.json +47 -0
  138. package/src/usvm/rules/sec_195_cross_border.json +39 -0
  139. package/src/usvm/rules/sec_206ab_non_filer.json +26 -0
  140. package/src/usvm/rules/sec_206c1h_tcs.json +69 -0
  141. package/src/usvm/rules/sec_281_tax_clearance.json +21 -0
  142. package/src/usvm/rules/sec_393_goods.json +59 -0
  143. package/src/usvm/rules/sec_43bh_disallowance.json +35 -0
  144. package/src/usvm/rules/sec_50b_slump_sale.json +21 -0
  145. package/src/usvm/rules/sec_79_loss_continuity.json +33 -0
  146. package/src/usvm/rules/sec_92c_transfer_pricing.json +25 -0
  147. package/src/usvm/rules/sec_ftc_dtaa_relief.json +20 -0
  148. package/src/usvm/rules/sec_gst_blocked_itc_17_5.json +26 -0
  149. package/src/usvm/rules/sec_gst_composite_mixed_8.json +21 -0
  150. package/src/usvm/rules/sec_gst_composition_levy_10.json +23 -0
  151. package/src/usvm/rules/sec_gst_credit_debit_notes_34.json +21 -0
  152. package/src/usvm/rules/sec_gst_einvoicing_rule48_4.json +20 -0
  153. package/src/usvm/rules/sec_gst_ewaybill_rule138.json +21 -0
  154. package/src/usvm/rules/sec_gst_export_lut_16.json +20 -0
  155. package/src/usvm/rules/sec_gst_itc_eligibility_16_2.json +20 -0
  156. package/src/usvm/rules/sec_gst_itc_reversal_rule37_37a.json +45 -0
  157. package/src/usvm/rules/sec_gst_rcm_liability_9_3.json +26 -0
  158. package/src/usvm/rules/sec_gst_rule42_43_apportionment.json +26 -0
  159. package/src/usvm/rules/sec_gst_tds_sec51.json +23 -0
  160. package/src/usvm/rules/sec_indas102_esop.json +20 -0
  161. package/src/usvm/rules/sec_indas103_mna.json +20 -0
  162. package/src/usvm/rules/sec_indas109_ecl.json +24 -0
  163. package/src/usvm/rules/sec_indas115_revenue.json +20 -0
  164. package/src/usvm/rules/sec_indas116_leases.json +20 -0
  165. package/src/usvm/rules/sec_indas12_deferred_tax.json +20 -0
  166. package/src/usvm/rules/sec_indas21_fx_reval.json +20 -0
  167. package/src/usvm/rules/sec_indas36_impairment.json +20 -0
  168. package/src/usvm/rules/sec_indas37_provisions.json +20 -0
  169. package/src/usvm/rules/sec_msme_classification_sec7.json +25 -0
  170. package/src/usvm/rules/sec_msme_delayed_payments_15_16.json +38 -0
  171. package/src/usvm/rules/sec_msme_disclosures_sec22.json +21 -0
  172. package/src/usvm/rules/sec_msme_mca_form_1.json +20 -0
  173. package/src/usvm/schemas/statutory_ast_schema.js +203 -0
  174. package/src/usvm/usvm_domain_evaluators.js +1021 -0
  175. package/src/zoho_gstr2b.js +2964 -0
  176. package/types/index.d.ts +515 -0
package/src/constants.js CHANGED
@@ -6,5 +6,5 @@
6
6
  * @license MIT
7
7
  */
8
8
 
9
- export const STATUTORY_CLIENT_VERSION = '2.11.0';
9
+ export const STATUTORY_CLIENT_VERSION = '2.13.0';
10
10
  export const DEFAULT_BASE_URL = 'https://api.mudraforge.in';
package/src/index.js CHANGED
@@ -14,15 +14,35 @@ import os from 'node:os';
14
14
  import crypto from 'node:crypto';
15
15
  import dns from 'node:dns';
16
16
  import { fileURLToPath } from 'node:url';
17
+ import {
18
+ evaluateStatutoryAst,
19
+ resolveTemporalCrystallization
20
+ } from './usvm/index.js';
17
21
  import {
18
22
  roundToPaisa,
19
23
  roundSection288B,
24
+ cleanNumericAmount,
25
+ toIntegerPaise,
26
+ fromIntegerPaise,
27
+ MalformedNumericInputError,
28
+ MissingMandatoryParameterError,
29
+ assertMandatoryNumeric,
20
30
  calculateCorporateTaxMatVsConcessional,
21
31
  evaluatePlaceOfSupplyAndLut,
22
32
  calculateTransferPricingAlp,
23
33
  evaluateSection79LossContinuity,
24
34
  evaluateSection281TaxClearance,
25
35
  revalueForeignExchangeIndAs109,
36
+ calculateBusinessCombinationsIndAs103,
37
+ calculateImpairmentIndAs36,
38
+ calculateRevenueAllocationIndAs115,
39
+ calculateLeaseAmortizationIndAs116,
40
+ calculateExpectedCreditLossIndAs109,
41
+ calculateEsopAmortizationIndAs102,
42
+ calculateDeferredTaxIndAs12,
43
+ evaluateProvisionsAndContingenciesIndAs37,
44
+ calculateForeignCurrencyIndAs21,
45
+ resolveMissingPanPenaltyFloor,
26
46
  evaluateSection194Q,
27
47
  evaluateSection194C,
28
48
  evaluateSection194H,
@@ -41,6 +61,9 @@ import {
41
61
  evaluateSection43bH,
42
62
  calculateMsmeCompoundInterest,
43
63
  calculateAdvanceTaxAndInterest,
64
+ calculateRule42InputServiceReversal,
65
+ reconcileRule42AnnualTrueUp,
66
+ calculateRule43CapitalGoodsReversal,
44
67
  calculateGstItcApportionmentRule42_43,
45
68
  evaluateCrossBorderRemittance,
46
69
  generateMsme1AndScheduleThreeAging,
@@ -58,6 +81,27 @@ import {
58
81
  STATUTORY_OUTCOMES_DICTIONARY,
59
82
  enrichWithOutcomeExplanation
60
83
  } from './outcomes.js';
84
+ import {
85
+ parseTallyDaybookCsv,
86
+ parseTallyDaybookXml,
87
+ reconcile194QDaybook,
88
+ generateTally194QJournalXml,
89
+ generateAuditMarkdownReport,
90
+ getIndianFinancialYear
91
+ } from './tally.js';
92
+ import {
93
+ parseZohoBillsCsv,
94
+ parseZohoBillsJson,
95
+ parseGstr2bJson,
96
+ reconcileZohoGstr2b,
97
+ generateGstr2bAuditMarkdownReport,
98
+ normalizeInvoiceNumber,
99
+ normalizeGstin,
100
+ calculateOverdueStartDate,
101
+ calculateEclUtilizationInterest,
102
+ calculatePortfolioEclUtilizationInterest,
103
+ buildEvidenceProvenance
104
+ } from './zoho_gstr2b.js';
61
105
 
62
106
  import { STATUTORY_CLIENT_VERSION, DEFAULT_BASE_URL } from './constants.js';
63
107
 
@@ -77,7 +121,7 @@ export { STATUTORY_CLIENT_VERSION, DEFAULT_BASE_URL };
77
121
  /**
78
122
  * Current verified Merkle root digest for the active OKF v0.2 corpus.
79
123
  */
80
- export const CURRENT_RELEASE_MERKLE_ROOT = 'sha256-bf547512a57f26eae9a5ebcb9f0ec41c397421366b1b4223ab9e17d282721ca7';
124
+ export const CURRENT_RELEASE_MERKLE_ROOT = 'sha256-7ffc75e8611a9c966eea756dd544fdae9144e2318d3478633232bb876d05e364';
81
125
  export const MERKLE_ROOT_OKF_V2 = CURRENT_RELEASE_MERKLE_ROOT;
82
126
 
83
127
  /**
@@ -85,6 +129,13 @@ export const MERKLE_ROOT_OKF_V2 = CURRENT_RELEASE_MERKLE_ROOT;
85
129
  * Prevents unauthorized bundle substitution attacks even if an attacker controls the remote endpoint.
86
130
  */
87
131
  export const PINNED_RELEASE_ROOTS = new Set([
132
+ 'sha256-7ffc75e8611a9c966eea756dd544fdae9144e2318d3478633232bb876d05e364', // feat/usvm-declarative-architecture (46 Declarative ASTs across 5 canonical domains)
133
+ 'sha256-318004673a779499e82fd7316c7a6728f3bcdaf449bb4a557b6bd685b899dee3', // fix/public-okf-table1-sl-nos-and-temporal-thresholds (Section 393 Table 1 Sl Nos & 2025 Act thresholds)
134
+ 'sha256-b17c37b2724aece2a28beaab5720a777ae27e661ac51f1436be6eff3ca5ef64b', // feat/okf-accounting-domain-expansion (46 Sections across 5 Domains, 52 Circulars, 47 Forms)
135
+ 'sha256-a94baf08cbdea064a7b1bd25c1e1311821bf75e9b0d15cc8e0648339d487c79b', // feat/zoho-gstr2b-ap-reconciliation (38 Sections across 5 Domains, 44 Circulars, 39 Forms)
136
+ 'sha256-df76c16ed86673426eeb87fafa1c23712830ce5314339ff17fbb2e0e1795e046', // feat/notification-07-2025-composition-rent-rcm-exclusion (38 Sections across 5 Domains, 42 Circulars)
137
+ 'sha256-f7709f6a77a3b5ae16d69baf49f6e5c69bb01e29a4f13a506eb757220bf68e03', // feat/notification-09-2024-commercial-rent-rcm (38 Sections across 5 Domains, 41 Circulars)
138
+ 'sha256-2e402bb02fe71939c79b9f11ad737d20faac21daf8e27417cb13ec1933511c19', // feat/gst-rule-42-43 (38 Sections across 5 Domains)
88
139
  'sha256-feb1555f10c9f5c70de18ef340e0ba6cf1f060fb19cae866aa36240345c46f3a', // feat/rent-194ib-contract-194m (37 Sections across 5 Domains)
89
140
  'sha256-02090e4063a863e3486401215469350c911dc0c9a24855e1d9db2903946aa644', // feat/perquisites-194r (35 Sections across 5 Domains)
90
141
  'sha256-bd351719a8235c44f2bac87cc347423baa8ac3ecb74c0ee63d1fffa9f33dbebe', // feat/property-194ia (35 Sections across 5 Domains)
@@ -870,6 +921,13 @@ export function lookupLocalStatute(section, okfDir = DEFAULT_LOCAL_OKF_DIR) {
870
921
  forms: fs.existsSync(formsDir) ? fs.readdirSync(formsDir).filter(f => f.endsWith('.json') || f.endsWith('.md')) : []
871
922
  };
872
923
 
924
+ const astPath = path.join(parentDir, 'ast.json');
925
+ if (fs.existsSync(astPath)) {
926
+ try {
927
+ data.ast = JSON.parse(fs.readFileSync(astPath, 'utf8'));
928
+ } catch (_) {}
929
+ }
930
+
873
931
  return data;
874
932
  }
875
933
  return null;
@@ -1847,6 +1905,69 @@ export class StatutoryClient {
1847
1905
  return revalueForeignExchangeIndAs109(payload);
1848
1906
  }
1849
1907
 
1908
+ /**
1909
+ * Business Combinations & Purchase Price Allocation (PPA) under Ind AS 103 / IFRS 3 / ASC 805.
1910
+ */
1911
+ calculateBusinessCombinationsIndAs103(payload) {
1912
+ return calculateBusinessCombinationsIndAs103(payload);
1913
+ }
1914
+
1915
+ /**
1916
+ * Asset & CGU Impairment Testing & DCF Value in Use under Ind AS 36 / IAS 36 / ASC 360.
1917
+ */
1918
+ calculateImpairmentIndAs36(payload) {
1919
+ return calculateImpairmentIndAs36(payload);
1920
+ }
1921
+
1922
+ /**
1923
+ * 5-Step Revenue Recognition & Relative SSP Allocation under Ind AS 115 / IFRS 15 / ASC 606.
1924
+ */
1925
+ calculateRevenueAllocationIndAs115(payload) {
1926
+ return calculateRevenueAllocationIndAs115(payload);
1927
+ }
1928
+
1929
+ /**
1930
+ * Right-of-Use Asset & Lease Liability Amortization under Ind AS 116 / IFRS 16 / ASC 842.
1931
+ */
1932
+ calculateLeaseAmortizationIndAs116(payload) {
1933
+ return calculateLeaseAmortizationIndAs116(payload);
1934
+ }
1935
+
1936
+ /**
1937
+ * Expected Credit Loss (ECL) Impairment under Ind AS 109 / IFRS 9 / ASC 326.
1938
+ */
1939
+ calculateExpectedCreditLossIndAs109(payload) {
1940
+ return calculateExpectedCreditLossIndAs109(payload);
1941
+ }
1942
+
1943
+ /**
1944
+ * ESOP Graded Vesting Front-Loaded Amortization under Ind AS 102 / IFRS 2 / ASC 718.
1945
+ */
1946
+ calculateEsopAmortizationIndAs102(payload) {
1947
+ return calculateEsopAmortizationIndAs102(payload);
1948
+ }
1949
+
1950
+ /**
1951
+ * Balance Sheet Deferred Tax (DTA / DTL) and ETR Reconciliation under Ind AS 12 / IAS 12 / ASC 740.
1952
+ */
1953
+ calculateDeferredTaxIndAs12(payload) {
1954
+ return calculateDeferredTaxIndAs12(payload);
1955
+ }
1956
+
1957
+ /**
1958
+ * Provisions, Contingent Liabilities & Tax Dispute Triangulation under Ind AS 37 / IAS 37 / ASC 450.
1959
+ */
1960
+ evaluateProvisionsAndContingenciesIndAs37(payload) {
1961
+ return evaluateProvisionsAndContingenciesIndAs37(payload);
1962
+ }
1963
+
1964
+ /**
1965
+ * Foreign Currency Monetary Revaluation & FCTR Translation under Ind AS 21 / IAS 21 / ASC 830.
1966
+ */
1967
+ calculateForeignCurrencyIndAs21(payload) {
1968
+ return calculateForeignCurrencyIndAs21(payload);
1969
+ }
1970
+
1850
1971
  /**
1851
1972
  * Section 194Q: Deduction of tax at source on purchase of goods exceeding ₹50 Lakh.
1852
1973
  */
@@ -1952,6 +2073,34 @@ export class StatutoryClient {
1952
2073
  return calculateRule37ASupplierNonFilingReversal(payload);
1953
2074
  }
1954
2075
 
2076
+ /**
2077
+ * Rule 42: Inputs and input services common ITC reversal (monthly provisional).
2078
+ */
2079
+ calculateRule42InputServiceReversal(payload) {
2080
+ return calculateRule42InputServiceReversal(payload);
2081
+ }
2082
+
2083
+ /**
2084
+ * Rule 42(2): Annual common credit true-up reconciliation & Section 50(1) interest.
2085
+ */
2086
+ reconcileRule42AnnualTrueUp(payload) {
2087
+ return reconcileRule42AnnualTrueUp(payload);
2088
+ }
2089
+
2090
+ /**
2091
+ * Rule 43: Capital goods common ITC 60-month amortisation and reversal.
2092
+ */
2093
+ calculateRule43CapitalGoodsReversal(payload) {
2094
+ return calculateRule43CapitalGoodsReversal(payload);
2095
+ }
2096
+
2097
+ /**
2098
+ * Rule 42 & 43: Combined input tax credit apportionment orchestrator.
2099
+ */
2100
+ calculateGstItcApportionmentRule42_43(payload) {
2101
+ return calculateGstItcApportionmentRule42_43(payload);
2102
+ }
2103
+
1955
2104
  /**
1956
2105
  * MSMED Act Section 16: Compound interest with monthly rests at 3x RBI Bank Rate.
1957
2106
  */
@@ -1973,6 +2122,211 @@ export class StatutoryClient {
1973
2122
  return evaluateCrossBorderRemittance(payload);
1974
2123
  }
1975
2124
 
2125
+ /**
2126
+ * Parse raw Tally or ERP daybook CSV text into normalized vouchers.
2127
+ * @param {string} csvText
2128
+ */
2129
+ parseTallyDaybookCsv(csvText) {
2130
+ return parseTallyDaybookCsv(csvText);
2131
+ }
2132
+
2133
+ /**
2134
+ * Parse raw Tally XML daybook export into normalized vouchers.
2135
+ * @param {string} xmlText
2136
+ */
2137
+ parseTallyDaybookXml(xmlText) {
2138
+ return parseTallyDaybookXml(xmlText);
2139
+ }
2140
+
2141
+ /**
2142
+ * Reconcile daybook vouchers against Section 194Q and Section 40(a)(ia) rules.
2143
+ * @param {Array<Object>} vouchers
2144
+ * @param {Object} [options]
2145
+ */
2146
+ reconcileDaybook(vouchers, options = {}) {
2147
+ return reconcile194QDaybook(vouchers, options);
2148
+ }
2149
+
2150
+ /**
2151
+ * Programmatic alias for reconcileDaybook.
2152
+ */
2153
+ reconcile194QDaybook(vouchers, options = {}) {
2154
+ return reconcile194QDaybook(vouchers, options);
2155
+ }
2156
+
2157
+ /**
2158
+ * Generate Tally-compliant XML compensating journal vouchers for unwithheld TDS.
2159
+ * @param {Object} reconciliationResult
2160
+ * @param {Object} [options]
2161
+ */
2162
+ generateTallyJournalXml(reconciliationResult, options = {}) {
2163
+ return generateTally194QJournalXml(reconciliationResult, options);
2164
+ }
2165
+
2166
+ /**
2167
+ * Programmatic alias for generateTallyJournalXml.
2168
+ */
2169
+ generateTally194QJournalXml(reconciliationResult, options = {}) {
2170
+ return generateTally194QJournalXml(reconciliationResult, options);
2171
+ }
2172
+
2173
+ /**
2174
+ * Format a clean Markdown audit exception report for Form 3CD working papers.
2175
+ * @param {Object} reconciliationResult
2176
+ */
2177
+ generateAuditReport(reconciliationResult) {
2178
+ return generateAuditMarkdownReport(reconciliationResult);
2179
+ }
2180
+
2181
+ /**
2182
+ * Parse raw Zoho Books Bills CSV text into normalized bill records.
2183
+ * @param {string} csvText
2184
+ */
2185
+ parseZohoBillsCsv(csvText) {
2186
+ return parseZohoBillsCsv(csvText);
2187
+ }
2188
+
2189
+ /**
2190
+ * Parse raw Zoho Books API JSON payload into normalized bill records.
2191
+ * @param {Object|string} jsonData
2192
+ */
2193
+ parseZohoBillsJson(jsonData) {
2194
+ return parseZohoBillsJson(jsonData);
2195
+ }
2196
+
2197
+ /**
2198
+ * Parse raw GST Portal Form GSTR-2B JSON payload into normalized invoice and CDNR records.
2199
+ * @param {Object|string} gstr2bData
2200
+ */
2201
+ parseGstr2bJson(gstr2bData) {
2202
+ return parseGstr2bJson(gstr2bData);
2203
+ }
2204
+
2205
+ /**
2206
+ * Reconcile Zoho Books AP Bills with Form GSTR-2B and audit Rule 37 180-day aging.
2207
+ * @param {Object} params
2208
+ * @param {Array<Object>|string} params.zohoBills
2209
+ * @param {Array<Object>|string} params.gstr2b
2210
+ * @param {Object} [params.options]
2211
+ */
2212
+ reconcileZohoGstr2b(params) {
2213
+ return reconcileZohoGstr2b(params);
2214
+ }
2215
+
2216
+ /**
2217
+ * Generate an executive Markdown audit exception memorandum for Zoho Books & GSTR-2B.
2218
+ * @param {Object} reconResult
2219
+ */
2220
+ generateGstr2bAuditMarkdownReport(reconResult) {
2221
+ return generateGstr2bAuditMarkdownReport(reconResult);
2222
+ }
2223
+
2224
+ /**
2225
+ * Programmatic alias for generateGstr2bAuditMarkdownReport.
2226
+ */
2227
+ generateGstr2bAuditReport(reconResult) {
2228
+ return generateGstr2bAuditMarkdownReport(reconResult);
2229
+ }
2230
+
2231
+ /**
2232
+ * Reconstruct cumulative portfolio ECL utilization for multiple overlapping overdue invoices under Rule 88B(3).
2233
+ * @param {Object} params
2234
+ */
2235
+ calculatePortfolioEclUtilizationInterest(params) {
2236
+ return calculatePortfolioEclUtilizationInterest(params);
2237
+ }
2238
+
2239
+ /**
2240
+ * Run regulatory watchtower surveillance and generate Empanelment Freshness Certificate.
2241
+ * @param {Object} [options]
2242
+ */
2243
+ async runWatchtower(options = {}) {
2244
+ const { runStatutoryWatchtower: runner } = await import('../scripts/watchtower.js');
2245
+ return runner({ okfDir: this.okfDir, ...options });
2246
+ }
2247
+
2248
+ /**
2249
+ * Calculate exact Day 180 overdue start date for an invoice.
2250
+ * @param {string} billDateIso
2251
+ */
2252
+ calculateOverdueStartDate(billDateIso) {
2253
+ return calculateOverdueStartDate(billDateIso);
2254
+ }
2255
+
2256
+ /**
2257
+ * Calculate chronological interest under Section 50(1) read with Rule 88B(3)
2258
+ * across Electronic Credit Ledger (ECL) movements.
2259
+ * @param {Object} params
2260
+ */
2261
+ calculateEclUtilizationInterest(params) {
2262
+ return calculateEclUtilizationInterest(params);
2263
+ }
2264
+
2265
+ /**
2266
+ * Construct an immutable evidence provenance record for a reconciliation item.
2267
+ * @param {Object} params
2268
+ */
2269
+ buildEvidenceProvenance(params) {
2270
+ return buildEvidenceProvenance(params);
2271
+ }
2272
+
2273
+ /**
2274
+ * Normalize invoice number for exact and alphanumeric canonical matching.
2275
+ * @param {string} raw
2276
+ */
2277
+ normalizeInvoiceNumber(raw) {
2278
+ return normalizeInvoiceNumber(raw);
2279
+ }
2280
+
2281
+ /**
2282
+ * Normalize and validate GSTIN string.
2283
+ * @param {string} raw
2284
+ */
2285
+ normalizeGstin(raw) {
2286
+ return normalizeGstin(raw);
2287
+ }
2288
+
2289
+ /**
2290
+ * Programmatic alias for generateAuditReport.
2291
+ */
2292
+ generateAuditMarkdownReport(reconciliationResult) {
2293
+ return generateAuditMarkdownReport(reconciliationResult);
2294
+ }
2295
+
2296
+ /**
2297
+ * Clean and normalize raw accounting numeric input.
2298
+ * @param {any} val
2299
+ * @param {Object} [options]
2300
+ */
2301
+ cleanNumericAmount(val, options = {}) {
2302
+ return cleanNumericAmount(val, options);
2303
+ }
2304
+
2305
+ /**
2306
+ * Round an amount to paisa precision (2 decimal places).
2307
+ * @param {any} amount
2308
+ */
2309
+ roundToPaisa(amount) {
2310
+ return roundToPaisa(amount);
2311
+ }
2312
+
2313
+ /**
2314
+ * Convert rupee amount to integer paise for zero-drift arithmetic.
2315
+ * @param {any} amount
2316
+ * @param {string} [fieldName='amount']
2317
+ */
2318
+ toIntegerPaise(amount, fieldName = 'amount') {
2319
+ return toIntegerPaise(amount, fieldName);
2320
+ }
2321
+
2322
+ /**
2323
+ * Convert integer paise back to rounded rupees.
2324
+ * @param {number} paise
2325
+ */
2326
+ fromIntegerPaise(paise) {
2327
+ return fromIntegerPaise(paise);
2328
+ }
2329
+
1976
2330
  /**
1977
2331
  * Retrieve statutory outcomes and disposition codes.
1978
2332
  * @param {string} [provision] Optional section code or provision alias
@@ -2217,7 +2571,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
2217
2571
  successor: {
2218
2572
  act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
2219
2573
  sectionCode: '393',
2220
- statutorySection: 'Section 393(1), Table 8, Item (ii)',
2574
+ statutorySection: 'Section 393(1), Table 1, Sl. No. 8(ii)',
2221
2575
  title: 'Deduction of tax at source on payment of a certain sum for purchase of goods',
2222
2576
  effectiveDate: '2026-04-01',
2223
2577
  threshold: 'Buyer turnover > ₹10 Cr in preceding FY; annual purchases > ₹50 Lakhs in current FY',
@@ -2232,10 +2586,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
2232
2586
  subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
2233
2587
  legalPrinciple: 'Tax withholding liability crystallizes on the earlier of credit to payee account in books or payment disbursement. If the trigger event occurred on or before 31 March 2026, the 1961 Act governs the deduction, remittance, and compliance obligations, notwithstanding subsequent settlement.'
2234
2588
  },
2235
- aliases: ['194q', 'sec194q', 'section 194q', '393', 'sec393', 'section 393', '393(1)', '393(1)(table 8)(ii)', 'goods tds', 'purchase of goods']
2589
+ aliases: ['194q', 'sec194q', 'section 194q', '393', 'sec393', 'section 393', '393(1)', '393(1)(table 1)(sl 8)(ii)', '393(1)(table 8)(ii)', 'ita2025_sec393_table1_sl8_ii', 'goods tds', 'purchase of goods']
2236
2590
  },
2237
2591
  {
2238
- id: 'CROSSWALK_194J_393_TABLE6_III',
2592
+ id: 'CROSSWALK_194J_393_TABLE1_SL6_III',
2239
2593
  domain: 'direct_tax',
2240
2594
  predecessor: {
2241
2595
  act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
@@ -2251,10 +2605,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
2251
2605
  successor: {
2252
2606
  act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
2253
2607
  sectionCode: '393',
2254
- statutorySection: 'Section 393(1), Table 6, Item (iii)',
2608
+ statutorySection: 'Section 393(1), Table 1, Sl. No. 6(iii)',
2255
2609
  title: 'Deduction of tax at source on fees for professional or technical services',
2256
2610
  effectiveDate: '2026-04-01',
2257
- threshold: '₹30,000 aggregate in financial year per category',
2611
+ threshold: '₹50,000 aggregate in financial year per category',
2258
2612
  standardRate: '2.0% (FTS) / 10.0% (Professional)',
2259
2613
  penaltyRate: '20.0% (Section 397(2))',
2260
2614
  challan: 'Challan under Income-tax Act, 2025',
@@ -2266,10 +2620,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
2266
2620
  subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
2267
2621
  legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
2268
2622
  },
2269
- aliases: ['194j', 'sec194j', 'section 194j', '393(1)(table 6)', 'technical services tds', 'professional fees tds', 'fts']
2623
+ aliases: ['194j', 'sec194j', 'section 194j', '393(1)(table 1)(sl 6)(iii)', '393(1)(table 6)', 'ita2025_sec393_table1_sl6_iii', 'technical services tds', 'professional fees tds', 'fts']
2270
2624
  },
2271
2625
  {
2272
- id: 'CROSSWALK_194C_393_TABLE3_I',
2626
+ id: 'CROSSWALK_194C_393_TABLE1_SL6_I',
2273
2627
  domain: 'direct_tax',
2274
2628
  predecessor: {
2275
2629
  act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
@@ -2285,7 +2639,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
2285
2639
  successor: {
2286
2640
  act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
2287
2641
  sectionCode: '393',
2288
- statutorySection: 'Section 393(1), Table 3, Item (i)',
2642
+ statutorySection: 'Section 393(1), Table 1, Sl. No. 6(i)',
2289
2643
  title: 'Deduction of tax at source on payments to contractors',
2290
2644
  effectiveDate: '2026-04-01',
2291
2645
  threshold: 'Single contract > ₹30,000 or aggregate > ₹1,00,000 in FY',
@@ -2300,17 +2654,17 @@ export const STATUTORY_CROSSWALK_CATALOG = [
2300
2654
  subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
2301
2655
  legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
2302
2656
  },
2303
- aliases: ['194c', 'sec194c', 'section 194c', '393(1)(table 3)', 'contractor tds', 'subcontractor tds']
2657
+ aliases: ['194c', 'sec194c', 'section 194c', '393(1)(table 1)(sl 6)(i)', '393(1)(table 3)', 'contractor tds', 'subcontractor tds']
2304
2658
  },
2305
2659
  {
2306
- id: 'CROSSWALK_194I_393_TABLE5_I',
2660
+ id: 'CROSSWALK_194I_393_TABLE1_SL2',
2307
2661
  domain: 'direct_tax',
2308
2662
  predecessor: {
2309
2663
  act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
2310
2664
  sectionCode: '194I',
2311
2665
  statutorySection: 'Section 194I',
2312
2666
  title: 'Deduction of tax at source on rent',
2313
- threshold: '₹2,40,000 aggregate in financial year',
2667
+ threshold: '₹50,000 per month (or part of month)',
2314
2668
  standardRate: '2.0% (Plant & Machinery) / 10.0% (Land & Building)',
2315
2669
  penaltyRate: '20.0% (Section 206AA)',
2316
2670
  challan: 'ITNS 281',
@@ -2319,7 +2673,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
2319
2673
  successor: {
2320
2674
  act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
2321
2675
  sectionCode: '393',
2322
- statutorySection: 'Section 393(1), Table 5, Item (i)',
2676
+ statutorySection: 'Section 393(1), Table 1, Sl. No. 2',
2323
2677
  title: 'Deduction of tax at source on rent',
2324
2678
  effectiveDate: '2026-04-01',
2325
2679
  threshold: '₹2,40,000 aggregate in financial year',
@@ -2334,10 +2688,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
2334
2688
  subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
2335
2689
  legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
2336
2690
  },
2337
- aliases: ['194i', 'sec194i', 'section 194i', '393(1)(table 5)', 'rent tds']
2691
+ aliases: ['194i', 'sec194i', 'section 194i', '393(1)(table 1)(sl 2)', '393(1)(table 5)', 'rent tds']
2338
2692
  },
2339
2693
  {
2340
- id: 'CROSSWALK_194H_393_TABLE4_I',
2694
+ id: 'CROSSWALK_194H_393_TABLE1_SL1_II',
2341
2695
  domain: 'direct_tax',
2342
2696
  predecessor: {
2343
2697
  act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
@@ -2353,10 +2707,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
2353
2707
  successor: {
2354
2708
  act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
2355
2709
  sectionCode: '393',
2356
- statutorySection: 'Section 393(1), Table 4, Item (i)',
2710
+ statutorySection: 'Section 393(1), Table 1, Sl. No. 1(ii)',
2357
2711
  title: 'Deduction of tax at source on commission or brokerage',
2358
2712
  effectiveDate: '2026-04-01',
2359
- threshold: '₹15,000 aggregate in financial year',
2713
+ threshold: '₹20,000 aggregate in financial year',
2360
2714
  standardRate: '2.0%',
2361
2715
  penaltyRate: '20.0% (Section 397(2))',
2362
2716
  challan: 'Challan under Income-tax Act, 2025',
@@ -2368,10 +2722,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
2368
2722
  subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
2369
2723
  legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
2370
2724
  },
2371
- aliases: ['194h', 'sec194h', 'section 194h', '393(1)(table 4)', 'commission tds', 'brokerage tds']
2725
+ aliases: ['194h', 'sec194h', 'section 194h', '393(1)(table 1)(sl 1)(ii)', '393(1)(table 4)', 'commission tds', 'brokerage tds']
2372
2726
  },
2373
2727
  {
2374
- id: 'CROSSWALK_194R_393_TABLE8_12',
2728
+ id: 'CROSSWALK_194R_393_TABLE1_SL8_IV',
2375
2729
  domain: 'direct_tax',
2376
2730
  predecessor: {
2377
2731
  act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
@@ -2387,7 +2741,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
2387
2741
  successor: {
2388
2742
  act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
2389
2743
  sectionCode: '393',
2390
- statutorySection: 'Section 393(1), Table 8, Item 12',
2744
+ statutorySection: 'Section 393(1), Table 1, Sl. No. 8(iv)',
2391
2745
  title: 'Deduction of tax at source on benefit or perquisite in respect of business or profession',
2392
2746
  effectiveDate: '2026-04-01',
2393
2747
  threshold: '₹20,000 aggregate value in financial year',
@@ -2402,7 +2756,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
2402
2756
  subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
2403
2757
  legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
2404
2758
  },
2405
- aliases: ['194r', 'sec194r', 'section 194r', 'perquisites tds', 'business benefits tds']
2759
+ aliases: ['194r', 'sec194r', 'section 194r', '393(1)(table 1)(sl 8)(iv)', 'perquisites tds', 'business benefits tds']
2406
2760
  },
2407
2761
  {
2408
2762
  id: 'CROSSWALK_195_393_2',
@@ -2930,7 +3284,7 @@ export const STATUTORY_AMENDMENTS_CHANGELOG = [
2930
3284
  statute: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
2931
3285
  legalAuthority: 'Parliament of India / Income-tax Act, 2025',
2932
3286
  previousValue: 'Income-tax Act, 1961 (Scattered Chapter XVII-B sections: 194C, 194J, 194Q, 194I, 194H, 194R, 195)',
2933
- amendedValue: 'Income-tax Act, 2025 Section 393 Tables (Table 3: Contractors, Table 4: Commission, Table 5: Rent, Table 6: Professional/FTS, Table 8: Goods/Perquisites)',
3287
+ amendedValue: 'Income-tax Act, 2025 Section 393 Table 1 (Sl No 1: Commission, Sl No 2: Rent, Sl No 5: Interest, Sl No 6: Contractors/FTS, Sl No 8: Goods/Perquisites)',
2934
3288
  changeSummary: 'The Income-tax Act, 2025 consolidates and restructures direct tax withholding into unified schedules under Section 393, repealing the 1961 Act subject to Section 536 savings.',
2935
3289
  statutoryImpact: 'Withholding liabilities on or after 1 April 2026 are governed by 2025 Act section references and procedural compliance.',
2936
3290
  aliases: ['393', 'income tax act 2025', '2025 act']
@@ -2988,15 +3342,36 @@ export function getStatutoryDiff(options = {}) {
2988
3342
  }
2989
3343
 
2990
3344
  // ── Deterministic Zero-Dependency Statutory Calculators Export ──────────────
3345
+ async function runStatutoryWatchtower(options = {}) {
3346
+ const { runStatutoryWatchtower: runner } = await import('../scripts/watchtower.js');
3347
+ return runner(options);
3348
+ }
3349
+
2991
3350
  export {
2992
3351
  roundToPaisa,
2993
3352
  roundSection288B,
3353
+ cleanNumericAmount,
3354
+ toIntegerPaise,
3355
+ fromIntegerPaise,
3356
+ MalformedNumericInputError,
3357
+ MissingMandatoryParameterError,
3358
+ assertMandatoryNumeric,
2994
3359
  calculateCorporateTaxMatVsConcessional,
2995
3360
  evaluatePlaceOfSupplyAndLut,
2996
3361
  calculateTransferPricingAlp,
2997
3362
  evaluateSection79LossContinuity,
2998
3363
  evaluateSection281TaxClearance,
2999
3364
  revalueForeignExchangeIndAs109,
3365
+ calculateBusinessCombinationsIndAs103,
3366
+ calculateImpairmentIndAs36,
3367
+ calculateRevenueAllocationIndAs115,
3368
+ calculateLeaseAmortizationIndAs116,
3369
+ calculateExpectedCreditLossIndAs109,
3370
+ calculateEsopAmortizationIndAs102,
3371
+ calculateDeferredTaxIndAs12,
3372
+ evaluateProvisionsAndContingenciesIndAs37,
3373
+ calculateForeignCurrencyIndAs21,
3374
+ resolveMissingPanPenaltyFloor,
3000
3375
  evaluateSection194Q,
3001
3376
  evaluateSection194C,
3002
3377
  evaluateSection194H,
@@ -3015,6 +3390,9 @@ export {
3015
3390
  evaluateSection43bH,
3016
3391
  calculateMsmeCompoundInterest,
3017
3392
  calculateAdvanceTaxAndInterest,
3393
+ calculateRule42InputServiceReversal,
3394
+ reconcileRule42AnnualTrueUp,
3395
+ calculateRule43CapitalGoodsReversal,
3018
3396
  calculateGstItcApportionmentRule42_43,
3019
3397
  evaluateCrossBorderRemittance,
3020
3398
  generateMsme1AndScheduleThreeAging,
@@ -3028,7 +3406,27 @@ export {
3028
3406
  getStatutoryOutcomes,
3029
3407
  explainStatutoryDisposition,
3030
3408
  STATUTORY_OUTCOMES_DICTIONARY,
3031
- enrichWithOutcomeExplanation
3409
+ enrichWithOutcomeExplanation,
3410
+ parseTallyDaybookCsv,
3411
+ parseTallyDaybookXml,
3412
+ reconcile194QDaybook,
3413
+ generateTally194QJournalXml,
3414
+ generateAuditMarkdownReport,
3415
+ getIndianFinancialYear,
3416
+ parseZohoBillsCsv,
3417
+ parseZohoBillsJson,
3418
+ parseGstr2bJson,
3419
+ reconcileZohoGstr2b,
3420
+ generateGstr2bAuditMarkdownReport,
3421
+ normalizeInvoiceNumber,
3422
+ normalizeGstin,
3423
+ calculateOverdueStartDate,
3424
+ calculateEclUtilizationInterest,
3425
+ calculatePortfolioEclUtilizationInterest,
3426
+ buildEvidenceProvenance,
3427
+ runStatutoryWatchtower,
3428
+ evaluateStatutoryAst,
3429
+ resolveTemporalCrystallization
3032
3430
  };
3033
3431
 
3034
3432