Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
  •  
  •  
  •  
59 changes: 59 additions & 0 deletions .config/nextest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,65 @@ filter = 'package(krikos-docs)'
# 150s ceiling — see the profile.ci.overrides entry above for the same filter.
slow-timeout = { period = "30s", terminate-after = 5 }

# This conformance test must cross the exact 256-entry lineage-retention boundary
# before proving that a late branch is authenticated from durable events. Batching
# removes repeated store-clone overhead, but the remaining signature verification
# and durable lineage reconstruction still take roughly 15-20s in isolation and
# exceeded the generic 30s ceiling twice on a contended macOS runner. Keep the
# exception exact and finite so a genuine hang still fails.
[[profile.ci.overrides]]
filter = 'package(krikos-identity) & binary(store_conformance) & test(=evicted_lineage_conflict_is_authenticated_from_durable_sources)'
slow-timeout = { period = "30s", terminate-after = 3 }

[[profile.default.overrides]]
filter = 'package(krikos-identity) & binary(store_conformance) & test(=evicted_lineage_conflict_is_authenticated_from_durable_sources)'
slow-timeout = { period = "30s", terminate-after = 3 }

# This interchange conformance test intentionally builds 257 fully authenticated
# provider and audit records to cross the 256-item chunk boundary, then repeats
# assembly over reordered and tampered variants. It takes roughly 55s in isolation
# and exceeded the generic ceiling on a contended Ubuntu runner. Retain a finite
# 150s ceiling for this exact boundary test.
[[profile.ci.overrides]]
filter = 'package(krikos-identity) & binary(provider_wire_formats) & test(=provider_interchange_assembles_out_of_order_and_rejects_tampering)'
slow-timeout = { period = "30s", terminate-after = 5 }

[[profile.default.overrides]]
filter = 'package(krikos-identity) & binary(provider_wire_formats) & test(=provider_interchange_assembles_out_of_order_and_rejects_tampering)'
slow-timeout = { period = "30s", terminate-after = 5 }

# These all-feature durability tests intentionally perform repeated authenticated
# redb commits and crash/reopen validation. The recovery test reconciles rotation,
# publication, and notification effects across every durable boundary; the
# provider tests exercise competing four-stage appends and retain fork rejection
# after reopen. They are deterministic and bounded, but repeatedly crossed the
# generic 30s ceiling on contended Ubuntu and Windows runners. Keep each exception
# exact and finite at 90s so unrelated identity tests still fail at the generic
# ceiling.
[[profile.ci.overrides]]
filter = 'package(krikos-identity) & binary(operational_recovery) & test(=finalized_recovery_effects_reconcile_across_every_durable_boundary)'
slow-timeout = { period = "30s", terminate-after = 3 }

[[profile.default.overrides]]
filter = 'package(krikos-identity) & binary(operational_recovery) & test(=finalized_recovery_effects_reconcile_across_every_durable_boundary)'
slow-timeout = { period = "30s", terminate-after = 3 }

[[profile.ci.overrides]]
filter = 'package(krikos-identity) & binary(provider_persistence) & test(=concurrent_redb_appends_are_linearizable_and_duplicate_idempotent)'
slow-timeout = { period = "30s", terminate-after = 3 }

[[profile.default.overrides]]
filter = 'package(krikos-identity) & binary(provider_persistence) & test(=concurrent_redb_appends_are_linearizable_and_duplicate_idempotent)'
slow-timeout = { period = "30s", terminate-after = 3 }

[[profile.ci.overrides]]
filter = 'package(krikos-identity) & binary(provider_persistence) & test(=redb_checkpoint_index_reopens_without_selecting_a_longer_fork)'
slow-timeout = { period = "30s", terminate-after = 3 }

[[profile.default.overrides]]
filter = 'package(krikos-identity) & binary(provider_persistence) & test(=redb_checkpoint_index_reopens_without_selecting_a_longer_fork)'
slow-timeout = { period = "30s", terminate-after = 3 }

