Folio Assistant Core

bootstrap

This directory is where an agent starts when it has been handed a repository and knows nothing else about it. Everything here is a file to read: text (.md), data (.json) and diagrams (.bpmn). Nothing here is a program, so you need nothing installed to use it.

A capitalized word on this page is a defined term. It links to its definition the first time it appears, and [src] beside it opens the schema that defines it. Every definition is drawn on one page, schemas/README.md, from one file, schemas/graph.schema.json.

Contents

This section was generated by bootstrap-tools — scripts/readme-sections.ts, from this README's own headings (section kg:toc). Do not edit it here; edit outside the markers, or change what it is generated from.


What you are setting up

A Knowledge Graph (src) is information kept as files in a repository: things, and the named relations between them. One file at its root, <name>.json, declares it. That file gives its name and lists its Subgraphs (src), the named directories it is divided into.

A Harness (src) is what you use to work with a Knowledge Graph. A Harness is a Knowledge Graph too, declared the same way. This directory is the first Harness, bootstrap, declared by bootstrap.json.

Setting up a repository means instantiating one or more different kinds of Knowledge Graph Harness on the data in the repository. A person chooses which ones, and the choice is hard to undo.


Who takes part

An Actor (src) is a person, an agent or a program. Each Actor takes a Role (src), and the four Roles here are declared in scenarios/roles.json:

Rolewho plays it
Bootstrapping Agentyou: the agent setting the repository up
Requestorthe person who asked for it. Only the Requestor chooses the Harness.
Knowledge Graph Data Storea repository: the one being set up, and any a Harness is read from
Loggerthe record of what you did. Here, it is the conversation you are in.

The same four, as scenarios/roles.json defines them, with every name each goes by: other names in use today, and former names with the day each was retired, so a name met in older text still leads to the right one.

This section was generated by bootstrap-tools — scripts/readme-sections.ts, from the Roles the instance declares (section kg:roles). Do not edit it here; edit outside the markers, or change what it is generated from.

Rolewhat it isalso calledformerly
Bootstrapping AgentAn agent asked to set up a Harness with ONLY the knowledge bootstrap's README.md hands it.Initiator (until 2026-09-23)
Knowledge Graph Data StoreA git repository, reached either through the git CLI or through a forge's API.
RequestorWants to initialize — or bootstrap, or install, or load, or harness — a harness: bootstrap itself, or any Harness built on it.
LoggerA machine that accepts log messages and puts them somewhere a person can read.

As the Bootstrapping Agent you have no Harness yet, so you have no tools (programs to call): a Harness defines those, and bootstrap does not. If a step seems to need one, it belongs to the Harness you are about to set up, not to this one.


User story

As the Bootstrapping Agent, I want to set up the repository I was handed as the Harness the Requestor chooses, so that everything added to it later is built on the right Harness.

The story ends in one of two ways, and both are acceptable: the Harness is set up, or the reason it could not be is recorded.


Steps

The steps are drawn as a Process (src), initialize-harness.bpmn. It is the only Process you start; every other one is called from a step. Each step names the Skill (src) to read and the Functional Requirement it must meet (see the next section).

 1  Learn how to open files here
 |
 2  Determine the Harness and repositories  --- ask --->  the Requestor chooses one Harness
 |
 3  Check each repository  --- already this Harness? --->  go to 7
 |                         --- already another one? --->  record it and stop
 4  Record that you are starting
 |
 5  Follow the chosen Harness's own instructions
 |
 6  Leave a README at the repository's root, if it has none
 |
 7  Make sure every step the declarations name is done  --- only a person can? ---> ask
      first: the JSON Schemas and JSON-LD at the IRIs they name
 |
    Harness installed, every step reported: done, not done, could not determine, or stated

    At any step: something cannot be found or read  --->  record it and stop
    Whenever a person must decide or act  --->  the one human-agent discussion
      (first: say which process, as which role, in what context;
       what you cannot say is the first thing you ask)

The same steps, and the Processes they start, as the diagrams themselves:

This section was generated by bootstrap-tools — scripts/readme-sections.ts, from the Process diagrams the declaration lists (section kg:processes). Do not edit it here; edit outside the markers, or change what it is generated from.

Initialize a harness: processes/initialize-harness.bpmn, the one you start; it calls "Determine the harness and repositories", "Log a message" and "Complete initialization".

Initialize a harness

Complete initialization: processes/complete-initialization.bpmn, started from "Initialize a harness"; it calls "Human–agent discussion" and "Log a message".

