Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
147 commits
Select commit Hold shift + click to select a range
5625066
feat: add universal environments and agent capture
forhappy Jul 12, 2026
38a25c8
fix: persist agent hook version ranges
forhappy Jul 12, 2026
df3d286
feat(trail): clarify identifier prefixes
forhappy Jul 12, 2026
9027928
Enhance trail agent UX
forhappy Jul 12, 2026
8d619c4
feat(cli)!: cut over terminal UX
forhappy Jul 12, 2026
3ad0a60
feat(trail)!: unify lane merge interfaces
forhappy Jul 12, 2026
eaaade5
docs: design lane merge queue cutover
forhappy Jul 12, 2026
e256595
docs: plan lane merge queue cutover
forhappy Jul 12, 2026
a85d93b
refactor(trail)!: make merge queue lane-only
forhappy Jul 12, 2026
0579da4
refactor(cli)!: nest merge queue under lanes
forhappy Jul 12, 2026
9eb6f34
refactor(api)!: expose lane merge queue routes
forhappy Jul 12, 2026
9ea7d9a
refactor(mcp)!: expose lane merge queue tools
forhappy Jul 12, 2026
d262d22
docs: document lane merge queue cutover
forhappy Jul 12, 2026
bb3888d
fix(trail): restore green output contracts
forhappy Jul 12, 2026
c0da235
docs: design fuse cow hard cutover
forhappy Jul 12, 2026
7f0c119
chore: ignore implementation worktrees
forhappy Jul 12, 2026
16f09d1
docs: plan fuse cow hard cutover
forhappy Jul 12, 2026
9a9278e
feat: hard cut over to fuse cow
forhappy Jul 12, 2026
5b50912
feat: rename full cow to native cow
forhappy Jul 12, 2026
65d52cd
docs: design strict native cow materialization
forhappy Jul 12, 2026
7df8bdb
docs: plan strict native cow materialization
forhappy Jul 12, 2026
9b05618
feat: enforce strict native cow materialization
forhappy Jul 12, 2026
e78fcb0
feat: harden native cow lifecycle reporting
forhappy Jul 12, 2026
751411f
fix: preserve live cow materializations
forhappy Jul 12, 2026
c21d863
docs: design NFS setattr checkpoint fix
forhappy Jul 12, 2026
04cb4ec
fix: ignore empty workspace setattr
forhappy Jul 12, 2026
ac2a101
docs: design unified agent setup
forhappy Jul 13, 2026
5d39486
docs: split ACP and hooks setup
forhappy Jul 13, 2026
a1f4da9
docs: design trusted git handoff performance
forhappy Jul 13, 2026
5f7010d
feat: split agent ACP and hooks setup
forhappy Jul 13, 2026
961a639
docs: plan trusted git handoff performance
forhappy Jul 13, 2026
a8c938f
feat: add stable git handoff errors
forhappy Jul 13, 2026
17f3ce0
perf: require mapped delta git export
forhappy Jul 13, 2026
017eaca
test: cover git export policy modes
forhappy Jul 13, 2026
5ad24c4
perf: reuse git state during agent apply
forhappy Jul 13, 2026
b5bdf54
test: lock down mapped agent handoff
forhappy Jul 13, 2026
0d2c663
test: verify git-only symlink tree entry
forhappy Jul 13, 2026
6f9e4ba
perf: gate high-level git apply at scale
forhappy Jul 13, 2026
a16976b
test: harden git scale gates
forhappy Jul 13, 2026
337fcff
fix: avoid local clone race in scale harness
forhappy Jul 13, 2026
e60b607
docs: design full ACP v1 conformance
forhappy Jul 13, 2026
c345dbd
perf: batch mapped git plumbing
forhappy Jul 13, 2026
13f1f4d
docs: plan full ACP v1 conformance
forhappy Jul 13, 2026
6bcf94a
fix: harden batched git plumbing
forhappy Jul 13, 2026
9eb245a
docs: design persistent path invariant index
forhappy Jul 13, 2026
30e9bcc
perf: add full root path invariant index
forhappy Jul 13, 2026
7742b1d
test: pin official ACP v1 contract
forhappy Jul 13, 2026
885a0a8
fix: exclude filtered paths from case fold index
forhappy Jul 13, 2026
4808bf7
refactor: model ACP JSON-RPC frames
forhappy Jul 13, 2026
616ca4f
perf: add indexed path invariant updates
forhappy Jul 13, 2026
1763181
fix: preserve ACP transport semantics
forhappy Jul 13, 2026
a310544
feat: validate ACP v1 transformations
forhappy Jul 13, 2026
17bb9f8
perf: use indexed path validation in hot mutations
forhappy Jul 13, 2026
9565ea1
fix(acp): keep editor writes in lanes
forhappy Jul 13, 2026
ceb916f
fix: preserve ACP workspace path semantics
forhappy Jul 13, 2026
759cb52
fix: deduplicate Trail-owned MCP identity
forhappy Jul 13, 2026
80be733
fix: harden indexed record preflight
forhappy Jul 13, 2026
7d9dcfc
fix: preserve ignored case aliases in manifests
forhappy Jul 13, 2026
8c80444
feat: journal ACP capture off the relay path
forhappy Jul 13, 2026
c70119d
perf: avoid reopening visible manifest paths
forhappy Jul 13, 2026
00bf631
feat: capture ACP session lifecycle
forhappy Jul 13, 2026
ea3ed39
perf: repair legacy path invariant indexes
forhappy Jul 13, 2026
f382127
feat: capture ACP turns and cancellation
forhappy Jul 13, 2026
502b98d
feat: capture every ACP session update
forhappy Jul 13, 2026
019ffbd
docs: specify correctness-first change ledger
forhappy Jul 13, 2026
9211b55
feat: capture ACP client callbacks
forhappy Jul 13, 2026
25447ac
fix: keep ACP capture shutdown bounded
forhappy Jul 13, 2026
785da90
test: enforce the ACP v1 method matrix
forhappy Jul 13, 2026
74ef18f
fix: harden legacy path index repair
forhappy Jul 13, 2026
0649dc2
fix: avoid nested open recovery self-lock
forhappy Jul 13, 2026
a40cb67
test: gate ACP v1 faults and interoperability
forhappy Jul 13, 2026
b16ffb4
perf: gate path-index structure at scale
forhappy Jul 13, 2026
fe3805a
docs: publish ACP v1 compatibility evidence
forhappy Jul 13, 2026
de201e5
fix: satisfy ACP v1 release gates
forhappy Jul 13, 2026
251ee1c
fix: count full root traversals in path metrics
forhappy Jul 13, 2026
95c92f0
perf: add opt-in operation metrics substrate
forhappy Jul 13, 2026
cd31cb1
perf: index selected worktree cache updates
forhappy Jul 13, 2026
d3ae366
fix: preserve general index update ordering
forhappy Jul 13, 2026
1562e9f
perf: batch canonical selected root reads
forhappy Jul 13, 2026
97774ca
perf: linearize selected record construction
forhappy Jul 13, 2026
feec2f1
test: isolate daemon snapshot rebuild regression
forhappy Jul 13, 2026
3616dea
perf: reuse selected operation policy
forhappy Jul 13, 2026
52e4b1c
build: upgrade Trail to Rust 2024
forhappy Jul 13, 2026
5f48afe
Merge branch 'perf/trusted-git-handoff'
forhappy Jul 13, 2026
780ef29
fix: drain ACP output after child exit
forhappy Jul 13, 2026
e8c98ba
merge: ACP v1 conformance and Rust 2024 upgrade
forhappy Jul 13, 2026
d46e950
docs: activate changed-path ledger hard cutover
forhappy Jul 13, 2026
e8894eb
docs: plan activated changed-path ledger
forhappy Jul 13, 2026
9250041
feat: enforce schema v18 hard cutover
forhappy Jul 13, 2026
223c387
fix: harden schema v18 immutable preflight
forhappy Jul 13, 2026
17bff71
feat: add changed-path ledger state store
forhappy Jul 13, 2026
4d64c67
fix: harden changed-path ledger snapshots
forhappy Jul 13, 2026
11a2913
feat: add durable changed-path observer log
forhappy Jul 13, 2026
d90d256
fix: harden observer log crash protocol
forhappy Jul 14, 2026
7da02b7
fix: close observer log re-review gaps
forhappy Jul 14, 2026
06fbff9
chore: remove tracked SDD scratch report
forhappy Jul 14, 2026
80f668a
feat: persist changed-path policy dependencies
forhappy Jul 14, 2026
8cd9a9f
fix: fail closed on policy dependency reuse
forhappy Jul 14, 2026
043e53f
fix: seal policy trust and config discovery
forhappy Jul 14, 2026
a926b5a
fix: harden policy config and file reads
forhappy Jul 14, 2026
2ff2e6d
fix: bind policy selectors and unsafe paths
forhappy Jul 14, 2026
0788d1c
feat: add streamed changed-path reconciliation
forhappy Jul 14, 2026
64b5d63
fix: seal reconciliation publication
forhappy Jul 14, 2026
71cc37f
fix: isolate reconciliation callback staging
forhappy Jul 14, 2026
eeed30c
fix: bind reconciliation to observer continuity
forhappy Jul 14, 2026
a545fc1
fix: make ACP checkpoint recording failure-safe
forhappy Jul 14, 2026
c64c0c2
fix: revalidate observer lease at publication
forhappy Jul 14, 2026
1dd5d01
feat: recover changed-path intents and lifecycle
forhappy Jul 14, 2026
92bd4bd
fix: harden changed-path recovery durability
forhappy Jul 14, 2026
b3015d2
fix: authenticate intent sidecars and stage restores
forhappy Jul 14, 2026
0e71059
fix changed-path approval review gaps
forhappy Jul 14, 2026
479cd07
fix final changed-path authority gaps
forhappy Jul 14, 2026
2646cdb
fix durable segment deletion retries
forhappy Jul 14, 2026
a94e9c1
fix retain quiesced observer segments
forhappy Jul 14, 2026
90d7d39
fix reject orphan quarantine namespaces
forhappy Jul 14, 2026
4ffb5c2
fix changed-path quarantine allocation recovery
forhappy Jul 14, 2026
d13bab6
fix: bind segment quarantine allocations atomically
forhappy Jul 14, 2026
17b35a6
fix: harden schema handoff and segment retirement
forhappy Jul 14, 2026
090ff20
chore: exclude task review scratch artifact
forhappy Jul 14, 2026
b435ff1
fix: validate immutable ledger semantics
forhappy Jul 14, 2026
f7bd3fb
fix: bind validated schema handoffs across processes
forhappy Jul 14, 2026
52ef89a
fix: tolerate concurrent volatile shm transitions
forhappy Jul 14, 2026
f3d7a32
fix: avoid idle schema fanout delay
forhappy Jul 14, 2026
d799fe5
fix: detach schema validation fanout
forhappy Jul 14, 2026
6e59f9c
fix: clean up detached schema fanout
forhappy Jul 14, 2026
aa3de6e
fix: make schema fanout lifecycle nonblocking
forhappy Jul 14, 2026
3a65b83
feat: add qualified Linux change observer
forhappy Jul 14, 2026
10a3efe
fix: bind Linux observer proof to durable publication
forhappy Jul 15, 2026
e25f998
fix: observe internal policy dependencies on Linux
forhappy Jul 15, 2026
7aa736f
fix: activate authenticated schema fanout on Linux
forhappy Jul 15, 2026
e107e86
feat: add qualified macOS change observer
forhappy Jul 15, 2026
34429ca
fix: harden macOS observer continuity
forhappy Jul 15, 2026
0f4c08f
fix: revalidate macOS observer authority
forhappy Jul 15, 2026
0a5ee9a
test: isolate macOS observer integration
forhappy Jul 15, 2026
5aca1e4
feat: auto-start authenticated workspace daemon
forhappy Jul 15, 2026
dec4629
fix: harden workspace daemon authority
forhappy Jul 15, 2026
01508bf
fix: close daemon cleanup and transition races
forhappy Jul 15, 2026
6f91386
fix: cap pre-intent daemon socket artifacts
forhappy Jul 15, 2026
fb40754
Merge main and integrate ACP v1
forhappy Jul 15, 2026
701b994
fix: order ACP capture finalization
forhappy Jul 15, 2026
117c5b2
fix: persist ACP terminal ordering
forhappy Jul 15, 2026
daef66b
fix: parse ACP frames linearly
forhappy Jul 15, 2026
6a938d0
feat: consume fenced changed-path snapshots
forhappy Jul 15, 2026
49856ef
fix: close fenced snapshot review gaps
forhappy Jul 15, 2026
c24ed27
fix: coordinate observer record publication
forhappy Jul 15, 2026
5ed9603
feat: cover workspace and lane producers with intents
forhappy Jul 15, 2026
9e10f7c
feat: scale changed-path ledger for large repositories
forhappy Jul 16, 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
  •  
  •  
  •  
