{
  "id": "governance-agentic-team",
  "version": "0.1.0",
  "updated": "2026-08-26",
  "posture": "fully-agentic",
  "human_in_the_loop": false,
  "note": "Seven roles, one folder each, customised to this beat rather than copied from a generic newsroom. The team runs without a human reviewer: nothing here is read by a person before it is published. The named human reads it afterwards, as a reader. That is a real limitation and every rendered page states it.",
  "inherits_from": {
    "site": "graphs.sgit.ai",
    "page": "https://graphs.sgit.ai/v2/team/index.html",
    "checked": "2026-08-26",
    "what": "The role-folder shape (role.md + actions + briefs + debriefs), the centre-of-gravity framing, and the rule that roles are defined for THIS estate rather than in the abstract."
  },
  "roles": [
    { "id": "librarian",  "name": "Librarian",  "gravity": "Nothing lost, everything findable, every fact traceable to where it came from.",
      "owns": "The source register and the ontology.",
      "refuses": "A source cited without a register entry; an edge verb that does not exist.",
      "wrong_when": "A reader cannot tell where a fact came from, or whether anyone read the original." },
    { "id": "researcher", "name": "Researcher", "gravity": "No claim without a source somebody actually fetched.",
      "owns": "The ingestion path: fetch, freeze, hash, record retrieval.",
      "refuses": "Citing a URL nobody fetched; filling a gap from model memory.",
      "wrong_when": "A fact cannot be traced to bytes anybody holds — currently true of every fact here." },
    { "id": "extractor",  "name": "Extractor",  "gravity": "The graph says what the source says, and nothing more.",
      "owns": "The graph and its conformance to the ontology; anchors; the node-type formulas.",
      "refuses": "An edge outside the vocabulary; a symmetric edge; a node type the source does not support.",
      "wrong_when": "Walking from a rendered claim back to the source produces a different statement." },
    { "id": "writer",     "name": "Writer",     "gravity": "Every sentence traces to a node.",
      "owns": "Story markdown, and the node ids each story stands on.",
      "refuses": "A claim with no backing node; severity language not computed from the graph.",
      "wrong_when": "The prose is more certain than the graph is." },
    { "id": "editor",     "name": "Editor",     "gravity": "The publication's voice, and the things it will not say.",
      "owns": "The refusal list and the disclaimers.",
      "refuses": "Any adverse assessment of a named third party; implying editorial review that did not happen.",
      "wrong_when": "Something published would need a lawyer, or a reader could believe a person checked it." },
    { "id": "qa",         "name": "QA",         "gravity": "Gates cannot be silenced.",
      "owns": "The section gates and the reason each one exists.",
      "refuses": "Weakening a check to make a release pass.",
      "wrong_when": "A defect reaches a reader that a cheap structural check would have caught." },
    { "id": "publisher",  "name": "Publisher",  "gravity": "Versions are promises, and a beta says so on its face.",
      "owns": "The section version, the release note, the beta notice.",
      "refuses": "Shipping without the beta notice; a version bump implying assurance the release did not gain.",
      "wrong_when": "A reader takes the publication for more finished than it is." }
  ],
  "pipeline": [
    { "step": 1, "role": "librarian",  "does": "Registers a source and its ingestion state." },
    { "step": 2, "role": "researcher", "does": "Fetches and freezes the artefact; records the hash and retrieval time." },
    { "step": 3, "role": "extractor",  "does": "Types nodes and edges against the ontology; runs the formulas." },
    { "step": 4, "role": "writer",     "does": "Projects a subgraph into prose, listing the nodes it rests on." },
    { "step": 5, "role": "editor",     "does": "Applies the refusal list; cuts rather than softens." },
    { "step": 6, "role": "qa",         "does": "Runs the gates. A failure is answered, never silenced." },
    { "step": 7, "role": "publisher",  "does": "Bumps the version, writes what changed and what is still missing." }
  ],
  "open": [
    { "id": "T-ingest",  "what": "No role can currently perform step 2 against a primary source — the fetch/freeze/hash path does not exist. Until it does, every fact is secondary and the Researcher's centre of gravity is aspirational." },
    { "id": "T-disagree", "what": "The inherited model values roles that disagree usefully. Nothing here yet records a disagreement between two roles, or how one gets resolved when no human breaks the tie." }
  ]
}