Complete initialization

Determine the harness and repositories: processes/discussion.bpmn, started from "Initialize a harness"; it calls "Human–agent discussion".

Determine the harness and repositories

Human–agent discussion: processes/human-agent-discussion.bpmn, a reusable sub-process, started from "Complete initialization" and "Determine the harness and repositories".

Human–agent discussion

Log a message: processes/log-message.bpmn, a reusable sub-process, started from "Complete initialization" and "Initialize a harness".

Log a message

  1. Learn how to open files here. Read skills/bootstrap-kg-navigation.md. Opening files is all you can do (Functional Requirement 1, FR-1).

  2. Determine the Harness and repositories. List the Harnesses the repository could become, and the repositories it could be set up in. Then ask the Requestor for one Harness and its repositories (FR-3), through the one reusable discussion (FR-9). Read skills/confirm-harness.md for what to ask, and skills/human-agent-discussion.md for how. This step is done when the answer is written down as a document that matches schemas/discussion.output.schema.json.

  3. Check each repository. If its root already holds a declaration, <name>.json, it is already set up (FR-5). If it is the Harness the Requestor chose, go straight to step 7; if it is another, record that and stop.

  4. Record that you are starting. Read skills/log-message.md.

  5. Follow the chosen Harness's own instructions. Every Harness keeps them at the same path (FR-4):

    <name>/docs/bootstrap/initialization.md
    

    Here <name> is the name the Requestor chose, as it appears in that Harness's declaration, <name>.json.

  6. Leave a README at the repository's root, if it has none (FR-8). Read skills/root-readme.md.

  7. Make sure every step is done (FR-10). The steps are the ones the declarations name. First, and primary: the Harness's JSON Schemas and JSON-LD documents are published at the IRIs they name (FR-11; read skills/publish-documents.md). Then the declared directories and files, the README and the sections it opts into, each needed Harness's own instructions, and the site on GitHub Pages, which is how the documents get to their addresses. Check each one before doing anything, do what you can, and ask the person for what only they can do. Read skills/initialization-steps.md and, for the site, skills/publish-site.md. Where a toolset that reads these declarations is available, it may perform the same checks.

