Skip to content

MK CLIENT_ID=2 field demo browser test scenario — 2026-07-30

  • Classification: OBSERVED-FACT

  • Class: DATED TEST WORKSHEET

  • Status: EXECUTED / CONDITIONAL_GO_FOR_TWO_INDEPENDENT_CRUD_FLOWS
  • Tenant: MK Metal Trading, CLIENT_ID = 2
  • Owns: the execution order, verdicts, evidence and cleanup record of the 2026-07-30 field demo session
  • Does not own: product policy, permission policy, runtime behavior, DB structure, standing operating procedure, or past test results
  • Runtime consumer: NONE
  • Related sources:
  • MK admin2 functional test runbook
  • MK Client 2 validated screen evidence
  • In-app Wiki mk-operations
  • MK Client 2 validated screen evidence

This document is a same-day worksheet that is executed directly in the browser and records the results. A past PASS is not copied over as today's result. An item that was not executed stays NOT_RUN, and an item without its preconditions stays BLOCKED.

1. Session information and execution approval

Do not start the write tests after login until the items below are fixed.

Item Record before execution
Environment / URL TBD
DB host / database TBD
Field user / role TBD
Browser / screen size / zoom TBD
Executor / field reviewer TBD
Start / end time TBD
Allowed write scope choose one of READ_ONLY / DISPOSABLE CRUD / WORKFLOW PROGRESSION
CRUD cleanup owner / method TBD
External effects forbidden by default: email, provider, real print spool, real scale equipment
Wait time the user allows TBD sec; if it is undecided, measure the seconds only and do not declare a performance PASS
Execution marker MK-DEMO-20260730-<HHMM>-<seq>
Evidence location TBD

Go / No-Go

  • [ ] The URL and the DB identity were checked and whether it is Production was recorded.
  • [ ] The real CLIENT_ID = 2, the workspace MK Metal Trading and the role of the login account were confirmed on screen.
  • [ ] The menus the role must be able to reach and the menus it must not reach were agreed with the field reviewer.
  • [ ] It is an environment where writing is allowed, and the run-owned data and the cleanup method were fixed.
  • [ ] The fixtures to be used - supplier, buyer, commodity, UOM, carrier, shipping line, booking, inventory lot etc. - were confirmed to be owned by CLIENT_ID = 2.
  • [ ] Real customer orders, real inventory, real weighing and real provider transmissions are not touched.
  • [ ] If a timeout or an error happens during the test, re-query the list and the detail before pressing the same save button again.

If even one of them is not met, the related write items are BLOCKED. Production writing proceeds only when there is both a separate explicit approval and a run-owned record with a cleanup method.

2. Common browser observation criteria

Open DevTools, turn on Preserve log, then observe the Console and the Fetch/XHR entries of Network together. Passwords, cookies, tokens and personal contact details are not captured and not pasted into the document.

For each screen and each Save, check the following.

  • Screen: the title, workspace, menu active state, table header/body, empty state, buttons, modal and dropdown do not overlap or get cut off. There is no unintended horizontal scroll and no broken character.
  • Input: input works with mouse and keyboard, and Tab movement, date selection, select search, checkbox and modal open/close do not stall.
  • Save: one click shows the loading state, there is no duplicate submission, and the button becomes active again after completion.
  • Result: do not look at the toast only; check the saved values by a list search and by reopening the detail.
  • Errors: an uncaught Console error, a duplicate transmission of the same request, HTTP 4xx/5xx, an endless spinner, a blank screen, a session redirect and the exposure of another tenant's data are FAIL. An intended validation 4xx is a negative test PASS only when the business row has not changed.
  • Speed: write down page load, search, opening the detail and Save time in seconds. If the allowed time was not agreed in advance, record the perceived delay but do not estimate a performance PASS.

Common result table:

ID Status Elapsed time record ID / marker Console / Network Screenshot Notes
TBD NOT_RUN

3. Demo input data

The values below are connection examples that are used only in an approved disposable environment. A supplier, buyer, commodity, carrier and shipping line that do not conflict with the real master are selected on screen right before execution.

