Skip to Content
ConceptsCritical path length
Concepts

The longest chain of dependencies, scored in index points, not hours.

Critical path lengthCPLCritical path length. The total coordination weight of the longest chain of dependencies in the model. NovusLens reports it as index points, not elapsed time. (CPL) is the total coordination cost along the longest chain of dependenciesDependencyA link where one unit needs something from another. A dependency is not a reporting line: it shows where work relies on something else. in a mapMapThe view of teams, services and their dependencies for the selected part of the organisation. Details appear beside the map.. A dependency is a link where one team or service needs something from another. A chain is a run of such links, one after another. The chain with the largest total carries the heaviest coordination burden on this scale, which makes it the first place to look.

CPL is an index. It is built from fixed weights that rank how costly each link is to coordinate. It is not a count of hours, money or an estimate of how long work will take.

Each link is Loose, Buffered or Rigid, with a fixed weight in index points. The index ranks coupling cost; it is not hours or money.

Each link is given one of three classes. The class comes from the lead timeLead timeThe elapsed time between starting a request or handoff and completing it. that a handoffHandoffWork or information passed from one team or service to another. Its measured or stated completion time determines the dependency class. takes to clear, when that lead time has been measured.

ClassWeightLead time it is classified from
LooseLooseA handoff that takes about one day or less. It adds 0.5 points to the dependency-chain index.0.5 index pointsIndex pointsThe unit of the dependency-chain index. Index points are structural weights, not hours or money, and every answer and what-if reports the index in them.one day or less
BufferedBufferedA handoff that takes more than one day and up to four days. It adds 1 point to the dependency-chain index.1 index pointmore than one day, up to four days
RigidRigidA handoff that takes more than four days. It adds 3 points to the dependency-chain index.3 index pointsmore than four days

The weights are fixed in the code and versioned, so a figure can always say which table produced it. They rank couplingCouplingA link where one team or service depends on another. Its Loose, Buffered or Rigid class describes the time needed for a handoff. cost. They do not establish that moving a link from Rigid to Buffered saves three index points’ worth of anyone’s time. Long lead times can come from batching, external waits, policy or tight coupling. The raw lead time therefore appears beside the class.

Links with no stated or measured class are marked unknown. An unknown link has no weight, so it is left out of the total.

An example

Sales depends on Finance, and Finance depends on Data. Suppose the Sales to Finance link is Buffered, worth 1 index point, and the Finance to Data link is Rigid, worth 3 index points. The chain totals 4 index points. NovusLens compares every chain in the selected map and highlights the one with the largest total.

Two chains from one illustrative map. The heaviest total, 4 index points, is the one to look at first. Illustrative of the weighting, not a customer map.

The number 4 is a comparison, not a measurement of elapsed time. On this scale, a chain with a lower total carries less coordination weight, and that is all the comparison says.

How to read it

Read the figure with three things beside it.

The unit. It is index points. Every answer and what-ifWhat-ifA scenario that changes one or more dependencies in the model and reports the result. A what-if changes nothing in the records, and its result is indicative. reports it that way. The raw lead times behind each link’s class are shown beside it.

The coverageCoverageWhat the available records cover, and what is missing. A count such as “3 of 5 dependencies measured” names the measured portion and the gap.. The corrected figure says how many links on its path are backed by a measurement, for example “3 of 5 couplings on this path measured”. The rest keep the account that was stated for them, and the screen says so.

The two views. The told view uses the links as people stated them. The corrected view replaces a link with its measured class wherever a measurement exists and is still within its observation windowObservation windowThe period in which a measurement counts as current. The default is 30 days. After it passes, the measurement remains as history and is counted as expired.. The two views can point to different chains. When they do, the difference is the point to investigate.

Measurements expire. A measured handoff stops counting toward the current figure once its window closes, and the number of expired observations is shown. It is kept in the history, not erased.

Limits

CPL helps you examine the organisation’s structure. It excludes incoming workload, parallel work, spare capacity and competition for that capacity. Those are left out on purpose.

Unknown links are excluded from the arithmetic and counted. The figure is therefore honest about what it can compute, but incomplete coverage can hide a chain that is more demanding than the one shown. Read the coverage before you rely on the ranking.

Only links between domain units count toward the headline. Links between infrastructure components are kept in a finer layer and do not enter it.

CyclesDependency cycleA loop in the dependencies: one unit needs another, which eventually needs the first unit again. For example, Sales waits on Finance and Finance waits on Sales. need a separate note. The longest-chain calculation is exact for a map with no cycles. A map that contains cycles is searched in full within a fixed work budget. If the search exceeds that budget, NovusLens does not give a figure. It raises a cpl-not-computable findingFindingA difference in the records that needs a decision. It includes its sources and can describe a slow handoff, disputed fact or missing owner. that names the cellsCellA box on the map that stands for a team, service, supplier or AI agent. It is a unit you can inspect, not necessarily a department or a person. on the cycle. A cycle does not by itself stop the calculation.

What to do next

Open the highlighted chain on the map. For each link, ask the teams what they wait for and whether a queue, a standing decision or a shared record would remove the wait. Check the records behind each link before you explore a change. Any change you model is an indicativeIndicativeThe label on a scenario or what-if. An indicative result shows one possibility under stated assumptions. It is never a measurement of the future. what-if: the product recalculates the index for the structure you describe, and it attaches the statement that the result is indicative. Read how NovusLens measures and what it does not claim before presenting one. The evidence ladder explains how a link moves from told to measured.

Where it is implemented

  • apps/mesh/src/conway_mesh/model.py holds the weights (OVERHEAD_HOURS), the version string (CPL_WEIGHTS_VERSION) and the lead-time thresholds in derive_handoff. The classes are mapped to weights here.
  • apps/graph/src/conway_graph/engine.py uses compute_cpl to build the told and corrected pictures. It uses only current measurements and excludes unknown links. A disputed link uses its heavier weight for the calculation; the dispute stays open for a person. It counts measured links on the path and raises cpl-not-computable when the search exceeds its budget.
  • packages/common_py/src/common_py/cpl.py holds longest_path, which finds the exact longest chain when no cycle exists and limits its search work when cycles exist.
  • apps/reasoning/src/conway_reasoning/tools.py reports scenario results as index_points and delta_index_points.
  • apps/ui/components/TwinView.tsx prints the coverage sentence beside the figure.
Last updated