QA-GAPS.md — overnight QA ledger (2026-09-05)
Every documented item checked and its disposition. Sources: the four doc audits (screens/fields · journeys/roles · reports/prints · engine/ architecture) + the 11-role live operation simulation. Statuses: DONE = built/deployed/regression-tested · OWNER = needs the owner's input/decision · HW = needs hardware · DEF = documented deferral. The app is green on the 51-step journey suite (scripts/journey-test.ts), 53/53 unit tests, all deploys via deploy.sh.
Security & correctness (simulation-critical) — DONE
- Anonymous form-action writes sealed (hooks POST auth gate; public: /api/, /c/, /signin). Role-sensitive routes gated (ROLE_PAGES incl. approvals/recons/guard/transporter/loomgate + order/yarn/production).
- dispatch roll transition real (
r.rollId+.run());.run()explicit on every update chain (8 actions repaired after a regex slip — regression caught by the suite). - Loomgate meters parsed (payload TEXT json); phantom-looms still accepted (owner decision: device registry?) — see DEF.
- /c/hi statement number (no "undefined"); /c/gp inbound confirm no longer lies "delivered"; approvals show contract numbers; transporter due-list includes partial; search newest-first; home quick-add role filtered; partial pickups no longer vanish.
Prints — DONE (formats from REPORTS §2.1 + screenshots samples)
gatepass (per-kind titles, GSTIN, goods table, sigs) · hishob In/Out/Consumption (8 legs, standard-rate consumption, approval clause) · dispatch/packing · beam card (tracking columns) · checking report · tippan sizing program · contract/SO · reconciliation statement. All render the COMPANY head (src/lib/company.ts — OWNER: set COMPANY.gstin once).
Journeys — DONE except listed
Owner (boards, approvals, hishob, exceptions, reports) · Planner (contracts, tippan issue, due-GPs, recon entry) · Godown (booking, receipt→lot, allocation) · Guard/Transporter (due-lists, exit/pick, vehicle OCR) · Checker (grade incl. R→reject, beam-scoped rolls, WIP bucket, report) · Dispatch (F1 plan→F2 load→deliver, no-redispatch) · Sales (leads→SO, samples, quote) · Runner (docs/pickup codes + sample courier — ack-photo & count-check loop DEF §34 GAP-23/26/27) · Accounts (reports/dumps; Tally OWNER/gate) · External parties (confirm links gp/hi).
Still documented-but-open (each cited)
- Costing engine gaps: warping cost input (COSTING §6b per-warp
sizing/GST toggles);
/quotenow surfaces the engine. DEF. - Weaving: loomgate telemetry live; beam start/end knot/gat (D5/C6) and weft-issue (D2) screens DEF Phase-2 data; planning board (D1) DEF (board pln flagged ready:false honestly).
- E2 lumps→bales (no bale table) — DEF (needs owner's bale rules, BUSINESS.md:47).
- Owner approval matrix (SO/booking creates to open, amendments ungated) — partial: recon/hishob gated; broader matrix DEF §30.
- BRIDGE import machinery (external_id, ledger, parsers) — OWNER: blocked on the old-software table exports (PLANNING §13 shelf / BRIDGE contracts "draft"); upload bins exist.
- Notifications (due POs, pending samples) — DEF Phase 5.
- Valuation FIFO/avg — OWNER (deferred to go-live, §56).
- Numbering sequences, grade pricing, promise-vs-target, GST per supplier, LTOL/UTL, cal-wt — OWNER (shelf §13).
- Android APK builds on any machine with Android Studio (android-capture/README); keystore OWNER.
- Company GSTIN on prints — OWNER (one line in src/lib/company.ts).
- Party phone numbers for WhatsApp buttons — OWNER (data entry).
- Record chat / AI report bot / dump-station UI / SmartTable-on-lists — density/batch — DEF (BOARDS-A §2.5/§2.10, §50, §51.5).
- Runner ack-photo, sample sticker print, count-check — DEF §34.
Regression harness
bun scripts/seed-e2e.ts · bun scripts/seed-users.ts ·
bun scripts/journey-test.ts (51 steps, live 4102, session + Origin +
DB asserts + print markers). Owner's own check path: log in as each
role (see seed-users) and walk the board.