Modularity and Reusable Structure Characteristics

About this pattern

This is a generated FPF pattern page projected from the published FPF source. It is canonical FPF content for this ID; it is not a FPF Reference product feature page.

How to use this pattern

Read the ID, status, type, and normativity first. Use the content for exact wording, the relations for adjacent concepts, and citations to keep active work grounded without pasting the whole specification.

Type: Characterization pattern Status: Stable Normativity: Normative unless explicitly marked informative

Use this pattern when modularity or reusable-structure language is doing work in an architecture discussion and the practitioner needs to know which few characteristics matter, what repair follows, and whether any measurement or comparison is admissible.

Keywords

  • modularity characteristics
  • reusable-structure characteristics
  • coupling
  • cohesion
  • substitutability
  • interface variation
  • evidence reuse
  • bespoke residue
  • ModularityVectorLite.

Relations

C.31explicit referenceModule Relation Repair
C.31explicit referenceReusable Structure Accounting
C.31explicit referenceMathematical Lens Use
C.31explicit referenceDecision Theory (Decsn-CAL)
C.31explicit referenceSoTA Harvester & Synthesis
C.31explicit referenceEvidence Graph Referring (C-4)
C.31explicit referenceBitter‑Lesson Preference (BLP)
C.31explicit referenceU.Dynamics: The Law of Change

Content

Problem frame

Use this pattern when modularity or reusable-structure language is doing work in an architecture discussion and the practitioner needs to know which few characteristics matter, what repair follows, and whether any measurement or comparison is admissible.

The first useful move is deliberately small:

ModularityVectorLite:
  describedHolonRef:
  boundedContextRef:
  architectureClaimRef?:
  structureKindRefs:
  threeLiveCharacteristicsAtMost:
  observedProblem:
  repairDirection:
  relatedClaimGovernanceIfClaimed:
  nonAdmissibleOverread:
  stopCondition:

Start with recognition, at most three characteristics under evaluation, the observed problem, and a repair direction. A report-only proxy is an admissible stop when no beyond-local-repair use is being made.

Claim-use boundary: comparison, publication, evidence, assurance, gate, decision, benchmark, causal-use, cross-case reuse, selection, procurement, and architecture scale-preference are beyond-local-repair uses in C.31. Add their fields only when that use is being made and recoverable by value and the governing pattern can be named.

What goes wrong if C.31 is missed: "modular" becomes a binary label; a single modularity score hides incompatible characteristics; interface publication is confused with substitutability; internal cohesion is improved while evidence reuse gets worse; bespoke residue moves from templates into work or assurance; and complexity language becomes a commensurable score without a declared characteristic, scale, measurement basis, comparison basis, or admissible-use boundary.

What C.31 buys in practice: the practitioner can see which modularity characteristic changes the next move, which false use is blocked, which repair is plausible, and which governing pattern governs measurement, evidence, causal, scale, selection, or accounting claims.

Not this pattern when the question under repair is only source-label recovery, module-interface relation repair, reusable-structure accounting, general measurement legality, quality-family claim, architecture scale-preference claim, mathematical-lens use, candidate architecture synthesis, or selection. Use [C.30.STRAT](/generated/patterns/C.30.STRAT), [A.6.M](/generated/patterns/A.6.M), [C.31.RSA](/generated/patterns/C.31.RSA), [C.16](/generated/patterns/C.16), [C.25](/generated/patterns/C.25), [C.31.ASAP](/generated/patterns/C.31.ASAP), [C.29](/generated/patterns/C.29), [G.5](/generated/patterns/G.5), or [C.11](/generated/patterns/C.11) as appropriate; do not treat C.31 as the synthesis or selector pattern.

Problem

Architecture work often asks for more modularity, better reuse, lower coupling, more explicit interfaces, cleaner allocation, or less bespoke residue. These phrases point to real engineering work, but they do not name one scalar property.

Modularity can improve along one characteristic while worsening another. A design can reduce external coupling and increase interface alphabet size. A platform can standardize interfaces and create unhelpful rigidity. Evidence reuse can improve while functional-to-module allocation remains tangled. A report can show a high reuse share while hiding source-return work or residual uncertainty.

C.31 turns modularity talk into a small characteristic vector plus repair direction. It does not promise that every characteristic is measurable now, comparable across cases, causal, admissible for decision use, or evidence-backed.

Forces