Data Value
Common prefix MK-DEMO-20260730-<HHMM>
Purchase reference <prefix>-PO
Sales reference <prefix>-SO
Booking reference <prefix>-BK
Inbound reference <prefix>-IN
Outbound reference <prefix>-OUT
Container / seal disposable value approved before execution
Commodity / UOM MK master approved before execution / LB example
Purchase quantity / rate 1,000 LB / $0.50 example
Sales quantity / rate 1,000 LB / $0.70 example
Scale tare / gross / net 20,000 / 21,000 / 1,000 LB example; not entered on the real equipment

Keep the same prefix in one flow. Record the order, item, booking, equipment, lot, allocation and ticket IDs that are created automatically after saving, right away.

4. Execution order

A. Login and tenant isolation

ID Browser action Expected result Status
A-01 Log in once with a wrong password only when it is safe under the account lockout policy. A clear error appears and no protected screen session is created. NOT_RUN
A-02 Log in normally with the field account. The agreed landing page opens at once and the username, role and MK workspace are displayed. NOT_RUN
A-03 Open a protected route in a new tab and refresh it. The session is kept and the same CLIENT_ID = 2 workspace is visible. NOT_RUN
A-04 Check a menu/route that is not allowed for the role. The menu is hidden or access is denied, and another tenant's data is not displayed. NOT_RUN
A-05 At the end, log out and then open Back and a protected route. It returns to the login screen and the previous work screen is not reused. NOT_RUN

B. Exhaustive menu and screen smoke

Do not compose the address by hand; enter through the menu that is displayed on the login account. A menu that does not exist for the role is recorded as NOT_APPLICABLE after field confirmation, and a check that needs full permission is done separately with the admin2 account.

In each row run first load → change filter → search → open row/detail → close/return → refresh.

ID Menu / check point Status
B-01 Daily Dashboard > Daily Dashboard: period change, purchase/sales/receiving/outbound/inventory/exception cards and the jump to the source NOT_RUN
B-02 Operations > Orders > Commercial Orders: Purchase/Sales, period/type/keyword, list/detail/new form NOT_RUN
B-03 Operations > Orders > Inbound Orders: list/detail/new form, commodity/item/receipt status NOT_RUN
B-04 Operations > Orders > Doortrade Orders: customer filter, the exact target record in the inbound storage NOT_RUN
B-05 Operations > Orders > Export Brokerage: booking search, PDF empty state, analyze cancel path NOT_RUN
B-06 Operations > Orders > Outbound Orders: period/keyword, booking/container/allocation detail NOT_RUN
B-07 Operations > Orders > Booking List: a period that includes the cutoff, keyword, vessel/container/flag detail NOT_RUN
B-08 Operations > Schedule & Allocation > Order Schedule: date/week change, inbound/outbound cards and the jump to the source NOT_RUN
B-09 Operations > Schedule & Allocation > Allocation Workbench: target, lot, available balance, UOM NOT_RUN
B-10 Operations > Scale Portal: schedule, active in-yard, check-in/out form display NOT_RUN
B-11 Scale Ticket List or the linked document: existing ticket, gross/tare/net, source link NOT_RUN
B-12 Billing & Reports > Trade Summary: period/company/commodity/status, AP/AR/cost/claim popup and the source NOT_RUN
B-13 Billing & Reports > Daily Commodity Report: period/company/commodity, purchase/sales tab and totals NOT_RUN
B-14 Billing & Reports > Rates > Commodity Rate: effective/expired/overlap list and detail NOT_RUN
B-15 Billing & Reports > Rates > Freight Rate: payer/carrier/origin/destination/effective-date and detail NOT_RUN
B-16 Admin & Masters > Master Data: the master list and detail that are allowed for the field role; writes are performed only in D NOT_RUN
B-17 Admin & Masters > Users & Menus: read-only check of the user/role/menu tree and landing page only in the admin role NOT_RUN
B-18 Open Manual in the screen header and check that the MK manual matching the current screen is displayed and closes NOT_RUN

C. Core linked operation CRUD

Run it only when DISPOSABLE CRUD or WORKFLOW PROGRESSION is approved. After each Save, always perform list search → reopen detail → compare values.