189 changes: 189 additions & 0 deletions .github/workflows/changed-path-ledger-native.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
name: Changed-path Ledger Native Gates

# Required release/merge gate: branch protection and release automation must
# require both matrix jobs from this workflow for the commit being released.

on:
workflow_call:
inputs:
plan:
description: "cargo-dist plan JSON (accepted for plan-job compatibility)"
required: false
type: string
default: ""
scale_files:
description: "Repository files (100000 or 1000000)"
required: false
type: string
default: "100000"
require_cow:
description: "Require the native COW checkpoint cases"
required: false
type: boolean
default: true
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: "17 6 * * 1-5"
- cron: "47 8 * * *"
workflow_dispatch:
inputs:
scale_files:
description: "Repository files (100000 or 1000000)"
required: true
default: "100000"
require_cow:
description: "Require the native COW checkpoint cases"
type: boolean
required: true
default: false

jobs:
native:
name: ${{ matrix.os }} native ledger
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
timeout-minutes: 720
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Select scheduled scale
id: scale
shell: bash
run: |
requested_files="${{ inputs.scale_files }}"
if [ -n "$requested_files" ]; then
files="$requested_files"
elif [ "${{ github.event.schedule }}" = "47 8 * * *" ]; then
files=1000000
else
files=100000
fi
case "$files" in 100000|1000000) ;; *) exit 2 ;; esac
if [ -n "$requested_files" ]; then
require_cow="${{ inputs.require_cow }}"
else
require_cow=true
fi
echo "files=$files" >> "$GITHUB_OUTPUT"
echo "require_cow=$require_cow" >> "$GITHUB_OUTPUT"
if [ "$require_cow" = true ]; then
echo "cow_mode=1" >> "$GITHUB_OUTPUT"
else
echo "cow_mode=auto" >> "$GITHUB_OUTPUT"
fi
- name: Prove native filesystem
id: filesystem
shell: bash
run: |
proof_root="${{ runner.temp }}/trail-cli-scale-native-${{ runner.os }}-${{ github.run_id }}"
mkdir -p "$proof_root"
device=""
case "${{ runner.os }}" in
Linux)
filesystem="$(findmnt --noheadings --output FSTYPE --target "${{ runner.temp }}" | tr -d '[:space:]')"
[ "$filesystem" = ext4 ] || {
echo "native Linux ledger gate requires ext4, found $filesystem" >&2
exit 1
}
;;
macOS)
device="$(df -P "${{ runner.temp }}" | awk 'NR == 2 { print $1 }')"
[ -n "$device" ] || {
echo "could not resolve the device containing ${{ runner.temp }}" >&2
exit 1
}
filesystem="$(diskutil info "$device" | awk -F: '/File System Personality/ {gsub(/^[[:space:]]+|[[:space:]]+$/, "", $2); print tolower($2); exit}')"
[ "$filesystem" = apfs ] || {
echo "native macOS ledger gate requires APFS on $device, found $filesystem" >&2
exit 1
}
;;
*) exit 2 ;;
esac
printf 'runner_os=%s\nfilesystem=%s\ndevice=%s\nroot=%s\n' \
"${{ runner.os }}" "$filesystem" "$device" "${{ runner.temp }}" \
>"$proof_root/native-filesystem.txt"
echo "type=$filesystem" >> "$GITHUB_OUTPUT"
- name: Run native qualification suite
shell: bash
run: |
case "${{ runner.os }}" in
Linux) cargo test -p trail --test changed_path_ledger_linux -- --nocapture ;;
macOS) cargo test -p trail --test changed_path_ledger_macos -- --nocapture ;;
*) exit 2 ;;
esac
- name: Nightly daemon restart and crash sampling
if: steps.scale.outputs.files == '1000000'
run: |
cargo test -p trail --test changed_path_ledger_daemon -- --nocapture
cargo test -p trail --test changed_path_ledger_recovery -- --nocapture
- name: Build release binary
run: cargo build -p trail --release
- name: Run native changed-path ledger scale
run: scripts/cli-scale-bench.sh changed-path-ledger
env:
TRAIL_BIN: ${{ github.workspace }}/target/release/trail
TRAIL_SCALE_BASE: ${{ runner.temp }}
TRAIL_SCALE_LABEL: native-${{ runner.os }}-${{ github.run_id }}
TRAIL_SCALE_FILES: ${{ steps.scale.outputs.files }}
TRAIL_CHANGED_PATH_COW: ${{ steps.scale.outputs.cow_mode }}
TRAIL_EXPECTED_NATIVE_FILESYSTEM: ${{ steps.filesystem.outputs.type }}
- name: Enforce native thresholds
shell: bash
run: |
scale="${{ steps.scale.outputs.files }}"
root="${{ runner.temp }}/trail-cli-scale-native-${{ runner.os }}-${{ github.run_id }}/$scale"
case "${{ runner.os }}:$scale" in
Linux:1000000)
status=30 diff=45 record=60 materialized=300 patch=60 cow_seconds=600 cold=900 rss=3221225472 ;;
macOS:1000000)
status=45 diff=60 record=90 materialized=420 patch=90 cow_seconds=900 cold=1200 rss=4294967296 ;;
Linux:100000)
status=15 diff=20 record=30 materialized=120 patch=30 cow_seconds=240 cold=300 rss=3221225472 ;;
macOS:100000)
status=25 diff=35 record=45 materialized=180 patch=45 cow_seconds=360 cold=450 rss=4294967296 ;;
*) exit 2 ;;
esac
cow_args=()
if [ "${{ steps.scale.outputs.require_cow }}" = "true" ]; then
cow_args=(--require-cow)
fi
cold_args=()
if [ "$scale" = 1000000 ]; then
cold_args=(--require-cold-reconcile)
fi
python3 scripts/check-changed-path-ledger-thresholds.py \
"$root/results.tsv" \
"$root/structural-metrics.jsonl" \
--oracle "$root/oracle-results.tsv" \
"${cow_args[@]}" \
"${cold_args[@]}" \
--max-seconds "workspace_status=$status" \
--max-seconds "workspace_diff=$diff" \
--max-seconds "workspace_record=$record" \
--max-seconds "materialized_lane_record=$materialized" \
--max-seconds "structured_patch=$patch" \
--max-seconds "cow_checkpoint=$cow_seconds" \
--max-seconds "cold_reconcile=$cold" \
--max-rss-bytes "workspace_status=$rss" \
--max-rss-bytes "workspace_diff=$rss" \
--max-rss-bytes "workspace_record=$rss" \
--max-rss-bytes "materialized_lane_record=$rss" \
--max-rss-bytes "structured_patch=$rss" \
--max-rss-bytes "cow_checkpoint=$rss" \
--max-rss-bytes "cold_reconcile=$rss"
- name: Upload native changed-path ledger artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: changed-path-ledger-${{ runner.os }}-${{ steps.scale.outputs.files }}
path: ${{ runner.temp }}/trail-cli-scale-native-${{ runner.os }}-${{ github.run_id }}
101 changes: 90 additions & 11 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,31 @@ on:
push:
pull_request:
workflow_dispatch:
schedule:
- cron: "17 9 * * 1"

