Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
63be298
feat(cli): extend the OpenCode plugin to every documented context sur…
JCVIIAm Aug 7, 2026
bf46b91
fix(mem): honor explicit worker budget override
atirna Aug 15, 2026
793716d
perf(lsp): index C++ short-name type lookups
astandrik Aug 16, 2026
d8a1002
Merge branch 'main' into fix/index-worker-explicit-memory-budget
atirna Aug 16, 2026
32ae20d
fix(lsp): preserve short-name index fallback
astandrik Aug 16, 2026
c3fdeaa
Merge branch 'main' into fix/index-worker-explicit-memory-budget
atirna Aug 16, 2026
b8aca8f
Merge branch 'main' into fix/index-worker-explicit-memory-budget
atirna Aug 17, 2026
e148e3e
Merge branch 'main' into fix/index-worker-explicit-memory-budget
atirna Aug 17, 2026
e9ac991
Merge branch 'main' into fix/index-worker-explicit-memory-budget
atirna Aug 17, 2026
36ea43b
Merge branch 'main' into fix/index-worker-explicit-memory-budget
atirna Aug 18, 2026
92812ae
fix(mem): treat CBM_MEM_BUDGET_MB as an aggregate ceiling
atirna Aug 18, 2026
b98fd47
Merge branch 'main' into fix/index-worker-explicit-memory-budget
atirna Aug 19, 2026
547f355
build(deps): bump actions/attest-build-provenance from 4.1.1 to 4.2.2
dependabot[bot] Aug 22, 2026
31d8f36
Merge branch 'main' into fix/index-worker-explicit-memory-budget
atirna Aug 24, 2026
0b67621
Merge branch 'main' into feat/opencode-context-hooks
JCVIDev Aug 26, 2026
902f85b
fix(install): forward clients selector
DeusData Aug 27, 2026
787f87d
fix: block sensitive Windows program roots
DeusData Aug 26, 2026
3172417
docs: preserve savings measurement guide
DeusData Aug 26, 2026
3a8c0d9
fix: enforce workspace policy in daemon background work
DeusData Aug 27, 2026
fde1695
fix: ignore trailing Dockerfile whitespace at EOF
DeusData Aug 27, 2026
cc37792
Merge branch 'main' into fix/index-worker-explicit-memory-budget
atirna Aug 27, 2026
ee32816
fix(pi): send tool arguments over stdin
DeusData Aug 27, 2026
7710f86
fix(daemon): avoid duplicate idle maintenance polling
DeusData Aug 27, 2026
0f1e65d
fix: preserve Cargo context in parallel Rust resolution
DeusData Aug 27, 2026
0e91b3d
Merge branch 'main' into fix/index-worker-explicit-memory-budget
atirna Aug 28, 2026
93f7d27
Merge remote-tracking branch 'origin/main' into pr1487-work
DeusData Aug 28, 2026
fb7cd2f
style(cli): clang-format the extended OpenCode generator block
DeusData Aug 28, 2026
cbd241d
fix(tests): venue-parity interface probes must not pipe into grep -q
DeusData Aug 28, 2026
1d6a140
feat(pkl): extract calls, branches, throws and decorators
tthayer Aug 3, 2026
7b72652
fix(pkl): register call nodes in the ledgers and bind Pkl declarations
tthayer Aug 5, 2026
e5f3aab
feat(pipeline): index-time importance scoring (weighted degree)
DeusData Aug 28, 2026
396ac34
fix(pipeline): score importance over the staging store on the delta r…
DeusData Aug 28, 2026
cf6e620
feat(mcp): add bounded graph comparison tool
DeusData Aug 28, 2026
079d8dc
fix: harden graph comparison identities
DeusData Aug 28, 2026
7ba26f5
fix: sanitize graph comparison metadata
DeusData Aug 28, 2026
706bb2c
feat(lang): add Chialisp support with a first-party tree-sitter grammar
DeusData Aug 28, 2026
e6398fd
style(tests): keep the Chialisp test diffs to the lines that changed
DeusData Aug 28, 2026
ee0a2e6
docs(grammars): recount the manifest's ABI distribution from the tree
DeusData Aug 28, 2026
4e9fdcc
Merge pull request #1879 from DeusData/fix/venue-parity-probe-sigpipe
DeusData Aug 28, 2026
01c7e54
feat(search): index prose in BM25 via a nodes_fts body column
DeusData Aug 28, 2026
b493b64
test(search): end-to-end guard from source prose to a findable body m…
DeusData Aug 28, 2026
dc23628
test(search): pin that nodes_fts.body is indexed raw, not camelCase-s…
DeusData Aug 28, 2026
5743563
Merge pull request #1845 from DeusData/fix/issue-1764-idle-frontend-c…
DeusData Aug 28, 2026
e2251f3
Merge pull request #1846 from DeusData/codex/issue-1753-clients-forwa…
DeusData Aug 28, 2026
489b177
Merge pull request #1847 from DeusData/docs/issue-361-measuring-savin…
DeusData Aug 28, 2026
202ea65
Merge pull request #1848 from DeusData/fix/issue-403-sensitive-progra…
DeusData Aug 28, 2026
56dc82e
Merge pull request #1850 from DeusData/fix/issue-56-rust-parallel-car…
DeusData Aug 28, 2026
ef8a8dc
Merge pull request #1853 from DeusData/fix/issue-1746-dockerfile-eof-…
DeusData Aug 28, 2026
51c48e2
Merge pull request #1858 from DeusData/fix/issue-1834-pi-stdin-transport
DeusData Aug 28, 2026
31bdd4d
fix(mcp): bound search code scans
DeusData Aug 28, 2026
7d896fe
chore(deps): Bump github/codeql-action/upload-sarif
dependabot[bot] Aug 29, 2026
b10c274
docs: define runtime trace observation model
DeusData Aug 29, 2026
be7b578
Merge pull request #1882 from DeusData/feat/518-519-bm25-prose
DeusData Aug 29, 2026
5821078
fix(pkg): correct stale packaging versions to v0.10.8 + gate the drift
DeusData Aug 29, 2026
ae8fd2c
fix(test): keep the version contract alive under pipefail with no tags
DeusData Aug 29, 2026
4ae5a73
Merge pull request #1885 from DeusData/feat/issue-525-graph-compare
DeusData Aug 29, 2026
d8f8f45
Merge pull request #1901 from DeusData/docs/issue-612-runtime-trace-m…
DeusData Aug 29, 2026
82c4067
fix(test): release the node retrieved per USAGE edge in the Chialisp …
DeusData Aug 29, 2026
1130f57
Merge pull request #1883 from DeusData/feat/879-importance-distill
DeusData Aug 29, 2026
3b2c6cb
Merge pull request #1866 from DeusData/fix/issue-474-search-code-scan…
DeusData Aug 29, 2026
b6a2284
fix(pipeline): suppress weak Python member calls (distilled from #1324)
DeusData Aug 29, 2026
7bef7f4
feat(mcp): add manage_adr mode='set_sections'
DeusData Aug 29, 2026
d013555
feat(mcp): splice ADR sections instead of rebuilding the document
DeusData Aug 29, 2026
8f112f1
Merge pull request #1902 from DeusData/fix/version-metadata-gate
DeusData Aug 29, 2026
5eae752
test(parallel): record the weak-member trade for the LSP-ambiguity probe
DeusData Aug 29, 2026
6140094
feat(artifact): reconcile imported hashes against git on bootstrap
DeusData Aug 28, 2026
5d96377
Merge pull request #1903 from DeusData/feat/1324-python-weak-member
DeusData Aug 29, 2026
2910e28
feat(lsp): resolve cross-file base classes for the Python/TS cross-LSP
DeusData Aug 29, 2026
d90f98f
fix(store): keep ADR line endings intact when splicing a section
DeusData Aug 29, 2026
a9d635f
fix(test): set git identity on the artifact test clone
DeusData Aug 29, 2026
a272663
Merge pull request #1888 from DeusData/feat/919-chialisp-distill
DeusData Aug 29, 2026
1189c87
Merge pull request #1908 from DeusData/feat/lsp-cross-inheritance
DeusData Aug 29, 2026
4cbc9e1
fix(artifact): stamp the clean-basis trust check the way the rows wer…
DeusData Aug 29, 2026
997d087
Merge pull request #1904 from DeusData/feat/adr-section-update
DeusData Aug 29, 2026
68b8809
fix(tests): copy the runner, not /bin/cat, as the POSIX blocked image
OhOkThisIsFine Aug 29, 2026
fc1b1ee
fix(daemon): contain zombie generations from abandoned requests, name…
OhOkThisIsFine Aug 29, 2026
afc948b
fix(cypher): refuse a name that is not in scope instead of projecting…
CaptainMittens Aug 29, 2026
3de05cd
Merge pull request #1905 from DeusData/feat/868-artifact-reconcile
DeusData Aug 29, 2026
7d76b88
fix(pipeline): never bind a Go import to a symbol
ilyabrykau-orca Aug 30, 2026
d6417ad
fix(pipeline): guard USAGE/WRITES/READS against cross-language binds
ilyabrykau-orca Aug 30, 2026
47116b8
fix(extract): descend into Go struct field_declaration_list
ilyabrykau-orca Aug 30, 2026
cb7cb44
fix(extract): skip Go blank-identifier struct fields
ilyabrykau-orca Aug 30, 2026
e07a12b
test(extract): pin Go struct field extraction and blank-identifier skip
ilyabrykau-orca Aug 30, 2026
a0f6476
Merge pull request #1794 from DeusData/dependabot/github_actions/acti…
DeusData Aug 30, 2026
ec08f76
Merge pull request #1899 from DeusData/dependabot/github_actions/gith…
DeusData Aug 30, 2026
288d415
chore(deps): bump github/codeql-action init+analyze to v4.37.9 together
DeusData Aug 30, 2026
0b9df18
feat(mcp): add bounded file outline tool
DeusData Aug 28, 2026
17b5a43
fix(perl): update grammar for format declarations
DeusData Aug 27, 2026
cc00a02
fix(pipeline): a bare Go reference never binds a struct Field
ilyabrykau-orca Aug 30, 2026
9b24332
Merge pull request #1945 from DeusData/chore/codeql-action-4.37.9
DeusData Aug 31, 2026
947e52d
fix(ci): gate Windows guard setups on the index response, not list_pr…
ilyabrykau-orca Aug 31, 2026
77063bc
ci(security): raise the codeql-gate wait from 45 to 150 minutes
DeusData Aug 31, 2026
a874b6b
test(ci): make the Windows path guard fixture polyglot so CI indexes …
ilyabrykau-orca Aug 31, 2026
d122124
test(mcp): derive the tools/list cursor from the live tool count
DeusData Aug 31, 2026
fcd8bfc
Merge pull request #1937 from ilyabrykau-orca/fix/go-usage-writes-cro…
DeusData Aug 31, 2026
61de19b
Merge pull request #1940 from ilyabrykau-orca/fix/go-struct-fields
DeusData Aug 31, 2026
1e3f2fd
Merge pull request #1487 from JCVIDev/feat/opencode-context-hooks
DeusData Aug 31, 2026
1794d9b
style(mcp): clang-format the rebased analysis_tools block
DeusData Aug 31, 2026
20e86c0
Merge pull request #1944 from ilyabrykau-orca/fix/go-bare-ref-field-b…
DeusData Aug 31, 2026
a6468ed
Merge pull request #1922 from CaptainMittens/fix/reject-out-of-scope-…
DeusData Aug 31, 2026
8d7d389
Merge pull request #1938 from ilyabrykau-orca/fix/go-import-symbol-fa…
DeusData Aug 31, 2026
0a8a1f2
Merge pull request #1921 from OhOkThisIsFine/fix/daemon-runtime-uutil…
DeusData Aug 31, 2026
ae5de7f
Merge pull request #1920 from OhOkThisIsFine/claude/focused-herschel-…
DeusData Aug 31, 2026
c9d68de
Merge upstream/main into feat/pkl-call-extraction
tthayer Aug 31, 2026
c86f1ff
fix(pipeline): reject non-http slash arguments
Yyunozor Jul 31, 2026
8f50841
fix(go): resolve cross-package field-chain calls via type dispatch
xkchok Aug 30, 2026
4d20a42
style: clang-format the pxc_fold_go_struct_fields signature
xkchok Aug 30, 2026
e11d590
fix(test): free the return-type table in the go field-chain helper
xkchok Aug 31, 2026
7f158e9
Merge branch 'main' into fix/index-worker-explicit-memory-budget
atirna Sep 1, 2026
58fb945
Merge pull request #1958 from ilyabrykau-orca/fix/windows-guards-setu…
DeusData Sep 1, 2026
011087e
Merge pull request #1961 from ilyabrykau-orca/test/windows-guards-go-…
DeusData Sep 1, 2026
105069b
Merge pull request #1960 from DeusData/ci/codeql-gate-budget-v2
DeusData Sep 1, 2026
b357d09
Merge pull request #1657 from atirna/fix/index-worker-explicit-memory…
DeusData Sep 1, 2026
5a5be74
Merge pull request #1844 from DeusData/codex/issue-1838-perl-grammar-…
DeusData Sep 1, 2026
a824d82
Merge pull request #1939 from xkchok/fix/go-cross-package-field-dispatch
DeusData Sep 1, 2026
f0cf84d
Merge pull request #1426 from tthayer/feat/pkl-call-extraction
DeusData Sep 1, 2026
3627eff
Merge pull request #1389 from Yyunozor/fix/arg-url-false-positives
DeusData Sep 1, 2026
641c71f
Merge pull request #1868 from DeusData/feat/issue-469-file-outline
DeusData Sep 1, 2026
7808686
Merge pull request #1679 from astandrik/codex/perf-cpp-short-name-loo…
DeusData Sep 1, 2026
da61c81
fix(lsp): unify the two type short-name indexes that broke the main b…
DeusData Sep 1, 2026
1778637
Merge pull request #1993 from DeusData/fix/unify-type-short-name-index
DeusData Sep 1, 2026
95352ad
feat: complete CLI-first overlay CP28
ngallodev Sep 2, 2026
43f27d4
ci: add native Windows validation workflow
ngallodev Sep 2, 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
4 changes: 4 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,7 @@ internal/cbm/vendored/grammars/**/scanner.c linguist-generated=true diff=false
# the git hooks are extensionless and need explicit entries. (#1272)
scripts/git-hooks/commit-msg text eol=lf
scripts/hooks/pre-commit text eol=lf

# Chialisp grammar corpus: one case asserts CRLF comment termination, so this
# file must keep its exact bytes on every platform (no eol conversion). (#919)
tools/tree-sitter-chialisp/test/corpus/comments.txt -text
26 changes: 13 additions & 13 deletions .github/workflows/_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,14 +90,14 @@ jobs:
run: |
scripts/ci/prepare-release-candidates.sh \
"${{ matrix.goos }}" "${{ matrix.goarch }}" \
--binary build/c/codebase-memory-mcp \
--binary build/c/codebase-memory-cli \
--out-dir release-candidates
scripts/gen-third-party-notices.sh \
"release-candidates/${{ matrix.goos }}-${{ matrix.goarch }}/THIRD_PARTY_NOTICES.md"

- name: Attest release candidate provenance
if: ${{ inputs.attest }}
uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1
uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4.2.2
with:
subject-path: |
release-candidates/${{ matrix.goos }}-${{ matrix.goarch }}/candidate-provenance.tsv
Expand Down Expand Up @@ -148,14 +148,14 @@ jobs:
shell: msys2 {0}
run: |
scripts/ci/prepare-release-candidates.sh windows amd64 \
--binary build/c/codebase-memory-mcp.exe \
--binary build/c/codebase-memory-cli.exe \
--out-dir release-candidates
scripts/gen-third-party-notices.sh \
release-candidates/windows-amd64/THIRD_PARTY_NOTICES.md

- name: Attest release candidate provenance
if: ${{ inputs.attest }}
uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1
uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4.2.2
with:
subject-path: |
release-candidates/windows-amd64/candidate-provenance.tsv
Expand Down Expand Up @@ -210,14 +210,14 @@ jobs:
shell: msys2 {0}
run: |
scripts/ci/prepare-release-candidates.sh windows arm64 \
--binary build/c/codebase-memory-mcp.exe \
--binary build/c/codebase-memory-cli.exe \
--out-dir release-candidates
scripts/gen-third-party-notices.sh \
release-candidates/windows-arm64/THIRD_PARTY_NOTICES.md

- name: Attest release candidate provenance
if: ${{ inputs.attest }}
uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1
uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4.2.2
with:
subject-path: |
release-candidates/windows-arm64/candidate-provenance.tsv
Expand Down Expand Up @@ -266,21 +266,21 @@ jobs:

- name: Verify release static linking
run: |
file build/c/codebase-memory-mcp
ldd build/c/codebase-memory-mcp 2>&1 | grep -q "not a dynamic executable" || ldd build/c/codebase-memory-mcp 2>&1 | grep -q "statically linked"
file build/c/codebase-memory-cli
ldd build/c/codebase-memory-cli 2>&1 | grep -q "not a dynamic executable" || ldd build/c/codebase-memory-cli 2>&1 | grep -q "statically linked"

- name: Derive immutable stripped and unstripped release candidates
run: |
scripts/ci/prepare-release-candidates.sh \
linux "${{ matrix.arch }}-portable" \
--binary build/c/codebase-memory-mcp \
--binary build/c/codebase-memory-cli \
--out-dir release-candidates
scripts/gen-third-party-notices.sh \
"release-candidates/linux-${{ matrix.arch }}-portable/THIRD_PARTY_NOTICES.md"

- name: Attest release candidate provenance
if: ${{ inputs.attest }}
uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1
uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4.2.2
with:
subject-path: |
release-candidates/linux-${{ matrix.arch }}-portable/candidate-provenance.tsv
Expand Down Expand Up @@ -395,8 +395,8 @@ jobs:
windows-amd64 windows-arm64; do
goos="${target%%-*}"
goarch="${target#*-}"
selected_name=codebase-memory-mcp
test "$goos" != windows || selected_name=codebase-memory-mcp.exe
selected_name=codebase-memory-cli
test "$goos" != windows || selected_name=codebase-memory-cli.exe
selected="release-selection/selected/$target/$selected_name"
notices="release-candidate-scan/notices/$target/THIRD_PARTY_NOTICES.md"
test -f "$selected"
Expand Down Expand Up @@ -432,7 +432,7 @@ jobs:

- name: Attest selected containers and decision evidence
if: ${{ inputs.attest }}
uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1
uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4.2.2
with:
subject-path: |
release-containers/**/*.tar.gz
Expand Down
14 changes: 10 additions & 4 deletions .github/workflows/_security.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,25 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 240
steps:
- name: Wait for CodeQL on current commit (max 45 min)
- name: Wait for CodeQL on current commit (max 150 min)
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# On pull_request events github.sha is the synthetic merge commit;
# CodeQL runs are recorded against the PR head SHA.
CURRENT_SHA="${{ github.event.pull_request.head.sha || github.sha }}"
echo "Waiting for CodeQL to complete on $CURRENT_SHA..."
for attempt in $(seq 1 90); do
# 300 attempts x 30s = 150 min. The previous budget was 90 x 30s = 45 min,
# which is shorter than CodeQL actually takes on this repository: a measured
# run on PR #1426 (head 7b72652a) completed with conclusion=success after
# 124 min, 7 minutes AFTER this gate had already given up. That marked at
# least five contributor PRs red for a scan that passed. The job's own
# timeout-minutes is 240, so 150 still leaves headroom.
for attempt in $(seq 1 300); do
LATEST=$(gh api "repos/${{ github.repository }}/actions/workflows/codeql.yml/runs?head_sha=$CURRENT_SHA&per_page=1" \
--jq '.workflow_runs[] | "\(.conclusion) \(.status)"' 2>/dev/null | head -1 || echo "")
if [ -z "$LATEST" ]; then
echo " $attempt/90: no run yet..."; sleep 30; continue
echo " $attempt/300: no run yet..."; sleep 30; continue
fi
CONCLUSION=$(echo "$LATEST" | cut -d' ' -f1)
STATUS=$(echo "$LATEST" | cut -d' ' -f2)
Expand All @@ -63,7 +69,7 @@ jobs:
elif [ "$STATUS" = "completed" ]; then
echo "BLOCKED: CodeQL $CONCLUSION"; exit 1
fi
echo " $attempt/90: $STATUS..."; sleep 30
echo " $attempt/300: $STATUS..."; sleep 30
done
echo "BLOCKED: CodeQL timeout"; exit 1

Expand Down
40 changes: 20 additions & 20 deletions .github/workflows/_smoke.yml
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,9 @@ jobs:
- name: Extract release artifact
run: |
mkdir -p "$RUNNER_TEMP/cbm-artifact"
tar -xzf codebase-memory-mcp-${{ matrix.goos }}-${{ matrix.goarch }}.tar.gz \
tar -xzf codebase-memory-cli-${{ matrix.goos }}-${{ matrix.goarch }}.tar.gz \
-C "$RUNNER_TEMP/cbm-artifact"
chmod +x "$RUNNER_TEMP/cbm-artifact/codebase-memory-mcp"
chmod +x "$RUNNER_TEMP/cbm-artifact/codebase-memory-cli"

# ONE harness for every venue. This is the same wrapper local CI and PR CI
# run, handed the DOWNLOADED artifact instead of a local build: it stages
Expand All @@ -114,22 +114,22 @@ jobs:
# the wrapper (no env isolation, no user-PATH guard, fixed port).
- name: Smoke test (shared wrapper)
run: |
scripts/smoke-local.sh "$RUNNER_TEMP/cbm-artifact/codebase-memory-mcp"
scripts/smoke-local.sh "$RUNNER_TEMP/cbm-artifact/codebase-memory-cli"
env:
CBM_SMOKE_ARTIFACT_DIR: ${{ runner.temp }}/cbm-artifact
SMOKE_REQUIRE_UI: "1"

- name: Security audits
run: |
BIN="$RUNNER_TEMP/cbm-artifact/codebase-memory-mcp"
BIN="$RUNNER_TEMP/cbm-artifact/codebase-memory-cli"
scripts/security-strings.sh "$BIN"
scripts/security-install.sh "$BIN"
scripts/security-network.sh "$BIN"

- name: MCP robustness test (selected linux-amd64 runtime)
if: matrix.goos == 'linux' && matrix.goarch == 'amd64'
run: |
BIN="$RUNNER_TEMP/cbm-artifact/codebase-memory-mcp"
BIN="$RUNNER_TEMP/cbm-artifact/codebase-memory-cli"
scripts/security-fuzz.sh "$BIN"
scripts/security-fuzz-random.sh "$BIN" 60

Expand All @@ -145,7 +145,7 @@ jobs:
grep -q "DatabaseMirror" /etc/clamav/freshclam.conf 2>/dev/null || \
echo "DatabaseMirror database.clamav.net" | sudo tee -a /etc/clamav/freshclam.conf > /dev/null
sudo freshclam --quiet
clamscan --no-summary "$RUNNER_TEMP/cbm-artifact/codebase-memory-mcp"
clamscan --no-summary "$RUNNER_TEMP/cbm-artifact/codebase-memory-cli"

- name: ClamAV scan (macOS)
if: startsWith(matrix.os, 'macos')
Expand All @@ -158,7 +158,7 @@ jobs:
echo "DatabaseMirror database.clamav.net" >> "$CLAMAV_ETC/freshclam.conf"
fi
freshclam --quiet --no-warnings 2>/dev/null || freshclam --quiet 2>/dev/null || echo "WARNING: freshclam update failed"
clamscan --no-summary "$RUNNER_TEMP/cbm-artifact/codebase-memory-mcp"
clamscan --no-summary "$RUNNER_TEMP/cbm-artifact/codebase-memory-cli"

smoke-windows:
needs: setup-matrix
Expand Down Expand Up @@ -196,8 +196,8 @@ jobs:
ARCH=${{ matrix.arch }}
ARTIFACT_DIR="$(cygpath -u "$RUNNER_TEMP")/cbm-artifact"
mkdir -p "$ARTIFACT_DIR"
unzip -o "codebase-memory-mcp-windows-${ARCH}.zip" -d "$ARTIFACT_DIR"
test -s "$ARTIFACT_DIR/codebase-memory-mcp.exe"
unzip -o "codebase-memory-cli-windows-${ARCH}.zip" -d "$ARTIFACT_DIR"
test -s "$ARTIFACT_DIR/codebase-memory-cli.exe"
# ONE executable per runtime set: a payload sibling would mean the
# removed launcher split came back.
test ! -e "$ARTIFACT_DIR/codebase-memory-mcp.payload.exe"
Expand All @@ -209,8 +209,8 @@ jobs:
# image's file busy for ~100ms (section teardown / first-touch AV),
# and a temp dir on an ephemeral runner must never fail the job.
trap 'rm -rf "$LAUNCH_DIR" 2>/dev/null || { sleep 2; rm -rf "$LAUNCH_DIR" 2>/dev/null || true; }' EXIT
cp "$ARTIFACT_DIR/codebase-memory-mcp.exe" "$LAUNCH_DIR/"
"$LAUNCH_DIR/codebase-memory-mcp.exe" --version
cp "$ARTIFACT_DIR/codebase-memory-cli.exe" "$LAUNCH_DIR/"
"$LAUNCH_DIR/codebase-memory-cli.exe" --version

# ONE harness for every venue: the same script win.sh smoke-install and
# pr.yml run, handed the DOWNLOADED artifact instead of a local build. It
Expand All @@ -232,21 +232,21 @@ jobs:
shell: msys2 {0}
run: |
ARTIFACT_DIR="$(cygpath -u "$RUNNER_TEMP")/cbm-artifact"
scripts/security-strings.sh "$ARTIFACT_DIR/codebase-memory-mcp.exe"
scripts/security-strings.sh "$ARTIFACT_DIR/codebase-memory-cli.exe"
PROFILE_ROOT="$(cygpath -u "$USERPROFILE")"
SECURITY_DIR="$(mktemp -d "$PROFILE_ROOT/cbm-release-security.XXXXXX")"
# Best-effort cleanup with one retry (see the version preflight).
trap 'rm -rf "$SECURITY_DIR" 2>/dev/null || { sleep 2; rm -rf "$SECURITY_DIR" 2>/dev/null || true; }' EXIT
cp "$ARTIFACT_DIR/codebase-memory-mcp.exe" "$SECURITY_DIR/"
cp "$ARTIFACT_DIR/codebase-memory-cli.exe" "$SECURITY_DIR/"
TMPDIR="$SECURITY_DIR" \
scripts/security-install.sh "$SECURITY_DIR/codebase-memory-mcp.exe"
scripts/security-install.sh "$SECURITY_DIR/codebase-memory-cli.exe"

- name: Windows Defender scan
shell: pwsh
run: |
& "C:\Program Files\Windows Defender\MpCmdRun.exe" -SignatureUpdate 2>$null
$artifactDir = Join-Path $env:RUNNER_TEMP "cbm-artifact"
foreach ($binary in @("codebase-memory-mcp.exe")) {
foreach ($binary in @("codebase-memory-cli.exe")) {
$result = & "C:\Program Files\Windows Defender\MpCmdRun.exe" -Scan -ScanType 3 -File (Join-Path $artifactDir $binary) -DisableRemediation
$code = $LASTEXITCODE
Write-Host $result
Expand Down Expand Up @@ -286,9 +286,9 @@ jobs:
- name: Extract release artifact
run: |
mkdir -p "$RUNNER_TEMP/cbm-artifact"
tar -xzf codebase-memory-mcp-linux-${{ matrix.arch }}-portable.tar.gz \
tar -xzf codebase-memory-cli-linux-${{ matrix.arch }}-portable.tar.gz \
-C "$RUNNER_TEMP/cbm-artifact"
chmod +x "$RUNNER_TEMP/cbm-artifact/codebase-memory-mcp"
chmod +x "$RUNNER_TEMP/cbm-artifact/codebase-memory-cli"

# Same wrapper as every other venue. This leg previously called
# smoke-test.sh with no fixture server, which silently SKIPPED the
Expand All @@ -297,7 +297,7 @@ jobs:
# exactly the phases it most needs to run.
- name: Smoke test (shared wrapper)
run: |
scripts/smoke-local.sh "$RUNNER_TEMP/cbm-artifact/codebase-memory-mcp"
scripts/smoke-local.sh "$RUNNER_TEMP/cbm-artifact/codebase-memory-cli"
env:
CBM_SMOKE_ARTIFACT_DIR: ${{ runner.temp }}/cbm-artifact
SMOKE_REQUIRE_UI: "1"
Expand All @@ -307,11 +307,11 @@ jobs:
# in debian:bullseye (glibc 2.31) — the standard dynamic binary would fail
# here with `GLIBC_2.38 not found`.
- name: Old-glibc compatibility
run: scripts/ci/check-glibc-compat.sh "$RUNNER_TEMP/cbm-artifact/codebase-memory-mcp"
run: scripts/ci/check-glibc-compat.sh "$RUNNER_TEMP/cbm-artifact/codebase-memory-cli"

- name: Security audits
run: |
BIN="$RUNNER_TEMP/cbm-artifact/codebase-memory-mcp"
BIN="$RUNNER_TEMP/cbm-artifact/codebase-memory-cli"
scripts/security-strings.sh "$BIN"
scripts/security-install.sh "$BIN"
scripts/security-network.sh "$BIN"
Expand Down
28 changes: 14 additions & 14 deletions .github/workflows/_soak.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ jobs:
SELECTED_BINARY: ${{ runner.temp }}/cbm-selected-artifact/codebase-memory-mcp
USE_RELEASE_ARTIFACTS: ${{ inputs.use_release_artifacts }}
run: |
binary=build/c/codebase-memory-mcp
binary=build/c/codebase-memory-cli
test "$USE_RELEASE_ARTIFACTS" != true || binary="$SELECTED_BINARY"
scripts/soak-legs.sh --legs "${{ inputs.legs }}" "$binary" ${{ inputs.duration_minutes }}
- name: Upload metrics
Expand Down Expand Up @@ -156,9 +156,9 @@ jobs:
run: |
ARTIFACT_DIR="$(cygpath -u "$RUNNER_TEMP")/cbm-selected-artifact"
mkdir -p "$ARTIFACT_DIR"
unzip -q "$(cygpath -u "$RUNNER_TEMP")/cbm-selected-container/codebase-memory-mcp-windows-amd64.zip" \
codebase-memory-mcp.exe -d "$ARTIFACT_DIR"
"$ARTIFACT_DIR/codebase-memory-mcp.exe" --version
unzip -q "$(cygpath -u "$RUNNER_TEMP")/cbm-selected-container/codebase-memory-cli-windows-amd64.zip" \
codebase-memory-cli.exe -d "$ARTIFACT_DIR"
"$ARTIFACT_DIR/codebase-memory-cli.exe" --version
# Both release-gating legs via the ONE canonical soak entry; only the
# protected-TEMP provisioning is venue text. soak-legs.sh resolves .exe.
- name: Soak legs (${{ inputs.legs }}, ${{ inputs.duration_minutes }} min each)
Expand All @@ -167,9 +167,9 @@ jobs:
export TEMP="$(cygpath -m "$CBM_CI_TEMP_ROOT")"
export TMP="$TEMP"
export TMPDIR="$(cygpath -u "$CBM_CI_TEMP_ROOT")"
binary=build/c/codebase-memory-mcp
binary=build/c/codebase-memory-cli
if [ "${{ inputs.use_release_artifacts }}" = true ]; then
binary="$(cygpath -u "$RUNNER_TEMP")/cbm-selected-artifact/codebase-memory-mcp.exe"
binary="$(cygpath -u "$RUNNER_TEMP")/cbm-selected-artifact/codebase-memory-cli.exe"
fi
scripts/soak-legs.sh --legs "${{ inputs.legs }}" "$binary" ${{ inputs.duration_minutes }}
- name: Upload metrics
Expand Down Expand Up @@ -234,9 +234,9 @@ jobs:
run: |
ARTIFACT_DIR="$(cygpath -u "$RUNNER_TEMP")/cbm-selected-artifact"
mkdir -p "$ARTIFACT_DIR"
unzip -q "$(cygpath -u "$RUNNER_TEMP")/cbm-selected-container/codebase-memory-mcp-windows-arm64.zip" \
codebase-memory-mcp.exe -d "$ARTIFACT_DIR"
"$ARTIFACT_DIR/codebase-memory-mcp.exe" --version
unzip -q "$(cygpath -u "$RUNNER_TEMP")/cbm-selected-container/codebase-memory-cli-windows-arm64.zip" \
codebase-memory-cli.exe -d "$ARTIFACT_DIR"
"$ARTIFACT_DIR/codebase-memory-cli.exe" --version
# Both release-gating legs via the ONE canonical soak entry; only the
# protected-TEMP provisioning is venue text. soak-legs.sh resolves .exe.
- name: Soak legs (${{ inputs.legs }}, ${{ inputs.duration_minutes }} min each)
Expand All @@ -245,9 +245,9 @@ jobs:
export TEMP="$(cygpath -m "$CBM_CI_TEMP_ROOT")"
export TMP="$TEMP"
export TMPDIR="$(cygpath -u "$CBM_CI_TEMP_ROOT")"
binary=build/c/codebase-memory-mcp
binary=build/c/codebase-memory-cli
if [ "${{ inputs.use_release_artifacts }}" = true ]; then
binary="$(cygpath -u "$RUNNER_TEMP")/cbm-selected-artifact/codebase-memory-mcp.exe"
binary="$(cygpath -u "$RUNNER_TEMP")/cbm-selected-artifact/codebase-memory-cli.exe"
fi
scripts/soak-legs.sh --legs "${{ inputs.legs }}" "$binary" ${{ inputs.duration_minutes }}
- name: Upload metrics
Expand Down Expand Up @@ -292,7 +292,7 @@ jobs:
- name: Extract selected portable executable
run: |
mkdir -p "$RUNNER_TEMP/cbm-selected-artifact"
tar -xzf "$RUNNER_TEMP/cbm-selected-container/codebase-memory-mcp-linux-${{ matrix.arch }}-portable.tar.gz" \
tar -xzf "$RUNNER_TEMP/cbm-selected-container/codebase-memory-cli-linux-${{ matrix.arch }}-portable.tar.gz" \
-C "$RUNNER_TEMP/cbm-selected-artifact" codebase-memory-mcp
chmod +x "$RUNNER_TEMP/cbm-selected-artifact/codebase-memory-mcp"
"$RUNNER_TEMP/cbm-selected-artifact/codebase-memory-mcp" --version
Expand Down Expand Up @@ -367,7 +367,7 @@ jobs:
# Single-leg variant of the canonical soak entry: the ASan build is too
# slow for the two-leg sequence; leg selection is a documented flag, not
# a divergent inline procedure.
run: scripts/soak-legs.sh --legs quick build/c/codebase-memory-mcp 15
run: scripts/soak-legs.sh --legs quick build/c/codebase-memory-cli 15
- name: Upload metrics
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
Expand Down Expand Up @@ -407,7 +407,7 @@ jobs:
env:
ASAN_OPTIONS: "detect_leaks=0:halt_on_error=0:log_path=soak-results/asan"
# Single-leg variant of the canonical soak entry (see the unix ASan job).
run: scripts/soak-legs.sh --legs quick build/c/codebase-memory-mcp 15
run: scripts/soak-legs.sh --legs quick build/c/codebase-memory-cli 15
- name: Upload metrics
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -587,4 +587,4 @@ jobs:
# against the real supervisor->worker spawn path: under the mandatory
# coordination daemon, CBM_INDEX_SUPERVISOR=0 is a fail-closed refusal, so
# the driver no longer sets it anywhere.
run: ./scripts/test-windows.ps1 -GuardsOnly -Binary build/c/codebase-memory-mcp.exe
run: ./scripts/test-windows.ps1 -GuardsOnly -Binary build/c/codebase-memory-cli.exe
Loading
Loading