Changelog

All notable changes to roam-code will be documented in this file.

The format is based on Keep a Changelog,

and this project adheres to Semantic Versioning.

[Unreleased]

[12.46] - 2026-05-07

CI fix — ruff lint cleanup on overnight files

Hotfix after 12.45. The ruff format-check passed in 12.45 but the

ruff LINT pass (separate) flagged 7 errors across the new files:

(the dead variable was a refactor leftover; the actual default-path

logic lives in the out = Path(output_path) if output_path else None

branch where the user-supplied path wins)

over from a refactor of the smoke test)

Applied ruff check --fix --unsafe-fixes. Whitespace + dead-code

removal only; all tests still green.

[12.45] - 2026-05-07

CI fix — ruff format on overnight files

Hotfix after 12.44. The 9 net-new files added during the overnight

push (capability.py, cmd_compare.py, cmd_skill_generate.py,

sarif.py edits, plus 4 test files) were not run through ruff format

before commit. CI's lint job ran ruff format --check and rejected.

Per the project's known-learning ("Ruff format check in CI: Always run

ruff format on new files before committing"), this should have been

caught locally. The hotfix runs the formatter and lands the

whitespace-only changes. No behavior change.

[12.44] - 2026-05-07

CI fix — register R5's two new detectors in the catalog

Hotfix after 12.43. The two new async detectors added in R5

(async-fire-and-forget-task, async-nested-run) were registered in

the detector dispatch table but missing from the catalog/tasks.py

CATALOG dict. test_math.py::test_detector_registry_covers_catalog

caught the mismatch on all 5 Python versions.

Adds full catalog entries for both new tasks: name, category, kind,

and the two-way ranked-solutions list that the rest of the algo

infrastructure expects. Bumps test_math.py's expected-task count

32 -> 34. No behavior change to the detectors themselves.

[12.43] - 2026-05-07

Major: Capability Registry + 4 new commands + landing-page launch

This release lands Phase 1 of the v2 monetization plan and bundles a

substantial overnight push (5 web passes + 12 R-phases). Companion to

the launch of the new commercial landing page at https://roam-code.com.

New commands (4)

capability manifest as YAML / JSON / text from any command marked

with @roam_capability. Drives Roam Review GitHub App routing +

MCP filtering. Phase 1 of the v2 monetization plan per

build_priorities.md.

from the capability registry. 4 emitter targets: claude (SKILL.md),

cursor (.mdc rule), continue (config snippet), aider

(.aiderrc). Closes GitHub issue #14; supersedes the static SKILL.md

approach from PR #15 with dynamic generation. --ai-safe-only

default filters to capabilities marked safe for autonomous agents.

added/removed/moved + per-file complexity deltas + IMPROVED /

SIDEWAYS / REGRESSED verdict. The "did this refactor actually

work?" tool. Useful for sprint-end measurement.

— applied to the 3 Phase 0 commands (permit, postmortem,

article-12-check). Mark new commands with this so the registry

stays in sync with the codebase.

New detectors (2)

return value is discarded. Counts total create_task calls,

subtracts stored ones (assignment, append, add, return, await),

reports the net leak. Python 3.11+ explicitly warns about this

footgun. High severity.

function. Raises RuntimeError at runtime (event loop already

running). Fix is to await the coroutine directly. High severity.

SARIF output enrichment

GitHub Code Scanning re-ingest correlation.

available (revisionId, branch, repositoryUri).

envelope shape), stamps matching results with the SARIF

suppressions array — so CI gates can respect documented FPs.

Rule packs

error-handling + hygiene categories added).

retain cycles, main-thread blocking, SwiftUI state misuse, etc.

Documentation

orient in a new codebase, audit a PR, set up a CI gate, find dead

code, generate Article 12 readiness, replay detectors against past

commits, wire roam into Claude Code, compare two indices, ship a

pre-commit verdict.

state (GitNexus 10K stars, Codebase-Memory 66 langs, Qodo 2.0

multi-agent, Greptile v4 82% bug catch, CodeRabbit Autofix). Drives

next-session prioritisation.