jobs:
acp-v1-reference-interop:
name: ACP v1 official-type interoperability
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Official ACP v1 peer interoperability
run: scripts/test-acp-v1-reference-interop.sh

acp-v1-schema-drift:
name: ACP v1 upstream schema drift
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Compare pinned ACP v1 artifacts with upstream
run: scripts/check-acp-v1-schema-drift.sh

test:
runs-on: ubuntu-latest
steps:
Expand All @@ -24,6 +47,14 @@ jobs:
run: cargo test -p trail
- name: Scale Benchmark Syntax
run: bash -n scripts/cli-scale-bench.sh
- name: Scale Threshold Checker Tests
run: >-
python3 -m unittest
scripts/test_cli_scale_bench_source.py
scripts/test_check_cli_scale_thresholds.py
scripts/test_check_changed_path_ledger_thresholds.py
scripts/test_extract_agent_git_performance.py
scripts/test_extract_path_index_performance.py
- name: Scale Benchmark Smoke
run: make bench-cli-scale-smoke
env:
Expand Down Expand Up @@ -55,7 +86,13 @@ jobs:
daemon_cli_history=10
daemon_cli_code_from=10
agent_apply_patch=30
merge_queue_run=30
path_index_rename_patch=30
path_index_empty_patch=30
path_index_record=30
agent_git_apply_dry_run=15
agent_git_apply=20
agent_git_apply_missing_mapping=5
lane_merge_queue_run=30
agent_spawn_sparse=15
agent_read_sparse_hydrate_neighbors=15
agent_sync_sparse_dir=15
Expand All @@ -70,6 +107,50 @@ jobs:
dbstat_repo_prolly_nodes=32000000
object_kind_repo_TextContent_bytes=16000000
object_count=20000
agent_git_changed_paths=1
agent_git_blob_writes=1
agent_git_plumbing_commands=5
patch_path_index_lookup_count=5
patch_path_index_full_root_path_load_count=0
patch_path_index_full_filesystem_path_scan_count=0
record_path_index_lookup_count=1
record_path_index_full_root_path_load_count=0
record_path_index_full_filesystem_path_scan_count=0
empty_root_patch_path_index_lookup_count=1
empty_root_patch_path_index_full_root_path_load_count=0
empty_root_patch_path_index_full_filesystem_path_scan_count=0
rename_patch_path_index_lookup_count=2
rename_patch_path_index_full_root_path_load_count=0
rename_patch_path_index_full_filesystem_path_scan_count=0
--metric-equals
agent_git_export_mode=mapped_delta
agent_git_changed_paths=1
patch_path_index_mode=indexed
record_path_index_mode=indexed
empty_root_patch_path_index_mode=indexed
rename_patch_path_index_mode=indexed
- name: Changed-path Ledger 1k Benchmark
run: scripts/cli-scale-bench.sh changed-path-ledger
env:
TRAIL_SCALE_BASE: ${{ runner.temp }}
TRAIL_SCALE_LABEL: changed-path-ci-${{ github.run_id }}
TRAIL_SCALE_FILES: "1000"
TRAIL_CHANGED_PATH_COW: "0"
- name: Changed-path Ledger 1k Thresholds
run: >-
python3 scripts/check-changed-path-ledger-thresholds.py
"${{ runner.temp }}/trail-cli-scale-changed-path-ci-${{ github.run_id }}/1000/results.tsv"
"${{ runner.temp }}/trail-cli-scale-changed-path-ci-${{ github.run_id }}/1000/structural-metrics.jsonl"
--oracle
"${{ runner.temp }}/trail-cli-scale-changed-path-ci-${{ github.run_id }}/1000/oracle-results.tsv"
--max-seconds workspace_status=15
--max-seconds workspace_diff=20
--max-seconds workspace_record=30
--max-seconds materialized_lane_record=60
--max-seconds structured_patch=30
--max-rss-bytes workspace_status=2147483648
--max-rss-bytes workspace_diff=2147483648
--max-rss-bytes workspace_record=2147483648

