Community readiness: public benchmark, real-output docs, MCP 2.x fix, release gates - #26
Draft
denfry wants to merge 12 commits into
Draft
Community readiness: public benchmark, real-output docs, MCP 2.x fix, release gates#26denfry wants to merge 12 commits into
denfry wants to merge 12 commits into
Conversation
…rom answers gen_queries documented that CHANGELOG_EXCLUDES was applied by the harness, but the harness never imported it: for a git-derived query set the changelog (and Flask-style CHANGES.rst, which the deny pattern also missed) stayed indexed and could outrank the implementation it paraphrases. Both lists now cover CHANGES*, HISTORY*, NEWS* and RELEASE_NOTES*, and build_corpus_index applies them. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QDogWFhCH69TMddDcrtwHL
…n/ wrappers The plugin wrappers whitelisted ten subcommands while the skill template's cbx allowed fourteen, so plugin users could not run the four commands SKILL.md routes to. A parity test now pins bin/cbx, bin/cbx.ps1 and both template wrappers to the same set. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QDogWFhCH69TMddDcrtwHL
A symbol-aligned chunk can be a whole class (1,500 lines in Flask's app.py), and the read plan handed that span to the agent verbatim. On the public baseline benchmark that made the index's follow-through reads cost more than three 80-line grep windows. Reads are now capped at the definition head; capped entries carry additive truncated/line_end_full fields so the agent can read on deliberately. retrieval.max_read_lines=0 restores the old behaviour. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QDogWFhCH69TMddDcrtwHL
…-driven release notes - scripts/check_versions.py: __version__ must match plugin.json, the requirements.lock tag, the three .skill_version stamps and a CHANGELOG heading. - scripts/check_links.py: relative Markdown links and image sources must resolve. - scripts/release_notes.py: the GitHub release body is the CHANGELOG section for the tag, and an empty section fails the release job. - CI lint job runs both checks; a new package job builds, twine-checks and runs the clean-venv install smoke on every PR instead of only at tag time. - release.yml refuses a tag whose name does not match __version__. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QDogWFhCH69TMddDcrtwHL
… security policy - docs/DEVELOPMENT.md: fifteen-minute path from clone to a merged PR, with verified commands and recipes for languages, graph edges, ranking signals, MCP tools and CLI commands. - CONTRIBUTING.md: contribution areas mapped to labels, evidence rules for retrieval-quality PRs, and the fork workflow; unverified uv/ruff-format instructions removed. - SECURITY.md: supported line is 1.9.x, private vulnerability reporting via GitHub advisories, explicit statement that checksums/SBOMs are not yet shipped. - Issue templates: concise bug/feature forms plus benchmark-report and language-support forms; blank issues off; SUPPORT.md; labels.yml with an apply script; placeholder FUNDING.yml removed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QDogWFhCH69TMddDcrtwHL
… repositories run_eval.py compares the ranker with its own earlier versions; it cannot say whether an index beats not having one. run_baselines.py asks that question on Flask, Gson and Fastify at pinned commits, with git-derived ground truth (150 newest localised commits each), symmetric tiktoken accounting on every side, and paired bootstrap/permutation significance. The logged run is under tests/eval/results/. Pooled over 450 queries: hit@3 0.547 (index) vs 0.304 (rg + 80-line windows), MRR 0.456 vs 0.263, p < 0.001 on every metric, at 3.8k vs 3.5k context tokens per query once the read plan is capped (6.8k before the cap). Repo-map-style context is scored on answer presence under a 2k/8k budget. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QDogWFhCH69TMddDcrtwHL
…h real output - One canonical page per topic: RETRIEVAL.md, SCHEMA.md, SECURITY_MODEL.md; the former duplicates are redirect stubs so inbound links keep working. SCHEMA.md now matches storage/schema.sql (the old copy described columns and tables that do not exist). - QUICKSTART and INSTALLATION showed invented output (an AuthService.ts table with a Score column, a fake doctor transcript); both now show output captured on pallets/flask at a pinned commit. - FAQ/INSTALLATION/MCP/ARCHITECTURE: version pins to 1.9.0, full MCP tool list, correct config path (.claude/cache/codebase-index/config.json), doctor's real check list, unverified install paths labelled as such. - Root ROADMAP.md is a milestone history; docs/ROADMAP.md owns forward work. - installer.md translated to English; flags verified against install.sh. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QDogWFhCH69TMddDcrtwHL
…mark chart, architecture diagram - examples/demo/run_demo.sh|.ps1 clone pallets/flask at a pinned commit and run the Find / Trace / Predict scenarios; EXPECTED_OUTPUT.md is the captured run. - assets/demo-terminal.svg is rendered from that transcript by scripts/gen_terminal_svg.py; the previous demo.png was a mock-up with invented paths and is removed (gen_assets.py no longer builds it). - assets/benchmark.svg is rendered from the logged public baseline JSON by scripts/gen_benchmark_chart.py, so the chart cannot drift from the run. - assets/architecture.svg: index and query paths on one diagram. - docs/DEMO.md + docs/demo.tape: exact steps for a VHS/asciinema recording. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QDogWFhCH69TMddDcrtwHL
…ubcommand mcp 2.0 renamed FastMCP to MCPServer and removed mcp.server.fastmcp, so `codebase-index mcp` failed with "needs the optional extra" on a fresh install, and every MCP test skipped silently in CI because the skip guard wrapped our own module's import. The server now imports MCPServer first and falls back to FastMCP on 1.x; verified against mcp 1.29.1 and 2.1.1 (41 tests each, plus a stdio initialize / tools/list / healthcheck round-trip). Tests now skip only when the SDK itself is absent. `--root` was a global option only, so the documented `codebase-index mcp --root <repo>` form was rejected; the subcommand accepts it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QDogWFhCH69TMddDcrtwHL
…it and launch kit - README: one-sentence proposition, agents list, terminal card rendered from a real Flask transcript, 60-second try-it, why-this-exists with grep / repo-map / cloud comparison, evidence section with the public baseline chart, then architecture, privacy, languages, status, contributing, roadmap. - BENCHMARKS.md leads with the public baseline run and withdraws the private 55k LOC Java headline (asymmetric accounting, not reproducible); COMPARISON.md and the older result logs point at the new run. - docs/COMMUNITY_AUDIT.md: P0-P3 findings with status and before/after scores. - docs/COMMUNITY_LAUNCH.md: HN / Reddit / X / Discord / release drafts using only logged numbers, a day-0 to month-1 sequence, and the feedback loop; replaces the stale docs/SEO.md. - examples/demo-project (a project that did not exist) removed in favour of examples/demo; package keywords extended (code-graph, impact-analysis, mcp-server, claude-code-plugin). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QDogWFhCH69TMddDcrtwHL
…e visuals Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QDogWFhCH69TMddDcrtwHL
…sions, About, PVR) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QDogWFhCH69TMddDcrtwHL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Community-readiness pass: reproducible public benchmark, real-output docs and demo, three shipped-path bug fixes, release/CI gates, contributor onboarding, launch kit. Ten atomic commits; see
docs/COMMUNITY_AUDIT.mdfor every finding with severity and status.Fixes in shipped paths
FastMCP→MCPServerrename) andcodebase-index mcp --root <repo>was rejected. Both fixed; verified against mcp 1.29.1 and 2.1.1. The MCP tests had been skipping silently in CI; they now fail loudly if our module breaks.bin/wrappers refusedarchitecture,diff-impact,path,describe; parity test added.CHANGES.rstwas not covered.Evidence
tests/eval/run_baselines.py: index vsrg+80-line windows and repo-map-style context on Flask/Gson/Fastify at pinned commits, git-derived ground truth, one tokenizer on both sides, paired significance. Logged run:tests/eval/results/2026-09-04-public-baselines.md. Pooled n=450: hit@3 0.547 vs 0.304, MRR 0.456 vs 0.263, p<0.001, 3.8k vs 3.5k context tokens.retrieval.max_read_lines(default 120) caps it with additivetruncated/line_end_fullfields, quality unchanged.check_versions.py,check_links.py,python -m build+twine check+release_smoke.py. Every README command was run on Flask; outputs are inexamples/demo/EXPECTED_OUTPUT.md.Maintainer actions after merge
Enable Discussions, upload
assets/social-preview.png, runscripts/apply_labels.sh, confirm private vulnerability reporting, optionally record the GIF fromdocs/demo.tape. Then cut 1.9.1.🤖 Generated with Claude Code
https://claude.ai/code/session_01QDogWFhCH69TMddDcrtwHL