Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
612e9dc
refactor: complete v0.3 evidence pipeline and accuracy test suite
Timwood0x10 Aug 1, 2026
a840312
feat: implement core resolution & query improvements for multi-langua…
Timwood0x10 Aug 1, 2026
87218a0
refactor: clean up code formatting and line breaks across codebase
Timwood0x10 Aug 1, 2026
1331fea
fix(go_visitor): walk method bodies to extract internal calls
Timwood0x10 Aug 1, 2026
97f7366
fix(rust): correctly extract impl block methods and handle call resol…
Timwood0x10 Aug 1, 2026
77d7772
fix: resolve Java project indexing chicken-and-egg issue
Timwood0x10 Aug 1, 2026
8017d9f
build(server): add correct rpath entries for macos and linux
Timwood0x10 Aug 1, 2026
3538c2c
refactor(engine_verify_ffi): replace old intent pipeline with unified…
Timwood0x10 Aug 1, 2026
8210742
refactor: implement cross-file Go interface dispatch and field-chain …
Timwood0x10 Aug 2, 2026
66ddd77
feat(engine): wire Go interface dispatch, FTS search, and MCP complia…
Timwood0x10 Aug 2, 2026
163e375
feat: Recovery complexity metrics, semantic search, and readiness state
Timwood0x10 Aug 5, 2026
29854e0
feat: Add a full graph query backend for Windows/SQLite-only builds
Timwood0x10 Aug 5, 2026
84af700
chore: Update project files to version v0.2.5
Timwood0x10 Aug 5, 2026
4d05482
perf: Optimizes indexing performance for large projects
Timwood0x10 Aug 6, 2026
7f3c809
perf(resolver): Removes heap allocations and duplicate path resolutio…
Timwood0x10 Aug 6, 2026
a1acee3
perf: Optimizes file reading and ID remapping performance, removes re…
Timwood0x10 Aug 6, 2026
675657c
perf: Optimize incremental indexing and graph reconstruction performance
Timwood0x10 Aug 6, 2026
4bd49ea
feat(engine): add parallel LadybugDB graph rebuild and performance im…
Timwood0x10 Aug 7, 2026
c5b2ccd
chore(engine): remove LadybugDB graph storage backend
Timwood0x10 Aug 7, 2026
28bca49
chore: Remove LadybugDB dependency and related code
Timwood0x10 Aug 7, 2026
0fb2e22
chore: Removed LadybugDB dependency and fixed a defect in the self-ch…
Timwood0x10 Aug 8, 2026
5d6ea28
docs: Updated README, CHANGELOG, and RELEASE to reflect changes in v0…
Timwood0x10 Aug 9, 2026
076a2f7
release:v0.2.5
Timwood0x10 Aug 9, 2026
6ae0e5b
chore(tests):: Deletes outdated integration test and benchmark test f…
Timwood0x10 Aug 10, 2026
654e914
chore: Deletes completed precision.
Timwood0x10 Aug 10, 2026
cbf2a9a
release:v0.2.5
Timwood0x10 Aug 10, 2026
817549d
chore: Updated documentation and fixed cross-platform build compatibi…
Timwood0x10 Aug 10, 2026
cf433f3
ci: enable Windows LadybugDB packaging and add update script
Timwood0x10 Aug 10, 2026
cc897c2
chore(ci): Removes the LadybugDB shared library from the package and …
Timwood0x10 Aug 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 45 additions & 66 deletions .github/workflows/_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,6 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install -y cmake ninja-build git gcc g++ pkg-config libssl-dev ccache patchelf
# LadybugDB shared libraries are vendored under engine/third_party/ladybug/lib/
# (committed to git, both x86-64 and aarch64). CMake selects the
# correct architecture at configure time. Add the lib dir to the
# linker path at runtime.
ARCH_DIR=$([ "$(uname -m)" = "aarch64" ] && echo "linux-aarch64" || echo "linux")
echo "$PWD/engine/third_party/ladybug/lib/$ARCH_DIR" | sudo tee /etc/ld.so.conf.d/ladybug.conf
sudo ldconfig