prolly:
name: Prolly core
Expand All @@ -91,25 +172,25 @@ jobs:
run: cargo test -p prolly-map
- name: Clippy
run: >-
cargo clippy -p prolly-map --all-targets --features "tokio sqlite" --
cargo clippy -p prolly-map --all-targets --features tokio --
-D warnings
-A clippy::result-large-err
-A clippy::large-enum-variant
-A clippy::type-complexity
- name: Rustdoc
run: RUSTDOCFLAGS="-D warnings" cargo doc -p prolly-map --no-deps --features "tokio sqlite"
run: RUSTDOCFLAGS="-D warnings" cargo doc -p prolly-map --no-deps --features tokio
- name: Inspect binary
run: cargo check -p prolly-map --bin prolly-inspect
- name: Examples
run: cargo check -p prolly-map --examples
- name: Bench compile
run: cargo check -p prolly-map --benches --features "tokio sqlite"
run: cargo check -p prolly-map --benches --features tokio
- name: Package
run: cargo package -p prolly-map --no-verify
- name: Tokio feature tests
run: cargo test -p prolly-map --features tokio
- name: SQLite store contract
run: cargo test -p prolly-map --features sqlite --test sqlite_store
run: cargo test -p prolly-store-sqlite

prolly-optional-backends:
name: Prolly optional backend (${{ matrix.backend }})
Expand All @@ -120,11 +201,9 @@ jobs:
matrix:
include:
- backend: rocksdb
features: rocksdb
test: rocksdb_store
package: prolly-store-rocksdb
- backend: slatedb
features: slatedb
test: slatedb_store
package: prolly-store-slatedb
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -135,7 +214,7 @@ jobs:
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Store contract
run: cargo test -p prolly-map --features "${{ matrix.features }}" --test "${{ matrix.test }}"
run: cargo test -p "${{ matrix.package }}"

prolly-pglite-sidecar:
name: Prolly PGlite sidecar
Expand All @@ -155,7 +234,7 @@ jobs:
mkdir -p "${{ runner.temp }}/prolly-pglite-node"
npm install --prefix "${{ runner.temp }}/prolly-pglite-node" @electric-sql/[email protected]
- name: PGlite store contract
run: cargo test -p prolly-map --features pglite --test pglite_store
run: cargo test -p prolly-store-pglite
env:
PROLLY_PGLITE_TEST: "1"
PROLLY_PGLITE_NODE_CWD: ${{ runner.temp }}/prolly-pglite-node
Loading
Loading