dodil/erp-method

README.md

erp-method

How DODIL builds business systems (ERP: sales, HR, contracts, invoicing, the books) for a customer, and the catalogue of modules it builds them from. This repo is the method, not the code: the code is in the public bricks (git.dodil.io/dodil/erp-brick-*) on erp-platform.

Layout

erp/build.md              THE MAP: phases 0-9, the artefact, the tool and the card for each
erp/phase/<name>.md       one short card per phase: numbered steps, an example, "done when"
                          frame discover show fit signoff build test deploy operate change
modules/lifecycle.md      the full method, phase by phase (the reasoning behind the cards)
modules/pattern.md        the anatomy of a module and of a brick
modules/template.md       the customer's design file, ERP_<MODULE>.md
modules/module.template.yaml  the skeleton a NEW module spec starts from
modules/catalog.yaml      modules with no spec yet (pending), and what to start from
modules/shared.yaml       vocabulary no module decides alone: cross-module keys, money, owners
modules/waivers.yaml      known debt, waived by count, with what fixing it costs
modules/test_composition.py  the composition test every customer repo ships
modules/<id>/module.yaml  one module spec: actors, stories, workflows, entities, repos
index.json                machine-readable index of all of the above (scripts/build_index.py)

How it is consumed

  • Agents read it through the DODIL CLI and MCP server: dodil://erp/build is erp/build.md, dodil://erp/phase/<name> is erp/phase/<name>.md, and dodil://erp/modules/… is modules/…. Start at dodil://erp/build.
  • The blog (blog.dodil.io/modules/…) renders the same files, so the page, the spec and the agent resource cannot disagree.
  • Both read the files at a release tag, never at main. index.json lists what a tag holds.

Releases

A release is an annotated tag v<semver>. Nothing reaches agents until it is tagged, and agent-facing text is lab-checked before a tag (see AGENTS.md). Pin a tag the way a customer repo pins a brick.

Proposing a change

Open a pull request. Say what you changed and where it was learned: a lab run, a customer engagement (never named), a live measurement with its date, or a source. Run python3 scripts/check.py and python3 scripts/build_index.py before pushing.

Licence

Apache-2.0 (LICENSE). APQC PCF names and ids are used under APQC's licence: APQC-NOTICE.md.