- name: Install deps (macOS)
if: matrix.os == 'macos-15'
Expand All @@ -72,8 +65,6 @@ jobs:
# direct cmake call use the same compiler as local dev.
echo "CC=/opt/homebrew/opt/llvm@21/bin/clang" >> $GITHUB_ENV
echo "CXX=/opt/homebrew/opt/llvm@21/bin/clang++" >> $GITHUB_ENV
# LadybugDB shared library is vendored under engine/third_party/ladybug/lib/macos/
# (committed to git, including the liblbug.dylib dev symlink).

- name: Install deps (Windows)
if: matrix.os == 'windows-2022'
Expand Down Expand Up @@ -205,24 +196,20 @@ jobs:
# and known-failing tests tracked for future fix.
# This list must match the Makefile's TEST_EXES skip list.
case "$test_name" in
test_bench|test_bench_enhance|test_bench_project|test_pipeline_bench|test_fast_scan_debug|test_verify_aiscope|test_bun)
test_bench|test_bench_enhance|test_bench_project|test_pipeline_bench|test_fast_scan_debug|test_verify_aiscope)
echo " SKIP $test_name (requires external args)"
continue
;;
test_enhance_e2e|test_js_visitor|test_ts_visitor|test_tsx_visitor)
echo " SKIP $test_name (known failure, tracked for future fix)"
continue
;;
test_verify_planner|test_evidence_builder|test_project_state|test_domain_rules|test_self_bench)
echo " SKIP $test_name (hardcoded local paths, run manually)"
continue
;;
test_rust_e2e|test_qualified_id_ast|test_ts_e2e|test_type_extraction|test_ladybug_diff)
echo " SKIP $test_name (requires LadybugDB, not available on CI)"
test_rust_e2e|test_qualified_id_ast|test_ts_e2e|test_type_extraction)
echo " SKIP $test_name (requires removed LadybugDB graph feature)"
continue
;;
test_c_e2e|test_cpp_e2e|test_e2e|test_go_e2e|test_java_e2e|test_js_e2e)
echo " SKIP $test_name (find_def requires LadybugDB, not available on CI)"
echo " SKIP $test_name (find_def requires removed LadybugDB graph feature)"
continue
;;
test_fp_c|test_fp_cpp|test_fp_go|test_fp_java|test_fp_js|test_fp_python|test_fp_rust|test_fp_ts)
Expand All @@ -233,10 +220,6 @@ jobs:
echo " SKIP $test_name (requires graph_nodes table, migrated to entity/relation)"
continue
;;
test_bench_goagent)
echo " SKIP $test_name (requires external goagent project)"
continue
;;
esac
echo " Running $test_name..."
if "$test_bin" > /tmp/test_output.log 2>&1; then
Expand All @@ -249,6 +232,44 @@ jobs:
done
exit $failed

# Step 11 (plan §Step 11, task 8): accuracy gate in CI. Mirrors the
# `make accuracy-check` target semantics: the baseline run must pass
# (0 FP / 0 FN across all 7-language fixtures), and the FP/FN fault
# injections must FAIL (nonzero exit) — proving the gate actually
# catches precision/recall regressions. Runs on the same
# engine/build-tests tree built above; skipped on Windows.
- name: Accuracy gate (call-graph P/R/F1)
if: matrix.os != 'windows-2022'
shell: bash
run: |
ACC_BIN=engine/build-tests/test_call_graph_accuracy
if [ ! -x "$ACC_BIN" ]; then
echo "✗ accuracy runner not built"
exit 1
fi
# 1. Baseline must pass (exit 0).
CODESCOPE_SKIP_ASYNC=1 "$ACC_BIN" > /tmp/acc_baseline.log 2>&1
BASE_RC=$?
if [ $BASE_RC -ne 0 ]; then
echo "✗ accuracy baseline FAILED (exit $BASE_RC)"
tail -30 /tmp/acc_baseline.log
exit 1
fi
echo "✓ accuracy baseline passed"
# 2. FP injection must fail (exit != 0) — gate catches false positives.
if CODESCOPE_SKIP_ASYNC=1 CODESCOPE_INJECT_FP=1 "$ACC_BIN" > /dev/null 2>&1; then
echo "✗ FP injection did NOT fail (gate broken)"
exit 1
fi
echo "✓ FP injection correctly failed"
# 3. FN injection must fail (exit != 0) — gate catches false negatives.
if CODESCOPE_SKIP_ASYNC=1 CODESCOPE_INJECT_FN=1 "$ACC_BIN" > /dev/null 2>&1; then
echo "✗ FN injection did NOT fail (gate broken)"
exit 1
fi
echo "✓ FN injection correctly failed"
echo "✓ accuracy gate PASSED"

