# Route: the change for each possible constraint

Route's pages are in **Opportunities** since October 13, 2026: the **Changes** tab (the Map opens from it, at `#opportunities/changes/map`) and the **What AI can do today** tab. Old `#route` links open the same pages. DutyGraph shows the changes for each possible constraint. A person chooses. DutyGraph does not run the change.

Status, October 9, 2026: the Route pages are built on `matt/dev` (package R2 of [Route](../specs/ROUTE.md)). They read the Route server routes (package R1) and the patterns research refresh (package R3). When a page cannot read its data, it shows the server's message. It never shows example data in place of your company. No AI call makes a verdict, a fit, a value or an order on these pages. Code makes each one from the Company Repo.

## Before you start

Route shows a card only for an **accepted** possible constraint. If the Changes tab says "Accept a possible constraint in Strategy first", open **Strategy › Constraints**, review the possible constraint and select **Accept** with an owner.

## Read the Changes tab

1. The first line counts the changes, for example "3 changes for Cobalt Industrial Supply. 2 need no new software."
2. The next line says what Route does and does not do.
3. The **numbers tray** says how many numbers are Not found and how many people can answer. Select **Draft asks** to draft 1 ask for each person, with all of that person's questions. Nothing is sent until you send it from Discovery › Asks. The sample company does not send asks.
4. Each row is 1 route card:
   - **K1**, **K2**: the possible constraint, with the same key as on Strategy. **K2/b** is the rival explanation of K2;
   - the flow and the constraint type;
   - **Chosen change**: the change that the rules choose, with its rung number;
   - the value line: the hours in scope with the evidence word, or "Not found" with the number of inputs to ask;
   - the status and the next step.
5. Select a row to open its route card.

A rival card reads "Not the possible constraint · no throughput gain claimed". It can release hours, but it does not change what limits the flow.

## Read a route card

A route card answers 3 questions: where to change the work, why, and how to prove it.

### The header

- The key, the flow and the statement.
- **Type**: what the work waits for and what releases it. Example: "C · Policy: a rule to meet". When nobody owns a Task Card, the type is "Owner not agreed" and the first change is to name the owner. No AI rung is offered until then.
- **Scope**: the Task Cards that the possible constraint cites as evidence. Counter-evidence is never routed.
- The evidence for the type, with a chip for each Repo file. Select a chip to open the file in the Repo.

### Changes considered, cheapest first

The ladder has 9 rungs: 0 No change, 1 Remove the work, 2 Decision rule or owner, 3 Process change, 4 Training or a backup, 5 Setting in a system the company has, 6 Automation with no AI, 7 AI, 8 Hiring or outsourcing.

Each rung has 1 verdict:

| Verdict | Meaning |
| --- | --- |
| Chosen by rule | The first rung, in the order of the type, that fits. |
| Fits | The rung can work. It is not the first that fits. |
| Does not fit | A recorded fact rules it out. The reason names the file. |
| Not enough data | A number or a fact is Not found. The row names the person to ask. |
| Not proposed | DutyGraph does not offer this rung (for example AI on People-only work). |

Each reason has a chip for each Repo file. Each missing input shows "Not found" and **Ask <name>**. When the answer arrived and waits for a review, the chip reads **Answer waits for review**, and the numbers tray does not ask for it again. On a phone, select **Why** to open the reasons of a rung.

Sometimes code chooses no rung yet. The card then says **Answer the asks first** (the type of the wait, or a cheaper rung, waits for an answer) or **Test first** (the diagnosis is not ready, so the rungs from a system setting up wait for the discriminating test). The rungs that wait for the test show **Test first** next to their verdict. The Changes row, the slides, the print page and the Strategy link show the same words.

### Value: hours in scope

Value is a range of hours a month, and nothing else.

1. The formula: hours in scope a month = runs a month × minutes per run ÷ 60.
2. Each input is a chip with its evidence word and its file. A missing input is a dashed chip with **Ask <name>**.
3. When an input is missing, the value is **Not found**. It is never 0.

