| Tool | Version |
|---|---|
| Node.js | 24.18.1 |
| pnpm | 10.34.0 |
| React | 19.2.8 |
| React DOM | 19.2.8 |
| TypeScript | 6.0.3 |
| Vite | 8.2.1 |
| Vitest | 4.1.10 |
| Testing Library React | 16.3.2 |
| Testing Library jest-dom | 7.0.1 |
| Playwright | 1.62.1 |
| Biome | 2.3.2 |
| Tool | Version |
|---|---|
| Rust toolchain | 1.95.0 |
| Tauri CLI | 2.11.4 |
| Tauri crate | 2.11.2 |
| tauri-build | 2.6.2 |
| serde | 1.0.228 |
- Vite dev server:
127.0.0.1:4173 - Vite preview server:
127.0.0.1:4174 - Tauri dev URL:
http://127.0.0.1:4173
- The repository consumes exact vendored packed
@opencoven/*artifacts fromvendor/opencoven-sdk; production imports never resolve to SDK workspace source. src/lib/desktop-host.tsis the only typed webview-to-host bridge and is limited to the non-secretapp_identityandapp_installation_idcommands. The latter validates the canonical UUID v4 pairing identity returned from native secure storage.src/lib/sdk/native-boundary.tsis the narrow SDK-managed Cave bridge. It accepts only opaque authority handles, bounded page options, canonical conversation IDs, and SDK-safe result snapshots. SDK operation contexts are reduced to an unpredictable, epoch/counter-bound single-use attempt ID plus a timeout of at most five seconds; aborts use the dedicatedcave_cancel_operationcommand with only the attempt ID and the canonicalabortedortimeoutreason.- The same bounded operation and cancellation controls expose only the exact
raw ordinary
{ status: "ok" }Coven health result. A dedicated native single-worker executor rejects overlapping health work with a retryable bounded diagnostic and releases capacity only after the synchronous producer call actually returns. Caller timeout or cancellation does not stop the OS call. Native production code consumes the producer-owned Rustcoven-clientat exact Coven revision721437b84026c042e431b0882dcd14fdb29ac07d; it resolves explicitCOVEN_HOMEor the current account's real platform home plus.coven, then relies on that crate for live Unix connected-peer credentials or Windows named-pipe ownership and connected identity. Native trust unavailability fails closed, with no pathname-only, constructed-pipe, shell, PowerShell,lsof, or Node-private fallback. - Native credential mutations use one bounded worker reservation. Work
cancelled while queued never acquires the keyring lock; once an irreversible
mutation starts, concurrent retries fail with non-retryable
credential_update_in_progressuntil the authoritative result is coherent. - Credential records use binary secret-store APIs and zeroizing transient
buffers. Windows entries require Local persistence and migrate prior
Enterprise values plus legacy UTF-16 password encoding; mutation locking
uses a current-user-only
Global\mutex with verified ownership/DACL and the shipped session-local mutex during the compatibility window. Unix lock acquisition is owner-private and bounded. - Packed tarballs are verified by the cross-repository canary against the exact canonical release manifest, package paths, sizes, and digests in a temporary install copy rather than by a source-relative or absolute path dependency.
- Run the local canary with
pnpm test:contract-canary -- --sdk-root <sdk-root> --cave-root <cave-root>. - Run the packaged real-authority matrix through the trusted outer launcher:
/bin/sh scripts/phase1-conformance-launcher.sh "$(command -v node)". Its independentphase1-conformance.lock.jsonpins Chat, the SDK package candidate, Cave, Coven, all four frozen SDK artifacts, and the SDK evidence authority; the harness creates exact clean detached clones rather than trusting source repositories' current branches. - CI reads
contract-canary.lock.json, checks out those exact reviewed SDK and Cave revisions, rejects dirty SDK or Cave checkouts, and verifies the checked-out HEADs before the canary runs. The SDK lock targets canonicalmaincommitacc38488f00860d246c3c553375634d64806eabband manifest digestb8bfb62236fc8add4a9baad9f00e5401db15074a2d21fe2847a9158104cefb3c. The lock also pins the Cave producer's Client v1 contract fixture andhpke-bound-v1vector digests; the canary proves packed vector byte identity and the ancestry of the SDK's historical contract fixture provenance. src-tauri/gen/schemas/desktop-schema.jsonis intentionally kept outside the ignore rules so the capability$schemacan ship with fresh checkouts.- Tauri capabilities are limited to reviewed autogenerated
allow-app-identity,allow-app-installation-id, and Cave adapter permissions for themainwindow. - No shell, filesystem, opener, or network plugin permissions are configured.
- The feature-gated
phase1-native-rpcbinary is a headless conformance-only NDJSON bridge. It is excluded from default Cargo and Tauri builds. Unit scenarios default to in-memory custody, while the real-authority runner explicitly selects the productionNativeKeyring, restarts the RPC process, and verifies credential reuse and deletion. Cave launch paths are accepted only through its two explicitOPENCOVEN_PHASE1_CONFORMANCE_NODE_PATHandOPENCOVEN_PHASE1_CONFORMANCE_CAVE_SERVER_PATHenvironment variables. - Run its subprocess integration gate with
pnpm test:native-e2e; normalpnpm app:devselects theopencoven-chatdesktop binary by default. - Run the persisted Windows GNU cross-target compile gate with
pnpm cargo:check:windows-gnu. - The Phase 1 harness creates mode-
0700process-owned roots under the real OS temporary directory, reaps only tracked child processes, scans the completed SDK platform record for secrets and private content, and retains onlytest-results/phase1-conformance/report.json. Seephase1-conformance.md. - Coven conformance starts the real locked daemon and invokes Chat
phase1-native-rpccommandcoven_health; it never usescoven daemon statusor reimplements producer-owned peer/pipe identity checks.