ForceTension
Fast architecture repair vs measurement legalityPractitioners often need the next modularity move before a full measurement template exists.
Characteristic plurality vs scalar pressureDifferent modularity interpretations have different subjects, scales, evidence, declared measurement or comparison basis, governing-pattern needs, and risks; one score hides that plurality.
Useful proxy vs proxy substitutionA cheap share, count, or graph interpretation can guide local repair, but it may become a false quality, evidence, or decision claim.
Module-interface view vs broader structureModularity can involve functions, flows, control, work, evidence, data, placement, or scale, not only modules.
Local repair vs cross-case publicationA local diagnosis can stop at report-only use; cross-case comparison needs C.16, C.25, G.2, and possibly G.5 or C.11 claim-governance assignment.
Complexity pressure vs complexity ontologyResidual pressure and growth signals are useful, but complexity is not one commensurable architecture characteristic.

Solution

C.31 governs modularity and reusable-structure characteristics as C.16-compatible characteristic heads, composite descriptions, lens-backed characteristic interpretations, temporal or scale-sensitive characteristic interpretations, causal-use-sensitive characteristic interpretations, or report-only proxies. It starts from action guidance and adds fields for beyond-local-repair use only when a use being made requires them.

Ordinary output: ModularityVectorLite

ModularityVectorLite is the ordinary output. It names at most three characteristics under evaluation because the first task is to find the next repair, not to audit all possible modularity interpretations.

ModularityVectorLite:
  describedHolonRef:
  boundedContextRef:
  architectureClaimRef?:
  structureKindRefs:
  threeLiveCharacteristicsAtMost:
    - characteristicRef:
      currentCue:
      repairDirection:
      claimUseClass:
      forbiddenOverread:
  observedProblem:
  relatedClaimGovernanceIfClaimed:
  stopCondition:

The vector is complete enough when it states what can be done next and what cannot be inferred. If a characteristic is used beyond local repair, use the appropriate card and governing pattern; architecture scale-preference claims are governed by [C.31.ASAP](/generated/patterns/C.31.ASAP).

Filled ModularityVectorLite

ModularityVectorLite:
  describedHolonRef: ProductPlatform@FieldPumpFamily
  boundedContextRef: FieldServiceAndProcurement@2026Q2
  architectureClaimRef?: ArchitectureOf@PumpControllerPlatform
  structureKindRefs: ModuleInterfaceStructure, EvidencePackageStructure
  threeLiveCharacteristicsAtMost:
    - characteristicRef: InterfaceStandardizationShare
      currentCue: controller ports are named by the same API family, but three field variants still require adapter-specific wiring.
      repairDirection: narrow the interface grammar and name the allowed variation before counting the interface as standardized.
      claimUseClass: local repair cue
      forbiddenOverread: the public API label is not substitutability or procurement suitability.
    - characteristicRef: SubstitutabilityWidth
      currentCue: two alternate controller boards pass the bench test, but only one has the required thermal envelope and connector constraints.
      repairDirection: state the substitution conditions and the exception before using the alternative count.
      claimUseClass: report-only proxy until C.16 or selection use is being made
      forbiddenOverread: the alternate-board count is not a selection result.
    - characteristicRef: EvidenceReuseShare
      currentCue: electrical-safety evidence is reused, while environmental evidence is recreated per enclosure variant.
      repairDirection: split reusable evidence package from variant-specific evidence and add source-return condition.
      claimUseClass: local repair cue with possible evidence-package use
      forbiddenOverread: reused evidence is not assurance sufficiency.
  observedProblem: the team says the platform is modular because interfaces are public and evidence is reusable, but field replacement and certification still create variant-specific work.
  relatedClaimGovernanceIfClaimed: A.6.M for the module-interface relation; C.31.RSA if report-only share becomes reusable-structure accounting; A.10 or B.3 only if evidence or assurance use is being made.
  stopCondition: stop at local repair until measurement basis, comparability basis, and any selection or assurance use are declared by their governing patterns.

Near miss: a high interface-standardization count alone is not a C.31 improvement. If field-service work, source-return events, or variant-specific evidence increase, the vector records that proxy divergence and returns to repair rather than treating the count as architecture quality.

Characteristic classes

Every C.31 head is classified before use:

ClassUseBoundary
DirectCharacteristicA C.16-governed characteristic can be named with subject, scale, unit or unitless interpretation, declared measurement basis, comparability basis, and repair move.It is not automatically a score or decision selector.
CompositeCharacteristicDescriptionThe head is a bundle or description with sub-slots, such as function-module alignment or flow-boundary alignment.Do not pretend the bundle is one raw measure.
LensBackedCharacteristicThe head depends on a model description or mathematical lens, such as compression or RG or coarsening lens.Apply C.29 for lens use that changes action.
TemporalOrScaleCharacteristicThe head depends on time window, repeated instance, scale variable, aggregation scope, or source-return condition.Apply C.31.ASAP for architecture scale preference, C.27 for temporal adequacy, and C.18.1 or C.19.1 when scale-law or general BLP preference claims are being made.
CausalUseSensitiveCharacteristicThe interpretation is used to claim effect or intervention success.Apply C.28 before relying on the claim causally.
ReportOnlyProxyThe interpretation is only a local diagnostic or communication aid.State forbidden overread and the governing pattern needed for any beyond-local-repair use.