The card also says: "Hours in scope. This is the work that the change can touch. It is not a saving." and "Cost per hour: Not found. DutyGraph shows no money value without it." Ranges are never added across cards that share Task Cards.

### AI fit

For each Task Card: the fit profile (input form, rule or judgment steps, exceptions, rework, volume, minutes, wait, system access, risk class, data sensitivity, whether the output can be checked, the physical share). Each factor shows its value, its evidence word and its source, or Not found. **Still not found** names who to ask, apart from the numbers. A role that fewer than 3 people on the team list hold prints as "the performer", so a number does not point to 1 person. It is a profile, never a score.

Under the profile, the patterns from **What AI can do today** that fit the Task Card: Fits or Fits with gaps, the steps they cover, the band "Assumption · DutyGraph curated · as of <date>", the known failure modes and the person checks. A Task Card with "People only" shows "No AI" even when a pattern fits its steps.

### Still not found, proof and the decision

- **Still not found** lists each missing number with its question and the person to ask.
- **Proof plan**: Baseline · Pilot · Window · Stop rule, the guardrail and the result words (Supported · Not supported · Inconclusive). The window of the baseline and of the pilot is at least 10 runs over at least 14 days. When there is no baseline, the next step is **Collect the baseline first**. Code sets the result word. A person can lower it to Inconclusive and cannot raise it.
- **Decision**: select **Accept the route…** (see below). After a decision, the card shows it and offers **Change the decision…**.
- **Next step**: by the chosen change, or by the recorded decision when there is one. AI → **Open in Agents**. A system setting or automation → **Export work order (draft)**. Rungs 1 to 4 → **Record a decision rule** (before a decision only). Every card → **Track in Outcomes**.

The actions show only to a member who can do them: Accept, **Start the baseline**, **Change the decision** and **Choose this change instead** need the right to edit records. **Export work order** needs the right to download exports.

## Start the baseline

"Supported" needs a baseline that was recorded before the prediction. Start it before you accept a change.

1. On the route card, in **Proof plan**, select **Start the baseline…**.
2. When the card suggests the owner's measure, keep **Use the owner's measure** selected, or clear it to make a new measure and write its unit.
3. Choose the owner of the measure.
4. Write the guardrail (the measure that must not get worse) and whether it is worse when it goes up or down.
5. Select the box, then select **Start the baseline**.

DutyGraph makes the measure and the guardrail measure. It does not choose a change. Open each measure (in Outcomes, or from the record) and select **Record observation** for each reading. Until it has a baseline value, the measure reads "Collecting baseline · <n> readings". A reading can count several runs: write them in **Runs this reading counts**. The card shows "Baseline: <n> readings over <d> days" when the baseline has at least 10 runs over at least 14 days. Accept then uses the same 2 measures.

## Accept a route

1. Open the route card and select **Accept the route…** (or **Record a decision rule**).
2. Choose the change. The rung chosen by rule is selected. Any other rung needs a written reason, and so does a **Test first** rung. When code chose no rung yet, no rung is selected and every rung needs a reason. The card then shows "Chosen by <your name>: <reason>". The list leaves out the rungs that do not fit and the rungs that DutyGraph does not propose.
3. Choose the owner of the change.
4. Write the prediction before the pilot: low, high, unit and direction. When you started the baseline, use the unit of its measure.
5. Write the guardrail, the window, the stop rule and the review date. When you did not start the baseline, you can choose an existing measure as the guardrail measure in **Guardrail measure**, or keep **Draft a new measure**.
6. Select the box to confirm that you record the decision, then select **Record the decision**.

Accept writes an intervention and, when you did not start the baseline, a measure and a guardrail measure. Rungs 1 to 4 also write a decision record. Outcomes tests it. A baseline that you record after Accept counts, but the result is then Inconclusive at most. If the server says the ladder changed after the page loaded, select **Read the route again** and check the ladder. If it asks for a reason, write the reason for your choice.