C-01. Purchase Commercial Order

  1. Open Purchase > New in Commercial Orders.
  2. Enter the marker, supplier, reference, dates, commodity, 1,000 LB, $0.50 and terms.
  3. After saving, check the header and item, the expected amount and the status in the list/detail.
  4. Change the remark or one field that does not affect execution, and open it again.
  5. Delete only while there is no downstream link, and check 0 active rows for the marker.

Pass criteria: Create/Read/Update/Delete are each reflected once, and there are no orphan header/item rows or downstream links.

C-02. Sales Commercial Order

  1. Open Sales > New and enter the marker, buyer, reference, dates, commodity, 1,000 LB and $0.70.
  2. If approved, link the C-01 Purchase; otherwise save it as an independent disposable Sales.
  3. Check the type, counterparty, quantity/UOM, rate, amount, link and status in the list/detail.
  4. After a modification read-back, delete only in the pre-execution state and check 0 active rows.

Pass criteria: the type, party and rate of Purchase and Sales are not swapped with each other and are visible only inside tenant 2.

C-03. Booking

  1. Open New in Booking List.
  2. Enter the booking reference, shipping line, vessel, type, container count/size, min/max weight, ERD, SI/cargo cutoff, ETD/ETA, POL/POD, customer, shipper and commodity.
  3. After saving, search with a period that includes the cutoff and open the detail again.
  4. Change the container or a safe flag and open it again.
  5. In Booking Confirmation and the MK Packing List preview, check that the booking, parties, vessel, ports, container and commodity match the source.

Pass criteria: the same values are shown right after saving and after a refresh, and the preview shows the source accurately. No real print, email or file save is performed.

C-04. Inbound

  1. Open New in Inbound Orders and enter the purchase reference, supplier/shipper, load/ticket, commodity, quantity/UOM and marker.
  2. If the packing PDF is an approved fixture, proceed only as far as select → analyze → review/correct the extracted values.
  3. After saving, open the order and each item again and check the source reference, weight source and quantity/UOM.
  4. Warehouse Only complete-without-scale is run only when there is a non-Production WORKFLOW PROGRESSION approval. If it is run, record the transload and the inventory lot ID, quantity, weight, UOM and status.

Pass criteria: the header/item are saved exactly, and a lot is created once only when the progression is approved. A progressed row is not treated as a normal Delete target.

C-05. Outbound

  1. Open New in Outbound Orders and enter the sales reference, C-03 booking, container, size/seal, shipper/consignee, carrier, commodity, requested date and marker.
  2. After saving, check the booking/container link, the item, the open weight and the status in the list/detail.
  3. Change a field that does not affect execution and open it again.

Pass criteria: it does not report that an allocation was created by the creation of the outbound alone, and the booking/container and tenant are correct.

C-06. Schedule and Allocation

  1. Search the C-04/C-05 reference in Order Schedule and move from the card to the original detail.
  2. In Allocation Workbench select the C-05 target and the disposable lot that was created in C-04.
  3. Check the target demand, lot identity, commodity, balance, UOM and the applied quantity.
  4. Press Apply once only when WORKFLOW PROGRESSION and the cleanup method are approved.
  5. Open the outbound allocation summary and the source lot balance again and record the state before and after applying.

Pass criteria: it is reflected only once, on the correct target/lot. Since there is no normal unallocate route, if there is no cleanup method then Apply is BLOCKED.

C-07. Scale Portal

  1. Open the approved non-Production scale fixture.
  2. Check the vehicle/party/cargo/source order and enter the examples tare 20,000, gross 21,000.
  3. Check that the net on the screen is calculated as 1,000.
  4. If approved, run check-in once and open the same ticket in the active in-yard list.
  5. If approved, run check-out/finalize once and check that it disappeared from the active list.
  6. Check the gross/tare/net and the source ID in the ticket print view and the linked order.

Pass criteria: the state of each step is reflected once, without affecting the real scale equipment or the operational ticket.

