Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
bb3c716
feat(storage): add read-only disk inventory with conservative scope c…
rabii-chaarani Oct 20, 2026
c0741ce
feat(storage): guard maintenance and producer resource ownership
rabii-chaarani Oct 20, 2026
44e467f
feat(storage): add maintenance health contracts and dispatcher admission
rabii-chaarani Oct 20, 2026
9eaa8de
test(storage): add maintenance contract evidence and audit regressions
rabii-chaarani Oct 20, 2026
a313b4d
test(storage): preserve probe output in lossless checked archive
rabii-chaarani Oct 20, 2026
e96893e
feat(storage): track reference mutations and preserve committed reads
rabii-chaarani Oct 20, 2026
16081af
docs(storage): preserve foundation evidence and pending cleanup gates
rabii-chaarani Oct 20, 2026
077a8d8
fix(storage): keep Direct reads independent of registration
rabii-chaarani Oct 20, 2026
aa7db37
docs(storage): record integrated review fixes and final foundation ch…
rabii-chaarani Oct 20, 2026
88a369f
docs(storage): link cleanup draft and preserve open acceptance gates
rabii-chaarani Oct 20, 2026
9836234
feat(storage): add bounded maintenance preparation primitives
rabii-chaarani Oct 21, 2026
7b0ad57
feat(storage)!: retain native database exclusion for handle lifetime
rabii-chaarani Oct 21, 2026
7bbed8e
docs(storage): preserve approved cleanup foundation evidence
rabii-chaarani Oct 21, 2026
993212c
feat(storage): add fixed maintenance stamps and epoch transition
rabii-chaarani Oct 21, 2026
2ad634f
feat(storage): add bounded artifact facts and retirement codecs
rabii-chaarani Oct 21, 2026
956b46c
feat(coordinator): add joined off-slot maintenance driver
rabii-chaarani Oct 21, 2026
dc5692f
test(storage): bind cleanup qualification to fresh compiler outputs
rabii-chaarani Oct 21, 2026
23c7ece
fix(test): register maintenance budget in storage harness
rabii-chaarani Oct 21, 2026
45a9eae
fix(storage): bind artifact ownership to random root incarnation
rabii-chaarani Oct 21, 2026
74b0527
feat(storage): stream validation through bounded file sources
rabii-chaarani Oct 21, 2026
a8b1c5b
feat(storage): bind producer proofs and fixed recovery slots
rabii-chaarani Oct 21, 2026
73eaf71
fix(coordinator): cancel and join refresh before releasing ownership
rabii-chaarani Oct 21, 2026
bc43136
fix(storage): validate complete Windows path prefixes
rabii-chaarani Oct 21, 2026
61c9d26
feat(storage): add bounded native header and logical key facts
rabii-chaarani Oct 21, 2026
e3d593b
docs(storage): preserve continuation evidence and final review workflow
rabii-chaarani Oct 21, 2026
2b8b8a5
feat(storage): bind rooted publication effects to live producer guards
rabii-chaarani Oct 21, 2026
3a5003e
fix(storage): separate committed recovery from optional disposal errors
rabii-chaarani Oct 21, 2026
97c5e1d
feat(storage): parse bounded native catalog and node metadata facts
rabii-chaarani Oct 21, 2026
0302cd9
test(storage): verify graph churn against an exact clean control
rabii-chaarani Oct 21, 2026
c7c8627
feat(storage): enforce bounded canonical cleanup admission
rabii-chaarani Oct 21, 2026
2a789bf
feat(storage): publish scoped artifact origins and bounded native wit…
rabii-chaarani Oct 21, 2026
77941df
feat(storage): finish automatic graph disk cleanup
rabii-chaarani Oct 24, 2026
df86b67
fix(ci): clear platform lints and capture Linux stack failures
rabii-chaarani Oct 24, 2026
993ce0b
build(package): recompress unchanged native extension payloads
rabii-chaarani Oct 24, 2026
2553029
fix(storage): bound generation frames and preserve stopped children
rabii-chaarani Oct 24, 2026
ce49da4
test(ci): capture the remaining Linux cleanup stack path
rabii-chaarani Oct 24, 2026
84190d3
fix(storage): box terminal removal preparation state
rabii-chaarani Oct 24, 2026
c98aaad
test(ci): trace the actual failing Linux test automatically
rabii-chaarani Oct 24, 2026
4388568
fix(storage): bound legacy cohort preparation frames
rabii-chaarani Oct 24, 2026
515d96b
fix(storage): bound legacy source observation frames
rabii-chaarani Oct 24, 2026
5365514
fix(storage): bound legacy staging scope preparation
rabii-chaarani Oct 24, 2026
5e4c14d
test(ci): preserve Linux assertion output before aborts
rabii-chaarani Oct 24, 2026
be187ec
fix(storage): bound private metadata preparation frames
rabii-chaarani Oct 24, 2026
073f0fb
fix(ci): bind native tests to the captured CLI artifact
rabii-chaarani Oct 24, 2026
d2c6f7b
fix(ci): stabilize native cleanup qualification
rabii-chaarani Oct 24, 2026
8c3f6c0
fix(ci): repair native file ownership and preparation limits
rabii-chaarani Oct 24, 2026
5bcec75
fix(ci): initialize numeric projection readers on Windows
rabii-chaarani Oct 24, 2026
3b4f616
fix(ci): split macOS tests and repair Windows control handles
rabii-chaarani Oct 24, 2026
543bf24
fix(ci): retain Linux native test timeout headroom
rabii-chaarani Oct 24, 2026
65d03a0
fix(ci): check Windows control regressions before full suite
rabii-chaarani Oct 24, 2026
8d41fe8
fix(storage): finish Windows generation retirement safely
rabii-chaarani Oct 24, 2026
90f2f17
fix(ci): preserve workspace features in Windows preflight
rabii-chaarani Oct 24, 2026
0dd460a
fix(ci): pin cohort CLIs and repair Windows directory flushing
rabii-chaarani Oct 25, 2026
70b7cb0
fix(storage): align Windows I/O and recover live owner state
rabii-chaarani Oct 25, 2026
c60f143
fix(test): import Windows nonce regression writer trait
rabii-chaarani Oct 25, 2026
c1c6b06
fix(ci): isolate Windows cohorts and stabilize admission fixture
rabii-chaarani Oct 25, 2026
e1004ec
fix(storage): isolate recursive Windows directory cursors
rabii-chaarani Oct 25, 2026
ef01aab
test(storage): wait for deferred Windows generation collection
rabii-chaarani Oct 25, 2026
55819ba
feat!: limit native support to macOS ARM64 and Windows x64
rabii-chaarani Oct 25, 2026
2eb7d45
fix(ci): stabilize native deadlines and bound Windows test groups
rabii-chaarani Oct 25, 2026
c1faa03
fix(storage): recover role control intents before dispatch
rabii-chaarani Oct 25, 2026
6e1543b
test(ci): retry transient fixture startup after proven cleanup
rabii-chaarani Oct 25, 2026
5839055
fix(storage): prevent stalled Direct and legacy maintenance
rabii-chaarani Oct 26, 2026
c5b62ba
docs(spec): record approved safe COPY scope A plan
rabii-chaarani Oct 26, 2026
92f3c14
docs(spec): bind scope A user approval to committed plan
rabii-chaarani Oct 26, 2026
8e47d2b
fix(db): fail closed on uncertain Ladybug COPY outcomes
rabii-chaarani Oct 26, 2026
c8dd4ea
docs(spec): record approved resource ceiling removal
rabii-chaarani Oct 26, 2026
82077d0
docs(spec): bind user approval for ceiling removal
rabii-chaarani Oct 26, 2026
2243e59
refactor(runtime): remove workload resource ceiling enforcement
rabii-chaarani Oct 26, 2026
088415d
docs(test): record post-removal containment verification
rabii-chaarani Oct 26, 2026
862a8f8
fix(ci): compile phase trace labels only on macOS
rabii-chaarani Oct 26, 2026
d6dd344
fix(ci): repair native help and Windows fixture contracts
rabii-chaarani Oct 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 1 addition & 3 deletions .github/actions/setup-native/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ runs:
run: |
set -euo pipefail
case "${NATIVE_TARGET}:${RUNNER_OS}:${RUNNER_ARCH}" in
linux-x86_64:Linux:X64|macos-arm64:macOS:ARM64|macos-x86_64:macOS:X64|windows-x86_64:Windows:X64) ;;
macos-arm64:macOS:ARM64|windows-x86_64:Windows:X64) ;;
*)
echo "Target ${NATIVE_TARGET} does not match ${RUNNER_OS}/${RUNNER_ARCH}." >&2
exit 1
Expand Down Expand Up @@ -47,9 +47,7 @@ runs:
set -euo pipefail
version="$(awk '/^name = "lbug"/ { found=1 } found && /^version = / { gsub(/"/, "", $3); print $3; exit }' Cargo.lock)"
case "$NATIVE_TARGET" in
linux-x86_64) archive='liblbug-static-linux-x86_64-compat.tar.gz' ;;
macos-arm64) archive='liblbug-static-osx-arm64.tar.gz' ;;
macos-x86_64) archive='liblbug-static-osx-x86_64.tar.gz' ;;
windows-x86_64) archive='liblbug-static-windows-x86_64.zip' ;;
*) echo "Unsupported native target: $NATIVE_TARGET" >&2; exit 1 ;;
esac
Expand Down
4 changes: 0 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,8 @@ jobs:
fail-fast: false
matrix:
include:
- target: linux-x86_64
run-tests: true
- target: macos-arm64
run-tests: true
- target: macos-x86_64
run-tests: false
- target: windows-x86_64
run-tests: true
uses: ./.github/workflows/native.yml
Expand Down
61 changes: 56 additions & 5 deletions .github/workflows/native.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,15 @@ env:
CARGO_NET_RETRY: "10"