[[profile.default.overrides]]
filter = 'test(::run_in_isolation::)'
test-group = 'run-in-isolation'
Expand Down
7 changes: 6 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,9 @@ vendor/** -text
**/CHANGELOG.md linguist-generated
docs/history/CHANGELOG_old.md linguist-generated
**/Cargo.lock linguist-generated
docs/testing/resource-canary/** linguist-generated
docs/testing/resource-canary/** linguist-generated

# Canonical identity fixtures and fuzz corpora are byte strings, even when a
# particular seed happens to be valid UTF-8. Never normalize or text-diff them.
protocols/krikos-identity/tests/vectors/*.bin binary linguist-generated
fuzz/corpus/identity_*/* binary linguist-generated
97 changes: 74 additions & 23 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ env:
RUST_BACKTRACE: 1
RUSTFLAGS: -Dwarnings
RUSTDOCFLAGS: -Dwarnings
MSRV: "1.91"
MSRV: "1.91.0"
SCCACHE_CACHE_SIZE: "10G"
KRIKOS_FORCE_STAGING_RELAYS: "1"

Expand All @@ -38,24 +38,42 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
fetch-depth: 0
- name: Install Rust stable
- name: Install identity MSRV toolchain
uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4 # stable
with:
toolchain: ${{ env.MSRV }}
- name: Install ripgrep
run: |
sudo apt-get update
sudo apt-get install --yes ripgrep
- name: Prove experimental publication gate is closed
run: python3 scripts/check-framework-release-gate.py --expect-closed
- name: Prove identity stable-release gate is closed
run: python3 scripts/check-identity-release-gate.py --expect-closed
- name: Inspect provisional package layouts
run: scripts/check-framework-package-layout.sh
- name: Check identity Rust 1.91.0 feature and dependency matrix
run: scripts/check-identity-feature-matrix.sh
- name: Test framework lifecycle, persistence, and fuzz facades
run: cargo test -p krikos-app --all-features
run: cargo test --locked -p krikos-app --all-features
- name: Check deterministic identity interoperability vectors
run: scripts/check-identity-interop-vectors.sh
- name: Check complete identity canonical decoder inventory
run: scripts/check-identity-wire-inventory.sh
- name: Check normative identity documentation links
run: scripts/check-identity-doc-links.py
- name: Replay imported persistent-store migrations
run: cargo test -p krikos-docs migration
run: cargo test --locked -p krikos-docs migration
- name: Test direct and local-relay two-node acceptance
run: cargo test -p krikos-local-first-app-tests --test two_node
run: cargo test --locked -p krikos-local-first-app-tests --test two_node
- name: Check blobs v0.103 bidirectional interoperability
run: scripts/tests/check-blobs-v0-interop.sh
- name: Check gossip v0.101 bidirectional interoperability
run: scripts/tests/check-gossip-v0-interop.sh
- name: Check local-first CI contract
run: scripts/tests/check-local-first-framework-ci.sh
- name: Check identity stable-release gate contract
run: scripts/tests/check-identity-release-gate.sh