Landing page (https://roam-code.com)

Major rework over 5 audit-and-fix passes after the domain went live

on 2026-05-07:

/refund. All under 10 KB Brotli per page.

else it broke."

(190+ commands, 136 MCP tools, 27 languages, real OSS adoption

numbers fetched from GitHub + pypistats).

talks to Roam, gets back graph-grounded answers).

comment mockup (HTML/CSS, no images).

with verified-against-vendor-pricing-pages methodology.

Kudelski's CodeRabbit RCE writeup, with "Roam catches this class

of bug" tie-back lines.

limitation-of-liability + Greek governing law, Refund policy with

EU consumer-rights notice.

Surface counts

What was deferred to next session

R4 (Dart Tier 1 extractor), R11 (migration-plan CLI), R13 (parallel

parse for monorepos), R14 (LLM-augmented MCP tool), R15 (why-slow CLI

via runtime traces), R16 (open-issues sweep), R18 (GraphQL bridge),

R19 (incremental MCP hot-reload). Each documented in the project task

list with notes on scope + risk.

[12.42] - 2026-05-06

CI fix — landscape.json self-row version stamp

Hotfix after 12.41. The 12.41 release bumped pyproject + MCP cards

+ competitor_site_data but missed docs/site/data/landscape.json's

self-row, which tests/test_doc_consistency.py::test_landscape_json_self_row_version_matches

guards (major.minor must match pyproject). Bumped 12.40 → 12.42 in

that file. No behavior change.

[12.41] - 2026-05-06

CI fix — README surface consistency for Phase 0 commands

Hotfix release after 12.40. The README's command listing did not yet

include permit, postmortem, and article-12-check, which broke

tests/test_readme_surface_consistency.py::test_readme_covers_all_canonical_cli_commands

on all 5 Python versions in the matrix. Added one-line entries for

each of the three new commands in the canonical command table. No

behavior change; documentation-only fix to restore CI green.

[12.40] - 2026-05-06

Pivot to monetization — Phase 0 free-OSS funnel artifacts + commercial landing page

After 8 CI iterations restoring the matrix to green (12.31 → 12.39),

this release pivots from polish to monetization-aligned shipping.

Lands the Phase 0 commands from build_priorities.md plus a

starter landing-page implementation for the roam.review umbrella.

New commands (3 — Phase 0 of v2 monetization plan)

agents. Returns {verdict, reason, allowed_actions, blocked_actions}

over staged changes (--staged), an arbitrary diff (--input), or

a target symbol (--symbol). Wraps roam critique + roam preflight.

Exit codes: 0=ALLOW, 5=BLOCK, 6=REVIEW. Drops into Cursor rules,

Claude Code permission hooks, pre-commit, GitHub Actions branch

protection. **Engine reused by the Roam Review GitHub App at PR

time.**

against past commits. Walks HEAD~30..HEAD (or any range), runs

roam critique against each commit's diff, reports findings that

would have surfaced pre-merge. The single highest-conversion buyer-

meeting demo per the v2 plan: *"if it retroactively catches my Q1

incidents, signed PO by Friday."*

assessment. 6-item checklist (audit-trail dir, trail records,

retention policy, technical docs, attestation surface, high-risk

classification heuristic) → 1-page Markdown report (or PDF with

--pdf out.pdf if reportlab installed). Captures Article-12-curious

leads before they pick another vendor.

Commercial landing page (starter)

New directory templates/distribution/landing-page/ with:

PocketOS / Amazon Treadwell / DORA 2025 + audit upsell + trust

strip + FAQ + footer

Grotesk fonts (matches docs/site visual language)

primary, with roamreview.com / roam.cloud / roamaudit.com

as backups), 3 deploy paths (Cloudflare Pages / Vercel / GitHub

Pages), content TODOs before going live

templates/distribution/landing-page-spec.md updated to reflect

the new domain recommendation.

Surface counts

Tests

path + verdict-decision-tree for permit, no-commits-found path

for postmortem, JSON envelope shape + markdown render + file-

output for article-12-check. All pass on Python 3.9-3.13.