C-08. Trade Summary and document output

  1. Search Trade Summary by container or marker.
  2. Compare the Purchase/Sales reference, commodity, quantity, AP, AR, costs, invoice and margin with the source.
  3. Preview the linked document among Booking Confirmation, MK Packing List, legacy Packing List, FBOL, Scale Ticket, Local Invoice, Sales Weight Ticket.
  4. Compare the parties, booking/order/container, ports, weights and rate/amount of each document with the source.

Pass criteria: the summary and the document project the current source accurately. A preview is not evidence that the save, transmission or print has completed.

C-09. Screen-only connected E2E with a single marker

This item is separate from the individual API/feature tests. It verifies whether one user can enter through the menu with the same browser session and the same marker, connect the work through the form/modal/button of the real screen, and query the wanted information again on the last screen.

Common restrictions:

  • A work mutation starts only from a control that is visible on the screen. page.evaluate(fetch), an API request helper and a direct SQL/DB fixture write cannot be used as evidence for a PASS in a work step.
  • The DB is used only to check the identity/tenant before execution, to compare read-only after a save and to confirm the bounded cleanup after the execution ends. A cleanup recovery is recorded separately from the user's work path.
  • The automated Playwright and the in-app browser runtime must each verify the same steps and expected results.
  • If there is no field role account for CLIENT_ID=2, the admin2 execution result is only operator-proxy evidence and not a field-role readiness PASS.
E2E-UI-01. Purchase → Receiving → Inventory query
  1. Create a Purchase on the screen from the Commercial Orders menu and enter the marker, supplier, commodity, quantity/UOM/rate.
  2. Query the Purchase header/item with a list search and by reopening the detail.
  3. Link a Purchase in the Inbound Orders menu, or create a receiving order on the screen with the same marker.
  4. Query the order, source reference, commodity and quantity/UOM in the Inbound list/detail.
  5. Complete the receiving in Scale Portal with the approved Warehouse Only or with a scale path that the screen allows.
  6. Query the created lot, source order, commodity, quantity, remaining quantity and UOM on the Inventory/Allocation screen.

Pass criteria: one marker continues across the Purchase → Inbound → Inventory screens, the screen can be re-queried after the save at each step, and a lot is created only once.

E2E-UI-02. Sales/Booking → Outbound → Allocation → document/billing query
  1. Create a Sales on the screen in Commercial Orders and check the Purchase link, buyer, commodity and rate.
  2. Create a booking on the screen in Booking List with the same marker, save the vessel/ports/container/commodity and then query them again in the list/detail.
  3. Connect the same marker with the Sales/Booking/container on the screen in Outbound Orders.
  4. In Allocation Workbench select the lot from E2E-UI-01 and the outbound target and apply it.
  5. Query the target, lot, applied quantity and remaining quantity in the Outbound detail and the Inventory/Allocation screen.
  6. Query the PO/SO, booking, container, commodity, weight and rate/amount in Trade Summary and in the linked document preview.

Pass criteria: the same marker and the real ID link are kept on the screen, and the final user can query the source/detail/summary/ document on the screen.

E2E-UI-03. Screen errors/recovery and session persistence
  1. Run a Save with a missing required value and an Allocation over the allowed quantity on the screen, once each.
  2. Check that a clear validation appears and re-query the screen to confirm that the existing linked data has not changed.
  3. Check the modal Cancel, the screen refresh, a protected route in a new tab and Back/direct route after logout.

Pass criteria: it recovers without a duplicate row or a partial save, the same marker can be queried again after a refresh/re-login, and the protected screen is not reused after logout.

D. Supporting CRUD

Do not modify the master used for work; use only disposable rows.

ID Action Pass criteria Status
D-01 Commodity Rate create → list/detail read → rate/date edit → comparison in the consuming form → delete company, commodity, rate, UOM and effective/expiration are correct and active row 0 NOT_RUN
D-02 Freight Rate create → list/detail read → rate/date edit → comparison in the consuming form → delete payer, carrier, origin/destination, condition and rate/date are correct and active row 0 NOT_RUN
D-03 cost create → edit → Trade Summary comparison → delete in the approved run-owned outbound the source transaction and the summary show the same values and active cost 0 NOT_RUN
D-04 Master Data / Users & Menus read-only is the default today. Without a separate approval, company, commodity, user, role and menu are not changed. NOT_RUN