If anything cannot be found or read along the way, record what failed (step 4's Skill) and stop (FR-6).


Functional Requirements

A Functional Requirement is a rule the steps must meet. Each has a number, so a step can name it: Functional Requirement 1 is FR-1.

rule
FR-1Everything named here can be reached by opening files, and by nothing else.
FR-2You start one Process, initialize-harness. The Processes discussion, human-agent-discussion, complete-initialization and log-message are started only by steps of another Process.
FR-3Only the Requestor chooses the Harness. You may shorten the list of candidates, but never choose between two.
FR-4Every Harness keeps its set-up instructions at <name>/docs/bootstrap/initialization.md, so you can set up a Harness you have never seen.
FR-5A repository whose root already holds a declaration is already set up. You never set it up again: if it is the chosen Harness, you only check its steps (FR-10); if it is another, you record that and stop.
FR-6Anything that cannot be found or read is recorded, and stops the Process. Nothing is worked around.
FR-7This directory holds no program code, so FR-1 stays true.
FR-8When the set-up succeeds, the repository's root has a README.md naming the Harness and whether the set-up succeeded everywhere. An existing README is added to, never replaced.
FR-9Whenever a step needs a person to decide or to act, it calls human-agent-discussion. Before any question the asker determines where it is — the context, the Role it acts as and the person's, the Process and task (or that it is idle) — and asks first about whichever it cannot determine. Then: context, options, a recommendation and what happens with no answer, then one question. A default applies only where the calling step allows one, and never to where the asker is.
FR-10Every initialization step the declarations name is checked before anything is done, and reported as done, not done, could not determine, or stated. "Could not determine" is never reported as done, and nothing somebody wrote is replaced.
FR-11A Knowledge Graph Harness's JSON Schemas and JSON-LD documents (its vocabulary, its diagram vocabulary, its graph, each with its @context) are published at the IRIs they name. It is the primary initialization step: checked first after the declarations are read, and first in the report. A site is how they get there, not the goal.

Reading it on the web

Every README here, the root's first and then each directory's, is also one page with a table of contents at https://litlfred.github.io/bootstrap/README.html, beside every file as it sits here; the site's root address redirects to it. The page is built by a separate toolset, from these files, and published from outside this repository: nothing here builds or publishes it, and no step in this README needs it (FR-7). The site is also the first repository to go through its own step 7: skills/publish-site.md.


Every file here

Grouped by directory, each described from the file itself. "Used by" names the Process that reads a file, where a diagram says so.

This section was generated by bootstrap-tools — scripts/readme-sections.ts, from the declared directories and each file in them (section kg:files). Do not edit it here; edit outside the markers, or change what it is generated from.

At the top

filewhat it isused by
AGENTS.mdPhase one of two.
README.mdThe flow, with every term linked to the schema that defines it.
ns.jsonldEvery term bootstrap defines, in order, and every Graph Typology it defines, as RDF and SKOS — the document bootstrap's namespace resolves to.
bootstrap.jsonBootstrap

skills/

filewhat it isused by
bootstrap-graph-emission.mdWhat bootstrap's own Knowledge Graph must be when it is written out as a data file, .jsonld with a .json copy.
bootstrap-graph-publication.mdWhere bootstrap's Knowledge Graph file is published, why its @id must be exactly that address, why a .json copy sits beside the .jsonld, and why the fi…
bootstrap-kg-navigation.mdRead and navigate a knowledge graph with nothing installed — no MCP server, no tools, no harness."Complete initialization", "Initialize a harness"
confirm-harness.mdNarrow the harnesses and locations this could be, then have the Requestor settle it."Determine the harness and repositories", "Initialize a harness"
discussion.mddiscussion — settling what an agent cannot read off disk
human-agent-discussion.mdAsk a person (or a sibling agent) for what no file holds."Complete initialization", "Determine the harness and repositories", "Human–agent discussion"
initialization-steps.mdWalk every initialization step the declarations name (the instance's own and each one it needs), check each before doing anything, do what can be done, ask f…"Complete initialization", "Initialize a harness"
knowledge-graph-data-store.mdThe contract a Knowledge Graph Data Store keeps: serve a declaration, its graph and its instructions exactly as committed, say plainly when a file is absent,…
log-message.mdSay what you are doing, to the Logger, in a form a reader can act on."Complete initialization", "Initialize a harness", "Log a message"
logger.mdThe contract a Logger keeps: accept a complete log message, record it unchanged where a person can read it, attributed to the actor the message names."Log a message"
package-manifest.jsonWhat an agent reads before it knows whether this repository is an instance, what kind, or what for.
publish-documents.mdThe primary step of initializing a Knowledge Graph harness: every JSON Schema and JSON-LD document it names an address for (schemas, vocabulary, diagram voca…"Complete initialization"
publish-site.mdGive an instance a site: its Knowledge Graph rendered for publication at its site address, and the address answering."Complete initialization"
root-readme.mdWrite the repository's root README when there is none, carrying a link to the harness that was installed and the overall install status."Initialize a harness"

schemas/: The schemas bootstrap is checked against: graph.schema.json, the shape of a declaration and the definition of every term bootstrap uses; and the input and…

filewhat it isused by
discussion.input.schema.jsonDiscussion Input
discussion.output.schema.jsonDiscussion Output
graph.schema.jsonKnowledge Graph declaration
model-registry.schema.jsonModel Registry
requirement-set.schema.jsonRequirement Set
requirement.schema.jsonRequirement

scenarios/: bootstrap's four Roles: Bootstrapping Agent, Requestor, Knowledge Graph Data Store and Logger.

filewhat it isused by
roles.jsondata

processes/: bootstrap's Processes: initialize-harness.bpmn, the only one an Actor starts; discussion.bpmn, which it calls to determine the harness and repositories;…

filewhat it isused by
complete-initialization.bpmna Process: Complete initialization"Initialize a harness"
complete-initialization.svgthe picture of complete-initialization.bpmn, generated from it
discussion.bpmna Process: Determine the harness and repositories"Initialize a harness"
discussion.svgthe picture of discussion.bpmn, generated from it
human-agent-discussion.bpmna Process: Human–agent discussion"Complete initialization", "Determine the harness and repositories"
human-agent-discussion.svgthe picture of human-agent-discussion.bpmn, generated from it
initialize-harness.bpmna Process: Initialize a harness
initialize-harness.svgthe picture of initialize-harness.bpmn, generated from it
log-message.bpmna Process: Log a message"Complete initialization", "Initialize a harness"
log-message.svgthe picture of log-message.bpmn, generated from it
ns.jsonldbootstrap's diagram elements

models/: Which languages a model is good at, and whether anybody checked.

filewhat it isused by
models.jsonWhich languages a model is good at, and whether anybody checked.