Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
0e00ef5
feat: coordinate concurrent CBM sessions
DeusData Jul 16, 2026
83c137d
feat: complete shared daemon lifecycle
DeusData Jul 17, 2026
dd87676
Merge origin/main into feat/shared-coordination-daemon
DeusData Jul 17, 2026
4693b62
fix: stabilize cross-platform daemon smoke
DeusData Jul 18, 2026
cb896a3
fix: harden cross-platform daemon startup
DeusData Jul 18, 2026
b8a75d1
fix: stabilize cross-platform daemon launch
DeusData Jul 18, 2026
98a2847
fix: harden cross-platform daemon startup
DeusData Jul 18, 2026
ad58e71
fix: stabilize cross-platform daemon coordination
DeusData Jul 18, 2026
89c7c98
fix: support standard Windows profile ACLs
DeusData Jul 18, 2026
410c8d7
fix: stabilize Windows coordination startup
DeusData Jul 18, 2026
5d8a942
Merge remote-tracking branch 'origin/main' into feat/shared-coordinat…
DeusData Jul 18, 2026
f35b10b
fix: harden cross-platform daemon startup smoke
DeusData Jul 18, 2026
ad2874b
fix: close remaining daemon coordination races
DeusData Jul 18, 2026
3bd9e87
Merge origin/main into feat/shared-coordination-daemon
DeusData Jul 18, 2026
7696b14
fix: resolve remaining platform CI regressions
DeusData Jul 18, 2026
f7e23d8
docs(vendored): record the SQLite MAX_PATHNAME patch
DeusData Jul 18, 2026
712d689
fix(test): serialize the daemon-family suites in the parallel runner
DeusData Jul 18, 2026
5dfce38
fix(launcher): name the object and check behind every security refusal
DeusData Jul 18, 2026
c634c86
ci(windows): protected per-user temp root + explicit owner on staged …
DeusData Jul 18, 2026
d1761e4
fix(daemon): stamp the token-user SID as owner on private-namespace o…
DeusData Jul 18, 2026
5414ba4
fix(daemon): normalize trusted directory owners at the private-dir gate
DeusData Jul 18, 2026
838ef3b
fix(daemon): classify server-identity rejections; satisfy clang-format
DeusData Jul 18, 2026
f71b34f
feat(test-infra): CI-fidelity CPU caps + verified ccache for the loca…
DeusData Jul 18, 2026
9450a51
test-infra: default to full cores; CBM_LOCAL_CI_CPUS=4 is the CI-fide…
DeusData Jul 18, 2026
1445dd4
test-infra: align run.sh docs with the speed-first default
DeusData Jul 18, 2026
7a49df4
test-infra: preflight daemon/compose checks + Colima runtime docs
DeusData Jul 18, 2026
1532002
test-infra: all-cores VM sizing default + live-monitoring guidance
DeusData Jul 18, 2026
886825d
test-infra: clarify vCPU semantics - shared scheduling, no core seizure
DeusData Jul 18, 2026
7c90eb2
test(index-supervisor): dump worker logs at the failure sites
DeusData Jul 18, 2026
3795694
feat(test-infra): opt-in windows-vm and mac-vm legs
DeusData Jul 18, 2026
d09867d
test-infra: size the Windows VM generously - vCPUs are scheduled, not…
DeusData Jul 18, 2026
3fd3385
fix(daemon): name the failing check behind every private-namespace re…
DeusData Jul 18, 2026
43b3ae7
test-infra: Windows VM gets all cores - no artificial limits
DeusData Jul 18, 2026
ee61609
test(index-supervisor): calibrate worker deadlines to real startup cost
DeusData Jul 18, 2026
1fbfb1f
test(daemon): calibrate frontend and cli-quiesce budgets for starved …
DeusData Jul 18, 2026
129d8f7
perf(ci): verified compiler cache for test and smoke legs, local and CI
DeusData Jul 18, 2026
0f60f8d
Merge test-infrastructure upgrades into the daemon branch
DeusData Jul 18, 2026
1ce2dbe
Merge verified compiler cache into the daemon branch
DeusData Jul 18, 2026
a6a17e3
test-infra: fetch the Windows ISO from Microsoft's official page
DeusData Jul 18, 2026
e28ae9a
fix(daemon): error-code the pid-query rejection and log server-side r…
DeusData Jul 18, 2026
1488579
fix(daemon): classify the server-side client-identity rejection
DeusData Jul 18, 2026
2e87810
fix(daemon): wait for the client's first frame before impersonating it
DeusData Jul 18, 2026
7eca11b
diag(version_cohort): name why the active lifetime record is undecodable
DeusData Jul 18, 2026
d15a74a
fix(smoke): capture daemon diagnostics on an MCP no-response failure
DeusData Jul 18, 2026
5dc28f6
fix(daemon): read the first frame (not peek) before impersonating on …
DeusData Jul 18, 2026
8d465bc
test(daemon): widen worker/frontend hang-guard deadlines for slow ARM CI
DeusData Jul 18, 2026
53d867d
test-infra: per-suite timeout + arm64-safe mingw image (reliability)
DeusData Jul 18, 2026
4cb05fa
fix(daemon): retry the cohort claim across a generation handoff
DeusData Jul 18, 2026
f420e1a
diag(daemon): name the untrusted SID class in a DACL rejection
DeusData Jul 18, 2026
3325b31
test(daemon): skip the build-fingerprint hash in tests (root-cause fix)
DeusData Jul 19, 2026
4dc517c
fix(daemon): validate the pipe client by process id, not impersonation
DeusData Jul 19, 2026
30b5f12
fix(cli): install --dry-run always reports dry-run, even on a plan check
DeusData Jul 19, 2026
e317708
diag(daemon): print the raw SID of an untrusted DACL grant
DeusData Jul 19, 2026
897aa7a
test(smoke): echo the install --dry-run output on the dry-run-mode fa…
DeusData Jul 19, 2026
8b4e0fb
fix(windows): accept the OWNER RIGHTS (S-1-3-4) ACE in DACL validation
DeusData Jul 19, 2026
2184389
fix(cli): Windows managed install --dry-run states dry-run mode
DeusData Jul 19, 2026
e3bfcc3
diag(version_cohort): name the decoded-but-invalid active identity fi…
DeusData Jul 19, 2026
fb54f54
test(windows): define the missing sha256_file helper in the launcher …
DeusData Jul 19, 2026
6a6229b
fix(launcher): accept a trusted privileged owner on elevated installs
DeusData Jul 19, 2026
9ef0f31
diag(cli): name which private-staging sub-step made the pair unrunnable
DeusData Jul 19, 2026
0a8b77c
fix(activation): stamp staged-file owner to the token user
DeusData Jul 19, 2026
dc72a5b
style(cli): clang-format the private-staging diagnostic lines
DeusData Jul 19, 2026
5498af0
fix(compat): create mkdtemp directories with a private security descr…
DeusData Jul 19, 2026
343582a
test-infra(vm): script-driven Windows VM leg for the local 3-OS gate
DeusData Jul 19, 2026
aa90491
fix(cli): stage Windows install transactions under a per-user root
DeusData Jul 19, 2026
5e23839
fix(daemon): make request completion transactional and EOF drain-safe
DeusData Jul 19, 2026
85c2d99
test(daemon): raise the frontend announce deadline above the claim bu…
DeusData Jul 19, 2026
ba91c6c
fix(cli): resolve msys-form profile paths and create the staging-root…
DeusData Jul 19, 2026
593d126
test-infra: give each leg its own build dir so parallel legs never co…
DeusData Jul 19, 2026
08b7ff5
test-infra(vm): CI-identical smoke plus ubsan/pageheap/parallel drivers
DeusData Jul 19, 2026
d826374
test-infra(vm): remove embedded SSH key, pin host identity and installer
DeusData Jul 19, 2026
0baddf7
daemon: permanent lifecycle, daemon-backed CLI/hooks, real-Windows ha…
DeusData Jul 21, 2026
30550fb
test-infra(vm): restore the executable bit on win.sh lost in a merge …
DeusData Jul 21, 2026
34f9ad1
fix(daemon,win): CI-green fixes and a daemon-stability guard
DeusData Jul 22, 2026
ece838c
test: widen ThreadSanitizer coverage and add native ARM64 Windows UBSan
DeusData Jul 22, 2026
6ab5e3f
fix(smoke): retire the account daemon before the harness ends
DeusData Jul 22, 2026
f517455
fix(win): reconcile the C suite with the managed-launcher contract
DeusData Jul 22, 2026
664058e
test-infra(win): CI-shaped VM harness, managed-install smoke gate, ca…
DeusData Jul 22, 2026
f1beaec
test: cache the incremental fixture and index the CI-shaped corpus ev…
DeusData Jul 22, 2026
d7ce789
ci: shard the C-suite legs, prove cross-shard coverage, warm compiler…
DeusData Jul 22, 2026
d7096e7
ci: switch PR, dry-run, and release validation to the sharded topology
DeusData Jul 22, 2026
568e613
test-infra: overlap the local ladder, open the serial tail, keep cont…
DeusData Jul 22, 2026
0414146
test: stamp the Windows build-directory DACL inside the parallel runner
DeusData Jul 23, 2026
e4400b6
fix(smoke): retire fixture daemons before every install-fixture cleanup
DeusData Jul 23, 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
48 changes: 32 additions & 16 deletions .github/workflows/_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -170,11 +170,15 @@ jobs:
- name: Archive standard binary
shell: msys2 {0}
run: |
BIN=build/c/codebase-memory-mcp
[ -f "${BIN}.exe" ] && BIN="${BIN}.exe"
cp "$BIN" codebase-memory-mcp.exe
make -f Makefile.cbm build/c/codebase-memory-mcp-launcher.exe CC=clang CXX=clang++
PAYLOAD=build/c/codebase-memory-mcp
[ -f "${PAYLOAD}.exe" ] && PAYLOAD="${PAYLOAD}.exe"
cp build/c/codebase-memory-mcp-launcher.exe codebase-memory-mcp.exe
cp "$PAYLOAD" codebase-memory-mcp.payload.exe
scripts/gen-third-party-notices.sh THIRD_PARTY_NOTICES.md
zip codebase-memory-mcp-windows-amd64.zip codebase-memory-mcp.exe LICENSE install.ps1 THIRD_PARTY_NOTICES.md
zip codebase-memory-mcp-windows-amd64.zip \
codebase-memory-mcp.exe codebase-memory-mcp.payload.exe \
LICENSE install.ps1 THIRD_PARTY_NOTICES.md