E. Errors and recovery

Each item is run one at a time on an approved non-Production dedicated disposable fixture. After the intended error, check whether a business row related to the marker was created or changed.

ID Action Expected result Status
E-01 Save a Commercial Order with the required values emptied an understandable validation appears near the field and row 0 NOT_RUN
E-02 Submit an invalid date range or a duplicate number it is clearly rejected and the existing row does not change NOT_RUN
E-03 Apply an Allocation larger than the lot balance/target it is rejected and the allocation and the lot balance do not change NOT_RUN
E-04 A fast double click on the same Save/Apply the request and the business write happen only once NOT_RUN
E-05 A refresh or timeout simulation right after Save it is possible to tell from the list/detail before a retry whether it was committed NOT_RUN
E-06 Cancel in the modal or Esc it closes without a write and the background input/scroll/focus recovers normally NOT_RUN
E-07 0 search results, a long marker, special character input the layout does not break and a safe empty state/validation is shown NOT_RUN
E-08 Try to enter another tenant's ID/reference in an approved isolated test the query/save is rejected and no external record is exposed on the tenant 2 screen NOT_RUN

5. Cleanup and termination

Proceed with the cleanup in the reverse order of creation. Do not force-delete a row that has a progressed record or an allocation.

cost / disposable rate
-> allocation or the approved recovery
-> outbound
-> the approved recovery of inbound execution / lot / transload
-> booking
-> sales commercial order
-> purchase commercial order
  • [ ] All screens were searched by marker and the number of active records and each ID were recorded.
  • [ ] After delete/cancel the list was refreshed and it was checked whether a direct reopen of the detail is blocked.
  • [ ] The soft-delete audit row was recorded as normal preservation and it was checked that only the active row is 0.
  • [ ] A row that cannot be cleaned up was recorded with its ID, current state, downstream link and owner, and left as FAIL or BLOCKED.
  • [ ] The secrets were removed from the Console and Network logs and then the evidence was saved.
  • [ ] The A-05 logout verification was completed.

6. Failure record

ID:
Time / user / role:
Environment / URL:
marker / record ID:
Reproduction steps:
Expected:
Actual:
Console error:
HTTP method / path / status / safe response summary:
Number of duplicate requests:
Screen screenshot:
DB or source read-back:
Remaining data / cleanup:
Whether it was retried:

Stop the relevant flow immediately in the following situations.

  • The workspace or DB identity is not confirmed as CLIENT_ID = 2.
  • A record of another tenant is visible or selected.
  • Save raised a timeout/an error and whether it was committed has not been re-queried yet.
  • A header/item/booking/lot/allocation/ticket of the same marker was created duplicated.
  • The effect of email, provider, real print spool or real scale equipment is about to start.
  • There is no cleanup path, or progressed data has to be force-deleted.

7. Final verdict

Scope Status PASS / total Main blocker or defect
Login / tenant / role NOT_RUN 0 / 5
Menu / screen smoke NOT_RUN 0 / 18
Core connected CRUD NOT_RUN 0 / 8
Supporting CRUD NOT_RUN 0 / 4
Error / recovery NOT_RUN 0 / 8
Cleanup / logout NOT_RUN 0 / 6

Write the final decision as one of the following.

  • GO: every required item included in the demo is PASS and there is no remaining data and no unconfirmed external effect.
  • CONDITIONAL GO: a read/explanation demo is possible, but the named write or feature has to be excluded.
  • NO-GO: login, tenant isolation, a core Save/read-back, a critical screen error or cleanup failed.

Final report

Environment / user / role:
Decision: GO | CONDITIONAL GO | NO-GO
PASS:
FAIL:
BLOCKED:
NOT_RUN:
Created / changed / deleted record ID:
Remaining data:
External effects:
Evidence location:
Features to exclude from the demo:

8. Local execution result of 2026-07-30

8.1 Execution environment