fuzz_smoke:
name: Fuzz smoke (${{ matrix.target }})
Expand All @@ -78,6 +96,15 @@ jobs:
- app_protocol_registration
- blob_ticket
- doc_ticket
- identity_foundation
- identity_schema
- identity_capability
- identity_merkle
- identity_state
- identity_pairing
- identity_sync
- identity_provider
- identity_semantics
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
Expand Down Expand Up @@ -116,8 +143,11 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- name: Install Rust stable
- name: Install Rust 1.91.0
uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4 # stable
with:
toolchain: "1.91.0"
components: clippy
- name: Install sccache
uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
continue-on-error: true
Expand Down Expand Up @@ -188,23 +218,27 @@ jobs:
- name: Check relay V1/V2 golden compatibility
run: scripts/tests/check-relay-compatibility.sh --golden
- name: Test runtime capability contracts
run: cargo test -p krikos-runtime
run: cargo test --locked -p krikos-runtime
- name: Test generic resolver contracts
run: cargo test -p krikos-resolver --all-features
run: cargo test --locked -p krikos-resolver --all-features
- name: Test manifest, trace, and replay contracts
run: cargo test --manifest-path krikos-sim/Cargo.toml
run: cargo test --locked --manifest-path krikos-sim/Cargo.toml
- name: Check identity account-control model
run: scripts/check-identity-model.sh
- name: Replay reviewed identity corpus
run: cargo run --locked --manifest-path krikos-sim/Cargo.toml --bin cargo-sim -- identity corpus-test krikos-sim/identity-corpus
- name: Validate simulation operations and cross-backend parity policy
run: cargo test --manifest-path krikos-sim/Cargo.toml --test operations --test parity
run: cargo test --locked --manifest-path krikos-sim/Cargo.toml --test operations --test parity
- name: Execute the complete reviewed regression corpus
run: cargo run --manifest-path krikos-sim/Cargo.toml --bin cargo-sim -- corpus test krikos-sim/corpus
run: cargo run --locked --manifest-path krikos-sim/Cargo.toml --bin cargo-sim -- corpus test krikos-sim/corpus
- name: Test Krikos runtime adapter
run: cargo test -p krikos --lib runtime --all-features
run: cargo test --locked -p krikos --lib runtime --all-features
- name: Check native minimal feature graph
run: cargo check -p krikos --no-default-features
run: cargo check --locked -p krikos --no-default-features
- name: Check simulation code quality
run: |
cargo clippy -p krikos-runtime -p krikos --all-targets --all-features -- -D warnings
cargo clippy --manifest-path krikos-sim/Cargo.toml --all-targets --all-features -- -D warnings
cargo clippy --locked -p krikos-runtime -p krikos --all-targets --all-features -- -D warnings
cargo clippy --locked --manifest-path krikos-sim/Cargo.toml --all-targets --all-features -- -D warnings

simulation_gate:
name: Deterministic simulation change gate
Expand Down Expand Up @@ -685,7 +719,7 @@ jobs:
RUSTFLAGS: ""
RUSTC_WRAPPER: "sccache"
SCCACHE_GHA_ENABLED: "on"
RUSTDOCFLAGS: --cfg docsrs
RUSTDOCFLAGS: "-Dwarnings --cfg krikos_docsrs"
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- uses: dtolnay/rust-toolchain@2c7215f132e9ebf062739d9130488b56d53c060c # master
Expand All @@ -698,8 +732,8 @@ jobs:

- name: Docs
run: |
cargo doc --workspace --all-features --no-deps --document-private-items
cargo doc --manifest-path krikos-sim/Cargo.toml --all-features --no-deps --document-private-items
cargo doc --locked --workspace --all-features --no-deps --document-private-items
cargo doc --locked --manifest-path krikos-sim/Cargo.toml --all-features --no-deps --document-private-items

clippy_check:
timeout-minutes: 30
Expand Down Expand Up @@ -762,30 +796,47 @@ jobs:
- uses: dtolnay/rust-toolchain@2c7215f132e9ebf062739d9130488b56d53c060c # master
with:
toolchain: ${{ env.MSRV }}
components: clippy
- name: Install sccache
uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
continue-on-error: true
- uses: ./.github/actions/sccache-probe

- name: Check MSRV all features
run: |
cargo "+$MSRV" check --workspace --all-targets --all-features
cargo "+$MSRV" check --locked --workspace --all-targets --all-features

- name: Test identity at MSRV
run: |
cargo "+$MSRV" test --locked -p krikos-identity --no-default-features --all-targets
cargo "+$MSRV" test --locked -p krikos-identity --all-features --all-targets

- name: Lint identity at MSRV
run: |
cargo "+$MSRV" clippy --locked -p krikos-identity --no-default-features --all-targets -- -D warnings
cargo "+$MSRV" clippy --locked -p krikos-identity --all-features --all-targets -- -D warnings

- name: Check identity documentation at MSRV
run: |
RUSTDOCFLAGS='-Dwarnings' cargo "+$MSRV" doc --locked -p krikos-identity --all-features --no-deps
cargo "+$MSRV" test --locked -p krikos-identity --no-default-features --doc
cargo "+$MSRV" test --locked -p krikos-identity --all-features --doc