In C.31, declared basis and comparability basis name C.16-compatible measurement or comparison fields. They are not generic reason words and are not substitutes for evidence, assurance, cause, source, decision, or architecture-description relations.

Measurement-head mapping

When a head becomes decision-facing or publication-facing, create MeasurementHeadMapping before relying on it:

MeasurementHeadMapping:
  sourceHead:
  knownMeasureFamilyOrPractice:
  fpfCharacteristicKind:
  scaleType:
  unitPolicy:
  declaredBasisNeeded:
  requiredEvidence:
  evidencePathRefs?:
  sourceRelationRefs?:
  evidenceClaimAbsentBecause?:
  commonFalseUse:
  nonAdmissibleUse:
  repairMove:
  governingPatternRef:

This mapping is not a measurement template by itself. It prepares a C.16-compatible characteristic card or a report-only boundary. When the head is decision-facing or publication-facing, the mapping names required evidence plus at least one evidence path or source relation. If no evidence claim is being made, evidenceClaimAbsentBecause states why the head remains local, report-only, or repair-only.

C.31 characteristic card

Use the full card only when the use goes beyond local repair:

ModularityCharacteristicCard:
  characteristicRef:
  subjectRef or relationSubjectTuple:
  characteristicClass:
  scaleRef:
  unitInterpretation:
  declaredBasisRef:
  comparabilityBasisRef:
  requiredEvidence:
  evidencePathRefs?:
  sourceRelationRefs?:
  evidenceClaimAbsentBecause?:
  proxyRisk:
  auditQuestion:
  nonAdmissibleUse:
  repairMove:
  relatedClaimGovernanceRefs:

Each card states its own C.16 well-formedness fields: characteristic, scale, unit or unitless interpretation, declared measurement basis, comparability basis, evidence path or evidence-claim-absent reason, non-admissible use, and repair move. When source material is used as evidence, the source relation is named. A source checklist, source-discharge slice, dashboard label, or inherited score is not enough.

Seed characteristic heads and repair moves

These heads are seeds, not an exhaustive taxonomy. Use only the heads that change the next move.

