Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
6eef9a5
Reconcile errata + ledger: close persistence deferrals
AtHeartEngineer Jul 18, 2026
35b16db
Trim comment cruft in replica, recovery, vault
AtHeartEngineer Jul 18, 2026
122a5b2
Trim comment cruft in carapaced (comment-only)
AtHeartEngineer Jul 18, 2026
cb54e7f
Harden security, recovery, and release assurance
AtHeartEngineer Aug 2, 2026
b4b3eed
Fix clean CI reproducibility
AtHeartEngineer Aug 2, 2026
aa95927
Align the supply-chain source gate
AtHeartEngineer Aug 2, 2026
f85386a
Make assurance gates portable
AtHeartEngineer Aug 2, 2026
27c798f
Fix cross-platform release gates
AtHeartEngineer Aug 2, 2026
ceea9d2
Resolve supply-chain policy findings
AtHeartEngineer Aug 2, 2026
ff81412
Handle pinned path dependencies
AtHeartEngineer Aug 2, 2026
4f30d2d
Compile migration durability on Windows
AtHeartEngineer Aug 2, 2026
108d8ee
Keep the Windows state fixture gate
AtHeartEngineer Aug 2, 2026
e168f29
Keep fuzz contracts on each system
AtHeartEngineer Aug 2, 2026
53e3b03
Fix Windows restore lint
AtHeartEngineer Aug 2, 2026
ab94ebd
Limit migration test helpers to Unix
AtHeartEngineer Aug 2, 2026
bfcd9de
Fix Windows state tool lint
AtHeartEngineer Aug 2, 2026
06c3805
Keep control API tests off Windows
AtHeartEngineer Aug 2, 2026
2d9350b
Keep API server tests off Windows
AtHeartEngineer Aug 2, 2026
6a0768e
Avoid directory sync on Windows
AtHeartEngineer Aug 2, 2026
3ea85b3
Limit streaming disclosure test to Unix
AtHeartEngineer Aug 2, 2026
98fb2aa
Scope disclosure fixture import to Unix
AtHeartEngineer Aug 2, 2026
f1b0796
Limit network reconstruction test to Unix
AtHeartEngineer Aug 2, 2026
86605a3
Fail closed on Windows restore activation
AtHeartEngineer Aug 2, 2026
028e876
Limit replacement journal test to Unix
AtHeartEngineer Aug 2, 2026
7fc5e0e
Limit vault reconstruction tests to Unix
AtHeartEngineer Aug 2, 2026
907c9f9
Limit protected startup test to Unix
AtHeartEngineer Aug 2, 2026
7ce9808
Measure ceremony commit amplification directly
AtHeartEngineer Aug 2, 2026
46a315c
Validate Windows tests before hosted CI
AtHeartEngineer Aug 2, 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
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
fuzz/corpus/** binary
crates/carapaced/tests/fixtures/*.b64 text eol=lf
crates/carapaced/tests/fixtures/*.tsv text eol=lf
190 changes: 184 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,127 @@ permissions:
contents: read

jobs:
cbor-oracle:
runs-on: ubuntu-latest
steps:
- name: Checkout Carapace
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
with:
path: Carapace

- name: Install Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
cache: pip
cache-dependency-path: Carapace/requirements-cbor-vectors.txt

- name: Install pinned oracle dependencies
run: python -m pip install --requirement Carapace/requirements-cbor-vectors.txt

- name: Check independent CBOR vectors
working-directory: Carapace
run: python cbor_vectors.py --check

gui:
runs-on: ubuntu-latest
steps:
- name: Checkout Carapace
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
with:
path: Carapace

- name: Install pinned Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24.18.0
cache: npm
cache-dependency-path: Carapace/gui/package-lock.json

- name: Install pinned npm
run: npm install --global npm@11.16.0

- name: Verify Node.js tools
run: |
test "$(node --version)" = "v24.18.0"
test "$(npm --version)" = "11.16.0"

- name: Install locked GUI dependencies
working-directory: Carapace/gui
run: npm ci

- name: Check GUI source
working-directory: Carapace/gui
run: npm run check

- name: Test GUI contracts
working-directory: Carapace/gui
run: npm test

- name: Install pinned browser runtime
working-directory: Carapace/gui
run: npx playwright install --with-deps chromium

- name: Test GUI in a real browser
working-directory: Carapace/gui
run: npm run test:browser

- name: Build embedded GUI
working-directory: Carapace/gui
run: npm run build

- name: Verify embedded GUI is current
working-directory: Carapace
run: git diff --exit-code -- crates/carapace-api/static

supply-chain:
runs-on: ubuntu-latest
steps:
- name: Checkout Carapace
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
with:
path: Carapace

- name: Read pinned Chela revision
id: chela-pin
shell: bash
run: |
revision="$(tr -d '\r\n' < Carapace/chela-revision.txt)"
[[ "$revision" =~ ^[0-9a-f]{40}$ ]]
echo "revision=$revision" >> "$GITHUB_OUTPUT"

- name: Checkout chela
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
with:
repository: SecretSplitKit/Chela
ref: ${{ steps.chela-pin.outputs.revision }}
token: ${{ secrets.CHELA_CHECKOUT_TOKEN || github.token }}
path: chela

- name: Check tracked files for secrets
working-directory: Carapace
run: scripts/check-tracked-secrets.sh

- name: Check supply-chain configuration
working-directory: Carapace
run: scripts/check-supply-chain-config.sh

- name: Check dependency licenses, sources, bans, and advisories
uses: EmbarkStudios/cargo-deny-action@d755fbddac377c2d538f556dd0f9c7728c7f73e4 # v2.0.14
with:
rust-version: 1.95.0
manifest-path: Carapace/Cargo.toml
arguments: --all-features
command-arguments: --config /github/workspace/Carapace/deny.toml

- name: Prepare lock file for cargo audit
run: cp Carapace/Cargo.lock Cargo.lock

- name: Audit Rust dependencies
uses: rustsec/audit-check@69366f33c96575abad1ee0dba8212993eecbe998 # v2.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}

test:
strategy:
fail-fast: false
Expand All @@ -30,20 +151,77 @@ jobs:
with:
path: Carapace

- name: Read pinned Chela revision
id: chela-pin
shell: bash
run: |
revision="$(tr -d '\r\n' < Carapace/chela-revision.txt)"
[[ "$revision" =~ ^[0-9a-f]{40}$ ]]
echo "revision=$revision" >> "$GITHUB_OUTPUT"
echo "CHELA_REV=$revision" >> "$GITHUB_ENV"

- name: Checkout chela
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
with:
repository: SecretSplitKit/Chela
ref: main
# The default GITHUB_TOKEN is scoped to THIS repo only and cannot read the
# separate private Chela repo. Provide a PAT/App token as the
# CHELA_CHECKOUT_TOKEN secret; the fallback works only if Chela is public.
ref: ${{ steps.chela-pin.outputs.revision }}
# The default GITHUB_TOKEN is scoped to this repository. Use the
# optional token if Chela becomes private.
token: ${{ secrets.CHELA_CHECKOUT_TOKEN || github.token }}
path: chela

- name: Install stable Rust
- name: Verify Chela revision
shell: bash
run: |
actual_revision="$(git -C chela rev-parse HEAD)"
test "$actual_revision" = "$CHELA_REV"

- name: Check release workflow
shell: bash
working-directory: Carapace
run: scripts/check-release-workflow.sh

- name: Check shared restore layout
shell: bash
working-directory: Carapace
run: scripts/check-restore-layout.sh

- name: Check requirement-to-test inventory
shell: bash
working-directory: Carapace
run: scripts/check-test-inventory.sh

- name: Check operational log sources
shell: bash
working-directory: Carapace
run: scripts/check-operational-logs.sh

- name: Check state fixture coverage and integrity
shell: bash
working-directory: Carapace
run: scripts/state-fixtures.sh check

- name: Install fuzz toolchain
if: runner.os == 'Linux'
uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 # stable
with:
toolchain: nightly-2026-06-01

- name: Run all fuzz targets with bounded budgets
shell: bash
working-directory: Carapace
run: |
if [[ "$RUNNER_OS" == "Linux" ]]; then
cargo install cargo-fuzz --version 0.13.1 --locked
scripts/check-fuzz-targets.sh --smoke
else
scripts/check-fuzz-targets.sh
fi

- name: Install pinned Rust
uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 # stable
with:
toolchain: 1.95.0
components: clippy, rustfmt

- name: Cache cargo
Expand All @@ -67,4 +245,4 @@ jobs:

- name: cargo test
working-directory: Carapace
run: cargo test --workspace
run: cargo test --workspace --locked
Loading
Loading