{
  "_comment": "bootstrap's four Roles. A lane of a Process diagram names the Role its tasks are performed in, with BPMN's own partitionElementRef pointing at a bpmn:resource whose id is the Role's id. The lane is not the Role (owner, 2026-10-16). An Actor takes the Role on for the length of that lane. Roles are declared here, rather than left as lane names in the diagrams, so that every lane names a Role somebody defined. A Role played by a mechanical Actor is as real as any other, and its skills are its contract.",
  "name": "bootstrap",
  "roles": [
    {
      "id": "bootstrapping-agent",
      "title": "Bootstrapping Agent",
      "description": "An agent asked to set up a Harness with ONLY the knowledge bootstrap's README.md hands it. That constraint is the role, not a caveat on it: a Bootstrapping Agent has no MCP server, no harness, no work plan and no skills beyond those bootstrap carries, and a step that assumes any of those is a step a Bootstrapping Agent cannot perform. It stops being a Bootstrapping Agent the moment the harness is installed and it re-enters through that harness instead.",
      "actorKinds": [
        "agent"
      ],
      "formerNames": [
        {
          "name": "Initiator",
          "retiredOn": "2026-09-23"
        }
      ],
      "skills": [
        "bootstrap-kg-navigation",
        "confirm-harness",
        "discussion",
        "human-agent-discussion",
        "initialization-steps",
        "log-message",
        "publish-documents",
        "publish-site",
        "root-readme"
      ],
      "persona": "Knows nothing about this repository and cannot look anything up. Reads files, follows the processes bootstrap carries, and asks exactly one question when it must — `discussion` is how that asking is performed and what it must produce."
    },
    {
      "id": "knowledge-graph-data-store",
      "title": "Knowledge Graph Data Store",
      "description": "A git repository, reached either through the git CLI or through a forge's API. It is where a declaration and its graph are READ from and where a new instance's declaration is WRITTEN to. It holds and serves, and takes no part in deciding what should happen. Its skill is its contract, `knowledge-graph-data-store`: what it must serve and keep, which a test can check (owner, 2026-10-16).",
      "actorKinds": [
        "system"
      ],
      "skills": [
        "knowledge-graph-data-store"
      ]
    },
    {
      "id": "requestor",
      "title": "Requestor",
      "description": "Wants to initialize — or bootstrap, or install, or load, or harness — a harness: bootstrap itself, or any Harness built on it. Carries no skills deliberately: WHICH harness this repository should become is a judgement about intent, and no instruction body produces it. The Bootstrapping Agent may narrow the list from context; only the Requestor settles it.",
      "actorKinds": [
        "person"
      ],
      "skills": [],
      "judgementOnly": true
    },
    {
      "id": "logger",
      "title": "Logger",
      "description": "A machine that accepts log messages and puts them somewhere a person can read. It receives and records, and takes no part in what happens next. Its skill is its contract, `logger`: record a complete message unchanged and attributed to its actor (owner, 2026-10-16). Composing the message is a different skill, `log-message`, which belongs to whoever is DOING the thing being logged. The Logger is not the author of a log line; it is where the line goes. That distinction is why `log-message` takes `actor` as a required input: the Logger cannot infer who acted, and a log that names the logger rather than the actor records nothing worth having.",
      "actorKinds": [
        "system"
      ],
      "skills": [
        "logger"
      ]
    }
  ]
}