Characteristic headIntended characteristic interpretationTypical scale or value formDeclared measurement or comparison basisDefect signalRepair directionEscalation trigger
InternalCohesionDensityDensity of typed relations inside a proposed module.ratio or graph-derived valuetyped dependency graph or DSMproposed module has insufficient typed internal dependency basissplit the proposed module, move relations, or reclassify as component relationcomparison, clustering, or publication use
ExternalCouplingDensityCross-boundary dependencies per module or interface.ratio or distributiontyped dependency graph, interface graph, integration defectshidden external dependencies dominate module boundaryexpose dependency, revise interface spec, split context, or accept bounded exceptionintegration risk, assurance, or release claim
InterfaceAlphabetSizeCount or entropy-like variety of interface types.count or entropy-like valueinterface registrytoo many interface variants erase modular benefitreduce variants, introduce interface grammar, split context, or document exceptionplatform grammar, candidate selection, or publication use
InterfaceStandardizationShareShare of interfaces conforming to declared specifications.ratio or percentageconformance tests and specificationsstandardization is low where reuse needs itdefine or narrow standards, add conformance tests, or stop at local exceptioncross-case comparison, certification, or procurement decision claim
InterfacePublicnessOpenness, publication, and vendor-neutrality value.ordinal or categorystandards, API specs, licensing, access termsopen label lacks substitution pathrecover interface spec, substitution policy, and conformance expectationopen-architecture claim, procurement decision claim, or publication claim
SubstitutabilityWidthNumber or diversity of compatible alternatives for a slot or interface.count or diversity valueapproved implementations, vendors, testsonly one viable implementation existsrepair interface spec, loosen unnecessary coupling, or mark single-source exceptioncompetition, platform, or decision claim
ModuleTypeReuseRateInstances per module type or template.ratio or countproduct-line records, bills of material, template recordsreuse is claimed only by repeated namingdefine module type, allowed variation, and measurement basiscross-case reuse or product-line publication
TemplateCompressionGainDescription saving from template plus parameters compared with instance-by-instance descriptions.ratio or bits under declared methodcorpus or model-description methodcompression erases safety, legal, or source distinctionsadd source-return condition, split template, or apply C.29lens-characteristic or effect claim, publication, or decision use
FunctionModuleAlignmentCharacteristicFunctional elements and module relations align without unmanaged many-to-many exceptions.vector, ordinal, or bundle descriptionfunctional view and module relation recordsallocation hides many-to-many exceptionssplit function from module claim, revise allocation, or add correspondencecandidate decomposition or quality-composition claim
FlowModuleBoundaryAlignmentCharacteristicFlow topology crosses declared interfaces rather than hidden channels.vector, ordinal, or bundle descriptionTGA path and interface refsflows bypass declared module boundariesexpose crossing, revise interface, or apply C.30.TGA-FLOW-REL for the architecture-flow claimarchitecture-flow publication or assurance claim
ControlStructureSeparationCharacteristicControl responsibilities, rates, and boundaries are explicit enough for the architecture move.ordinal or vectorLCA or control description and temporal adequacy basiscontrol relation is hidden inside module labelapply C.30.LCA, C.27, A.3.3, or B.3 when a control, temporal, dynamics, or assurance claim kind is being madestability, assurance, or gate use
HiddenCouplingDiscoveryRateHidden dependencies discovered after integration or change.ratedefect and change recordsdependencies appear lateexpose side channel, revise interface spec, add sentinel, or reopen boundaryintegration risk, repeated release, or assurance claim
CrossBoundaryChangeReachHow many modules, views, or work items a local change touches.distributionchange-impact recordslocal change travels farther than claimedsplit relation, add interface grammar, revise allocation, or source returnrelease, decision, or comparison claim
WorkRepeatabilityShareDelivery, operation, or test work under repeatable method descriptions.ratiowork records and method descriptionswork repeats as bespoke effortmove repeated work into MethodDescription or accept exceptionwork planning, evidence reuse, or scale use
EvidenceReuseShareEvidence package items reused across instances or contexts.ratioevidence graph and validity contextevidence is recreated or mis-scopedmove repeated evidence into reusable evidence or assurance packagecertification, safety-case, or assurance claim
RegulatoryBespokeResidueOne-off regulatory or acceptance content not covered by reusable structures.ratio or ordinalsafety, approval, or regulatory recordseach instance needs new regulatory argumentisolate residue, add reusable evidence package, or keep bounded exceptionsafety case, approval, or publication claim
LearningTransferCoefficientImprovement transfer from one instance or run to subsequent instances.slope or elasticityrepeated work data and learning curve recordsimprovement claim hides time or causal assumptionsapply C.27 for temporal adequacy and C.28 for causal usecausal, benchmark, or scale-preference use
BespokeResidueShareShare of structure not covered by reusable templates or rules.report-only share unless C.16 measurement basis is declaredRSA description and exception registerresidue is hidden under reuse scoreuse C.31.RSA and source-return conditionaccounting, comparison, or decision claim
RGFlowStabilityStability of characteristic vector across declared coarse-graining scopes.vector or ordinaldeclared multi-scope architecture graphscoarse-graining hides lower-scope hazardsapply C.29 for lens use and C.31.ASAP when an architecture scale-preference claim is being madeRG, scale, or lens transfer use
ExceptionCurveSlopeChange in one-off exceptions over a scale variable.slopeexception records against scale variableexceptions grow with scaleapply C.31.ASAP or accept bounded exceptionscale preference, publication, or decision claim

Claim-scoped residual heads

C.31 uses residual heads only as qualitative repair cues. These heads do not create one complexity characteristic.

HeadMeaningRelated claim governanceRiskRepair direction
ComplexityGrowthPressurePressure to add, split, mediate, or stabilize a declared aggregation scope, interface grammar, control relation, evidence scope, work-method scope, abstraction scope, or source-return condition.C.30.ILC, C.31.ASAP when an architecture scale-preference claim is being made, G.5, C.11treating more apparatus as progressname the pressure and the repair direction; use set-return or decision patterns when the corresponding claim is being made
FrustrationResidualPersistent cross-scope residual after local repair.C.30.ILC, C.29-local cross-scope lens claimturning a lens-backed interpretation into proofkeep as residual cue or apply C.29 or C.30.ILC
ConflictResidualSlopeResidual grows or shrinks over declared scale variable, scale window, or coarse-graining scale.C.31.ASAP, C.29, C.27, C.18.1, C.19.1treating two points as universal lawdeclare window, lens-use boundary, and measurement basis or stop at report-only
DeclaredScopeAdditionCostAdded work, evidence, change-policy, latency, observability, accountability, or interface cost from a new declared aggregation or control scope.C.16, C.31, C.30.LCAignoring the cost of added structureidentify cost bearer and apply the measurement pattern if used for comparison
BespokeResidueGrowthOne-off exceptions grow with deployment spread, regulation, or project repetition.C.31.RSA, C.31.ASAP when an architecture scale-preference claim is being madeassuming all bespoke work is badsplit useful exception from repairable residue
InterfaceAlphabetGrowthInterface variants grow faster than reuse, substitutability, or integration payoff.A.6.M, C.31premature standardizationadd platform grammar, split context, or accept bounded variation
SourceReturnCostFrequency or cost of returning from a compressed, indexed, coarse, extracted, or accounting view to source-side structure records.C.29, source-return discipline, A.10over-compressionadd source-return condition or reduce compression
ControlNestingDepthRiskNested control relations create latency, accountability, observability, stability, or assurance cost.C.30.LCA, C.27, B.3, A.3.3LCA-as-proofapply control, temporal, assurance, or dynamics governing patterns when the corresponding claim is being made

Proxy-risk discipline

Every decision-facing C.31 card includes ProxyRisk and AuditQuestion. If the proxy diverges from the value it was meant to represent, the card stops at report-only use or returns to repair.

HeadProxy riskAudit question
ExternalCouplingDensityTeams hide dependencies instead of reducing them.Did integration failures or source-return events fall?
InterfaceStandardizationSharePremature standardization blocks useful variation.Did exception slope or workarounds rise?
InterfacePublicnessOpen label without substitutability.Are alternative implementations actually viable under declared conditions?
TemplateCompressionGainCompression erases safety, legal, or source distinctions.Did source-return events or bounded exceptions rise?
EvidenceReuseShareReused evidence becomes stale or mis-scoped.Does evidence remain valid in the new context?
RGFlowStabilityCoarse-graining hides lower-scope hazards.Are source-return conditions triggered?

Rejected shortcut

The expression ModularityScore = average(all measures) is not admissible as a C.31 result. A local score is admissible only when the scoring method, codomain, polarity, characteristic basis, comparability basis, and use boundary are disclosed through the governing scoring or comparator pattern. Without that, keep the result as report-only or return to ModularityVectorLite.

Lowering and currentness conditions

Lower or reopen a ModularityVectorLite, ModularityCharacteristicCard, or report-only proxy when any of these conditions changes the characteristic use:

  • proxy audit worsens, such as more integration failures, workarounds, source-return events, stale evidence reuse, or bounded exceptions;
  • measurement basis, comparability basis, scoring method, codomain, polarity, unit policy, or declared characteristic basis changes;
  • evidence path, source relation, evidence-claim-absent reason, or source-return condition changes;
  • described holon, bounded context, architecture claim, structure kind, characteristic head, or repair direction changes;
  • a report-only proxy is used for comparison, selection, publication, assurance, benchmark, causal-use, cross-case reuse, decision, procurement, or architecture scale-preference;
  • C.31.RSA, C.31.ASAP, C.16, C.25, C.29, C.30.STRAT, A.6.M, C.30, C.30.ASV, A.10, B.3, A.20, A.21, G.5, or C.11 changes the boundary for the neighboring claim being made.

Admissible repair results are: keep the result report-only, split or rename the characteristic head, update basis or evidence fields, revise the repair direction, change relatedClaimGovernanceIfClaimed, lower a score to a local proxy, or stop C.31 use for the beyond-local-repair claim and use the governing pattern.

Archetypal Grounding

Tell. Modularity is a vector of action-guiding characteristics, not a magic scalar. A good C.31 interpretation says what to repair next.

Show. A product architecture can have high interface standardization and still poor substitutability. A software-system architecture can reduce external coupling while increasing hidden data custody. A safety-case architecture can reuse evidence while increasing regulatory bespoke residue. Each case needs a different characteristic and a different repair.

Show. A DSM or dependency graph can substantiate a modularity interpretation, but the graph does not by itself say which dependency kind matters, what scale applies, whether the interpretation is comparable, or what action follows.

Holon and episteme: architecture and modules are selected structures of described holons; the described holon may be a system, episteme, method, organization, publication family, or another structured holon. C.31 heads, cards, vectors, and report-only proxies are characteristic records, declared-measurement-basis records, comparability-basis records, or report-only records about those structures.

Bias-Annotation

Bias riskC.31 repair
Scalar biasRefuse one modularity score unless scoring method and comparability basis are declared.
Measure-first biasStart with ModularityVectorLite and repair direction before C.16-heavy fields.
Interface-publication biasTreat public interfaces as only one possible basis for substantiating substitutability.
Proxy biasAdd ProxyRisk and AuditQuestion to every decision-facing card.
Complexity umbrella biasKeep residual heads claim-scoped and apply scale, RG, or lens governing patterns when those uses are being made.
Source-label biasTreat software, neural-network, chiplet, safety-case, product-line, block, layer, expert, cache, router, and gate labels as source examples until C.30.STRAT and the governing pattern recover the FPF characteristic subject, structure, scale, and admissible use.