- name: Attest standard binary provenance
if: ${{ inputs.attest }}
Expand All @@ -196,11 +200,15 @@ jobs:
- name: Archive UI binary
shell: msys2 {0}
run: |
BIN=build/c/codebase-memory-mcp
[ -f "${BIN}.exe" ] && BIN="${BIN}.exe"
cp "$BIN" codebase-memory-mcp.exe
make -f Makefile.cbm build/c/codebase-memory-mcp-launcher.exe CC=clang CXX=clang++
PAYLOAD=build/c/codebase-memory-mcp
[ -f "${PAYLOAD}.exe" ] && PAYLOAD="${PAYLOAD}.exe"
cp build/c/codebase-memory-mcp-launcher.exe codebase-memory-mcp.exe
cp "$PAYLOAD" codebase-memory-mcp.payload.exe
scripts/gen-third-party-notices.sh THIRD_PARTY_NOTICES.md
zip codebase-memory-mcp-ui-windows-amd64.zip codebase-memory-mcp.exe LICENSE install.ps1 THIRD_PARTY_NOTICES.md
zip codebase-memory-mcp-ui-windows-amd64.zip \
codebase-memory-mcp.exe codebase-memory-mcp.payload.exe \
LICENSE install.ps1 THIRD_PARTY_NOTICES.md

