RAC v0.10.3 - the "meet Lore" release
The "meet Lore" release — your coding agent now reads the decisions your team already made, and cites them instead of violating them. Deterministic. Read-only. No RAG, no guessing.
pip install --upgrade requirements-as-code
claude mcp add rac-guide -- rac mcpYour agent reintroduces an approach you rejected months ago. It rebuilds something you deliberately removed. The decision was written down — in an ADR nobody, human or agent, ever reopened. Lore fixes that: RAC now ships an MCP server that serves your requirements, decisions, designs, and roadmaps to Claude Code, Claude Desktop, and Cursor — mid-task, at the moment they matter.
Your agent, grounded
rac mcp starts a server from any RAC repository — no flags, no daemon, no account. Your agent client spawns it and gets four read-only tools:
search_artifacts— find the decisions that cover what it's about to buildget_artifact— read one artifact by any ID it encountersget_related— what connects to it, in both directionsget_summary— what recorded knowledge exists at all
Nothing tells the agent to look. The tool descriptions name the moment ("call this before designing or implementing…"), and the agent reaches for your decisions on its own — then cites them by ID.
Why you care: you write the decision once, in Markdown, in your repo. Every agent session from then on respects it — and when one of its proposals conflicts with a recorded decision, you hear about the conflict instead of shipping it.
One config block per client, verified walkthroughs, and troubleshooting live in docs/mcp.md.
Honest answers, by construction
Everything the server tells your agent is reproducible:
- Read-only by construction. The server cannot create, modify, or delete files — enforced in code and pinned by tests, not promised by convention.
- Never stale. Every tool call re-reads the repository, so the agent can't act on a decision it just changed.
- Never floods the context. Responses are capped (10,000 characters), truncated at whole-item boundaries, and always say what was omitted and how to narrow.
- Fails as data. A missing or ambiguous ID comes back as a structured answer the agent can recover from — never a protocol error.
Search that finds the decision, not the noise
Search — rac find and search_artifacts alike — got two upgrades:
- Token-boundary matching. Queries match whole words and prefixes, not raw substrings:
loreno longer matches every artifact with "Explorer" in its path, whilerelationstill findsrelationships. - Body text counts now. A decision whose body settles your question is found even when its title doesn't carry the keyword — and the match arrives with a snippet (the matching line and its section), so the agent can judge relevance without opening every candidate.
Heads up — this is a behavior change: search results differ from earlier versions wherever substring matching produced mid-word hits, and an empty or punctuation-only query now returns no matches instead of everything. Ranking stays deterministic and explainable: ID, then title, then path, then heading, then body.
Try it without writing a thing
A complete worked corpus ships in examples/guide/: a true-to-life soft-delete decision, its connected requirement, design, and roadmap, plus a small code task whose obvious implementation violates the decision. demo.md scripts the whole contrast — the same prompt with and without Lore — so you can watch an agent violate the decision, then cite and respect it.
Also in this release (since v0.8.11)
- Zero-flag startup that fails helpfully: pointing
rac mcpat an empty directory starts the server, says so on stderr, andget_summaryreports the empty state — the first run is the one most likely to be misconfigured. - Team setup via CLAUDE.md routing: record your agent guidance as a validated RAC prompt artifact and
@importit — the instructions for using your knowledge become governed knowledge themselves (docs/mcp.md §6). - A new README that leads with what this is for — and with Lore, the product name for the grounding experience, built on RAC underneath (recorded as ADR-036, like every other decision here).
rac findshows snippets under body-matched results, the same ones the agent sees.
Upgrading
pip install --upgrade requirements-as-codeuv tool upgrade requirements-as-codeThe MCP server is a standard part of the package — no extra to install (the upgrade pulls one new dependency, the official mcp SDK). Every existing command, file, JSON contract, and exit code keeps working exactly as before, with one announced exception: search matching semantics changed as described above. Search JSON gains optional section/snippet fields on body-matched entries only; all other entries are byte-identical to before.