Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[2.1.1] - 2026-03-09¶
Changed¶
- Metadata-only patch release to refresh public package and marketplace copy.
- README and packaging copy now use the commercial framing of 22 core tools plus separate capability introspection for tier/license discovery.
- VS Code extension metadata synchronized with the Python package release line.
[2.1.0] - 2026-03-02¶
Added¶
- Full Go language support via new
GoNormalizerandGoVisitor(tree-sitter-go). Handles functions, methods (with receiver stored in metadata), structs, interfaces, imports (aliased and grouped),var/constdeclarations,:=short variable declarations,if/forstatements,returnstatements, and call expressions. Extensions:.go GoParserAdapter— replaces the previousNotImplementedErrorstub with a full implementation that delegates toGoNormalizerand returns a typedParseResult.- Go integrated into
PolyglotExtractor(polyglot/extractor.py) andcode_parsers.extractor— extension-based and content-based detection. - Content detection heuristics:
package main,func,import (,fmt.Println,fmt.Printf— placed before Java check to avoidpackageambiguity. tree-sitter-go>=0.21.0added to[all]and[polyglot]optional extras inpyproject.toml.limits.toml:goadded toanalyze_code.languages(Community, Pro, Enterprise);csharpandgoadded tounified_sink_detect.languages(all tiers).- 23 new Go-specific tests in
tests/languages/test_go_parser.py.
Fixed¶
cli.py: Removed unusedmissing: list[str]parameter from_print_group()and its three call sites.go_normalizer.py: Import alias now stored inIRImport.aliasinstead ofnames=.
[2.0.2] - 2026-02-25¶
Added¶
unified_sink_detect: C and C++ sink detection (c_sink_detection,cpp_sink_detection) — all tiers.generate_unit_tests: C/C++ test framework support (Catch2 — Community+; Google Test — Pro+); C# test framework support (NUnit — Community+; xUnit — Pro+).code_policy_check: C/C++ linting viaclang_tidy_rules(Community+); C# linting viaroslyn_analyzer_rules(Community+); MISRA-C compliance viamisra_c_compliance(Enterprise only).scan_dependencies: Package manager scanning for C/C++ viaconan_scanningandvcpkg_scanning; C# vianuget_scanning— all tiers.
Changed¶
limits.toml: Addedcandcpptounified_sink_detect.languagesfor all three tiers.features.toml: Expanded capability lists forunified_sink_detect,generate_unit_tests,code_policy_check, andscan_dependencies.
[2.0.1] - 2026-02-25¶
Fixed¶
- Packaging fix: re-release to correct PyPI upload issue with v2.0.0 artifacts.
- Documentation: wiki changelog backfill for v1.1.0 through v1.5.0 releases.
- VS Code extension version aligned with Python package.
[2.0.0] - 2026-02-24¶
Added¶
- Full C language support via new
CNormalizerandCVisitor(tree-sitter-c). - Full C++ language support via new
CppNormalizerandCppVisitor(tree-sitter-cpp). - Full C# language support via new
CSharpNormalizerandCSharpVisitor(tree-sitter-c-sharp). - All three languages integrated into
PolyglotExtractorandcode_parsers.extractor. CSharpAdapterupgraded from aNotImplementedErrorstub to a full implementation.- 262 new language-specific tests across C, C++, and C#.
Fixed¶
IRIf/IRWhileconstruction bug in the C# normalizer (test=kwarg).- Missing C#
tuple_typehandling. - Missing C#
operator_declarationvisitor. - Nested C++ class extraction no longer dropped.
Changed¶
- Version bumped from 1.5.0 to 2.0.0.
- Documentation updated throughout to reflect 7-language polyglot support.
[1.5.0] - 2026-02-24¶
Added¶
- Comprehensive C and C++ parsing support via new
c_normalizerandcpp_normalizer. - C/C++ integrated into
PolyglotExtractor, including extension and content-based detection. code_parsers.extractorupdated with C/C++ language enum entries, extension mappings, detection heuristics, and parsing dispatch.- New tests under
tests/languages/test_c_cpp_parsers.pyusing realistic 3D-project patterns.
Changed¶
- Tests and examples migrated off deprecated
code_scalpel.polyglot;code_parsersis now the canonical import path. - Updated documentation to reflect the new parsing support and migration timeline.
Deprecated¶
- Deprecated
code_scalpel.polyglotimports in tests; the module remains slated for removal in v3.3.0.
[1.4.0] - 2026-02-20¶
Added¶
response_config.jsonandresponse_config.schema.jsonare now created automatically on first MCP server boot /codescalpel init, so users and AI agents can immediately control output verbosity without manual setup.exclude_when_tiersupport documented in generated schema and template — allows per-tool, per-tier field suppression.
Changed¶
- Tier limit rebalancing: Data-driven recalibration of all tier limits
- Community: Raised to cover solo dev projects ≤500 files (scanner 50→500, get_call_graph depth 3→10/nodes 50→200, get_file_context lines 500→2000, symbolic_execute paths 50→100, extract_code depth 0→1, generate_unit_tests cases 5→10, cross_file_security_scan depth 3→5/modules 20→50, code_policy_check files 50→100/rules 20→50)
- Pro: All numeric limits now unlimited (match Enterprise) — Pro differentiates on features not scale caps
- Enterprise: Fixed unified_sink_detect.max_sinks bug (was 50, same as Community → now unlimited)
- Updated 25+ tier test files across 8 test directories to reflect new limit values
- Updated capabilities/README.md tier comparison table with accurate limit values
response_config.jsontemplate version updated to1.4.0.- Profile default alignment:
DEFAULT_CONFIGnow defaults to"standard"instead of"minimal", matching the generated template. - Non-functional
parsingsection removed fromresponse_config.jsontemplate and schema.
Fixed¶
- Graph tools (
get_call_graph,get_graph_neighborhood,get_project_map,get_cross_file_dependencies,cross_file_security_scan) now respectresponse_config.jsonfiltering. - Hot reload now works: edits to
response_config.jsontake effect without a server restart. features.toml: Added 3 missing Pro capabilities to Enterprise (closure_detection, dependency_injection_suggestions, variable_promotion in extract_code; code_ownership_mapping in get_project_map)limits.toml: Enterprise unified_sink_detect.max_sinks was incorrectly 50 (same as Community), now unlimited- Pre-existing
max_updates_per_session→max_updates_per_callkey mismatch in integration tests
Deprecated¶
ResponseFormatterclass inresponse_formatter.pyis now marked as deprecated. It will be removed in v1.5.0.
Planned¶
- Custom language profile support (unified LanguageProfile abstraction; Phase 2 parser registries for Go, C#, C++, Ruby, Swift)
- Language Server Protocol (LSP) integration
[1.3.5] - 2026-02-10¶
Fixed¶
- Windows UnicodeEncodeError on
codescalpel init— allwrite_text()/read_text()calls now specifyencoding='utf-8' - MCP server auto-init now creates full configuration scaffolding (20 files) instead of empty directory
Changed¶
- Enhanced MCP server boot banner: shows license tier, license file path, and visual separators
- Removed internal
limits.tomlandfeatures.tomlreferences from public documentation - Architectural refactor: Moved
limits.tomlandfeatures.tomlfrom.code-scalpel/tosrc/code_scalpel/capabilities/— packaged automatically, noforce-includeneeded - Restructured
.gitignore: selective ignores for.code-scalpel/sensitive files instead of blanket directory ignore - Untracked private key and runtime audit data from
.code-scalpel/
Added¶
- Startup update check: non-blocking PyPI version query notifies users of available updates
- Unicode encoding validation script (
scripts/validate_encoding.py) and CI job - License setup documentation (
docs/LICENSE_SETUP.md)
[1.3.4] - 2026-02-05¶
Added¶
.code-scalpel/features.toml: New bundled TOML source of truth for capability feature sets and descriptions (66 sections: 22 tools × 3 tiers). Replaces the 1600-line hardcodedTOOL_CAPABILITIESdict infeatures.py.config_loaderfeatures subsystem: Parallel to limits, adds_find_features_file(),load_features(),get_cached_features(),clear_features_cache()with the same bundled-only + stat-based caching pattern.- Sentinel conversion:
-1in TOML (numeric limits) is converted toNone(unlimited) at runtime via_sanitise_limits()helper.
Changed¶
- limits.toml ownership: Tier limits are now fully package-managed. The single source of truth is
.code-scalpel/limits.toml;hatch force-includecopies it into the wheel atcode_scalpel/capabilities/limits.toml. No environment-variable or user-filesystem overrides are honoured at runtime. config_loader._find_config_file(): Replaced the 7-layer search (env var, CWD, home,/etc/, package-root walk) with two paths: bundled wheel copy first, dev-checkout fallback second.capabilities/resolver.py: Removed duplicate file-finding, TOML loading, and thread-locked cache. Now delegates entirely toconfig_loaderfor all I/O and caching.features.pyrewritten as thin loader: Reduced from ~1600 lines to ~230 lines. Now assembles capability envelopes by loading features.toml + limits.toml viaconfig_loader.TOOL_CAPABILITIESdict is now a lazy-loading_ToolCapabilitiesProxyshim for backward compatibility with existing test/assertion code.pyproject.tomlforce-include: Added.code-scalpel/features.toml→code_scalpel/capabilities/features.tomlfor both wheel and sdist targets..code-scalpel/limits.toml: Added missing limit keys from the old hardcoded features.py (vulnerability_types,max_depthforcrawl_project,frontend_only,custom_sinks_limit,signature_validation,tamper_detection, etc.). Uses-1for unlimited values instead of omitting keys.
Removed¶
src/code_scalpel/capabilities/limits.toml— was a checked-in duplicate of.code-scalpel/limits.toml. The build reproduces it viaforce-include; it is no longer committed to the repository.- Stale override documentation from both
limits.tomlfiles (env-var, home-dir,/etc/,limits.local.tomlreferences).
Fixed¶
- Test injection pattern: 6 tests updated from
setenv("CODE_SCALPEL_LIMITS_FILE")(dead env var) tomonkeypatch.setattr("config_loader._find_config_file", lambda: ...)for custom limit injection. - Sentinel conversion tests: Updated
test_update_symbol_tiers.pyassertions frommax_updates_per_call == -1tois None(runtime semantic after sentinel conversion). - Tool count assertions: Updated
test_ci_license_injection.pyto match actual limits.toml tool counts (pro: 2 locked, enterprise: 14 available). test_null_values_in_config: Updated to assert onenterprise.update_symbol.max_updates_per_call(which has-1→Noneconversion) instead of non-existentmax_depth.
[1.3.3] - 2026-02-02¶
Changed¶
- Project Structure Migration: Consolidated scattered cache directories into
.code-scalpel/cache/ - Migrated
.scalpel_cache/,.code_scalpel_cache/,.scalpel_ast_cache/→.code-scalpel/cache/ - Renamed
.code-scalpel/license/→.code-scalpel/licenses/ - Cleaned up temporary directories (
.tmp_tier_comm/,.tmp_tier_fallback/) - Updated all runtime cache path references in source code
- verify.sh Step Numbering: Fixed inconsistent step numbering (was ¼, ⅜, ⅝... now consistent 1/11 through 11/11)
- verify.sh Header Documentation: Added comprehensive header with purpose, runtime, prerequisites, and usage
Added¶
- Version Sync Check: Pre-check in
verify.shdetects version mismatches betweenpyproject.tomland__init__.py scripts/verify_version_sync.sh: Standalone version consistency checker--skip-buildFlag:verify.shnow supports--skip-buildto skip expensive build check during iterationscripts/migrate_project_structure.sh: One-time migration script for project structure consolidationdocs/PIPELINE.md: Comprehensive CI/CD pipeline documentation covering all three validation tierstests/README.md: Test suite organization guide with category descriptions and usage examples- Troubleshooting Docs: Added detect-secrets, version sync, and --skip-build troubleshooting to
docs/DEVELOPMENT.md - Navigation Links: Updated
docs/README.mdwith links to MCP tools reference, pipeline docs, and development workflow
Fixed¶
- Version mismatch between
pyproject.toml(1.3.2) andsrc/code_scalpel/__init__.py(was 1.3.0, now synced)
[1.3.2] - 2026-02-02¶
Changed¶
- Security Hardening: Added 40+
.gitignorepatterns blocking API tokens, credentials, vault files, environment configs, and CI/CD artifacts
Added¶
- detect-secrets Pre-commit Hook: Yelp/detect-secrets v1.4.0 integration with
.secrets.baseline .gitignoreSecurity Sections: API tokens, environment variants, vault management, CI/CD artifacts, test credentials
Fixed¶
- Redacted exact JWT file paths and vault key names from
docs/GITHUB_SECRETS.md - Removed broken license examples from documentation (pointed to licensing team)
[1.3.1] - 2026-02-01¶
Changed¶
- Black/Ruff Path Alignment: Fixed
verify_local.shto check onlysrc/ tests/(matching CI), not entire repo - Pre-commit Hook Speed: Changed pre-commit hook from
verify.sh(comprehensive) toverify_local.sh(fast auto-fix)
Added¶
- Documentation Validation Steps: Added Steps 9-11 to
verify.shfor MCP tools reference and docs sync validation - Optional Security Checks: Added Bandit and pip-audit as warning-only checks in
verify_local.sh
[1.3.0] - 2026-02-01¶
Added¶
- Oracle Resilience Middleware: Automatic error recovery for AI agent mistakes
@with_oracle_resiliencedecorator for MCP tools- Symbol fuzzy matching with Levenshtein distance (typo correction)
- Path resolution with workspace-aware suggestions
SymbolStrategy: Recovers from symbol name typos (e.g., "procss_data" → "process_data")PathStrategy: Recovers from path errors with intelligent suggestionsSafetyStrategy: Validates refactoring operationsNodeIdFormatStrategy: Recovers from node ID format errorsMethodNameFormatStrategy: Recovers from method name format errorsCompositeStrategy: Chain multiple strategies for complex recovery- Stage 2 Error Enhancement: Oracle now enhances both
envelope.erroranddata.errorpatterns _enhance_error_envelope(): Processes top-level envelope errors_enhance_data_error(): Processes nested data.error patterns- Consistent error enhancement across all error locations
- 61 comprehensive Oracle middleware tests (100% pass rate)
- Tier isolation tests verifying Oracle behavior across Community/Pro/Enterprise
Changed¶
- Updated test suite to handle Oracle-enhanced
ToolErrorobjects - Added
get_error_message()helper for backward-compatible error checking - Tests now work with both string errors and
ToolErrorobjects - Moved documentation to organized subdirectories:
- Oracle docs →
docs/oracle/ - Docstring analysis →
docs/reference/ - Architecture docs →
docs/architecture/ - Cleaned up root directory (removed 10+ markdown files to proper locations)
Fixed¶
- Black formatting exclusion for
tests/mcp_tool_verification/(intentionally broken test files) - Unused imports in test files cleaned up
envelope.errorcheck now usesmodel_dump()for proper Pydantic v2 handling
Documentation¶
- Added Oracle Resilience documentation suite:
docs/oracle/ORACLE_INTEGRATION_GUIDE.md- Complete integration guidedocs/oracle/ORACLE_RESILIENCE_QUICKSTART.md- Quick start guidedocs/oracle/ORACLE_COMPREHENSIVE_ANALYSIS.md- Deep dive analysisdocs/ORACLE_RESILIENCE_IMPLEMENTATION.md- Implementation detailsdocs/ORACLE_RESILIENCE_TEST_CASES.md- Test case documentation
[1.2.1] - 2026-01-26¶
Fixed¶
- UVX Entry Point: Fixed missing
codescalpelentry point that preventeduvx codescalpelfrom working - v1.1.0 regression: package was renamed to
codescalpelon PyPI but only hadcode-scalpelentry point - Both
codescalpelandcode-scalpelcommands now available and work identically - Verified backward compatibility: all CLI tests pass
- Fixes deployment for MCP via stdio, HTTP(S), and Docker
[1.2.0] - 2026-01-26¶
Added¶
- Project Awareness Engine: New subsystem for intelligent codebase analysis
ProjectWalker: Fast file discovery with smart filtering (530 lines)- 9+ language detection (Python, JS, TS, Java, C++, C#, Ruby, Go, Rust)
- 19 default exclusion patterns with custom override support
- Symlink cycle detection using inode tracking
- Optional .gitignore support
- Token estimation for context sizing
ProjectContext: Metadata storage and intelligent caching (514 lines)- Directory classification (source, test, build, docs, vendor, config)
- File importance scoring (0.0-1.0 scale)
- In-memory and optional SQLite caching
- Change detection via MD5 hashing
- TTL-based cache invalidation (configurable per subsystem: 7 days project cache, 24h incremental index, 5 min graph cache)
ParallelCrawler: Parallel file scanning viaThreadPoolExecutor(batch size 100, supports 100k+ files; Pro/Enterprise tier-gated)IncrementalIndex/IncrementalIndexer: Incremental project updates with SQLite backing, dependency-aware cascading invalidation, optional Redis supportFileInfo,DirectoryInfo,ProjectMapdata classesDirectoryTypeenum for semantic directory classification- All language extension constants exported from analysis module
- Comprehensive documentation:
docs/PROJECT_AWARENESS_ENGINE.md(473 lines) - Quick start guide with 3+ code examples
- Complete API reference
- Performance benchmarks
- 5+ real-world use cases
- Integration patterns
Changed¶
- ProjectCrawler Refactoring: Now uses ProjectWalker for file discovery
- Eliminated 51 lines of duplicate gitignore handling
- Single source of truth for file discovery
- 100% backward compatible with existing code
Testing¶
- Added 39 comprehensive tests for Project Awareness Engine (100% pass rate)
- All 31 existing ProjectCrawler tests continue to pass
- Performance benchmarking for large project structures
- Symlink cycle handling verification
Documentation¶
- Added PROJECT_AWARENESS_ENGINE.md with complete feature documentation
- Updated ARCHITECTURE_IMPLEMENTATION.md references
- Added code examples for all major use cases
- Performance characteristics and scaling notes
Performance¶
- File discovery time for 1,000 files: ~50ms
- Memory consumption: ~2MB per 1,000 files
- Symlink cycle detection: O(1) per traversal
[1.1.0] - 2026-01-26¶
Added¶
- Phase 6 Kernel Integration for
analyze_codetool - SourceContext model for unified input handling
- SemanticValidator for pre-analysis input validation
- ResponseEnvelope with metadata and tier information
- UpgradeHints for tier-based feature suggestions
- Self-correction support for AI agents
Changed¶
analyze_codenow uses hybrid kernel architecture- Enhanced response metadata with version tracking and duration metrics
- Improved error handling with structured error responses
Fixed¶
- Package name corrected in pyproject.toml (code-scalpel → codescalpel) for PyPI compatibility
- All documentation updated to reflect correct package name
Security¶
- Backward compatible with all existing tools (no breaking changes)
- Hybrid architecture allows gradual kernel adoption across tool suite
[1.0.2] - TBD¶
Planned Release Improvements¶
- Enhanced publication automation
- Streamlined release process documentation
- Multi-platform release verification
- Release notes best practices
Status: Planning phase
[1.0.1] - 2025-01-25¶
Added¶
- Tier-based request/response governance (Community/Pro/Enterprise)
- Parameter clamping with applied limits metadata
- Comprehensive refactor validation report
- Installation guide for Claude Desktop (INSTALLING_FOR_CLAUDE.md)
- Release guide documentation (RELEASING.md)
- Release notes template for future releases (RELEASE_NOTES_TEMPLATE.md)
- Enhanced backward compatibility documentation (STABLE PUBLIC API designation)
Fixed¶
- Version synchronization: init.py now matches pyproject.toml (1.0.1)
- Deprecated datetime.datetime.now() → datetime.now(timezone.utc) in licensing module (6 locations)
- Removed version mismatch between package version strings
Changed¶
- Enhanced polyglot module deprecation notice with v3.3.0 timeline
- Improved error handling consistency across all 22 MCP tools
- Better tier enforcement validation with get_tool_capabilities()
Documentation¶
- Added REFACTOR_VALIDATION_REPORT.md with tool compliance matrix (100% pass rate)
- Enhanced stability markers for backward-compatible exports
- Clear deprecation timelines (v2.0.0, v3.3.0)
- Comprehensive MCP protocol compliance documentation
Verified¶
- All 22 tools pass 13-point compliance criteria (100%)
- Zero duplicate implementations (old + new)
- Zero deprecated imports in active source code
- All helper functions properly mapped
Release Date: 2025-01-25 See also: v1.0.1 release page
[1.0.0] - 2026-01-17¶
Initial Public Release¶
Code Scalpel is an MCP server toolkit that enables AI assistants to perform surgical code operations through AST parsing, taint analysis, and symbolic execution.
Features¶
Code Analysis (6 tools)¶
analyze_code- Parse code structure: functions, classes, imports, complexity metricsget_file_context- Quick file overview without reading full contentcrawl_project- Comprehensive project-wide analysisget_project_map- Multi-language project structure mappingscan_dependencies- Dependency analysis and version checkingget_graph_neighborhood- Extract k-hop subgraphs around code symbols
Code Navigation (3 tools)¶
get_call_graph- Function call relationships and dependenciesget_cross_file_dependencies- Import resolution across filesget_symbol_references- Find all usages of functions, classes, variables
Security Analysis (4 tools)¶
security_scan- Taint-based vulnerability detection (SQL injection, XSS, etc.)cross_file_security_scan- Track taint flow across module boundariesunified_sink_detect- Polyglot dangerous function detection with CWE mappingtype_evaporation_scan- Detect TypeScript/Python type boundary vulnerabilities
Code Extraction & Modification (3 tools)¶
extract_code- Surgically extract functions/classes (99% token reduction)update_symbol- Safe, atomic symbol replacement with backuprename_symbol- Consistent renaming across definition and references
Testing & Verification (4 tools)¶
generate_unit_tests- Symbolic execution generates tests for all pathssymbolic_execute- Z3-based path exploration and constraint solvingsimulate_refactor- Verify code changes are safe before applyingcode_policy_check- Automated compliance and style checking
Utilities (2 tools)¶
validate_paths- Security boundary enforcement for file accessverify_policy_integrity- Cryptographic policy file verification
Tier System¶
- Community - Free access to all 22 tools with baseline capabilities
- Pro - Unlimited findings, cross-file analysis, advanced features
- Enterprise - Compliance reporting, custom policies, audit trails
Supported Languages¶
- Python (full AST + PDG + symbolic execution)
- JavaScript/TypeScript (AST + basic analysis)
- Java (AST parsing)
- Go, Rust, Ruby, PHP (AST parsing via tree-sitter)
MCP Transports¶
- stdio - VS Code, GitHub Copilot, Claude Desktop
- HTTP/SSE - Remote servers, team deployments
- Docker - Isolated environments, CI/CD pipelines