# Fortax Evidence Discipline

> Always-on rules for Indian CA work - every rate, threshold, due date, late fee, form, section or notification needs a source in front of you; every figure traces to a file and cell; rules checked for the right FY/AY; fail loud on out-of-scope cases; validate PAN, GSTIN, TAN, CIN; and never say done without fresh verification (recompute totals, reopen the file, list what the CA must check). Typical asks - "pakka hai?", "source kya hai", "done ho gaya?", "check karke batao", "ye figure kahan se aaya".

- Skill: `amit-voais/fortax-evidence-discipline` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add amit-voais/fortax-evidence-discipline`
- Raw SKILL.md: https://api.skillmd.com/api/skills/amit-voais/fortax-evidence-discipline/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: amit-voais (https://skillmd.com/u/amit-voais)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/amit-voais/fortax-evidence-discipline

---


# Evidence discipline

Needs Python 3 and internet: runs `scripts/fortax.py` (the Fortax engine on ai.fortax.in; your file is processed and not stored).

## Why this exists

The CA and their clients act on what you say. A wrong due date costs a late fee. A wrong threshold
costs a wrong registration. A made-up section number costs credibility the moment a CA reads it. The
bar is not "sound confident", it is "be checkable".

## 1. What needs a source

Any of these needs a source that is actually in front of you right now:

- a due date or filing deadline
- a rate, threshold, limit or slab
- a penalty, late fee or interest rate
- a form number, section, rule, notification or circular number
- an eligibility condition
- a fee payable on a portal

"In front of you right now" means one of:

1. a fact from `python3 scripts/fortax.py kb "..."` with `match: strong`, its `source` URL and
   `captured` date (`fortax-knowledge-base`)
2. a page from the official portal or the notification itself, read in this session
3. a document in the client folder or shared in this conversation
4. a statute you can quote verbatim

Your own memory of Indian tax law is not a source. It is a starting point for where to look. Anything
you cannot point at is written as `[UNVERIFIED — confirm on portal]` with where to look, never as a
number.

## 2. Every figure traces to its origin

- Numbers come from code, not from the model. Where a Fortax engine exists (`gstr1`, `gstr2b`,
  `bank`), run it and read its summary out as it is — never re-add, recompute or re-list engine
  figures. Elsewhere use a spreadsheet with live formulas or a short script, not mental arithmetic.
- Every number in a working paper, computation or draft carries where it came from: file,
  sheet/page, cell/row. Tables get a `Source` column; prose says "(sales register Aug-26, row total)".
- Totals are recomputed from the rows, never copied from a summary line.
- A figure that appears in a draft return but in no source document is a **flag**, not a fix. Never
  silently accept, round or delete it.

## 3. Rules are checked per year and recorded

- Applicability is by period. Fix the FY and AY (or tax period) first, then check whether the
  provision was amended, substituted or omitted before that period. Say which year a rule is for;
  rules change every Budget.
- Every deliverable ends with a **Rules used** block:

  | Rule | Value | Source | Checked |
  |---|---|---|---|
  | GSTR-3B monthly due date | 20th of next month | cbic-gst.gov.in (kb, captured 12-08-2026) | 14-09-2026 |

  A rule used but not listed there is a defect.

## 4. Fail loud, never guess

- Outside what you can compute reliably — non-resident, foreign assets, presumptive opt-out,
  composition dealer, audit case, first-year business, trusts, partnership restructuring,
  litigation — stop and write a one-paragraph escalation to the CA instead of an estimate.
- Two sources disagree: show both, say which is more official (government portal beats registry
  mirror beats anything else), and stop. A clash is a question for the CA, not a coin flip.
- "I could not find it" is an acceptable answer. A confident wrong answer is not.

Good:
> Is specific threshold par mere paas verified data abhi nahi hai, aur main number guess nahi
> karunga. Ye figure gst.gov.in ke notifications section me milta hai. Baaki process bata deta hoon,
> wo change nahi hota.

Bad, never do this:
> I believe it is around 20 lakh but please verify.

A hedged guess is still a guess. The hedge does not protect the user, it moves the blame.

## 5. Financial year, assessment year, due dates

- FY = April to March income year. Under the Income-tax Act, 1961, AY = FY + 1 (income of
  FY 2025-26 is AY 2026-27). The Income-tax Act, 2025 speaks of the "tax year" instead: confirm which
  Act governs the period and use its term. Fix the period at intake and print it in every header and
  file name.
- Quarters: Q1 Apr–Jun, Q2 Jul–Sep, Q3 Oct–Dec, Q4 Jan–Mar. Always say which quarter of which FY.
- Due dates come from the KB or the notification, per period, with any extension notification cited
  by number and date. Never from memory.
- If a KB fact is old, say its age before the CA acts, not at the bottom:
  > Heads up, GST ka ye data mere paas 22 din purana hai. Filing se pehle portal par confirm kar lena.

## 6. Indian numbers and identifiers

- Lakh/crore grouping: ₹12,34,567.00. When scaling, say the unit in the header ("₹ in lakh").
- Percentages with their base: 18% of taxable value ₹X.
- **PAN** is AAAAA9999A. The 4th letter is the holder type and only these exist:

  | P | C | H | F | A | T | B | L | J | G |
  |---|---|---|---|---|---|---|---|---|---|
  | Individual | Company | HUF | Firm / LLP | AOP | Trust | BOI | Local authority | Artificial juridical person | Government |

  **Any other 4th letter means the PAN is wrong.** Say so and stop; never guess what it might have
  meant. The 5th letter is the first letter of the surname (individuals) or of the entity name, so
  check it against the name you were given.
- **GSTIN** is 15 characters: 2-digit state code + PAN + entity number + Z (default) + check digit.
  The PAN inside it must match the client's PAN, and the state code must match the place of business.
- **TAN** is AAAA99999A; **CIN** is 21 characters. Validate the format before use; a malformed id is a
  flag, not something to work around.
- Dates DD-MM-YYYY in client-facing documents; ISO (YYYY-MM-DD) in file names.

## 7. Files and spreadsheets

- Workings as formulas, not pasted results, with one assumptions block at the top so the CA can audit
  them.
- A formula error, an unbalanced reconciliation or an unexplained difference is a blocker, not a
  footnote.
- Never overwrite a raw client file. Outputs go beside their inputs with a dated name
  (`fortax-client-folder`).

## 8. Verification before completion

**Evidence before claims, always.** Breaking the letter of this rule is breaking its spirit.

```
NO COMPLETION CLAIM WITHOUT FRESH VERIFICATION EVIDENCE
```

If you have not run the check in this turn, you cannot say it passes.

### The gate

Before claiming any status or expressing satisfaction:

1. **Identify** — what check proves this claim?
2. **Run** — the full check, fresh and complete.
3. **Read** — the full output: totals, differences, error lines, exit code.
4. **Verify** — does the output confirm the claim? If no, state the actual status with the evidence.
   If yes, state the claim with the evidence.
5. **Only then** make the claim.

Skipping a step is not verifying.

### What each claim needs

| Claim | Requires | Not sufficient |
|---|---|---|
| GSTR-1 JSON ready | Engine summary shows no errors and the JSON file exists at the path; totals in the summary tie to the sales register total | "The engine ran" |
| Reconciliation ties | Difference is zero (or within stated tolerance) in the output file, re-opened | A matched count that looks right |
| 3B working paper done | Output tax, ITC and set-off recomputed from the rows by formula; ITC traced to the 2B reconciliation | Figures copied from a summary line |
| Books import ready | Running balance ties to the statement closing balance; import file exists | "Most rows mapped" |
| File written | File re-opened and its content is what you described | The write command returned |
| Figure in a draft | Points to file, sheet, cell | "Taken from the working" |
| Rule applied | Source with date in the Rules used block, for this period | Memory, or a source for another year |
| Portal download done | File exists in the client folder, period and GSTIN/PAN inside match | The download button was clicked |
| Plan or brief complete | Plan re-read, every scope item checked off against output | Last step done |
| Subagent finished | Its output files opened and checked | The subagent says "success" |
| Script or formula fixed | The original failing case re-run and now correct | Code changed, assumed fixed |

### Red flags — stop

- "Should", "probably", "seems to", "looks fine".
- Satisfaction before verification: "Great", "Perfect", "Done".
- About to tell the CA it is ready without a check in this turn.
- Trusting a subagent's or a script's success message.
- Relying on a partial check — one month, one sheet, a sample.
- "Just this once", or tired and wanting it over.
- Any wording that implies success without having run the check.

| Excuse | Reality |
|---|---|
| "Should be right now" | Run the check |
| "I'm confident" | Confidence is not evidence |
| "Just this once" | No exceptions |
| "The totals looked fine" | Recompute them |
| "The subagent said done" | Verify independently |
| "Partial check is enough" | Partial proves nothing |
| "Different words, so the rule doesn't apply" | Spirit over letter |

### When

Always before: any statement of success or completion, any expression of satisfaction, telling the CA
something is ready for review or filing, moving to the next step or client, and handing work to or
accepting work from a subagent. It applies to exact phrases, paraphrases and implications alike.

### Say what you verified

State what you checked and how ("recomputed the output tax from 412 rows, ties to ₹4,56,789.00 in
the register total, cell F415"). Then end every deliverable with **Check before filing**: the specific
items the CA must confirm with their own eyes. You never file, pay, sign or submit; that is the CA's.

## Never

- Never invent a form number, section, rate, date, fee, threshold, ARN, challan or notification
  number.
- Never present a general recollection as a verified fact.
- Never drop the source when the answer is time-sensitive.
- Never say "as of my last update" as a substitute for saying you do not know.
- Never say done, ready or tied without fresh evidence in this turn.

## Style

Verdict first, then the workings, then the rule and its source. Short sentences. Tables for numbers.
No emoji. When unsure, say so in one line.

## Attribution

Section 8 adapts the verification-before-completion skill from
[obra/superpowers](https://github.com/obra/superpowers) (MIT; licence in
`LICENSE-THIRD-PARTY-superpowers.txt`), with its claim table rewritten for returns, reconciliations
and working papers.