- name: Attest UI binary provenance
if: ${{ inputs.attest }}
Expand Down Expand Up @@ -251,11 +259,15 @@ jobs:
- name: Archive standard binary
shell: msys2 {0}
run: |
BIN=build/c/codebase-memory-mcp
[ -f "${BIN}.exe" ] && BIN="${BIN}.exe"
cp "$BIN" codebase-memory-mcp.exe
make -f Makefile.cbm build/c/codebase-memory-mcp-launcher.exe CC=clang CXX=clang++
PAYLOAD=build/c/codebase-memory-mcp
[ -f "${PAYLOAD}.exe" ] && PAYLOAD="${PAYLOAD}.exe"
cp build/c/codebase-memory-mcp-launcher.exe codebase-memory-mcp.exe
cp "$PAYLOAD" codebase-memory-mcp.payload.exe
scripts/gen-third-party-notices.sh THIRD_PARTY_NOTICES.md
zip codebase-memory-mcp-windows-arm64.zip codebase-memory-mcp.exe LICENSE install.ps1 THIRD_PARTY_NOTICES.md
zip codebase-memory-mcp-windows-arm64.zip \
codebase-memory-mcp.exe codebase-memory-mcp.payload.exe \
LICENSE install.ps1 THIRD_PARTY_NOTICES.md

