T
Sign in

VERIFICATION-PHASE2.md — Phase 2 · Engine & domain services · Verification Sheet

VERIFICATION-PHASE2.md — Phase 2 · Engine & domain services · Verification Sheet

Owner contract per PLANNING §97 + docs/PHASES-GUIDE.md §Phase 2: you never read code — you check the three layers (automated proof, this sheet, and your own 5-minute spot-check) and sign the sheet. Nothing in Phase 2 is "done" before your signature.

What changed (2026-09-06, rounds 1–4)

  1. Costing engine locked to your sheet. The warp leg was +0.25% off because the warp-allowance pair was 110/104 instead of your sheet's 110/104.25 (K = 1.05516). Corrected everywhere + 58 stored designs fixed. Your sheet's trace now reproduces to ≤0.003% on the total-cost cells (₹66.82 / ₹71.16 / ₹74.72) and ≤0.007% up the weight ladder.
  2. Warping cost line — the field existed but didn't count; it now adds ₹/m per the sheet §3.
  3. Multi-row rates + GST toggles — the engine now supports what your costing app does (up to 4 warp + 4 weft rows, each with rate, GST% and incl/excl toggle; per-warp sizing rate). Single-row/single-rate behaviour is byte-for-byte the old verified one (nothing drifted).
  4. Tippan (krill × parts) — the solver can no longer hang or produce Infinity on bad input, and the "soft ends" slack now actually proposes one fewer part when your ends fit within slack (e.g. 1210 ends on a 1200-cone krill → 1 part, not 2).
  5. Capture parser — "please make GP …" forwards now land as gatepass (not order); gatepass/direct-delivery fields (bags, gross, net, vehicle, transport, destination, expected date) are read from the message; draft photos finally keep the real image.
  6. Approval services — owner/admin role is enforced inside the service (no caller can bypass it); approvals are one transaction (status + its event); re-approving is a no-op; amendments record the actual actor from the session.

Why

These are the numbers every order, procurement suggestion, receipt, beam/vs reconciliation and quote reads from. Getting them to your sheet (to the last paisa) is what makes the system trustworthy for the business — this phase's whole point.

How it is proven (automated)

  • 125+ unit tests green (was 93 before Phase 2): incl. the COSTING §5 cell-by-cell trace, the new row-GST cases, tippan guards, capture extraction, ops role/transaction pins.
  • 53-step live journey suite green against the deployed site (orders/gatepasses/bookings/beams/weaving/checking/dispatch/approvals/ prints) — run after each round's deploy.
  • Type-check clean; build clean; every change committed + pushed (8d05ddb → 7b3c7e0); each decision logged (PLANNING §102–§105, BUILD-LOG rev 52–55, COMPLETION ledger).

Your 5-minute spot-check (10 min, please do it with your sheet)

# Check (PHASES-GUIDE §Phase 2) What you should see
1 Quote screen — ONE LINK — https://trading.tynolabs.com/quote?designId=e2e-design-costing&mtrs=1000 (pre-seeded "COSTING SHEET EXAMPLE", the exact §5 construction) Ladder and ₹/m must read: warp 39.15 · weft 19.19 · sizing 2.73 · job 5.76 · subtotal 66.82 (C31) · total ex-GST 71.16 (C33) · total incl GST 74.72 (D33) — to the paisa. This is the headline check.
2 Margin table 1–20% + GST toggle on the quote 1%..20% rows appear; the total incl-GST line behaves like your sheet
3 Krill solver (tippan screen, #beams/parts) ends ÷ krill → parts/beams that look right; no hangs on odd numbers
4 Procurement suggestion (/procure) its numbers are consistent with the costing engine, not hand-computed
5 Capture — paste any real "make GP …" forward it lands in drafts as gatepass with bags/vehicle/party where stated

If any number disagrees with your sheet → that slice reopens; if a 10-minute decision is needed it will be flagged blocked-owner below.

Open decisions flagged (these do NOT block engine correctness)

  1. Numbering sequences (booking/contract/GP/PS) — document numbers are still random-suffixed; sequential per-day numbering awaits your decision (this is the pre-listed decision ②).
  2. Winder cone-measure rule — how cone capacity should bound tippan parts (needs 2 minutes of your shop process: when do you split a part because of cones?).
  3. Amendment semantics — do amendments only log, or also correct the record (with owner approval for rate/tolerance/cancel) — your call on how deep the "corrections apply" rule goes.
  4. Per-row GST entry UI — the engine supports it; whether the design/ quote form should collect per-row rates+toggles now (spec 6b) or at Phase 3/4.

The four decisions — one-line asks (your call, none blocks the engine)

  1. Numbering sequences — switch document numbers (booking/contract/GP/ PS) from random suffix to per-day sequential (GP-260907-0001)? (Say "sequential" or "keep random".)
  2. Winder cone-measure rule — when do you split a tippan part because of cone capacity? (2-minute shop answer; until then the engine uses the ends-krill bound only.)
  3. Amendment APPLY — should an approved amendment CORRECT the record (with owner approval for rate/tolerance/cancel, spec §30), or stay a logged note? (Say "apply" or "note".)
  4. Per-row GST entry UI — start collecting per-row rates + GST toggles on the design/quote form now (spec 6b is engine-ready), or in Phase 3/4?

Unlocks next

Phase 3 — the shared platform layer (list standard, record pages, amend/approve/print verbs, CSV dumps, comboboxes) — built on these verified services.


Signature: ____________________ (owner, after the 5-minute check) Date: ____________________