Item Result
URL http://localhost:8080
DB identity local kyle-mba:3306, database prod, MySQL 8.4.8; the write execution runs only after the host is confirmed to be loopback
Account admin2, user ID 224, CLIENT_ID=2, ROLE_ID=1
workspace MK METAL TRADING
Browser Playwright Chromium headless automation + cross-check with the Codex in-app browser runtime
Allowed scope local disposable CRUD / workflow progression; real email, provider, print spool and scale equipment effects are forbidden
End time 2026-07-30 19:50 +07

8.2 Verdict summary

Scope Status Result Notes
Login / tenant / role PARTIAL_PASS 3 PASS / 1 N/A / 1 NOT_RUN normal login, new tab session and logout/protected route blocking PASS. Because it is admin2, the restricted role menu check is N/A, and the wrong password is NOT_RUN because of the lockout risk
Menu / screen smoke PASS 18 / 18 automated smoke of 14 core routes + in-app check of Scale Ticket, Master, User, Menu, Manual
Core connected CRUD PASS 8 / 8 the connected flow of Commercial, Booking, Inbound, Outbound, Allocation, Scale, Trade/doc
Supporting CRUD PASS 4 / 4 Commodity/Freight Rate CRUD, outbound cost CRUD, admin master read-only
Error / recovery PARTIAL_PASS 5 PASS / 1 PARTIAL / 2 NOT_RUN validation/duplicate, overdraw, cancel, empty state and cross-tenant blocking PASS; the rollback is PASS but the timeout simulation was not run; the double click and the required-value UI validation were not run
Cleanup / logout PASS 6 / 6 run-owned active row 0, a protected route redirects to login after logout

8.3 Main automation evidence

Verification Status Main result
playwright_wp08_15_mk_filter_smoke_uat.js PASS 14 routes: Commercial, Inbound, Outbound, Allocation, Dashboard, Daily Commodity, Doortrade, Export Brokerage, Booking, Schedule, Scale, Trade Summary, Commodity/Freight Rate; page error 0
Commercial/Rate supplementary runner PASS marker MK-DEMO-20260730-1785415521207; Purchase/Sales create-update-link-read-delete, Commodity/Freight Rate create-update-read-delete; active residue 0
playwright_wp08_10_mk_booking_crud_uat.js PASS booking 57326; active 0 after create/update/delete
playwright_wp07_05_mk_inbound_purchase_lot_uat.js PASS order 154530, item 483686, transload 121356, lot 297571; all cleaned up after the state/quantity read-back
playwright_wp08_19_mk_inbound_atomic_save.js PASS order 154531; normal atomic save/delete, the intended invalid save 400 and the rollback
playwright_wp08_09_mk_allocation_apply_restore_uat.js PASS source 154532, target 154533, lot 297572, allocation 201141; overdraw/foreign lot rejected, balance 10 restored
playwright_wp08_12_mk_scale_finalize_uat.js PASS order 154534, ticket 158754; gross 120, tare 20, net 100, finalize and cleanup
playwright_wp08_13_export_brokerage_cancel_uat.js PASS inbound 154535, outbound 154536; before cancel orders 2/allocations 1, after 0/0
playwright_wp08_14_booking_document_render_uat.js PASS Booking Confirmation, MK/legacy Packing List, Local Invoice, Sales Weight Ticket, Scale Ticket rendering
playwright_wp08_16_fbol_render_uat.js PASS equipment 175712, load 176951, delivery 207783; active 0 after the FBOL rendering
playwright_wp08_17_mk_cost_packing_write_restore_uat.js PASS booking 57327, order 154537, item 483695; cost create-update-delete, packing rate 1.25 → 2.5 → 1.25, cleanup
playwright_wp08_12_commercial_error_recovery_uat.js PASS invalid date, foreign/self link and duplicate number are all 400; active 0
playwright_wp07_04_mk_preview_no_write.js FAIL timeout because the Open Detail button was not found with the current filter/fixture. Since the later dedicated document render UAT PASSed on the same document group, it is not reproduced as a product document rendering defect

Screen evidence:

  • output/playwright/wp07-05-mk-inbound-purchase-lot-154530.png
  • output/playwright/wp08-19-atomic-save-154531.png
  • Daily Dashboard was checked visually in the in-app browser, and the console was error/warning = 0

