Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
9c1d1f0
fix(scip): persist pre-computed symbols through journal, Merkle sync,…
SimplyLiz Apr 16, 2026
ce30619
docs: document intentional Tier 2 skip for SCIP and lossy SCIP export
SimplyLiz Apr 16, 2026
e7d6cf5
feat: SCIP integration test, Tier 2 test harness, name-dep invalidati…
SimplyLiz Apr 16, 2026
537d937
feat: QueryBlastRadiusBatch with semantic enrichment for CKB integration
SimplyLiz Apr 17, 2026
6b5c245
docs: document QueryBlastRadiusBatch, add symbol kind filter, update …
SimplyLiz Apr 17, 2026
d7937ba
feat: v2.2.0 — function-level BR, ReindexStale, BatchFileStatus, Quer…
SimplyLiz Apr 21, 2026
fa3e8e4
chore: bump version to 2.2.0, finalize CHANGELOG
SimplyLiz Apr 21, 2026
b9a27af
fix: blast_radius_batch wire gap + precomputed sym_cache fallback
SimplyLiz Apr 21, 2026
c4c28e7
feat: v2.3.0 — CKB structural-parity bundle
SimplyLiz Apr 21, 2026
f7f538c
feat: v2.3.1 — CKB import-landing fix
SimplyLiz Apr 21, 2026
228bcc0
fix: self-echo deadlock on bulk precomputed imports (v2.3.1)
SimplyLiz Apr 21, 2026
b611bbc
fix: v2.3.2 — CKB testdrive follow-up (edges_source + URI translation…
SimplyLiz Apr 24, 2026
f648a25
fix: Phase-3 fallback for tier-1-form caller URIs + split edges_src d…
SimplyLiz Apr 24, 2026
dbf0a3e
feat: v2.3.3 — QueryOutgoingImpact (forward-direction twin of QueryBl…
SimplyLiz Apr 24, 2026
474b181
feat: v2.3.4 — module_id on ImpactItem + SemanticImpactItem
SimplyLiz Apr 24, 2026
87f5f0b
fix: v2.3.5 — forward-direction name-bridge (caller_name_to_callees)
SimplyLiz Apr 24, 2026
cad9f55
chore: cargo fmt + clippy fixes (Rust 1.95)
SimplyLiz Apr 24, 2026
d625e1c
docs: add v2.3.5 CHANGELOG entry
SimplyLiz Apr 24, 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
154 changes: 154 additions & 0 deletions .github/workflows/scip-import.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
name: SCIP Import

on:
workflow_call:
inputs:
scip-tool:
description: "SCIP indexer to run"
required: true
type: string # rust | typescript | python
scip-file-path:
description: "Path to the SCIP index file"
required: false
type: string
default: ".scip/index.scip"
daemon-socket:
description: "Unix socket path for the LIP daemon"
required: false
type: string
default: "/tmp/lip-ci.sock"
confidence:
description: "Confidence score for imported symbols (1-100)"
required: false
type: number
default: 100

workflow_dispatch:
inputs:
scip-tool:
description: "SCIP indexer to run"
required: true
type: choice
options:
- rust
- typescript
- python
scip-file-path:
description: "Path to the SCIP index file"
required: false
type: string
default: ".scip/index.scip"
daemon-socket:
description: "Unix socket path for the LIP daemon"
required: false
type: string
default: "/tmp/lip-ci.sock"
confidence:
description: "Confidence score for imported symbols (1-100)"
required: false
type: number
default: 100

env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0

jobs:
scip-import:
name: SCIP Import (${{ inputs.scip-tool }})
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

# ── Install lip CLI ──────────────────────────────────────────────────────
- uses: actions/cache@v4
id: lip-cache
with:
path: ~/.cargo/bin/lip
key: lip-cli-${{ runner.os }}-${{ hashFiles('.github/workflows/scip-import.yml') }}

- name: Install lip CLI
if: steps.lip-cache.outputs.cache-hit != 'true'
run: cargo install lip-cli --locked

# ── Start LIP daemon ─────────────────────────────────────────────────────
- name: Start LIP daemon
run: |
lip daemon --socket ${{ inputs.daemon-socket }} &
DAEMON_PID=$!
echo "DAEMON_PID=$DAEMON_PID" >> "$GITHUB_ENV"
# Wait for socket to appear
for i in $(seq 1 30); do
[ -S "${{ inputs.daemon-socket }}" ] && break
sleep 0.2
done
if [ ! -S "${{ inputs.daemon-socket }}" ]; then
echo "::error::Daemon socket did not appear within 6s"
exit 1
fi

# ── Install and run SCIP indexer ─────────────────────────────────────────
- name: Install Rust toolchain
if: inputs.scip-tool == 'rust'
uses: dtolnay/rust-toolchain@stable
with:
components: rust-analyzer

- name: Run scip-rust indexer
if: inputs.scip-tool == 'rust'
run: |
mkdir -p "$(dirname '${{ inputs.scip-file-path }}')"
rust-analyzer scip .
# rust-analyzer writes to index.scip in cwd; move if needed
if [ "${{ inputs.scip-file-path }}" != "index.scip" ] && [ -f index.scip ]; then
mv index.scip "${{ inputs.scip-file-path }}"
fi

- name: Setup Node.js
if: inputs.scip-tool == 'typescript'
uses: actions/setup-node@v4
with:
node-version: "20"

- name: Run scip-typescript indexer
if: inputs.scip-tool == 'typescript'
run: |
npm install -g @sourcegraph/scip-typescript
mkdir -p "$(dirname '${{ inputs.scip-file-path }}')"
scip-typescript index --output "${{ inputs.scip-file-path }}"

- name: Setup Python
if: inputs.scip-tool == 'python'
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Run scip-python indexer
if: inputs.scip-tool == 'python'
run: |
pip install scip-python
mkdir -p "$(dirname '${{ inputs.scip-file-path }}')"
scip-python index --output "${{ inputs.scip-file-path }}"

# ── Import into daemon ───────────────────────────────────────────────────
- name: Import SCIP index into LIP daemon
run: |
lip import \
--from-scip "${{ inputs.scip-file-path }}" \
--push-to-daemon "${{ inputs.daemon-socket }}" \
--confidence ${{ inputs.confidence }}

# ── Verify import ────────────────────────────────────────────────────────
- name: Verify index status
run: |
echo '[{"type":"query_index_status"}]' | \
lip query --socket "${{ inputs.daemon-socket }}" batch

# ── Cleanup ──────────────────────────────────────────────────────────────
- name: Stop daemon
if: always()
run: |
if [ -n "$DAEMON_PID" ]; then
kill "$DAEMON_PID" 2>/dev/null || true
wait "$DAEMON_PID" 2>/dev/null || true
fi
Loading
Loading