- name: Attest standard binary provenance
if: ${{ inputs.attest }}
Expand All @@ -277,11 +289,15 @@ jobs:
- name: Archive UI binary
shell: msys2 {0}
run: |
BIN=build/c/codebase-memory-mcp
[ -f "${BIN}.exe" ] && BIN="${BIN}.exe"
cp "$BIN" codebase-memory-mcp.exe
make -f Makefile.cbm build/c/codebase-memory-mcp-launcher.exe CC=clang CXX=clang++
PAYLOAD=build/c/codebase-memory-mcp
[ -f "${PAYLOAD}.exe" ] && PAYLOAD="${PAYLOAD}.exe"
cp build/c/codebase-memory-mcp-launcher.exe codebase-memory-mcp.exe
cp "$PAYLOAD" codebase-memory-mcp.payload.exe
scripts/gen-third-party-notices.sh THIRD_PARTY_NOTICES.md
zip codebase-memory-mcp-ui-windows-arm64.zip codebase-memory-mcp.exe LICENSE install.ps1 THIRD_PARTY_NOTICES.md
zip codebase-memory-mcp-ui-windows-arm64.zip \
codebase-memory-mcp.exe codebase-memory-mcp.payload.exe \
LICENSE install.ps1 THIRD_PARTY_NOTICES.md

- name: Attest UI binary provenance
if: ${{ inputs.attest }}
Expand Down
65 changes: 46 additions & 19 deletions .github/workflows/_smoke.yml
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ jobs:
run: scripts/smoke-test.sh ./codebase-memory-mcp
env:
SMOKE_DOWNLOAD_URL: http://localhost:18080
SMOKE_UPDATE_FIXTURE_DIR: /tmp/smoke-server

- name: Security audits
run: |
Expand Down Expand Up @@ -210,17 +211,27 @@ jobs:
SUFFIX=${{ matrix.variant == 'ui' && '-ui' || '' }}
ARCH=${{ matrix.arch }}
unzip -o "codebase-memory-mcp${SUFFIX}-windows-${ARCH}.zip"
[ -n "$SUFFIX" ] && cp "codebase-memory-mcp${SUFFIX}.exe" codebase-memory-mcp.exe || true
test -s codebase-memory-mcp.exe
test -s codebase-memory-mcp.payload.exe
PROFILE_ROOT="$(cygpath -u "$USERPROFILE")"
LAUNCH_DIR="$(mktemp -d "$PROFILE_ROOT/cbm-release-version.XXXXXX")"
trap 'rm -rf "$LAUNCH_DIR"' EXIT
cp codebase-memory-mcp.exe codebase-memory-mcp.payload.exe "$LAUNCH_DIR/"
"$LAUNCH_DIR/codebase-memory-mcp.payload.exe" --version
"$LAUNCH_DIR/codebase-memory-mcp.exe" --version

- name: Start artifact server
shell: msys2 {0}
run: |
mkdir -p /tmp/smoke-server
cp codebase-memory-mcp.exe /tmp/smoke-server/
cp codebase-memory-mcp.exe codebase-memory-mcp.payload.exe \
LICENSE install.ps1 THIRD_PARTY_NOTICES.md /tmp/smoke-server/
SUFFIX=${{ matrix.variant == 'ui' && '-ui' || '' }}
ARCH=${{ matrix.arch }}
cd /tmp/smoke-server
zip -q "codebase-memory-mcp${SUFFIX}-windows-${ARCH}.zip" codebase-memory-mcp.exe
zip -q "codebase-memory-mcp${SUFFIX}-windows-${ARCH}.zip" \
codebase-memory-mcp.exe codebase-memory-mcp.payload.exe \
LICENSE install.ps1 THIRD_PARTY_NOTICES.md
if [ -n "$SUFFIX" ]; then
cp "codebase-memory-mcp${SUFFIX}-windows-${ARCH}.zip" "codebase-memory-mcp-windows-${ARCH}.zip"
fi
Expand All @@ -232,35 +243,51 @@ jobs:

