Skip to main content

Frequently Asked Questions

1. What is the difference between system, app, and component?

  • A system represents a macro-level software platform (e.g. Payment Gateway System).
  • An app represents a distinct deployable application or API within that system (e.g. Payment REST API).
  • A component is an internal handler, worker, or module inside an application (e.g. Tokenization Handler).

2. Can an entity have multiple parent systems using composed_of?

No. An entity can only be the destination of at most one composed_of relationship. If a shared component or service is consumed by multiple upstream systems, use depends_on or serves.

Use the realizes verb on the capability pointing to the stage:

capability cap_kyc "Automated KYC" {
relationships {
this realizes stage_identity_verification
}
}

4. Can I define custom properties not built into the language?

Yes! Use the attr keyword with optional namespaces:

attr finops:cost_center "FIN-102"
attr aws:arn "arn:aws:sqs:us-east-1:123456:payments"

5. Why must all identifiers use snake_case?

snake_case ensures consistent lexing, cross-platform compatibility, case-sensitive compiler symbol lookups, and clear separation between identifiers and display names.