dodil/erp-method

erp/phase/operate.md

Phase 9 · Operate: the process as run, against the process as signed

Produce findings: where what actually happens differs from the signed process. Each finding is either a fix (the system is wrong) or a change request (the process is). Back: dodil://erp/build.

Steps

  1. Start every session from the repo: read every ERP_*.md, Status first; open with a three-line "where we are" in the person's words. If the person has changed, ask their part in the business and how involved they want to be, record it under People, and retell the state in their words.
  2. Keep the live system checked: the POST / self-check through dodil ignite invoke, and the live scenarios against the dev deploy after every release.
  3. Recurring work runs where phase 2 said: an always-on worker pinned warm (--reserved 1 --max-replicas 1) or an external clock calling a route. Ignite has no scheduler.
  4. Compare the process as run with the signed one. Process mining (an OCEL 2.0 export, PM4Py conformance against processes/<process>.bpmn, the overlay on the diagram) is not built yet, and neither is the shared event log. Do it by hand, read-only: count cases per path from each brick's own audit tables (for HR, hr_run_log), and compare with the signed scenarios.
  5. Report a finding in the customer's terms, with counts: "9 of 40 starters this month skipped the director's approval; all were rehires."
  6. Rollback: dodil ignite version rollback returns the app to an earlier version; the data is not versioned with it. That is why every go-live exports the affected tables first.
  7. The next module goes back to phase 0, as "joining an existing system": read every ERP_*.md first, reuse the pool, bucket and master data, merge roles.

Example (a read-only count, test copy or live)

-- what happened to onboarding runs this month, by event and outcome (brick-hr's own run log)
SELECT what, to_value, count(DISTINCT run_id) AS runs
FROM hr_run_log
WHERE event_at >= TIMESTAMP '2026-10-01 00:00:00'
GROUP BY what, to_value ORDER BY runs DESC;

Reading live is allowed; writing live is not, outside a signed change.

Done when

  • Each finding names the signed element it deviates from and the count.
  • Each finding became a fix (with a test) or a change request (dodil://erp/phase/change).

Next: dodil://erp/phase/change