- name: Smoke test
shell: msys2 {0}
run: scripts/smoke-test.sh ./codebase-memory-mcp.exe
run: |
PROFILE_ROOT="$(cygpath -u "$USERPROFILE")"
SMOKE_DIR="$(mktemp -d "$PROFILE_ROOT/cbm-release-smoke.XXXXXX")"
trap 'rm -rf "$SMOKE_DIR"' EXIT
cp codebase-memory-mcp.exe codebase-memory-mcp.payload.exe "$SMOKE_DIR/"
CBM_CACHE_DIR="$(cygpath -m "$SMOKE_DIR/cache")" \
SMOKE_TEMP_ROOT="$SMOKE_DIR" \
scripts/smoke-test.sh "$SMOKE_DIR/codebase-memory-mcp.exe"
env:
SMOKE_DOWNLOAD_URL: http://127.0.0.1:18080
SMOKE_UPDATE_FIXTURE_DIR: /tmp/smoke-server
SMOKE_ARCH: ${{ matrix.arch }}

- name: Security audits
shell: msys2 {0}
run: |
scripts/security-strings.sh ./codebase-memory-mcp.exe
scripts/security-install.sh ./codebase-memory-mcp.exe
scripts/security-strings.sh ./codebase-memory-mcp.payload.exe
PROFILE_ROOT="$(cygpath -u "$USERPROFILE")"
SECURITY_DIR="$(mktemp -d "$PROFILE_ROOT/cbm-release-security.XXXXXX")"
trap 'rm -rf "$SECURITY_DIR"' EXIT
cp codebase-memory-mcp.exe codebase-memory-mcp.payload.exe "$SECURITY_DIR/"
TMPDIR="$SECURITY_DIR" \
scripts/security-install.sh "$SECURITY_DIR/codebase-memory-mcp.exe"

- name: Windows Defender scan
shell: pwsh
run: |
& "C:\Program Files\Windows Defender\MpCmdRun.exe" -SignatureUpdate 2>$null
$result = & "C:\Program Files\Windows Defender\MpCmdRun.exe" -Scan -ScanType 3 -File "$PWD\codebase-memory-mcp.exe" -DisableRemediation
$code = $LASTEXITCODE
Write-Host $result
# MpCmdRun -Scan exit codes: 0 = clean, 2 = threat found. Any OTHER non-zero
# means the scan engine could not run at all (e.g. hr=0x800106ba: the Defender
# antimalware service is unavailable on the runner) — that is NOT a detection.
# Fail soft on an engine failure so a transient runner-side AV outage can't
# false-fail a release; only a real detection (exit 2) hard-blocks.
if ($code -eq 2) {
Write-Host "BLOCKED: Windows Defender flagged binary!"; exit 1
} elseif ($code -ne 0) {
Write-Host "::warning::Windows Defender scan could not run (exit $code) - skipping AV gate on this runner"
} else {
Write-Host "=== Windows Defender: clean ==="
foreach ($binary in @("codebase-memory-mcp.exe", "codebase-memory-mcp.payload.exe")) {
$result = & "C:\Program Files\Windows Defender\MpCmdRun.exe" -Scan -ScanType 3 -File "$PWD\$binary" -DisableRemediation
$code = $LASTEXITCODE
Write-Host $result
# MpCmdRun -Scan exit codes: 0 = clean, 2 = threat found. Any OTHER non-zero
# means the scan engine could not run at all (e.g. hr=0x800106ba: the Defender
# antimalware service is unavailable on the runner) — that is NOT a detection.
# Fail soft on an engine failure so a transient runner-side AV outage can't
# false-fail a release; only a real detection (exit 2) hard-blocks.
if ($code -eq 2) {
Write-Host "BLOCKED: Windows Defender flagged $binary!"; exit 1
} elseif ($code -ne 0) {
Write-Host "::warning::Windows Defender scan could not run for $binary (exit $code) - skipping AV gate on this runner"
} else {
Write-Host "=== Windows Defender: $binary clean ==="
}
}

smoke-linux-portable:
Expand Down
Loading
Loading