8.4 Final remaining data check

The CLIENT_ID=2 AND DELETED_AT IS NULL totals of the run-owned IDs below are all 0.

T_BOOKING, T_LOAD, T_LOAD_ITEM, T_TRANSLOAD, T_INVENTORY_LOT,
T_LOAD_ALLOCATION, T_SCALE_TICKET, T_DELIVERY, T_EQUIPMENT,
T_EQUIPMENT_LOAD, T_COMMERCIAL_ORDER(MK-DEMO-20260730-%)

8.5 Final decision

CONDITIONAL GO

  • The login based on the local admin2, the whole menu/screen smoke, the core CRUD, the connected workflow, the document preview and the cleanup can be demoed.
  • The role/permission of the real field account was not verified, so only the login and the menu exposure with that account are re-checked before the demo.
  • Real email/provider, AI PDF analysis, print spool, physical scale equipment and timeout/double-click recovery are excluded from the demo scope.
  • Because the allowed performance time was not agreed, a performance PASS is not declared.

9. Screen-only connected E2E rerun — 2026-07-30 20:34 +07

This section is the result of running it again with a new marker after C-09 was added. The individual API/CRUD successes were not replaced by a connected E2E PASS, and within the C-09 scope this section takes priority over the earlier verdicts in 8.2 and 8.5.

9.1 E2E-UI-01 Purchase → Receiving → Inventory

Action Status Result
Playwright screen-only connected execution PASS marker MK-E2E-UI-1785417123028; Commercial Purchase 31 → Inbound 154540 → item 483698 → Inventory lot 297576
Purchase list/detail re-query PASS PO20260730-003, 10 LB, rate 0.5000
Inbound list/detail re-query PASS Commercial Order 31 linked, 10 LB, reference/load marker kept
Scale Portal Warehouse Only PASS completed once with the screen button, one lot created
Allocation Workbench inventory query PASS source order/item, inbound/remain 10 LB, status OPEN queried on the screen
In-app browser cross execution FAIL PASS up to the creation, the list and the detail query of Purchase 48. The same Purchase was linked in Inbound, but after the visible Gross/Tare was entered the read-only Net was not recalculated from 0.000, so Create was blocked with Row 1: Gross/Tare(Net) must be valid.

The in-app failure was not bypassed with a hidden API or a DOM mutation. Since the same product path passed in the automated Playwright, it must be checked separately whether a real keyboard change event is reproduced in the manual field Chrome. Until that is confirmed, the connected input demo is not treated as GO.

9.2 E2E-UI-02 Sales / Booking / Outbound / Summary

Action Status Result
Commercial Sales creation/list/detail PASS marker MK-E2E-SALES-1785417931535; Sales 47, SO20260730-002, 10 LB, rate 0.7000
Purchase ↔ Sales on-screen link BLOCKED The Purchase link control is not displayed in the Sales form, and the save payload does not receive the LINKED_ORDER_ID of the Sales either. Under the current screen contract the original C-09 order is not possible
Booking creation/list/detail PASS Booking 57336, vessel/ports/SSL saved and the Booking Confirmation queried on the screen
Outbound creation/list/detail PASS Outbound 154544, item 483702; linked with Commercial Sales 47 and Booking 57336, 10 LB, rate 0.7000
Reverse link of the Outbound Sales Order in the Booking FAIL The Outbound was selected in the on-screen SO # and saved, but PATCH /api/tms/bookings/57336 returned 400; the message that the T_BOOKING sales-order storage columns are not applied
Allocation NOT_RUN the workflow progression stopped after the two-way link failed
Trade Summary FAIL no search result for the same marker

The search target of SO # in the Booking is not the Commercial Sales but the T_LOAD Outbound Sales Order that was already created. Therefore the real screen-dependent order is Commercial Sales → Outbound → Booking SO link, but the current local DB has no schema column to store that link, so the process cannot be completed to the end.

9.3 Errors/recovery and cleanup

