Analysis patterns¶
Twelve patterns, each a method for a kind of architecture question: which templates to run, what gates them, and — the part that matters most — when to stop.
assets/patterns.json is the authoritative routing table. The prose under references/patterns/ is
the depth behind each entry, and the suite tests the two against each other: every pattern has a
reference file that exists, and every template it names is in the query catalogue. A pattern naming
a template nobody ships is a routing instruction to nowhere.
python3 scripts/la-analyse plan --list-patterns
python3 scripts/la-analyse plan --question 'what depends on "Order Service"?' --mode impact-and-dependency
How a question reaches a pattern¶
flowchart TD
Q["the question"] --> M{"--mode given?"}
M -->|yes| P["that pattern, no scoring"]
M -->|no| T["score every pattern:<br/>substring match for phrases,<br/>whole-word for single words"]
T --> S{"best score > 0?"}
S -->|yes| P
S -->|no| Z["no pattern matched.<br/><small>orientation steps are still right;<br/>then name a pattern or say this<br/>package has no method for it</small>"]
A zero score everywhere is a real answer, not a failure: the question does not look like anything this skill has a method for.
The lists below are ordered candidate checklists, not mandatory execution scripts. Analyse de-duplicates queries, makes definitions conditional, records refused candidates as decisions, and preserves review barriers before dependent work. Stop when the evidence is sufficient; do not execute every candidate to complete a checklist. Query remains the execution owner.
capabilities here is advisory
The authoritative gate is the query catalogue's own requires, checked at render time. The
pattern lists capabilities so a planner can say "this dataset cannot answer that" before running
anything.
The twelve patterns¶
coverage-and-gaps¶
Coverage and gaps. Depth: references/patterns/coverage-and-gaps.md
Triggers: uncovered, coverage, incomplete, gap, gaps, missing, no owner, without an owner, unowned, how many have
Candidate templates, in evidence order:
core/inventorycore/elements-by-typecore/element-detailcore/coverage-gapscore/orphans
Stop when:
- the population is empty, which produces zero gaps and looks like perfect coverage
- the gap concentrates in one model, which is a partial export rather than an ownership problem
cross-notation¶
Cross-notation questions. Depth: references/patterns/cross-notation.md
Triggers: reconcile, same system, same thing, both tools, across tools, bpmn to archimate, backstage to c4, identity
Candidate templates, in evidence order:
core/identity-audit— gated onidentity_assertionscore/label-collisionscore/inventory-summary
Capability gates: identity_assertions (core/identity-audit only)
Stop when:
- identity-audit is refused: stop the identity-dependent join, not independent parts of a multi-part question
- only label candidates remain: report identity as unresolved and continue independent claims with their own evidence
governance-and-decisions¶
Governance and decisions. Depth: references/patterns/governance-and-decisions.md
Triggers: decision, principle, standard, policy, exception, constraint, approved, governance, compliant
Candidate templates, in evidence order:
core/discover-predicatescore/element-detailcore/classified-bycore/provenance
Stop when:
- no predicate in this dataset carries decisions or policies at all
- the only status found describes the conversion rather than the architecture
taxonomy-classification¶
Taxonomy classification. Depth: references/patterns/taxonomy-classification.md
Triggers: classified under, classified as, classified, classification branch, taxonomy branch, taxonomy category, category members
Candidate templates, in evidence order:
core/resolve-concept— resolution step, not an extra pattern querycore/classified-bycore/provenance
Stop when:
- no matching SKOS concept or scheme is present in the semantic graph — do not invent an IRI
- more than one concept or scheme matches the term — ask which one was intended
- the branch has no asserted classifications — do not infer that no elements belong to it
The question's classification wording selects this pattern; the quoted SKOS label resolves a concept after selection. A label by itself never chooses a template.
notation-taxonomy¶
Notation type taxonomy. Depth: references/patterns/notation-taxonomy.md
Triggers: notation taxonomy, type taxonomy, grouped by domain, grouped by aspect, element by domain, element by aspect, type category
Candidate templates, in evidence order:
core/resolve-vocabulary-concept— resolution step over attached vocabularycore/elements-by-categorycore/provenance
Stop when:
- the notation's matching vocabulary is not attached — zero categories do not mean zero elements
- multiple schemes or categories match — review the exact scheme IRI
- the category groups OWL types, not asserted instance classifications
viewpoint-selection¶
Viewpoint selection. Depth: references/patterns/viewpoint-selection.md
Triggers: which viewpoint, what viewpoint, choose a viewpoint, suitable viewpoint, viewpoint catalog, viewpoint library, capability map viewpoint
Candidate templates, in evidence order:
core/viewpoint-catalog— resolution step over attached vocabularycore/viewpoint-detailcore/views— actual views, not viewpoint prescriptions
Stop when:
- the matching viewpoint catalog is not attached
- stakeholder, purpose or allowed classes do not fit the question
- a viewpoint declaration or conformance assertion is mistaken for SHACL conformance
impact-and-dependency¶
Impact and dependency. Depth: references/patterns/impact-and-dependency.md
Triggers: retire, replace, migrate, decommission, affected by, depends on, dependency, blast radius, impact
Candidate templates, in evidence order:
core/resolve-elementcore/discover-relationship-typescore/neighbours-qualifiedcore/dependents-qualifiedcore/reified-predicates— gated onrdf_reifies; names the predicatescore/dependents-directfollowscore/dependents-direct— gated ondirect_rel_triplescore/provenance
Capability gates: direct_rel_triples (core/dependents-direct only), rdf_reifies (core/reified-predicates only)
Stop when:
- the relationship semantics on a path stop supporting the claim
- reachability has been established but criticality has not - they are different questions
- the next hop needs data the models do not carry, such as traffic or failure history
lifecycle-and-portfolio¶
Lifecycle and portfolio comparison. Depth: references/patterns/lifecycle-and-portfolio.md
Triggers: duplicate, duplicates, overlap, rationalise, rationalize, lifecycle, deprecated, portfolio, strategic importance
Candidate templates, in evidence order:
core/lifecycle— gated onelement_lifecyclecore/define-termcore/label-collisionscore/identity-audit— gated onidentity_assertionsnotation/leanix/factsheets
Capability gates: element_lifecycle (core/lifecycle only); identity_assertions (core/identity-audit only)
Stop when:
- equivalence rests on labels alone - say the question is not answerable yet
- lifecycle is absent for most of the population, so the listed subset is not a portfolio view
model-contents¶
What a model contains. Depth: references/patterns/model-contents.md
Triggers: what is in, what does this model cover, take part, takes part, participate, who is involved, contents, components
Candidate templates, in evidence order:
core/inventory-summarycore/resolve-modelcore/define-termnotation/bpmn/process-componentsnotation/bpmn/process-flownotation/c4/containers
Stop when:
- the model is drawn at a level of detail that hides what was asked about
- a participant has been listed - that is a drawn intent, not a running system
model-quality¶
Model quality. Depth: references/patterns/model-quality.md
Triggers: can we trust, trust, quality, complete, wrong with, orphan, orphans, conformance, conform
Candidate templates, in evidence order:
core/inventory-summarycore/orphanscore/coverage-gapscore/provenancecore/identity-auditcore/validation-summary— gated onvalidation_in_graph
Capability gates: validation_in_graph (core/validation-summary only)
Stop when:
- the question turns out to be about conformance against shapes - hand it to linked-archi-validate
- a verdict is available but its target-class coverage is not, which makes the verdict unreadable
traceability¶
Traceability. Depth: references/patterns/traceability.md
Triggers: which capability, supports, realises, realizes, implements, serves, cross-layer, end to end, traceability, trace
Candidate templates, in evidence order:
core/resolve-elementcore/traceabilitycore/coverage-gaps
Stop when:
- no cross-layer relationship type exists in this dataset, which is a finding
- a missing link has been identified - report it separately from a negative assertion
views-and-documentation¶
Views and documentation. Depth: references/patterns/views-and-documentation.md
Triggers: diagram, diagrams, drawn, documented, view, views, what is new in
Candidate templates, in evidence order:
core/views— gated onviews_graphcore/view-contents— gated onviews_graphcore/view-usage— gated onviews_graphcore/view-diff— gated onviews_graph
Capability gates: views_graph (every template in this pattern)
Stop when:
- the notation carries no diagrams at all, which is always true of Backstage and LeanIX
- a difference between diagrams has been found - it is not yet a difference in the architecture