Work / Chitragupt / Wiki / Concepts
no-manual-entry
Conceptcanonicalverified 2026-09-01
CONCEPT.NO-MANUAL-ENTRYNo manual entry
Summary
There is no UI anywhere in chitragupt that lets a user type a money amount, sale, salary line, or holding into the ledger — every figure must derive from a parsed document.
Why it matters
This is the enforcement side of upload-only. Upload-only says "every fact has a source document"; no-manual-entry says "we never built a code path that bypasses that". The two principles are siblings: kill either one and the other collapses. A single "type your salary" field would mean some ledger rows have no source artefact, and the trace-to-document audit story breaks for the whole product. The ban is also a scope-shaping device — without it, chitragupt drifts from a tax-review platform into a bookkeeping tool, which is a different product with a different liability model.
Implications
- No "Add expense" button anywhere. No "Add a trade". No "Type your salary". No "Override total income".
- The only writer into the ledger is the Inbox parser pipeline.
- Reconciliation conflicts (Form 16 vs 26AS) are resolved by choosing which uploaded source to trust, not by typing a corrected number.
- Quick Check answers and category overrides are allowed (they label, they don't author amounts). A typed money value is not.
- Failure-mode UX (failed parse, partial parse) must offer re-upload, not a manual fix box.
- Any wireframe that shows a free-text money field is a SPEC violation. Push back, don't build.
- Narrow exception (Portfolio only): a linked broker API pull is not manual entry — nothing is user-typed, the figures come straight from the broker's API response, persisted as its own immutable source artefact. See 2026-09-01-broker-api-sync-as-source. Tax, Expense, and Inbox are unaffected; the Inbox parser pipeline remains their only writer.
Related
- upload-only — the input-side principle this enforces
- read-only-review — the parent stance both serve
- pillar-inbox — the only writer surface
- user-identity-entry — the chain every parsed fact travels
- ledger-entry-types — the strict enum of facts a parser may emit
- 2026-05-30-v1-upload-only — the decision pinning this
- 2026-07-11-user-identity-entry-model — enum-strictness cemented
- 2026-09-01-broker-api-sync-as-source — Portfolio-only broker-API exception
Sources
- .context/wiki/concepts/* § "Hard constraints (V1) — non-negotiable" — Upload-only row
- .context/wiki/concepts/* § "What V1 explicitly does NOT include" — manual entry row
- .context/wiki/concepts/* § "Hard rules" rule 1 (Inbox-as-only-writer)
Every project of mine is written down like this.
Read the résumé