lab5.ca

Blog

Notes on AI applications and Acumatica ERP

I publish method notes for AI applications and Acumatica ERP.

Acumatica business scenario validation: pass/fail process paths from a Git seed
— Config looks complete until order, receipt, invoice, or payment fails. Named scenario legs on non-prod current config give pass/fail with the failing step named — complements click-through UAT and feeds major-release and integration checks.
Acumatica production instance to GitOps UAT copy
— Hand-built or stale UAT cannot prove readiness the same way twice. Extract live Acumatica configuration into Git, rebuild a virgin UAT as a config twin, run a scenario readiness gate, and prove with diff plus books — not a production database clone.
Acumatica major-release regression matrix: certify one versioned GitOps tenant seed across three major releases
— Manual UAT does not scale across Acumatica major releases. Pin a lab host per major, run one cold lifecycle gate against the same versioned GitOps tenant seed, and verify financial books on Account Summary (GL401000). Multi-major proof that complements certified UAT.
QuickBooks and Xero to Acumatica: connect, export, and load a test tenant
— Prospects outgrowing QuickBooks or Xero want their own books in Acumatica before they commit. Connect the source over OAuth (or the same shape for QuickBooks), export a cutover pack, map it into versioned YAML, and load a clickable test tenant — then rehearse cutover on the same tree.
Automated regression testing for Acumatica configuration-as-code (GitOps)
— Acumatica configuration ships after manual click-through with no CI gate. With configuration-as-code in git, the GitOps gate is acu apply, acu run, and acu diff — three exit codes a pipeline can enforce.
Configuration-as-code for Acumatica: a tenant built from YAML in git
— Acumatica configuration usually lives only in the web UI. YAML in git plus acu apply and acu diff turns a credit-terms edit into a pull request, an idempotent upsert, and a zero-drift proof with an exit code.
Scheduled ERP backups in two layers: database dumps and storage snapshots
— Every self-hosted Acumatica instance is yours to back up, and the vendor guidance converges on scheduled SQL-native backups — but backups end up ad hoc. Two independent layers provisioned by Ansible, a SQL `.bak` per database and a nightly whole-VM ZFS snapshot, run on a schedule with no manual routine.
Automated DEV/TEST environments for Acumatica with Ansible
— Most Acumatica customers run production on Acumatica's SaaS cloud, but customization and upgrade testing need self-hosted instances. One Ansible command builds one on a Linux KVM host — golden image to login page, unattended.
The 90/10 software rule small businesses can use
— For decades only big companies could afford to build their differentiated software. AI collapsed the cost of that slice to where one developer can deliver it — which is exactly what a small business can now afford.
What one AI email actually costs
— Most AI ROI talk is hand-waving. Here is a traced, per-email cost from a production agent — and the risk/reward math a CFO can check.
Troubleshooting application failures with Logfire
— A repeatable workflow for using Logfire span trees, SQL-over-traces, and OpenTelemetry semantic conventions to turn opaque application failures into one-line diagnoses — walked through a real production bug.
Smoke-testing an LLM agent with Claude Code skills
— Mocked pytest stays green while a live agent fabricates product specs. Lint and pytest cover the machinery; Claude Code skills drive real Gmail, real Drive, and the real model — with deterministic gates where possible and an LLM judge where natural language is the answer.
Code consistency is the casualty of agent velocity
— Agents ship inconsistent code that tests still pass. One small SPEC.md re-read every turn, telegraph-encoded to a 41% token cut, is the defense — with backprop turning each under-specified failure into a permanent invariant.