diff --git a/docs/figures/family-dark.svg b/docs/figures/family-dark.svg index af55724..c7d8945 100644 --- a/docs/figures/family-dark.svg +++ b/docs/figures/family-dark.svg @@ -16,7 +16,7 @@ chock-catalog - the policies — 39, each labelled enforced or advisory, with replayed evals + the policies — each labelled enforced or advisory, with replayed evals @@ -28,7 +28,7 @@ agentseam the primitives — one handler API and a verified capability matrix across - 16 agents + the supported agents context-report the evidence — a diff --git a/docs/figures/family-light.svg b/docs/figures/family-light.svg index cb95f50..4fb2168 100644 --- a/docs/figures/family-light.svg +++ b/docs/figures/family-light.svg @@ -16,7 +16,7 @@ chock-catalog - the policies — 39, each labelled enforced or advisory, with replayed evals + the policies — each labelled enforced or advisory, with replayed evals @@ -28,7 +28,7 @@ agentseam the primitives — one handler API and a verified capability matrix across - 16 agents + the supported agents context-report the evidence — a diff --git a/docs/figures/make_family.py b/docs/figures/make_family.py index 6a70d5e..b053036 100644 --- a/docs/figures/make_family.py +++ b/docs/figures/make_family.py @@ -4,25 +4,56 @@ statement stays on one line under 88 characters. """ +import importlib +import re +import sys +from pathlib import Path + import palette as p +ROOT = Path(__file__).resolve().parents[2] +REGISTRY = ROOT / "registry.yaml" +MATRIX_SRC = ROOT / "src" + W, H = 800, 420 NAME, ROLE = 13, 11 WIDE, NARROW, ARM = 74, 34, 22 + +def catalog_count(): + """Policies in the catalog's registry.yaml, or None in a repo that carries none.""" + if not REGISTRY.is_file(): + return None + text = REGISTRY.read_text(encoding="utf-8").split("\nskills:\n", 1)[0] + return len(re.findall(r"^- id: \S+", text, re.MULTILINE)) or None + + +def agent_count(): + """Agents in agentseam's capability matrix, or None in a repo that has none.""" + if not (MATRIX_SRC / "agentseam" / "matrix.py").is_file(): + return None + sys.path.insert(0, str(MATRIX_SRC)) + return len(importlib.import_module("agentseam.matrix").agents()) + + +# Only the repo holding each source names its count; the others say it without one. +_N, _A = catalog_count(), agent_count() +POLICIES = f"the policies \N{EM DASH} {_N}," if _N else "the policies \N{EM DASH}" +AGENTS = f"across {_A} agents" if _A else "across the supported agents" + # Split into fragments joined with a space: a magic trailing comma keeps each list # exploded, so `ruff format` leaves this alone at 88, 100 and 120 alike. ROLES = { "agentseam": [ "the primitives — one handler API and a verified capability", - "matrix across 16 agents", + "matrix " + AGENTS, ], "chock": [ "the compiler — one policy into git hooks, CI gates and", "native pre-tool hooks", ], "chock-catalog": [ - "the policies — 39, each labelled enforced or advisory,", + POLICIES + " each labelled enforced or advisory,", "with replayed evals", ], "context-report": [ diff --git a/llms.txt b/llms.txt index 1023345..3332184 100644 --- a/llms.txt +++ b/llms.txt @@ -1,7 +1,8 @@ # context-report -> An open, signed report format for whether an agent context artifact — a plugin, an -> `AGENTS.md`, a skill, a hook, an MCP server — actually works. +> The evidence layer for AI coding agent guardrails: an open, signed report format for whether +> an agent context artifact — a plugin, an `AGENTS.md`, a skill, a hook, an MCP server — +> actually works. `context-report` is a predicate an author's CI produces and a catalog verifies at submission: one row per fact (`reachability`, `cost`, `fault.*`, `interference`, `efficacy`, ...), each @@ -54,5 +55,5 @@ between MINOR releases; see the Compatibility note in the spec READMEs below. - [paper/context-report.md](https://github.com/open-coder-ai/context-report/blob/main/paper/context-report.md): the measurement paper — method, the three findings from running the reference producer over - chock's bundles, 18 public plugins, and seven instruction files/skills, and what v0.1 still - cannot measure. + chock's 88 bundles (22 policies for 4 target agents), 18 public plugins, and seven + instruction files/skills, and what v0.1 still cannot measure.