jobs:
native:
name: native artifact (${{ inputs.target }})
runs-on: ${{ fromJSON('{"linux-x86_64":"ubuntu-latest","macos-arm64":"macos-latest","macos-x86_64":"macos-15-intel","windows-x86_64":"windows-2022"}')[inputs.target] }}
tests:
name: native tests (${{ inputs.target }}, ${{ matrix.cohort }}${{ matrix.shard > 0 && format(', shard {0}', matrix.shard) || '' }})
if: inputs.run-tests
strategy:
fail-fast: false
matrix:
cohort: [unit, generation, integration]
shard: ${{ fromJSON(inputs.target == 'windows-x86_64' && '[1,2,3,4]' || '[0]') }}
runs-on: ${{ fromJSON('{"macos-arm64":"macos-latest","windows-x86_64":"windows-2022"}')[inputs.target] }}
timeout-minutes: 90
permissions:
contents: read
Expand All @@ -46,8 +52,53 @@ jobs:
target: ${{ inputs.target }}

- name: Run platform tests
if: inputs.run-tests
run: cargo run -p xtask -- native-test --target "${{ inputs.target }}"
id: platform_tests
timeout-minutes: ${{ inputs.target == 'macos-arm64' && 75 || 85 }}
shell: bash
env:
RUST_TEST_NOCAPTURE: "1"
RUST_TEST_THREADS: "1"
SOURCE_SHA: ${{ inputs.source-sha }}
TMP: ${{ runner.temp }}
TEMP: ${{ runner.temp }}
run: |
set -o pipefail
mkdir -p diagnostics
printf '%s\n' "$SOURCE_SHA" > diagnostics/source-sha.txt
shard_args=()
if [[ '${{ inputs.target }}' == 'windows-x86_64' ]]; then
export CGRAPH_CLEANUP_TRACE=1
shard_args=(--shard '${{ matrix.shard }}/4')
fi
cargo run -p xtask -- native-test --target "${{ inputs.target }}" --cohort "${{ matrix.cohort }}" "${shard_args[@]}" 2>&1 | tee diagnostics/platform-test.log