Conformance Checklist

IDCheck
CC-C31-1Ordinary use starts with ModularityVectorLite, three characteristics under evaluation at most, observed problem, repair direction, and stop condition.
CC-C31-2Each characteristic head under evaluation is classified as DirectCharacteristic, CompositeCharacteristicDescription, LensBackedCharacteristic, TemporalOrScaleCharacteristic, CausalUseSensitiveCharacteristic, or ReportOnlyProxy.
CC-C31-3A decision-facing or publication-facing head has MeasurementHeadMapping, C.16-compatible fields, and a required evidence path, source relation, or explicit evidence-claim-absent reason before it is relied on.
CC-C31-4Each characteristic row states at least one repair move or claim named by value-governance assignment.
CC-C31-5Report-only proxies state forbidden overread and do not establish beyond-local-repair use.
CC-C31-6Proxy-risk and audit-question fields are present for decision-facing cards.
CC-C31-7Complexity, residual, and growth heads remain claim-scoped cues; apply C.29, C.31.ASAP when an architecture scale-preference claim is being made, C.27, C.28, C.16, C.25, C.30.ILC, C.31.RSA, G.5, or C.11 when the corresponding claim kind is being made.
CC-C31-8No C.31 text treats modularity as a single quality proof, assurance proof, gate result, causal proof, or architecture decision.
CC-C31-9Any score discloses scoring method, codomain, polarity, characteristic basis, comparability basis, and use boundary through the governing pattern.
CC-C31-10SoTA seeds for DSM, modularity-index, empirical modularity, platform, evidence-reuse, Conway and mirroring, Amdahl, queueing, coordination-overhead, information-hiding, abstraction-leakage, or Goodhart and Campbell proxy-risk sources are converted into pattern-local G.2 rows before C.31 uses them for practitioner guidance being relied on.
CC-C31-11Source labels such as block, layer, expert, cache, router, or gate use C.30.STRAT before they become C.31 characteristic subjects, scale cues, repair moves, or proxy-risk rows.
CC-C31-12A vector, card, or report-only proxy states a lowering or reopen condition when proxy audit worsens, measurement or comparability basis changes, evidence path or source relation becomes stale, characteristic head changes, or a related governing pattern changes.

Common Anti-Patterns and How to Avoid Them

Anti-patternSymptomRepair
ScalarModularityScoreA single score claims architecture quality.Replace with ModularityVectorLite, disclosed scoring basis and governing pattern, or report-only boundary.
UntypedMeasureListA table of heads appears without characteristic, scale, declared measurement basis, or repair move.Classify heads and create C.16-compatible cards only where the recovered claim needs them.
MeasurementBeforeRepairThe practitioner is asked for full measurement before one useful move exists.Start with three characteristics under evaluation and repair direction.
OpenInterfaceEqualsModularInterface publication is treated as modularity.Apply relation repair through A.6.M and characterize only the interface or substitutability head under evaluation.
ComplexityAsOneCharacteristicAlgorithmic cost, graph-connectivity cost, policy and approval cost, evidence-maintenance cost, and cognitive cost are averaged.Keep residual heads claim-scoped and apply lens or measurement patterns when those uses are being made.
ProxyBecomesValueA report-only proxy becomes a beyond-local-repair claim.State forbidden use and use the governing pattern before relying on that claim.

Consequences

Benefits:

  • Modularity becomes action-guiding without becoming one fake score.
  • Cheap repair remains possible before measurement.
  • Characteristic, declared-measurement-basis, comparability-basis, proxy-risk, and governing-pattern boundaries are visible.
  • DSM, MOSA, platform, product-line, and architecture-operation sources can inform practice without importing their ontology wholesale.

Costs:

  • Familiar score language often has to be downgraded to report-only use.
  • Cross-case comparison requires additional C.16, C.25, G.2, comparator, evidence, or decision claim.
  • Some attractive "complexity" statements are assigned to characteristic named by value, lens, or residual cue rather than becoming a general complexity pattern here.

Rationale

C.31 is a characterization pattern because modularity and reusable-structure talk changes engineering action through characteristics: coupling, cohesion, interface variation, substitutability, reuse, evidence reuse, hidden coupling, source-return cost, and residual growth. Those heads are useful only when their subject, scale, declared measurement or comparison basis, false use, and repair move are visible.

The pattern puts ModularityVectorLite first to preserve affordability. Many practitioners need to see one relation to repair, one interface grammar to tighten, or one residue to account for. Requiring the full measurement apparatus too early would turn C.31 into a control form and would violate the architecture source invariant: repair succeeds only when one useful admissible action remains.

