Holarch

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.

How to use it →

On this page
  1. Overview
  2. Concepts
  3. How to use it
    1. Work through the findings
    2. Focus on one area
    3. Review one item's findings together
    4. Worked example: the CubeSat EO-1 demo
    5. Tips
  4. The page
    1. Top bar
    2. Header line
    3. Toolbar
    4. Facets
    5. Findings
    6. Fixes
  5. Settings
  6. Rules
  7. Messages
  8. Limits
  9. Related

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

  1. 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.
  2. The list is grouped by rule, errors first. Click a rule heading to open it; its description says why the rule matters.
  3. 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.
  4. Save the fix. The finding disappears and the counts update.
  5. When a finding is intended (for example an action reused under two parents), click Ignore.

Focus on one area

  1. In the facets on the left, tick Errors under Severity to see only errors.
  2. 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.
  3. Type in Filter findings to match an item name or a rule heading.
  4. Click Clear facets to show everything again.

Review one item's findings together

  1. Choose Group by entity next to the filter.
  2. 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

  1. Open the CubeSat EO-1 demo project and go to Verification → Model Checks.
  2. 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).
  3. 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.
  4. 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

ControlWhat 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.
SettingsSets each rule's severity and the children per level (see Settings).
↻ Run ChecksRuns 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

FacetValues
SeverityErrors, Warnings
ClassThe class of each item with a finding
RuleEach rule with a finding, by number and heading
LabelEach label on an item with a finding
IgnoredShow 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

FixUsed byWhat it does
Edit a fieldMissing name, number or description; verb and noun checksOpens the field with the current value.
CapitalizeNames in lowercaseOffers the name with a capital first letter.
Add relationshipsMissing parent, performer, inputs, outputs, conduits, standards, tracesLists the items the schema allows for the relationship; tick them and click Add Relationships.
MergeSimilar names, single childrenKeeps one item, moves every relationship of the others to it, combines the descriptions and deletes the others (one undo step).
Delete relatedActions with an input produced after it is usedDeletes the input/outputs that are consumed before they exist.
Add traced toRequirements naming unrelated entitiesAdds traced to from the requirement to each item its text names.
Create IssueFailed test cases with no linked issueCreates an Issue linked to the test case and the requirements it verifies.
OpenLong child lists, exchanges, standards, thresholdsOpens the item or its diagram.
Open UAF ViewUAF views that cannot be shownLists 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

RuleHeadingA good model
Global.1Same or nearly the same namesWithin a class, no two entities share a name.
Global.2Names in lowercaseEvery entity name begins with a capital letter.
Global.4Repeated numbers in a classWithin a class, every number is unique.
Global.5Vague words in names or descriptionsNames and descriptions use precise words.
Global.6Entities with no relationshipsEvery entity has a relationship.
Global.7Live values pointing to missing targetsLive 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.8UAF views that cannot be shownEvery UAF view uses a root, class and relationship that its view type accepts.
Action.1Action names without a leading verbEvery Action name begins with a verb.
Action.2Action names in lowercaseEvery Action name begins with a capital letter.
Action.3Actions missing a nameEach action has a name.
Action.4Actions missing a numberEach action has a number.
Action.5Actions missing a descriptionEach action has a description.
Action.6Actions with no parent or childEvery action has a parent or a child.
Action.7Actions with a single childNo action has a single child.
Action.9Actions with over 9 childrenNo action has over 9 children.
Action.10Actions with several parentsNo action has several parents.
Action.11Actions no asset performsSome asset performs each action.
Action.12Actions that produce nothingEvery action produces an input/output.
Action.13Actions that consume nothingEvery action consumes an input/output.
Action.14Actions with no inputs or outputsEvery action consumes or produces an input/output.
Action.15Actions that produce but consume nothingEvery action that produces outputs also consumes an input.
Action.16Actions that consume but produce nothingEvery action that consumes inputs also produces an output.
Action.17Actions with an input produced after it is usedNo action receives an input/output that a later action generates.
Action.18Actions not traced to a requirementEvery action traces to a requirement.
Asset.1Asset names without a nounEvery asset name is a noun or noun phrase.
Asset.2Asset names in lowercaseEvery asset name begins with a capital letter.
Asset.3Assets missing a nameEach asset has a name.
Asset.4Assets missing a numberEach asset has a number.
Asset.5Assets missing a descriptionEach asset has a description.
Asset.6Assets with no parent or childEvery asset has a parent or a child.
Asset.7Assets with a single childNo asset has a single child.
Asset.9Assets with over 9 childrenNo asset has over 9 children.
Asset.10Assets with several parentsNo asset has several parents.
Asset.11Assets that perform no actionEach asset performs some action.
Asset.12Assets not connected by a conduitEvery asset is connected by a conduit.
Asset.13Exchanging assets with no conduit in commonAssets that exchange an input/output are connected by a conduit.
Asset.14Interacting assets with no standard in commonAssets that interact reference the same standard.
Asset.15Assets that exchange nothingEvery asset exchanges an input/output with another asset.
Conduit.1Conduit names without a leading nounEvery conduit name begins with a noun.
Conduit.2Conduits missing a nameEach conduit has a name.
Conduit.3Conduits missing a numberEach conduit has a number.
Conduit.4Conduits missing a descriptionEach conduit has a description.
Conduit.5Conduits with over two assetsNo conduit connects over two assets.
Conduit.6Conduits with under two assetsEvery conduit connects two assets.
Conduit.7Conduits with no standard in common with their assetsA conduit and the assets it connects reference the same standard.
Conduit.8Conduits that transfer nothingEach conduit transfers some input/output.
Conduit.9Conduits not traced to a requirementEvery conduit traces to a requirement.
IO.1Input/outputs missing a nameEach input/output has a name.
IO.2Input/outputs missing a numberEach input/output has a number.
IO.3Input/outputs missing a descriptionEach input/output has a description.
IO.4Input/outputs with several parentsNo input/output has more than one parent.
IO.5Input/outputs no action producesSome action produces each input/output.
IO.6Input/outputs no action consumesSome action consumes each input/output.
IO.7Input/outputs no action usesEvery input/output is produced or consumed by an action.
IO.8Input/outputs an action both produces and consumesNo action consumes an input/output that it produces.
IO.9Input/outputs with no standard in common with their assetsAn input/output and the assets that exchange it reference the same standard.
IO.10Input/outputs not traced to a requirementEvery input/output traces to a requirement.
Requirement.1Requirements naming unrelated entitiesA requirement is related to every entity it names.
Requirement.2Leaf requirements without "shall"Every leaf requirement uses the word "shall".
Requirement.3Requirements missing a nameEach requirement has a name.
Requirement.4Requirements missing a numberEach requirement has a number.
Requirement.5Requirements missing a descriptionEach requirement has a description.
Requirement.6Requirements with no parent or childEvery requirement has a parent or a child.
Requirement.7Requirements with several parentsNo requirement has several parents.
Requirement.8Leaf requirements no design entity meetsEvery leaf requirement is related to an Action, Asset, Input/Output or Conduit.
Requirement.9Requirements satisfied by several input/outputsNo requirement is satisfied by more than one input/output.
Requirement.10Leaf requirements with no verifying test caseEach leaf requirement is verified by a Test Case.
Risk.1Highest-level risks with no mitigationEach open risk at the highest level of the risk matrix is mitigated by something.
TestCase.1Failed test cases with no linked issueEach failed Test Case is linked to an Issue.
Measure.1Measures that breach their thresholdEach 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

MessageMeaning
"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.