Skip to content

Development ​

The docs and frontend can be developed independently. CLI/server builds require a compatible, licensed Core SDK in addition to infrastructure source.

flowchart TD
  Source["Infrastructure source clone"] --> Need{"Core-linked build?"}
  Need -->|No| Docs["Docs / frontend checks"]
  Need -->|Yes| SDK["Matching SDK required"]
  SDK --> Verify["Manifest + compiler + target validation"]
  Verify --> Build["Build and existing tests"]
RepositoryExisting check
Docsnode contracts/validate.mjs, npm run build
CLIcargo test --locked -p respire after SDK setup
Infrastructure cratesTheir existing Cargo tests after SDK setup
Servercargo test --locked -p respire_service; database integration checks need PostgreSQL
Client UIEmbedded frontend in respire-client2; run existing syntax checks
DesktopGo/Wails build and platform dependencies; obtain a compatible CLI and runtime separately

SDK setup ​

StepRequirement
ToolchainUse the repository's pinned Rust toolchain
LockMatch sdk/core-sdk.lock.json manifest SHA-256
Local SDKSet RSRS_CORE_SDK_DIR to a complete SDK directory
Download helpernode scripts/fetch-core-sdk.mjs <target-triple> [output-directory]; requires a configured download URL or complete local SDK
Build validationExact compiler release/commit, ABI, target, panic mode, CRT and file hashes must match
Test fixture providerSet host RSRS_CORE_TEST_MODE=1 only for existing fixture tests; the SDK passes explicit test_mode: true, and Core never reads this variable
DistributionStage runtime libraries and third-party notices, not just an executable

Keep test data in a separate data directory. The SDK test provider is not a production model fallback.

For CLI builds, choose one of the seven CLI platform targets. Linux GNU and musl targets require their corresponding SDK/runtime artifacts; do not substitute a GNU SDK for a musl build or vice versa. RSRS_LIBC selects the npm launcher's installed binary, not the Rust compilation target. Target definitions do not imply published binaries or completed platform validation.

Infrastructure source path in CLIResponsibility
crates/protocolShared data types
crates/cryptoKeys and record encryption
crates/storageLocal store and sync support
crates/appApplication orchestration
crates/core-sdkSafe Core adapters
cliProduct executable and interfaces

Use existing checks appropriate to the change. Preserve error causes and license notices; do not add .unwrap() / .expect() in Rust.

Windows packaging