When you record an outcome that the proof rule does not allow, the message names each check that fails ("Baseline size", "Baseline recorded before the prediction" …) and the word that you can record.

## Change the decision

A card has 1 decision. To replace it:

1. On the route card, select **Change the decision…** (or **Change the decision to this change** on a rung).
2. Choose the new change and write its reason, as in Accept.
3. Select **Record the decision**.

The new decision replaces the recorded one. DutyGraph stops the recorded decision and keeps its record, its measure and its outcomes. A second Accept without **Change the decision** is refused.

## Read the Map

The Map is the value chain strip: 1 row for each flow and 1 column for each stage that the Task Cards record (when no Task Card records a stage, the columns are the order of the flow). Each Task Card shows 1 chip for each route card that routes it, in the colour of its rung class. The legend names each colour and shape.

Under the strip, **Hours in scope** draws 1 bar for each range. The **Not found (no bar)** lane is always on the page, with its count. The Map is not a 2×2: a 2×2 would put Not found at 0.

## What AI can do today

The 12 patterns of the curated library: what each one does, its inputs, when it fits, the band with its date, the failure modes, the person checks, the pilot measures, the effort and the Task Cards of this company that fit. An entry older than 90 days reads "Out of date · check again". The bands are assumptions with a date, not results for your company. The client's own pilot replaces them.

Under **Options found by research**, a pattern shows the current tools and features that a research run found, in 3 groups and always in this order: a feature in a system the company has, a workflow tool, a product for this kind of work. Inside a group the options are in alphabetical order. DutyGraph does not rank them or choose a tool. Each option shows its word (**Reported**, or **Reported by the vendor** when the source is the maker's own site), the date of the source and the site. A group with fewer than 2 options says "Fewer than 2 found". An option older than 90 days reads "Out of date · check again". **Your system may already do this** shows only for a system that the client confirmed, and its licence stays Not found until someone answers.

**Refresh** asks for your consent, then starts the research refresh. It searches only the patterns that fit this company and the systems the client confirmed. Each result needs a source URL and a date, and goes to review before it shows. When the server refuses (no research source, too soon after the last run, a run already active, the monthly cap), the page shows its message. On the sample company, Refresh makes no web search and no AI call: it loads the authored sample options, labelled as a sample.

## Present and print

- **Present** (key P, on a computer) opens the deck on slide 8, after the 7 Strategy slides: 8 the map, 9 the first card's ladder, 10 the second card (owner first) and its rival, 11 the proof plans, 12 what is still Not found and who to ask. Each slide fits the screen at its own size, with text of 18 px or more on a 1440 × 810 screen. Slide 8 shows 1 cell per flow and stage, with the route chips and the number of Task Cards. Slide 9 shows the first reason of each rung on 1 line. Slide 12 shows the 4 people with the most numbers, 2 questions each, "and N more numbers", and "This slide shows 4 of 9 people". The Route page shows everything.
- **Print** prints 1 card on 1 A4 page in the light palette with a source footer: the header, the ladder as a table with 1 line for each rung, the chosen change, the value line, the proof plan, the first 6 Not found asks ("And N more numbers"), the decision and the next step. On the Changes tab, Print gives the list on page 1, then each card on its own page (3 cards: 4 pages). The print page has no buttons and leaves out the AI fit tables. Open the card for the full detail.
- On a phone, the ladder is a list, the inputs stack, the next step stays at the bottom of the screen and there is no Present.

## Other ways in

- **Strategy › Summary**: a constraint card with a route shows "Route: <chosen change>".
- **Agents › Not proposed**: "Route: a change first" opens the route of that possible constraint.
- **Work Map › a process › Route**: the route cards of that flow.

## What Route does not do

Route shows no money, no savings and no ROI. It does not rank vendors or show their logos. It does not say "proven": a supported pilot reads "Supported by 1 pilot · <dates> · not proven". It does not run a change, an automation or an agent.
