Work / Chitragupt / Wiki / Synthesis
tax-table-verification
Synthesiscanonicalverified 2026-05-29
SYNTHESIS.TAX-TABLE-VERIFICATIONTax-table verification rollup
AI-driven cell-by-cell verification of all 6 tax tables against Indian Finance Acts + IT Act primary sources. Each per-AY report under .context/wiki/synthesis/tax-table-verification-ay-YYYY-YY.md carries source URL + quoted text per cell. This rollup is the executive summary; per-AY reports are the workspace for the CA review.
Pass date: 2026-05-29 · Source authority: Finance Acts 2020–2025 · IT Act 1961 (post-amendment) · CBDT circulars · Authoritative secondary refs (ClearTax, Tax2win, TaxGuru) where primary URLs returned 403.
Per-AY scorecard
| AY | File | Verified | ❌ Hard | ⚠ Soft | ⚪ Unverified | Verdict |
|---|---|---|---|---|---|---|
| 2021-22 | ay-2021-22.ts |
56 | 1 | 2 | 4 | Flip to draft |
| 2022-23 | ay-2022-23.ts |
38 | 1 | 3 | 0 | Keep draft |
| 2023-24 | ay-2023-24.ts |
38 | 3 | 4 | 0 | Keep draft |
| 2024-25 | ay-2024-25.ts |
71 | 0 | 0 | 5 | Ready for CA sign-off → flip to verified |
| 2025-26 | ay-2025-26.ts |
78 | 1 | 4 | 3 | Keep draft |
| 2026-27 | ay-2026-27.ts |
60+ | 0 | 3 | 0 | Flip to draft (one schema-level concern blocks) |
Net: 1 AY ready for CA sign-off (2024-25). 5 AYs need fixes before sign-off.
Hard discrepancies (must fix before CA review)
1. marginal_relief: true regression — AY 2021-22, 2022-23, 2023-24
Files: ay-2021-22.ts, ay-2022-23.ts, ay-2023-24.ts — section_87a.new_regime.marginal_relief
Source authority: §87A marginal relief in the new regime was introduced by Finance Act 2023, effective AY 2024-25. For AYs 2021-22, 2022-23, 2023-24 the rebate was a hard cliff — ₹12,500 below ₹5L, zero above. Three independent agents flagged this against ClearTax / Tax2win / Cleartax 87A primary references.
Fix: Flip to marginal_relief: false in all three files.
Tax-position impact: Mode 1 currently over-credits relief to old-AY users near the cliff (e.g. taxable income ₹5,02,000 in AY 2022-23 would be told they get partial relief; they don't — they owe full tax on the full amount).
2. Missing VDA / §115BBH rule — AY 2023-24
File: ay-2023-24.ts — capital_gains.rules[]
Source authority: Finance Act 2022 §115BBH introduced 30% flat tax on virtual digital assets (no set-off, no deductions other than cost of acquisition) effective AY 2023-24. §194S 1% TDS effective 1 July 2022. The AY 2023-24 file's capital_gains.rules array has only 4 entries (listed equity, debt MF, unlisted/property, SGB) — VDA is absent. Compare to ay-2026-27.ts which has the VDA rule (verified by the 2026-27 agent).
Fix: Add a VDA rule to AY 2023-24's capital_gains.rules:
{
asset_class: "virtual_digital_asset",
applicability_window: { start: "2022-04-01", end: null },
ltcg_threshold_months: null, // no holding-period distinction
ltcg_rate: 0.3,
ltcg_exemption_paise: null,
stcg_rate: 0.3,
indexation: "n/a",
notes: "§115BBH. 1% TDS u/s 194S from 1 Jul 2022. No set-off, no carry-forward.",
}
Verify whether AY 2024-25 and AY 2025-26 files also need the same rule added (high suspicion — same shape gap).
Tax-position impact: Any AY 2023-24 user with crypto trades currently has Mode 1 returning no VDA rule → silently zero gains in the report → user files an under-reported return.
3. ltcg_threshold_months: 36 should be 24 — AY 2025-26
File: ay-2025-26.ts:279 — capital_gains.rules entry for debt_mf_acquired_before_2023_04_01_post_23_jul_2024.
Source authority: Finance (No. 2) Act 2024 reduced the LTCG threshold from 36 months → 24 months for non-equity assets effective 23 July 2024. HDFC Life, Fincart, TaxGuru all confirm.
Fix: Change ltcg_threshold_months: 36 to 24 on line 279.
Tax-position impact: A debt-MF user who sold between 24 and 36 months of holding will see Mode 1 classify as STCG (taxed at slab) instead of LTCG (12.5%). Mid-period overestimate of tax owed.
4. 80CCH.notes factually wrong — AY 2023-24
File: ay-2023-24.ts — deductions.both_regime."80CCH".notes + header comment (line 13).
Source authority: Finance Act 2023 introduced §80CCH (Agniveer Corpus Fund) effective AY 2023-24, not AY 2024-25 as the file states. Memorandum: "This amendment will take effect from 1st April, 2023 and will, accordingly, apply in relation to the assessment year 2023-2024 and subsequent assessment years." The shape is correct (uncapped: true) — only the prose misleads.
Fix: Update the notes string + header comment.
Tax-position impact: Documentation-only; rule machinery already deducts because the cell shape is right.
Schema-level concerns (affect multiple AYs)
These four issues are not single-cell bugs — they're shape gaps in the table schema itself. Fix once, ripple across all 6 AYs.
A. 80CCD(2).nps_employer_cap doesn't model regime split
Files: All AYs ≥ 2025-26.
Source authority: Finance (No. 2) Act 2024 raised private-sector employer NPS deduction to 14% of basic+DA for the new regime only. Old regime stays at 10%. Current schema: { private_pct_basic_da: number, central_govt_pct_basic_da: number } — a single number per sector. ClearTax and Tax2win both confirm the split.
Fix: Change schema to { private_old: 10, private_new: 14, central_govt_old: 14, central_govt_new: 14 } (or equivalent). Update the rule library and Mode 1 to pick the regime-correct value.
Tax-position impact: An old-regime private-sector salaried user with employer NPS > 10% of (basic+DA) is currently being over-deducted, lowering their tax owed below the legal value.
B. No family-pension std deduction slot
Files: Schema gap. Affects AY 2024-25 (₹15,000) and AY 2025-26+ (₹25,000).
Source authority: Finance Act 2023 added family-pension std ded ₹15,000 under the new regime; Finance (No. 2) Act 2024 raised it to ₹25,000.
Fix: Add family_pension_std_deduction_paise next to the existing standard_deduction block. Backfill across affected AYs.
Tax-position impact: Family-pension recipients (typically widow(er)s of govt employees, defence personnel) are currently not getting their std ded in Mode 1.
C. 87A.capital_gains_carve_out_111A_112_112A is one bool
Files: All 6.
Source authority: §112A(6) carves §112A LTCG out of §87A. §111A and §112 are separate sub-sections with their own carve-out logic. The semantics differ — §112A was carved from inception; §111A / §112 came under CPC scrutiny later. ITAT Ahmedabad (LiveLaw Biz, 2024) supported taxpayers on §111A claims; CPC has been auto-denying.
Fix: Split into three bools: carve_out_111A, carve_out_112, carve_out_112A. Each AY sets the correct combination per Finance Act precedent.
Tax-position impact: Mode 1 currently can't distinguish — users with equity STCG (§111A) get the same verdict as users with equity LTCG (§112A), regardless of which carve-out actually applies in the AY.
D. hp_loss_set_off_71B field name conflates §71 and §71B
Files: All 6.
Source authority: §71 caps inter-head house-property loss set-off against other income at ₹2L per AY. §71B governs 8-year carry-forward of the unset-off balance (no annual cap on carry-forward, only on initial set-off). The current cell name suggests it represents §71B but the value (₹2L) is the §71 cap.
Fix: Rename to hp_loss_inter_head_cap_71 and add a separate hp_loss_carry_forward_71B cell (with no annual cap).
Tax-position impact: Documentation/audit clarity — current value is correct as ₹2L for §71, but Mode 1 rules that reference §71B for carry-forward semantics may misapply the cap.
Cosmetic / soft items (CA decides)
Each per-AY report lists these in its ⚠ section. Headline themes:
- NPS Tier-1 returns — informational ranges (
scheme_e_cagr_pct_rangeetc.) are plausible but not directly source-attributable to PFRDA snapshots. CA should pick a citation policy (latest PFRDA monthly report? decade trailing? IRR?). - Stale source URLs — IT Department portal URLs frequently returned 403; secondary refs (ClearTax, Tax2win) used instead. CA should re-validate primary URLs from a non-blocked IP and update the
sources[]array. unlisted_shares_or_immovable_property_post_23_jul_2024lumps unlisted shares with immovable property undergrandfathered_residentsindexation election — but the 20%-with-indexation grandfathering is land/building only. AY 2025-26.
Recommended sequence
Fix the 4 hard discrepancies (this PR, mechanical):
- Three
marginal_relief: falseflips (2021-22, 2022-23, 2023-24) - Add VDA rule to 2023-24 (also verify 2024-25, 2025-26)
- Change
36to24onay-2025-26.ts:279 - Correct
ay-2023-24.ts80CCH.notes+ header
- Three
Pick one of the schema concerns to fix first (probably A —
80CCD(2)regime split — because it's wrong tax math today, not just imprecise modelling).Ship AY 2024-25 to CA as the test case — it's the only file where AI says "ready for CA sign-off". Use it to calibrate the CA's review workflow + how they signal
tax_tables_verified: "verified".Address (B), (C), (D) in follow-up PRs. Backfill across AYs.
Per-AY pass against CA — once schema changes have landed and the 4 hard bugs are fixed, ship each AY for sign-off. AY 2025-26 next (you need it to test the Tax pillar against last year's filing).
Limits of this verification
- AI-driven, not CA-signed. The audit reduces CA review surface by ~95% (only flagged cells need a human eye) but does not substitute for the CA's signature. The "verified" flag still encodes professional liability.
- Primary IT Department URLs returned 403 for most agents. Secondary references (ClearTax, Tax2win, TaxGuru, HDFC Life) were the substitute. A CA reviewing this report should confirm against the gazette / IT Department portal from a clean IP.
- CBDT circulars not exhaustively searched. Niche corner cases (e.g. trust-specific 87A treatment, partnership-firm slabs, NRI-specific surcharge bands) are not in the table schema and were not audited.
- No regression test against test cases. The verification confirms numbers, not behaviour. A separate pass that runs known Form 16 → expected Mode 1 verdict regression cases is the right complement.
Per-AY report links
- AY 2021-22
- AY 2022-23
- AY 2023-24
- AY 2024-25
- AY 2025-26
- AY 2026-27
Every project of mine is written down like this.
Read the résumé