Item Status Result
Commercial Save with the required customer missing PASS a clear validation dialog from the visible Save, no business row created
Modal Cancel PASS return to the list after cancelling the failed Inbound form
Console / page error PARTIAL the E2E-UI-01 automated run is 0/0; E2E-UI-02 has 1 resource console error caused by the unintended Booking 400
run-owned cleanup PASS active residue 0 after the bounded cleanup by marker/ID of the two automated flows and the in-app Purchase
External effects PASS no email/provider/print spool/physical scale equipment call

Final active residue re-query:

{"commercial":0,"loads":0,"bookings":0}

9.4 Rerun final decision

NO-GO — full connected input demo

  • The user could query the information created on each of the Purchase, Inbound, Inventory and Sales, Booking, Outbound screens in the list and the detail.
  • However, from the point of view of a field user, a single end-to-end flow could not be completed because of the blocked in-app Net recalculation and the Booking sales-order schema that is not applied.
  • The final query up to Trade Summary and Allocation was not completed either.
  • Since CLIENT_ID=2 has no real field role account and only admin2, this result is operator-proxy evidence and not a field-role readiness PASS.
  • Today's demo is CONDITIONAL GO only for reading/explaining the individual screens; the connected CRUD demonstration is excluded.

10. Re-verification after the defect fix — 2026-07-30 20:48 +07

This section is the result of a rerun with a new marker after the cause of the failure in section 9 was fixed, and for the latest verdict on that failure item this section takes priority.

10.1 Fix

Target Status Result
Inbound Gross/Tare → Net FIXED The weight event of the shared Inbound editor was changed from change to input, so Net is updated immediately during keyboard, paste and stepper input
Booking SO save FIXED The existing scripts/migrations/2026-05-28_task-638_booking_sales_order_pointer.sql was applied to the local localhost:3306/prod; SALES_ORDER_ID, SALES_ORDER_UUID and 2 tenant-first indexes were read back
Trade Summary test verdict FIXED The test that judged the result before the async GET completed was changed to wait for the container search, the response completion and the visible row

10.2 Screen rerun

Action Status Result
Purchase → Inbound → Warehouse Only → Inventory PASS marker MK-E2E-UI-1785419062330; Purchase 49 → Inbound 154545 → item 483703 → lot 297577; 10 LB, rate 0.5000, lot OPEN; cleanup 0
Sales → Booking → Outbound → Booking SO reverse link PASS marker MK-E2E-SALES-1785419179172; Sales 51, Booking 57338, Outbound 154547, item 483705; Booking PATCH 200; cleanup 0
Trade Summary final query PASS the result row is displayed after the async query with container E2E19179172 completes
In-app browser Inbound cross-check PASS Net 21.000 right after entering the visible Gross 21, Net 16.000 right after entering Tare 5; Cancel without saving
In-app browser Trade Summary cross-check PASS the search result for container MKMK01011 in the menu route /mk-deal-ledger is 1 records; console error/warning 0
Allocation normal/over/retry/recovery matrix PASS marker WP08-09-1785419303367-23e489; over and other tenant rejected, 2 normal applies, lot 10 restored, fixture/target/equipment cleanup

The console/page error of the automated screen execution was 0 in every case. Real email/provider, print spool and physical scale equipment was not called.

10.3 Latest verdict

CONDITIONAL GO — demo of 2 independent connected CRUD flows

  • Purchase → Inbound → Inventory and Sales → Booking → Outbound → Trade Summary were created with a new marker and passed through the list, the detail, the final query and the cleanup.
  • The Inbound Net input block and the Booking SO schema difference that were found earlier were not reproduced.
  • The C-09 full connected E2E with a single marker is NO-GO. The Purchase ↔ Sales on-screen link is still BLOCKED, and the two flows and the Allocation verification used different markers. Also, not every step was repeated in the in-app browser, and a visible Allocation Apply in the same browser session was not performed either.
  • In today's live demo only the two independent flows above and the safe queries are demonstrated. Since there is no normal unallocate path, Allocation Apply is not pressed without a prior agreement.
  • Since CLIENT_ID=2 has no real field role account and only admin2, the role readiness is still NOT_RUN.

Original: docs/research/mk/2026-07-30/MK_CLIENT2_FIELD_DEMO_BROWSER_TEST_SCENARIO.md — ctc repository