Problem: apply/diff cover configuration (keyed idempotent upserts), but the first lab5.ca service needs transaction scenarios: build tenant -> apply config -> run a consistent transaction set -> compare actual vs expected. Transactions are not keyed upserts (server assigns document numbers), so they need a runner, not apply.
Proposed: acu run <files|dirs> executing scenario YAML (scenario/ dir in the data repo):
- steps: put (recursive wrap, Detail lists native), action (invoke + 202 poll), wait (poll a record until field values match, with timeout)
- capture: {OrderNbr: po_1} lifts server-assigned keys into variables; ${po_1} interpolates into later steps
- expect: get (key-URL record field assertions, e.g. Status) and inquire (contract inquiry PUT-with-parameters, e.g. InventorySummaryInquiry, AccountSummaryInquiry — both confirmed present in Default/25.200.001) with delta assertions: runner snapshots every expect probe before step 1, re-probes after the last step, compares the delta — scenario re-runs safely on a warm tenant
- exit 0 all expectations hold / 1 any step error or miss; step + expectation report table; --dry-run parses and lists steps without HTTP
Reuses AcumaticaClient session/tenant guard/wrap/invoke-poll machinery. Scenario YAML is data and stays in the data repo (V2 split). The scenario format is the contract for the future AI scenario generator.
First consumer: acumatica-devops scenario/buy-build-sell.yaml (4 POs -> receipts -> bills -> 3 kit assemblies -> 3 SOs -> shipments -> invoices -> payment), exercising the Lab5 Gateway Works config end to end.
Problem: apply/diff cover configuration (keyed idempotent upserts), but the first lab5.ca service needs transaction scenarios: build tenant -> apply config -> run a consistent transaction set -> compare actual vs expected. Transactions are not keyed upserts (server assigns document numbers), so they need a runner, not apply.
Proposed: acu run <files|dirs> executing scenario YAML (scenario/ dir in the data repo):
Reuses AcumaticaClient session/tenant guard/wrap/invoke-poll machinery. Scenario YAML is data and stays in the data repo (V2 split). The scenario format is the contract for the future AI scenario generator.
First consumer: acumatica-devops scenario/buy-build-sell.yaml (4 POs -> receipts -> bills -> 3 kit assemblies -> 3 SOs -> shipments -> invoices -> payment), exercising the Lab5 Gateway Works config end to end.