{
  "company": "Apex Instruments",
  "asOf": "2026-09-08",
  "note": "Twenty request kinds. The point of the table is not that a request has a handler, it is that a request has a reading list and a write list, so two people asking the same thing get the same files opened in the same order.",
  "escalationNote": "Article 5 names five kinds of request that stop for a person. Four of them have their own route here. The fifth, anything about a named partner account beyond what that partner already holds, has no route of its own on purpose. It arrives disguised as an ordinary lookup, a brief, or a draft, so every route carries that check rather than one route owning it.",
  "loadOrder": {
    "headline": "What is read on every request, and what is not",
    "explanation": "A brain of this size cannot be read on every request. Three small files are always in context. Everything else is opened only if the route names it, and full source documents are opened only when the card for that source says the answer is not on the card.",
    "steps": [
      {
        "step": 1,
        "what": "The constitution",
        "size": "6.4 KB",
        "when": "always",
        "why": "Fourteen articles decide what the answer is allowed to be before anything is read."
      },
      {
        "step": 2,
        "what": "This routing table",
        "size": "9.1 KB",
        "when": "always",
        "why": "It decides which of the next files get opened, so it has to be open first."
      },
      {
        "step": 3,
        "what": "The card index",
        "size": "18.0 KB",
        "when": "always",
        "why": "Titles and one line summaries for every card. Enough to know which card to open, not enough to answer from."
      },
      {
        "step": 4,
        "what": "The cards the route names",
        "size": "about 0.6 KB each",
        "when": "on match",
        "why": "Two to six cards answers most requests without opening a single source document."
      },
      {
        "step": 5,
        "what": "The register and the decisions log",
        "size": "24.6 KB together",
        "when": "on match, and always before anything is published",
        "why": "Article 7 means a live decision can overrule the file, so a publishing route cannot skip this even when the cards look complete."
      },
      {
        "step": 6,
        "what": "The source document behind a card",
        "size": "12 KB to 240 KB",
        "when": "only when the card says the answer is not on it",
        "why": "This is the step the whole design exists to avoid. It happens on roughly one request in seven."
      },
      {
        "step": 7,
        "what": "The changelog",
        "size": "31.2 KB",
        "when": "only for history questions and corrections",
        "why": "It is the largest file that is almost never needed to answer a current question."
      }
    ]
  },
  "fallback": {
    "handler": "the router itself",
    "behaviour": "A request that matches no route is not guessed at. The router returns the three routes it came closest to, says what it would have read for each, and asks the requester to pick one or describe the request differently. If the requester says none of the three fit, the router files a numbered question proposing a new route, owned by the Operations Lead.",
    "reason": "The expensive failure is not a missing route. It is a request quietly handled by the nearest route that did not fit, which then writes to a file it should not have touched."
  },
  "routes": [
    {
      "id": "R-01",
      "kind": "Factual lookup",
      "handler": "facts (librarian skill)",
      "example": "What is the calibration price and how long does it take.",
      "reads": [
        "card index",
        "the product and process cards named by the question",
        "decisions log if the card cites one"
      ],
      "writes": [
        "nothing"
      ],
      "fallback": "If no card covers it, open the one source document the nearest card points at, then file a question if it is still unanswered.",
      "escalates": false
    },
    {
      "id": "R-02",
      "kind": "New document draft",
      "handler": "draft (drafter skill)",
      "example": "Write a one page overview of the Meridian line for a new partner.",
      "reads": [
        "constitution",
        "the template for the piece",
        "product cards",
        "voice card",
        "brand card"
      ],
      "writes": [
        "work zone draft",
        "changelog"
      ],
      "fallback": "If no template matches the piece, the drafter stops and asks which of the three closest templates to adapt rather than inventing a layout.",
      "escalates": false
    },
    {
      "id": "R-03",
      "kind": "Price question",
      "handler": "facts, then escalation under article 5",
      "example": "Can we hold the June price for a partner who quoted in June.",
      "reads": [
        "price cards",
        "the effective price sheet",
        "decisions log"
      ],
      "writes": [
        "nothing without a person"
      ],
      "fallback": "Any answer that would change a published price is refused and routed to the COO with the article number attached.",
      "escalates": true
    },
    {
      "id": "R-04",
      "kind": "Partner account brief",
      "handler": "brief (account briefer agent)",
      "example": "Bring me up to date on the Northlight Group relationship.",
      "reads": [
        "partner card",
        "partner account file",
        "open questions filed against that account",
        "decisions log"
      ],
      "writes": [
        "work zone brief"
      ],
      "fallback": "A partner with no card gets a brief built from the account file alone, marked as uncarded, and a question is filed to create the card.",
      "escalates": false
    },
    {
      "id": "R-05",
      "kind": "An answer arrives",
      "handler": "file (registrar skill)",
      "example": "The Operations Lead answered question 14 in a meeting.",
      "reads": [
        "the numbered question",
        "every file holding the placeholder it fills"
      ],
      "writes": [
        "facts file",
        "question register",
        "changelog"
      ],
      "fallback": "An answer that does not match any open question is filed as a new answered question so the attribution is not lost.",
      "escalates": false
    },
    {
      "id": "R-06",
      "kind": "Proof a draft",
      "handler": "proof (proofer agent)",
      "example": "Check this partner letter before it goes to the COO.",
      "reads": [
        "the draft",
        "facts files behind every figure in it",
        "voice card",
        "constitution"
      ],
      "writes": [
        "a verdict file in the work zone"
      ],
      "fallback": "A figure with no traceable source fails the proof rather than being flagged as a warning, under article 3.",
      "escalates": false
    },
    {
      "id": "R-07",
      "kind": "Rewrite for voice",
      "handler": "revoice (voice editor agent)",
      "example": "This page reads like a brochure, make it sound like us.",
      "reads": [
        "voice card",
        "the banned word list",
        "two approved pieces of the same kind"
      ],
      "writes": [
        "the draft in place, in the work zone only"
      ],
      "fallback": "If rewriting would change a figure or a claim, the rewrite stops and hands back to the proofer, because voice work may not move facts.",
      "escalates": false
    },
    {
      "id": "R-08",
      "kind": "Brand check",
      "handler": "brandcheck (brand guardian agent)",
      "example": "Does this deck follow the colour and type rules.",
      "reads": [
        "brand card",
        "the token file",
        "the piece itself"
      ],
      "writes": [
        "a findings list in the work zone"
      ],
      "fallback": "A piece using a colour that is in no family is failed and the exact token that should replace it is named.",
      "escalates": false
    },
    {
      "id": "R-09",
      "kind": "Meeting notes",
      "handler": "scribe (scribe agent)",
      "example": "Here is the transcript of the Tuesday operations call.",
      "reads": [
        "the transcript",
        "the open question register"
      ],
      "writes": [
        "a filed meeting note",
        "new questions",
        "decisions log if a decision was made"
      ],
      "fallback": "A statement in a meeting that contradicts a LOCKED decision is written into the note and filed as a question, never written into the decisions log.",
      "escalates": false
    },
    {
      "id": "R-10",
      "kind": "Where are we",
      "handler": "status (reporter agent)",
      "example": "What is blocked and on whom before the Thursday check in.",
      "reads": [
        "question register",
        "decisions log",
        "changelog last 30 days"
      ],
      "writes": [
        "nothing"
      ],
      "fallback": "If the register is more than seven days stale the report leads with that fact instead of the numbers.",
      "escalates": false
    },
    {
      "id": "R-11",
      "kind": "Promote an approved piece",
      "handler": "promote (operator only)",
      "example": "The COO signed the partner overview, put it live.",
      "reads": [
        "the approved draft",
        "the gate result",
        "the current file it replaces"
      ],
      "writes": [
        "approved tree",
        "dated archive",
        "changelog"
      ],
      "fallback": "A promotion with no gate result does not run. There is no override path in the route itself.",
      "escalates": true
    },
    {
      "id": "R-12",
      "kind": "Partner onboarding kit",
      "handler": "onboard (partner onboarder agent)",
      "example": "New partner signed, build the welcome set.",
      "reads": [
        "partner card",
        "four kit templates",
        "price cards",
        "process cards"
      ],
      "writes": [
        "work zone kit folder"
      ],
      "fallback": "Missing partner facts leave visible placeholders in the kit and file one question each, rather than producing a kit that looks finished.",
      "escalates": false
    },
    {
      "id": "R-13",
      "kind": "Proposal",
      "handler": "proposal (proposal builder agent)",
      "example": "Draft the renewal proposal for a multi site network.",
      "reads": [
        "partner card",
        "account brief",
        "price cards",
        "proposal template",
        "decisions log"
      ],
      "writes": [
        "work zone proposal"
      ],
      "fallback": "Any non standard term in the request stops the build under article 5 and goes to the COO before a word is drafted.",
      "escalates": true
    },
    {
      "id": "R-14",
      "kind": "Price sheet proof",
      "handler": "pricecheck (price proofer agent)",
      "example": "Do the partner pages match the price file.",
      "reads": [
        "the authoritative price file",
        "every partner page under check"
      ],
      "writes": [
        "a per partner verdict table"
      ],
      "fallback": "A page whose price cannot be matched to a row is reported as unverifiable rather than as a pass, because a missing row is not agreement.",
      "escalates": false
    },
    {
      "id": "R-15",
      "kind": "Image or asset request",
      "handler": "the asset route",
      "example": "I need the Meridian Pro photo at social size.",
      "reads": [
        "asset index",
        "brand card"
      ],
      "writes": [
        "a derived file in the work zone"
      ],
      "fallback": "If no approved source image exists, the route returns the nearest three and says none are approved, rather than generating one.",
      "escalates": false
    },
    {
      "id": "R-16",
      "kind": "Bulk rebrand batch",
      "handler": "migrate (supervised agent fleet)",
      "example": "Move one partner batch onto the new mark.",
      "reads": [
        "brand card",
        "the batch manifest",
        "every piece in the batch"
      ],
      "writes": [
        "work zone copies only",
        "a batch report",
        "changelog"
      ],
      "fallback": "A batch stops at the first piece that fails the brand check, and reports what it had already done, rather than finishing the run and reporting at the end.",
      "escalates": false
    },
    {
      "id": "R-17",
      "kind": "Dataset question",
      "handler": "the data route",
      "example": "How current is the service history data and what is missing from it.",
      "reads": [
        "the dataset card",
        "the gaps and restrictions on that card"
      ],
      "writes": [
        "nothing"
      ],
      "fallback": "A dataset with no card is not queried at all. The route says so and files a question to write the card.",
      "escalates": false
    },
    {
      "id": "R-18",
      "kind": "Binding or legal wording",
      "handler": "escalation to the COO",
      "example": "Can we put a service level in writing for a partner.",
      "reads": [
        "constitution article 5",
        "decisions log"
      ],
      "writes": [
        "an escalation record"
      ],
      "fallback": "There is no fallback. The route exists to stop, and stopping is the successful outcome.",
      "escalates": true
    },
    {
      "id": "R-19",
      "kind": "History question",
      "handler": "the changelog route",
      "example": "When did the turnaround wording change and who changed it.",
      "reads": [
        "changelog",
        "the corrections that name the entries found"
      ],
      "writes": [
        "nothing"
      ],
      "fallback": "If an entry has been corrected, the route returns the correction first and the original second, never the original alone.",
      "escalates": false
    },
    {
      "id": "R-20",
      "kind": "What did we decide",
      "handler": "the decisions route",
      "example": "What did we settle about the second brand colour.",
      "reads": [
        "decisions log",
        "the supersession chain behind the current decision"
      ],
      "writes": [
        "nothing"
      ],
      "fallback": "A superseded decision is never returned on its own. The chain forward to the current decision is returned with it.",
      "escalates": false
    }
  ]
}