The pattern rejects a single complexity or modularity score because selected heads are not automatically commensurable. When a local score is genuinely useful, it belongs under disclosed scoring, comparator, characteristic, declared-measurement-basis, and governing-pattern discipline.

SoTA-Echoing

Source or practiceCurrentness or lineage useAdopt and adapt for C.31Rejected overreadPractitioner implication
DSM and dependency-structure practice (https://dsmweb.org/design-structure-matrix-dsm/; https://dsmweb.org/introduction-to-dsm/)Mature and still-used architecture-analysis practice for dependency representation, clustering, and compact dependency communication.Adopt typed dependency analysis as a possible declared measurement or comparison basis for specific C.31 heads such as InternalCohesionDensity, ExternalCouplingDensity, InterfaceAlphabetSize, and HiddenCouplingDiscoveryRate.A dependency matrix is not architecture, proof, complete modularity, assurance, or decision by itself.A dependency graph helps only after dependency kind, subject, scale, repair direction, and non-admissible use are declared.
Cabigiosu and Camuffo, "Measuring Modularity" (https://doi.org/10.1109/TEM.2016.2614881)Published modularity-measurement source used as measure-plurality lineage, not as a universal current scoring rule.Adopt the result that modularity measures answer different engineering or management questions; adapt it into Characteristic plurality vs scalar pressure, MeasurementHeadMapping, and proxy-risk fields.One measure family is not universal modularity adequacy and does not settle architecture quality.The practitioner asks which characteristic changes action before choosing any measure family.
Jung and Simpson modularity indices for DSM-based assessment (https://pure.psu.edu/en/publications/new-modularity-indices-for-modularity-assessment-and-clustering-o/)Product-architecture and DSM-index lineage for index choice, clustering, and assessment variation.Use as evidence that index choice depends on architecture type, dependency kind, and measure purpose; adapt by requiring characteristic, scale, measurement basis, comparability basis, and forbidden overread.One modularity index is not FPF architecture quality, architecture adequacy, or decision authority.Index use requires declared structure, dependency type, scale, and non-admissible overread before publication, comparison, or decision use.
MOSA and open systems practice (https://www.cto.mil/sea/mosa/; https://www.cto.mil/wp-content/uploads/2025/03/MOSA-Implementation-Guidebook-27Feb2025-Cleared.pdf)Current engineering and acquisition practice family for modular interfaces, conformance, severable components, replacement, and supplier diversity.Adopt the pressure to make interface standards, conformance, substitutability, and supplier-diversity relations explicit; adapt by applying A.6.M before C.31 characterizes InterfacePublicness, SubstitutabilityWidth, or related heads, and by applying G.5 or C.11 to supplier-set selection or procurement decision use when that use is being made.Open, public, platform, API, conformance, or supplier-diversity label is not modularity, procurement suitability, or a beyond-local-repair claim by itself.Open-system conformance and substitution claims may change C.31 repair only after the module-interface relation is repaired; procurement and other beyond-local-repair uses require their governing pattern.
Platform and product-line engineering practice (https://tag-app-delivery.cncf.io/fr/whitepapers/platform-eng-maturity-model/; https://www.sei.cmu.edu/library/variability-in-software-product-lines/; https://arxiv.org/abs/2605.21353)Mature product-line variability lineage plus current platform-engineering maturity-model and current SPLE-review cues; used for variability-slot, extension-rule, reuse, and exception-residue characteristic discipline.Adopt variability slots, extension rules, template records, product-line records, allowed variation, and exception-residue tracking as possible C.31 characteristic subjects or declared measurement bases.A platform or product-line label is not modularity value, reusable-structure proof, architecture scale-preference evidence, procurement suitability, or decision authority.The practitioner names which characteristic changes action: interface standardization, module-type reuse, template compression, bespoke residue, exception curve, or the governing pattern for a beyond-local-repair claim being made.
Conway and mirroring, information-hiding, effective-interface, and abstraction-leakage lineageSocio-technical and interface-boundary sources used as holon-architecture lineage, not as software-only ontology.Adopt declared correspondence across role and enactor structures, work and procedural structures, and module-interface structures; separate explicit interface specification from observed or implicit interface; recover hidden coupling and source-return conditions.Team boundary, delivery unit, documented interface, or abstraction label is not module boundary, substitutability, modularity quality, or decision by itself.The practitioner separates team and work structure, explicit interface, implicit dependency, and modularity characteristic before claiming improvement.
Amdahl, queueing, and coordination-overhead laws (https://www.cs.cmu.edu/~18742/papers/Amdahl1967.pdf; https://arxiv.org/abs/1306.3302; https://arxiv.org/abs/2603.20654)Mature mathematical law and queueing lineage plus current extension sources for communication, synchronization, and scalable-workload-fraction limits.Adopt serial fraction, synchronization, communication overhead, WIP, waiting, bottleneck, and partitionability as possible C.31 defect signals; apply C.29, E.18, or C.30.TGA-FLOW-REL when mathematical speedup or flow claims are being made.More modules, teams, services, paths, processors, accelerators, or work partitions are not improvement by count.A module split is evaluated by changed characteristics and bottlenecks, not by decomposition count.
Goodhart and Campbell proxy-pressure laws and holon-architecture trade-off disciplineGeneral proxy-risk and trade-off lineage for architecture characteristic use.Adopt vector and trade-off discipline plus proxy-risk discipline: no single modularity score, reusable share, benchmark, or index establishes value or beyond-local-repair use without the governing pattern for that use.One declared measure value, benchmark, reusable-share number, or modularity index is not architecture value or decision authority.The practitioner states which characteristic changes action and which proxy overread is blocked before comparison or decision.
Architecture-operation language, with neural-network and software-system discussions as source examples, including the GonzoML architecture-operation intakeCurrent practitioner-language source for replacement, selection, pruning, distillation, ablation, block substitution, memory or cache placement, gating, routing, and architecture search; not used as a standard.Adopt operations as recognition cues for structure, relation, flow, scale, or candidate-set repair under consideration; keep block, layer, expert, cache, router, and gate as C.30.STRAT source labels until the FPF characteristic subject, relation kind, scale, and admissible use are recovered.Block, layer, expert, cache, router, gate, benchmark, ablation, pruning, or distillation label is not an FPF characteristic by default.The operation points to a possible characteristic; it does not name the characteristic until the FPF kind, subject, scale, and admissible use are recovered.

Source-currentness front. Use the table's Currentness or lineage use cell as the source-use boundary. A lineage row can explain why a characteristic family matters, but it cannot establish current comparison, procurement, assurance, benchmark, decision, publication, or other beyond-local-repair use without a current source relation under G.2 or the governing pattern for that use. Refresh the source use when MOSA or acquisition guidance changes, platform or product-line practice changes, DSM or modularity-index practice changes, queueing or coordination-overhead assumptions change, proxy-pressure law is used for a new claimed value relation, or architecture-operation language is used as current practice rather than as source-side recognition language. When refresh changes the source role, update the affected characteristic head, proxy-risk field, audit question, related claim governance, or report-only boundary rather than treating the older source as current by default.

Rows named current, such as MOSA guidance, current platform practice, current scalable-workload extensions, or current architecture-operation corpus material, require source refresh before beyond-local-repair use when the named practice changes. Rows named lineage stay lineage unless a current source relation is explicitly recovered.

Older or local sources may serve as lineage or worked examples only when the row says so. They do not stand in for current competitive source, and they do not make a modularity value admissible for beyond-local-repair use without the governing pattern for that use.

Relations

PatternRelation
C.30.STRATRecovers source labels such as layer, level, tier, stack, block, expert, cache, router, and gate before C.31 uses any recovered characteristic subject, scale cue, repair move, or proxy-risk row.
A.6.MRepairs module-interface relations before C.31 characterizes modularity.
C.31.RSAGoverns reusable-structure accounting, bespoke residue, and report-only shares.
C.31.ASAPGoverns architecture scale-preference claims after C.31 names the scale-sensitive characteristic, scale variable or window, and repair direction.
C.16, A.17, A.18, A.19Govern characteristic, scale, coordinate, score, unit, comparability, and measurement legality.
C.25Governs broader quality-family Q-Bundles when modularity is used in a quality claim.
C.30 and C.30.ASVGovern architecture claims and structural views that supply C.31 subjects.
C.30.ILCGoverns cross-scope residual and frustration recognition when architecture move triage is being made.
C.29Governs mathematical-lens use such as compression, RG, epiplexity, or graph-lens transfer.
C.27, C.18.1, C.19.1Govern temporal and set-dynamic claims such as learning transfer, exception slope, and scale-window movement.
C.28Governs causal-use claims.
A.10, B.3, A.20, A.21Govern evidence, assurance, gate, safety, and release claims.
G.2, G.5, C.11Govern SoTA basis, set-return selection, and local decision claims. Candidate-generation or architecture-synthesis claims stay outside C.31 unless G.5, C.11, or a named architecture-synthesis governing pattern governs that claim; C.31 records only modularity or reusable-structure characteristic use and report-only boundaries.

C.31:End


Last Updated: 2026-06-03 — this section last modified in upstream FPF commit a0c90e3b (github.com/ailev/FPF)