- name: Upload native test diagnostics
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: test-diagnostics-${{ inputs.target }}-${{ matrix.cohort }}-shard${{ matrix.shard }}-${{ github.run_attempt }}
path: diagnostics/
if-no-files-found: warn
retention-days: 3

native:
name: native artifact (${{ inputs.target }})
needs: tests
if: ${{ always() && !cancelled() && (!inputs.run-tests || needs.tests.result == 'success') }}
runs-on: ${{ fromJSON('{"macos-arm64":"macos-latest","windows-x86_64":"windows-2022"}')[inputs.target] }}
timeout-minutes: 90
permissions:
contents: read
steps:
- name: Check out source SHA
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
ref: ${{ inputs.source-sha }}

- name: Set up native dependencies
uses: ./.github/actions/setup-native
with:
target: ${{ inputs.target }}

- name: Build and smoke release artifact
run: cargo run -p xtask -- native-artifact --target "${{ inputs.target }}" --commit-sha "${{ inputs.source-sha }}" --output "dist/${{ inputs.target }}"
Expand Down
6 changes: 2 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ jobs:
artifact_count="$(gh api "repos/$GITHUB_REPOSITORY/actions/runs/$REQUESTED_CI_RUN_ID/artifacts?per_page=100" --jq '[.artifacts[] | select(.expired == false and (.name | startswith("native-")))] | length')"
{
echo "ci-run-id=$REQUESTED_CI_RUN_ID"
if [[ "$artifact_count" == '4' ]]; then
if [[ "$artifact_count" == '2' ]]; then
echo 'artifacts-available=true'
else
echo 'artifacts-available=false'
Expand All @@ -229,7 +229,7 @@ jobs:
artifact_count="$(gh api "repos/$GITHUB_REPOSITORY/actions/runs/$run_id/artifacts?per_page=100" --jq '[.artifacts[] | select(.expired == false and (.name | startswith("native-")))] | length')"
{
echo "ci-run-id=$run_id"
if [[ "$artifact_count" == '4' ]]; then
if [[ "$artifact_count" == '2' ]]; then
echo "artifacts-available=true"
else
echo "artifacts-available=false"
Expand Down Expand Up @@ -322,9 +322,7 @@ jobs:
fail-fast: false
matrix:
target:
- linux-x86_64
- macos-arm64
- macos-x86_64
- windows-x86_64
uses: ./.github/workflows/native.yml
with:
Expand Down
4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ resolver = "2"
[profile.native-tests]
inherits = "release"
debug-assertions = true
overflow-checks = true
panic = "unwind"

[lib]
name = "codebase_graph"
Expand Down Expand Up @@ -66,7 +68,7 @@ walkdir = "2"
cc = "1.2"

[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.61", features = ["Win32_Foundation", "Win32_System_ProcessStatus", "Win32_System_Threading", "Win32_System_JobObjects", "Win32_System_SystemServices", "Win32_Security", "Win32_Security_Authorization", "Win32_System_Memory", "Win32_Storage_FileSystem", "Win32_System_Pipes", "Win32_System_Console", "Win32_System_Diagnostics_ToolHelp"] }
windows-sys = { version = "0.61", features = ["Win32_Foundation", "Win32_Globalization", "Win32_System_ProcessStatus", "Win32_System_Threading", "Win32_System_JobObjects", "Win32_System_SystemServices", "Win32_Security", "Win32_Security_Authorization", "Win32_System_Memory", "Win32_Storage_FileSystem", "Win32_System_Pipes", "Win32_System_Console", "Win32_System_Diagnostics_ToolHelp", "Win32_System_IO", "Wdk_Foundation", "Wdk_Storage_FileSystem"] }

[[bin]]
name = "codebase-graph"
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ This is illustrative compact block output; exact matches depend on the graph.

## Quick start

Supported platforms are macOS on Apple Silicon (ARM64) and Windows x86_64.
Linux and Intel macOS are no longer supported.

Install from crates.io with Cargo (Rust 1.82 or newer) from the repository you
want to index:

Expand Down
Loading
Loading