Two ways to change an app, both supported: edit the .cordango.yaml files directly, or apply
semantic operations. Both assemble into the same model, so the choice is
about what is convenient rather than what is correct.
Hand-editing is the right choice for a small, known change. Semantic operations are the right
choice for structural change and for anything an agent is driving.
Find the file first
The directory layout is a convention for humans. What makes a file an entity is the entity: key
on its first line, not which folder it sits in.
Check what you may write
This answers from the build you have installed, so it cannot disagree with what your CLI will
accept. Do not go reading the App Definition schema; see The schema.
Then check the change
No model, no database, no network. It is free, and it reports against the file and line you wrote
rather than a path into a compiled document. Run it constantly.
Canonical key order and quoting for every .cordango.yaml file. Run it after hand-editing so the
next diff shows a change in meaning rather than a change in whitespace.
Four rules
One aggregate per change. A diff touching one entity is a diff somebody can review. A diff
touching nine is a diff that gets approved without being read.
Keys are stable. Renaming an entity or field key is not supported, because nothing rewrites the
references to it. Add the new one and remove the old one, deliberately, as two decisions.
There is no rename. A key you choose today is a key you live with or migrate away from by hand.
Spend a moment on it.
Never edit .cordango/. The dotted directory is build output. Changes there vanish on the next
cordango build, and they were never the source of anything.
Check before you declare. Companies, people and calendar events already exist as
core apps. Reference them.
Bringing in an existing definition
That turns an App Definition into source files you can edit. It is the way in for an app that was
built before the workspace existed, or one produced somewhere else.
Diagnosing a workspace
This finds problems that are not source errors: an app registered in cordango.yaml whose
directory is missing, a stale credential, a layout that does not add up. cordango check answers
“is this app right”; doctor answers “is this workspace right”.