Documentation menu

ArcLang validation rules

This page is generated by the compiler (arclang rules). A test fails when it and the compiler disagree.

What the compiler checks, as arclang check --lint --json reports it: each finding names its rule.

Rule Severity Title Meaning How to answer
syntax.unmodeled warning Block not represented in the model A block the parser accepts but the compiled model does not hold (a dataflow, for instance): its contents are ignored. Model the content with constructs the metamodel holds, or remove the block.
syntax.attribute-not-stored warning Attribute not stored An attribute written on a construct that does not keep it: it is read and dropped. Move the information to an attribute the kind declares (see arclang metamodel), or remove it.
metamodel.type error (gate blocker) Typed attribute violated A declared attribute does not fit its type: a quantity of the wrong dimension, an unknown enumeration value, a list where one value is expected. The production gate blocks on it. Write a value of the declared type; arclang metamodel lists the type and the accepted values.
metamodel.unit warning Quantity without a unit A bare number where the metamodel expects a quantity: the unit is assumed, the model should state it. Write the unit with the number: latency: 25 ms.
metamodel.reference warning Reference to an element of another kind A reference attribute names an element whose kind is not the one expected there. Point the attribute at an element of the expected kind.
identity.duplicate error (gate blocker) Two elements share one identity Two declarations resolve to the same id: traces and exchanges could not tell them apart. Give one of them an explicit, unique id.
spatial.length error (gate blocker) Link shorter than the ground it covers A physical link's length is shorter than its route, or than the distance between its located ends: the medium cannot be that short. Correct the length, the route or the location of an end.
spatial.max-length error (gate blocker) Link beyond its maximum length A physical link is longer than its max_length (a cable or bus limit): by its length, its route or the distance between its ends. Shorten the route, move an end, or choose a medium that reaches that far.
spatial.latency error (gate blocker) Latency faster than light A physical link's latency is shorter than the time light takes to cover its length: no medium carries a signal that fast. Correct the latency or the length of the link.
constraint.violated warning Constraint violated A declared constraint compares as false on the model's values. The production gate blocks on it. Change the values the constraint compares, or the constraint, so that the model holds what it claims.
trace.requirement warning Requirement without a trace No element satisfies, refines or verifies the requirement, in either direction: it is not covered. Declare trace "<element>" satisfies "<requirement>", or a test case that verifies: it.
trace.component warning Component without a trace No trace names the component: nothing says what it realizes or satisfies. Declare what the component satisfies or realizes with a trace.
trace.suspect warning Suspect trace A trace reviewed against its two ends (reviewed:), one of which changed since: what it claims may no longer hold. The production gate blocks on it. Check that the trace still holds (or correct it), then mark it reviewed: arclang trace <model> --review --from <a> --to <b>.
rule.user warning Rule of the model not held An element does not hold a rule the model declares (kind, where, require). A rule of severity blocker stops the production gate. Give the element what the rule requires, or change the rule.
method.layer-order info Layer without the one it refines Arcadia builds each level on the previous one: a physical architecture realizes a logical one, which allocates system functions, which answer operational needs. Add the missing level, or keep the model as a single-level study if that is what it is.
method.component-functions info Logical component without a function Arcadia expects a logical component to realize behavior: at least one function is allocated to it. Declare the functions the component performs inside it.
method.exchange-transport info Exchange between nodes without a physical link A behavioral exchange between components deployed on different nodes must be carried by a physical link or exchange. Declare the physical link (or physical exchange) between the two nodes.
method.other info Methodology advisory An Arcadia advisory the catalog does not classify further. Read the advisory.
compile.other warning Compiler warning A warning the catalog does not classify further. Read the warning.

The production gate (arclang gate) reports its own findings, each named after its check: requirements.presence, requirements.satisfaction, requirements.verification, verification.dangling, safety.hara, safety.asil, safety.dal, safety.mitigation, timing.latency, timing.budget, timing.units, icd.completeness, constraints.violated, metamodel.types, methodology, traceability.suspect; a rule of the model reports under rule.<its id> (a blocker or a warning, as it says), and one that cannot hold under rule.invalid.

Source: spec/RULES.md in the ArcLang repository.