- name: Check MSRV — simulator
run: |
cargo "+$MSRV" check --manifest-path krikos-sim/Cargo.toml --all-targets --all-features
cargo "+$MSRV" check --locked --manifest-path krikos-sim/Cargo.toml --all-targets --all-features

- name: Check MSRV — blobs v0.103 interop
run: |
cargo "+$MSRV" check --manifest-path compat/iroh-blobs-v0-103-interop/Cargo.toml --all-targets --all-features
cargo "+$MSRV" check --locked --manifest-path compat/iroh-blobs-v0-103-interop/Cargo.toml --all-targets --all-features

- name: Check MSRV — gossip v0.101 interop
run: |
cargo "+$MSRV" check --manifest-path compat/iroh-gossip-v0-101-interop/Cargo.toml --all-targets --all-features
cargo "+$MSRV" check --locked --manifest-path compat/iroh-gossip-v0-101-interop/Cargo.toml --all-targets --all-features

- name: Check MSRV — relay v1 interop
run: |
cargo "+$MSRV" check --manifest-path compat/relay-v1-interop/Cargo.toml --all-targets --all-features
cargo "+$MSRV" check --locked --manifest-path compat/relay-v1-interop/Cargo.toml --all-targets --all-features

cargo_deny:
timeout-minutes: 30
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ jobs:
- uses: ./.github/actions/sccache-probe

- name: Generate Docs
run: cargo doc --workspace --all-features --no-deps
run: cargo doc --locked --workspace --all-features --no-deps
env:
RUSTDOCFLAGS: --cfg krikos_docsrs
RUSTDOCFLAGS: "-Dwarnings --cfg krikos_docsrs"

- name: Deploy Docs to Preview Branch
uses: peaceiris/actions-gh-pages@84c30a85c19949d7eee79c4ff27748b70285e453 # v4
Expand Down
9 changes: 9 additions & 0 deletions .github/workflows/fuzz.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,15 @@ jobs:
- app_protocol_registration
- blob_ticket
- doc_ticket
- identity_foundation
- identity_schema
- identity_capability
- identity_merkle
- identity_state
- identity_pairing
- identity_sync
- identity_provider
- identity_semantics
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ jobs:
- name: Prove provisional framework packages are excluded from publication
run: python3 scripts/check-framework-release-gate.py --expect-closed

- name: Prove identity is excluded from stable publication
run: python3 scripts/check-identity-release-gate.py --expect-closed

simulation_release_readiness:
name: Require simulation release evidence
needs: preflight
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ env:
RUSTFLAGS: -Dwarnings
RUSTDOCFLAGS: -Dwarnings
SCCACHE_CACHE_SIZE: "10G"
CRATES_LIST: "krikos,krikos-app,krikos-base,krikos-bench,krikos-blobs,krikos-dns,krikos-dns-server,krikos-docs,krikos-gossip,krikos-relay,krikos-resolver,krikos-runtime"
CRATES_LIST: "krikos,krikos-app,krikos-base,krikos-bench,krikos-blobs,krikos-dns,krikos-dns-server,krikos-docs,krikos-gossip,krikos-identity,krikos-relay,krikos-resolver,krikos-runtime"
KRIKOS_FORCE_STAGING_RELAYS: "1"
NEXTEST_VERSION: "0.9.80"

Expand Down
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
# crates are bumped by directory rename, and an anchored rule silently
# stops matching when that happens.
target/
__pycache__/
*.py[cod]

/fuzz/artifacts
/logs
Expand All @@ -17,3 +19,8 @@ krikos.config.toml

# Agent scratch workspace (ledgers, briefs, review packages).
.superpowers/

# Treat new Markdown files as opt-in so agent-generated notes do not clutter
# the repository. Existing tracked documentation remains tracked; add a narrow
# `!path/to/file.md` exception here when a new Markdown file should be kept.
*.md
Loading
Loading