Phase 1 · Discover: which bricks, at which tags?
Produce the candidate modules, the bricks and tags behind each, and the reference process
shown to the customer. Back: dodil://erp/build.
Steps
- Read the catalogue:
index.json(modules[]: id, maturity, repos), thenmodules/<id>/module.yamlfor each module in scope. On the blog the same files are/modules/index.jsonand/modules/<id>/spec.yaml. - Check
reference.repos. A module with repos EXISTS as bricks: you will clone and compose them. Do not write your own tables, models or routes for it (lab, 2026-10-17: a model that skipped this rebuilt HR from scratch, 3 runs of 3). - A module with no repos (gl, ar, purchasing) has no brick yet: generate a new brick in the brick shape on erp-platform (lifecycle, Transition). A module
in
catalog.yamlaspendinghas no spec: start from the modules itsstart_fromnames. - Read
customer_variesin each spec: the questions for phase 2. Notestandard:(a named authority) andtypical:(what we have seen) on each. - Show the reference process from the brick itself, for each PCF id in scope, never from the
spec in your own words (lab, 2026-10-18: a builder that did described a process the brick does not
run, and signed a hash of its notes). For HR, in the project folder (local, no login; this folder is
also where the build happens):
It writesuvx --from git+https://git.dodil.io/dodil/erp-platform.git@v0.8.2 erp-compose init hr mkdir -p config && echo '- { use_case: install_localisation_pack, args: { pack: gb, with_playbooks: true } }' > config/hr.calls.yaml uvx --from git+https://git.dodil.io/dodil/erp-platform.git@v0.8.2 erp-compose process --module hr --playbook employee-onboarding --calls config/hr.calls.yamlprocesses/employee-onboarding.bpmn(withscenarios.jsonanddeviations.json) and prints its short hash. Do it before your first answer, without asking: it is local and changes nothing of theirs. Then PASTE into your message the diagram's tasks in order, by their exact names, with the lane (who does it) of each, read from that file; never point them at a viewer instead (lab, 2026-10-18: "open it at bpmn.io, I haven't looked at it" is not showing). For other modules,/modules/<id>/process.bpmn(not published yet: describe the reference flow in words). Every node is a default: configurable, best practice, or kept. - Record in
ERP_<MODULE>.mdFrame: modules, bricks and tags, reference versions.
Example
curl -s https://blog.dodil.io/modules/index.json | python3 -c \
'import json,sys; [print(m["id"], m["maturity"], [r["name"]+"@"+r["tag"] for r in m.get("repos",[])]) for m in json.load(sys.stdin)["modules"]]'
# hr tested ['brick-hr@v0.5.3', 'brick-business-partner@v0.3.2', 'erp-platform@v0.9.0']
Done when
- Every module in scope has its bricks and tags recorded, or "generated: no brick".
- The customer has seen the reference process and said "yes, like that" or "not like that".
- The estimate you gave reflects which modules exist and which are generated.
Next: dodil://erp/phase/show