Skip to content

feat: add end to end working integration with Radicle#6

Merged
bordumb merged 40 commits intomainfrom
dev-radicleIntegration
Mar 3, 2026
Merged

feat: add end to end working integration with Radicle#6
bordumb merged 40 commits intomainfrom
dev-radicleIntegration

Conversation

@bordumb
Copy link
Contributor

@bordumb bordumb commented Mar 1, 2026

No description provided.

bordumb added 7 commits March 1, 2026 23:22
Add refs.rs module with pub const definitions for all RIP-X Git ref
paths (KEL, keys, signatures, identity namespace) and path construction
helpers. Handles colon-to-dash character replacement for Heartwood
compatibility. Each constant cites its RIP-X section reference.
…IP-X 2-blob format

Implements fn-1.2: serialization/deserialization for the RIP-X attestation
format where device and identity signatures are stored as separate Git blobs.
Includes JCS-compliant canonical payload and Ed25519 signature verification.
Implements fn-1.3: adds a ref_path field to GitKel and a with_ref()
constructor, allowing KEL reads from RIP-X layout (refs/keri/kel).
Existing new() delegates to with_ref() with the default path.
…orcement modes, staleness, min_kel_seq, capabilities, and mixed threshold

Implements fn-1.4 through fn-1.13:
- VerifyResult::Quarantine variant with identity_repo_rid
- EnforcementMode enum (Observe/Enforce)
- VerifyRequest struct bundling all verification parameters
- AuthsStorage trait with repo-scoped identity lookup and local tip OID
- Full fail-closed verification pipeline in DefaultBridge
- min_kel_seq binding integrity check (BEFORE policy, never downgraded)
- Gossip-informed staleness detection via known_remote_tip
- Capability-scoped authorization
- Mixed Did::Key/Did::Keri threshold verification via SignerInput enum
- find_identity_for_device() on RadicleAuthsBridge trait
- Migrated identity.rs from anyhow to thiserror (IdentityError enum)
- Removed anyhow dependency
- BridgeError::IdentityCorrupt variant for corrupt vs missing distinction
…n, stale-node (fn-1.12, fn-1.14, fn-1.15, fn-1.16)
@bordumb bordumb self-assigned this Mar 1, 2026
@vercel
Copy link

vercel bot commented Mar 1, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
auths Ready Ready Preview, Comment Mar 3, 2026 1:27am

bordumb added 17 commits March 2, 2026 03:19
Eliminate MockStorage, make_key_state, make_attestation duplication
across 5 integration test files. All tests now import from
tests/cases/helpers.rs which also provides DeviceFixture and
register_device for convenient test setup.
Given a device DID, resolves it to the controller identity DID by
loading the device's attestation and extracting the issuer field.
Output is plain text for shell script capture.
Insert Phase 6b that resolves both device DIDs via
'auths device resolve' and asserts they map to the same
controller identity DID from Phase 2.
Verifies that two devices registered under the same identity both
resolve to the same controller DID via find_identity_for_device,
and that an unregistered device returns None.
…3.1)

Annotates VerifyResult, EnforcementMode, BridgeError, SignerInput,
RadAttestationError, and IdentityError with #[non_exhaustive] to
prevent downstream exhaustive matches from breaking on new variants.
bordumb added 3 commits March 2, 2026 12:17
Add Serialize derive to KeriKeyState (skipping raw bytes field) and
new wasm_verify_kel_json async export that composes parse_kel_json
and verify_kel. Includes integration tests for serialization and
error paths.
…unction

- verify_device_link() in verify.rs: provider-agnostic, composes KEL
  verification + attestation sig check + device DID matching + seal anchoring
- DeviceLinkVerification result type: valid/invalid as JSON, not thrown errors
- compute_attestation_seal_digest() for KEL seal lookup
- compute_said() now public for reuse
- WASM wrapper: wasm_verify_device_link with size guards
bordumb added 10 commits March 2, 2026 13:28
- KeriKeyState and DeviceLinkResult types in types.ts
- verifyKel(): async KEL verification returning key state
- verifyDeviceLink(): async composed device-to-identity verification
- WasmModule interface updated with new WASM function declarations
…s to E2E script

- Phase 6c: verify KEL entries exist in registry, KERI prefix valid,
  attestation entries present, cross-validate controller DID
- Phase 8: verify device 1 still resolves after device 2 revocation
- Replace generic String/Vec<u8> with Did, RepoId, and PublicKey from radicle-core
- Centralize Radicle-specific logic (RIP-X refs, 2-blob attestations) in auths-radicle
- Break cyclic dependency by depending on radicle-core/crypto instead of main radicle crate
- Update unit and integration tests to use new domain types
- Document the cleanup and integration plan
- Replace rusqlite with sqlite crate in auths-index and auths-core
- Update source code to use sqlite crate API instead of rusqlite
- Disable default features for sqlx in auths-storage to avoid conflicts
- This ensures compatibility with the Radicle ecosystem when linking
- Update RadicleIdentity to include optional KeyState for unified UI support
- Implement resolve_keri_state to fetch full KEL state during resolution
- Apply Prefix and KeyState types more thoroughly in identity resolution
- Fix radicle-core and radicle-crypto paths in Cargo.toml
… sites, add StorageLayoutConfig presets, persist identity

  in setup_developer, and fix 5 broken test assertions
…ness tokio runtime, fix pairing doctest clock injection
@bordumb bordumb merged commit e6700d8 into main Mar 3, 2026
4 of 8 checks passed
@bordumb bordumb deleted the dev-radicleIntegration branch March 3, 2026 01:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant