Verification
Model Checks
Run 70 rule-based checks over the whole model, narrow the findings by severity, class, rule and label, fix them in place, ignore the ones that are intended, and set how strict each rule is.
On this page
Overview
Verification → Model Checks runs a catalogue of rules over every item in the project and lists what each rule finds. The rules look for gaps that make a model hard to trust or review: missing names and numbers, items that stand alone, actions nobody performs, interfaces that carry nothing, requirements that are not allocated or not verified, risks without a handling plan and measures that miss their threshold.
The checks run again whenever the model changes, so the page, the Model checks card on Home and the badge on Verification always agree.
Concepts
- Rule: one check with a number (for example Requirement.10), a heading that names what it finds, a statement of what a good model looks like, and a fix. Rules are grouped by the class they check: Global (every item), Action, Asset, Conduit, Input/Output, Requirement, Risk, Test Case and Measure.
- Finding: one item that breaks one rule. A finding can name related items, for example the duplicates of a name or the children of a parent.
- Severity: each rule reports as Error or Warning, or is set to Ignore and does not run. The default is Warning.
- Ignored finding: a finding you have accepted for one item. It no longer counts, and Show ignored lists it with Restore.
- Applicable check: a rule that ran over at least one item of its class. The header line counts how many applicable checks have no finding.
How to use it
Run the checks before each review, after a large import, and whenever Home shows model check errors. They answer one question: what in the model needs attention before someone else reads it?
Work through the findings
- Open Verification → Model Checks. The header line shows, for example, "84% of applicable checks pass", followed by the number of errors and warnings and the change since the last run.
- The list is grouped by rule, errors first. Click a rule heading to open it; its description says why the rule matters.
- For each finding, click Fix. The fix dialog shows the item, the rule and the suggested fix: a field to fill in, relationships to add, duplicates to merge, or a button that opens the item or its diagram.
- Save the fix. The finding disappears and the counts update.
- When a finding is intended (for example an action reused under two parents), click Ignore.
Focus on one area
- In the facets on the left, tick Errors under Severity to see only errors.
- Tick a class under Class (the class of the item with the finding), a rule under Rule or a label under Label. Ticks in one facet combine with OR; facets combine with AND. Each value shows how many findings it has.
- Type in Filter findings to match an item name or a rule heading.
- Click Clear facets to show everything again.
Review one item's findings together
- Choose Group by entity next to the filter.
- Each item is listed once with all its findings, in number order. An item with an error shows an Error badge in its heading.
Worked example: the CubeSat EO-1 demo
- Open the CubeSat EO-1 demo project and go to Verification → Model Checks.
- Tick Requirement under Class. The rules that remain show which requirements have no parent, no allocation (Requirement.8) or no verifying test case (Requirement.10).
- Open Requirement.10, click Fix on a finding, and link the test case that verifies it. The finding leaves the list, and the header line moves up.
- Choose Group by entity to see every remaining finding of one requirement at once.
Tips
- Set the rules your team treats as blocking to Error in Settings, so Home lists them as problems.
- Ignore a finding only when it is intended, and say why in the item's description or a comment. Show ignored lets reviewers see what was accepted.
- A long list of naming findings after an import is usually fixed fastest by editing names in the Database.
- Run the checks before saving a baseline, so the baseline does not carry known gaps.
The page
Top bar
| Control | What it does |
|---|---|
| Export… | Opens the Export dialog with Findings (CSV): every finding that is not ignored, with rule, severity, heading, item id, number, name, class, note and related items. |
| Settings | Sets each rule's severity and the children per level (see Settings). |
| ↻ Run Checks | Runs every check again and records the counts as the last run. |
Header line
- "N% of applicable checks pass": red when any finding is an error, amber when there are only warnings, green when there is nothing to fix.
- The number of findings, errors and warnings.
- The change since the last run on this device, for example "3 findings fewer than the last run." The last run is recorded when you open or leave the page and when you click ↻ Run Checks. The first visit says "First run on this device."
Toolbar
- Group by rule (default) or Group by entity. The choice is remembered on this device.
- Filter findings: matches item names, rule numbers and rule headings.
- Expand All and Collapse All open or close every group.
Facets
| Facet | Values |
|---|---|
| Severity | Errors, Warnings |
| Class | The class of each item with a finding |
| Rule | Each rule with a finding, by number and heading |
| Label | Each label on an item with a finding |
| Ignored | Show ignored adds the ignored findings to the list, marked Ignored, with Restore |
Counts follow the other facets and the filter, so they show what ticking a value would leave.
Findings
Each finding shows the item (or, grouped by entity, the rule), the note (for example "Vague words: adequate, TBDTo Be Determined A requirement value or detail that is not known yet. Holarch tracks TBDs with an owner and a due date." or "14 children"), the related items, and the buttons Fix and Ignore, or Restore for an ignored finding. Ignore and Restore are one undo step each.
Fixes
| Fix | Used by | What it does |
|---|---|---|
| Edit a field | Missing name, number or description; verb and noun checks | Opens the field with the current value. |
| Capitalize | Names in lowercase | Offers the name with a capital first letter. |
| Add relationships | Missing parent, performer, inputs, outputs, conduits, standards, traces | Lists the items the schema allows for the relationship; tick them and click Add Relationships. |
| Merge | Similar names, single children | Keeps one item, moves every relationship of the others to it, combines the descriptions and deletes the others (one undo step). |
| Delete related | Actions with an input produced after it is used | Deletes the input/outputs that are consumed before they exist. |
| Add traced to | Requirements naming unrelated entities | Adds traced to from the requirement to each item its text names. |
| Create Issue | Failed test cases with no linked issue | Creates an Issue linked to the test case and the requirements it verifies. |
| Open | Long child lists, exchanges, standards, thresholds | Opens the item or its diagram. |
| Open UAF View | UAF views that cannot be shown | Lists the root's views with their problems and opens the first. |
Settings
- Children per level: Action.9 and Asset.9 report a parent with more children than this number. The default is 9, from the guideline that people handle about 7 ± 2 items at one level. Allowed values are 2 to 99; another value shows "Children per level must be a whole number from 2 to 99."
- Severity per rule: Error, Warning or Ignore. An ignored rule does not run.
- Restore Defaults sets every rule back to Warning and the children per level back to 9.
Settings are stored in the project, shared with everyone on it, and undoable.
Rules
| Rule | Heading | A good model |
|---|---|---|
| Global.1 | Same or nearly the same names | Within a class, no two entities share a name. |
| Global.2 | Names in lowercase | Every entity name begins with a capital letter. |
| Global.4 | Repeated numbers in a class | Within a class, every number is unique. |
| Global.5 | Vague words in names or descriptions | Names and descriptions use precise words. |
| Global.6 | Entities with no relationships | Every entity has a relationship. |
| Global.7 | Live values pointing to missing targets | Live values, matrix blocks, live tables (tables, counts and totals) and cross-references in descriptions point to entities, documents, classes, labels, relationships, figures and tables that exist. |
| Global.8 | UAF views that cannot be shown | Every UAF view uses a root, class and relationship that its view type accepts. |
| Action.1 | Action names without a leading verb | Every Action name begins with a verb. |
| Action.2 | Action names in lowercase | Every Action name begins with a capital letter. |
| Action.3 | Actions missing a name | Each action has a name. |
| Action.4 | Actions missing a number | Each action has a number. |
| Action.5 | Actions missing a description | Each action has a description. |
| Action.6 | Actions with no parent or child | Every action has a parent or a child. |
| Action.7 | Actions with a single child | No action has a single child. |
| Action.9 | Actions with over 9 children | No action has over 9 children. |
| Action.10 | Actions with several parents | No action has several parents. |
| Action.11 | Actions no asset performs | Some asset performs each action. |
| Action.12 | Actions that produce nothing | Every action produces an input/output. |
| Action.13 | Actions that consume nothing | Every action consumes an input/output. |
| Action.14 | Actions with no inputs or outputs | Every action consumes or produces an input/output. |
| Action.15 | Actions that produce but consume nothing | Every action that produces outputs also consumes an input. |
| Action.16 | Actions that consume but produce nothing | Every action that consumes inputs also produces an output. |
| Action.17 | Actions with an input produced after it is used | No action receives an input/output that a later action generates. |
| Action.18 | Actions not traced to a requirement | Every action traces to a requirement. |
| Asset.1 | Asset names without a noun | Every asset name is a noun or noun phrase. |
| Asset.2 | Asset names in lowercase | Every asset name begins with a capital letter. |
| Asset.3 | Assets missing a name | Each asset has a name. |
| Asset.4 | Assets missing a number | Each asset has a number. |
| Asset.5 | Assets missing a description | Each asset has a description. |
| Asset.6 | Assets with no parent or child | Every asset has a parent or a child. |
| Asset.7 | Assets with a single child | No asset has a single child. |
| Asset.9 | Assets with over 9 children | No asset has over 9 children. |
| Asset.10 | Assets with several parents | No asset has several parents. |
| Asset.11 | Assets that perform no action | Each asset performs some action. |
| Asset.12 | Assets not connected by a conduit | Every asset is connected by a conduit. |
| Asset.13 | Exchanging assets with no conduit in common | Assets that exchange an input/output are connected by a conduit. |
| Asset.14 | Interacting assets with no standard in common | Assets that interact reference the same standard. |
| Asset.15 | Assets that exchange nothing | Every asset exchanges an input/output with another asset. |
| Conduit.1 | Conduit names without a leading noun | Every conduit name begins with a noun. |
| Conduit.2 | Conduits missing a name | Each conduit has a name. |
| Conduit.3 | Conduits missing a number | Each conduit has a number. |
| Conduit.4 | Conduits missing a description | Each conduit has a description. |
| Conduit.5 | Conduits with over two assets | No conduit connects over two assets. |
| Conduit.6 | Conduits with under two assets | Every conduit connects two assets. |
| Conduit.7 | Conduits with no standard in common with their assets | A conduit and the assets it connects reference the same standard. |
| Conduit.8 | Conduits that transfer nothing | Each conduit transfers some input/output. |
| Conduit.9 | Conduits not traced to a requirement | Every conduit traces to a requirement. |
| IO.1 | Input/outputs missing a name | Each input/output has a name. |
| IO.2 | Input/outputs missing a number | Each input/output has a number. |
| IO.3 | Input/outputs missing a description | Each input/output has a description. |
| IO.4 | Input/outputs with several parents | No input/output has more than one parent. |
| IO.5 | Input/outputs no action produces | Some action produces each input/output. |
| IO.6 | Input/outputs no action consumes | Some action consumes each input/output. |
| IO.7 | Input/outputs no action uses | Every input/output is produced or consumed by an action. |
| IO.8 | Input/outputs an action both produces and consumes | No action consumes an input/output that it produces. |
| IO.9 | Input/outputs with no standard in common with their assets | An input/output and the assets that exchange it reference the same standard. |
| IO.10 | Input/outputs not traced to a requirement | Every input/output traces to a requirement. |
| Requirement.1 | Requirements naming unrelated entities | A requirement is related to every entity it names. |
| Requirement.2 | Leaf requirements without "shall" | Every leaf requirement uses the word "shall". |
| Requirement.3 | Requirements missing a name | Each requirement has a name. |
| Requirement.4 | Requirements missing a number | Each requirement has a number. |
| Requirement.5 | Requirements missing a description | Each requirement has a description. |
| Requirement.6 | Requirements with no parent or child | Every requirement has a parent or a child. |
| Requirement.7 | Requirements with several parents | No requirement has several parents. |
| Requirement.8 | Leaf requirements no design entity meets | Every leaf requirement is related to an Action, Asset, Input/Output or Conduit. |
| Requirement.9 | Requirements satisfied by several input/outputs | No requirement is satisfied by more than one input/output. |
| Requirement.10 | Leaf requirements with no verifying test case | Each leaf requirement is verified by a Test Case. |
| Risk.1 | Highest-level risks with no mitigation | Each open risk at the highest level of the risk matrix is mitigated by something. |
| TestCase.1 | Failed test cases with no linked issue | Each failed Test Case is linked to an Issue. |
| Measure.1 | Measures that breach their threshold | Each Measure’s projected (or current) value meets its threshold. |
Notes on the rules:
- Requirement-writing rules cite the INCOSEInternational Council on Systems Engineering The professional society for systems engineering. It publishes the Systems Engineering Handbook. Guide to Writing Requirements: vague words (R7, vague terms; R8, escape clauses), "shall" (R1, structured statements) and capital letters (R39, style guide). The full writing check is Requirement Quality.
- Tasks, test cases, state transitions, ports and resources are skipped by the Action and Asset rules; the Global rules still apply to them.
- A decomposed item counts as performed, fed, productive or traced when any of its descendants is.
- Ports are interface points, not parts: they do not count as children, and a conduit on a port counts for the asset that owns it.
- Use cases (Actions with the Use Case label) are exempt from the verb rule and the input/output rules.
Messages
| Message | Meaning |
|---|---|
| "No findings. Every applicable check passes." | Nothing to fix. |
| "No findings. N findings ignored; Show ignored lists them." | Every remaining finding was ignored. |
| "No finding matches the filter. Clear the filter or the facets." | The facets or the filter hide every finding. |
| "The schema allows none of these relationships for the class …" | The fix needs a relationship the project schema does not allow for that class. Add it in the Schema Editor, or fix the finding another way. |
Limits
- The list shows up to 200 findings per group; filter the list to see the rest.
- The change since the last run is kept per device and browser, not in the project.
- The public API and MCP tools return the same findings with the project's settings; they do not store results.