- name: Strip binary
if: inputs.skip_package != true
shell: bash
Expand Down Expand Up @@ -276,51 +297,9 @@ jobs:
cp LICENSE package/
[ -f install.sh ] && cp install.sh package/

# Bundle vendored LadybugDB shared library and set rpath so the
# binary can find it at runtime without Homebrew/system install.
# The binary links against @rpath/liblbug.0.dylib (macOS) or
# liblbug.so.0 (Linux), resolved via the embedded rpath.
case "${{ matrix.artifact }}" in
*-x86_64-linux)
LBUG_LIB="engine/third_party/ladybug/lib/linux/liblbug.so.0"
LBUG_FILE="liblbug.so.0"
;;
*-aarch64-linux)
LBUG_LIB="engine/third_party/ladybug/lib/linux-aarch64/liblbug.so.0"
LBUG_FILE="liblbug.so.0"
;;
*-macos)
LBUG_LIB="engine/third_party/ladybug/lib/macos/liblbug.0.dylib"
LBUG_FILE="liblbug.0.dylib"
;;
*-windows)
LBUG_LIB="engine/third_party/ladybug/lib/windows/lbug_shared.dll"
LBUG_FILE="lbug_shared.dll"
# Windows also needs OpenSSL + MSVC CRT DLLs (transitive
# dependencies of lbug_shared.dll). All vendored under the
# same directory — copy them alongside the main DLL.
WIN_DEPS="engine/third_party/ladybug/lib/windows/libcrypto-3-x64-*.dll engine/third_party/ladybug/lib/windows/libssl-3-x64-*.dll engine/third_party/ladybug/lib/windows/msvcp140-*.dll"
;;
esac
# Bundle LadybugDB shared lib + transitive DLL dependencies.
# Windows bundles OpenSSL/MSVC CRT DLLs alongside lbug_shared.dll
# so the binary finds them in its own directory at runtime.
if [ -n "$LBUG_LIB" ]; then
cp -L "$LBUG_LIB" "package/$LBUG_FILE"
# Copy Windows dependency DLLs
if [ "${{ matrix.os }}" = "windows-2022" ]; then
for dep in $WIN_DEPS; do
[ -f "$dep" ] && cp -L "$dep" package/ || true
done
fi
fi
# Set rpath to $ORIGIN (Linux) / @executable_path (macOS) so the
# dynamic linker finds the bundled library in the same directory.
if [[ "${{ matrix.os }}" == ubuntu-* ]]; then
patchelf --set-rpath '$ORIGIN' package/codescope
elif [[ "${{ matrix.os }}" == macos-* ]]; then
install_name_tool -add_rpath @executable_path/. package/codescope 2>/dev/null || true
fi
# The binary is statically linked (tree-sitter, SQLite, grammars
# are all bundled), so no external shared libraries need to be
# copied into the package.

cd package
tar -czf "../${{ matrix.artifact }}.tar.gz" ./*
Expand Down
13 changes: 3 additions & 10 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# AI Generated

# AI Tools
.claude
.gemini
Expand All @@ -8,7 +10,7 @@
.codescope/
.cursh/
.mcp.json
.trae/


# IDE and Editors
**/.idea/
Expand Down Expand Up @@ -93,17 +95,8 @@
*.out
*.app
*.dll
# But track the vendored Windows LadybugDB DLL (needed for CI packaging)
!engine/third_party/ladybug/lib/windows/lbug_shared.dll
!engine/third_party/ladybug/lib/windows/libcrypto-3-x64-*.dll
!engine/third_party/ladybug/lib/windows/libssl-3-x64-*.dll
!engine/third_party/ladybug/lib/windows/msvcp140-*.dll
*.dylib
*.so
# Keep vendored LadybugDB shared libraries + dev symlinks (committed binaries)
!engine/third_party/ladybug/lib/**/*.so
!engine/third_party/ladybug/lib/**/*.so.*
!engine/third_party/ladybug/lib/**/*.dylib
*.test
**/target/
**/go.work
Expand Down
Loading
Loading