Operations Reference

Laminar FAQ

Straight answers for operators, reviewers, and integrators. Focus is on key safety boundaries, validation behavior, CLI modes, wallet handoff limits, and Phase 1 pass/fail expectations.

Part 1

What It Is and Why It Matters

01What is Laminar?+

Laminar is a local-first tool for creating Zcash batch payment requests without holding keys or funds.

02What problem does it solve?+

It fixes the Spreadsheet Gap: payouts are tracked in spreadsheets, but sending them one by one is slow and easy to get wrong.

03Who is the primary user?+

Treasurers and operators managing payroll, grants, vendor payments, and recurring disbursements.

04Is Laminar a wallet?+

No. Laminar only builds payment requests. It never holds keys or funds.

05What is the Brain vs. Muscle architecture?+

The desktop app prepares and validates the batch (Brain). The mobile wallet signs and sends it (Muscle).

06What is Phase 1 (Tactical Spike)?+

A 12-week build to prove the full end-to-end flow works with minimal features.

07What are Phase 1 deliverables in one line?+

Core engine, dual-mode CLI, and desktop UI producing QR/UR handoffs and audit receipts.

08What is out of scope for Phase 1?+

Any wallet feature: key management, signing, broadcasting, custody, or recovery flows.

09Is Laminar local-first?+

Yes. No required servers and no server-side state.

10Is telemetry or analytics included?+

No. There is no telemetry, analytics, or external tracking.

Part 2

Custody Boundary and Security Posture

11Does Laminar ever handle private keys or seed phrases?+

No. It never stores, generates, requests, or transmits key material.

12Can Laminar sign transactions?+

No. Only the wallet can sign.

13Can Laminar broadcast transactions?+

No. Only the wallet can broadcast.

14What is the Calculator Defense?+

Laminar acts like a calculator: it prepares payment data but cannot approve or send funds.

15What local data is stored?+

Only optional draft batches and address-book metadata. No secret material is needed to use Laminar.

16How is local data protected?+

Sensitive local fields are encrypted on disk with AES-256-GCM.

17How are encryption keys derived?+

Keys are derived with a memory-hard KDF, with Argon2id as the default target.

18How does Laminar avoid monetary precision bugs?+

All amounts are handled as integer zatoshis. Floating-point math is not used.

19How does it handle malicious spreadsheets (CSV injection)?+

Laminar sanitizes input on import to block formula injection and related spreadsheet attacks.

20What happens if any row is invalid?+

The whole batch is rejected. Partial execution is not allowed.

Part 3

Validation, Determinism, and Error Handling

21Is output deterministic?+

Yes. The same inputs and settings produce the same payload and receipt bytes.

22What is validated?+

Laminar validates network, address format, amount limits, memo encoding and size, required columns, and schema shape.

23Are Unified, Sapling, and Transparent addresses supported?+

Yes. All three are validated and supported.

24Are memos supported?+

Yes. Each recipient can have a UTF-8 memo up to 512 bytes. Invalid or oversized memos are rejected.

25How are mainnet and testnet mix-ups prevented?+

Any network mismatch triggers rejection of the entire batch.

26Are duplicate recipients allowed?+

Yes. Duplicates can be intentional, so they are allowed but clearly flagged for review.

27What input formats are supported?+

CSV for human workflows and JSON for programmatic integrations.

28What CSV schema is required?+

Required: address plus amount or amount_zatoshis. Optional: memo and label.

29What are the batch size limits?+

Laminar enforces recipient and payload limits. If a batch is too large, it is split into ordered segments.

30What happens to sensitive data after completion?+

Sensitive batch data is cleared as soon as practical, with minimal persistence in memory and on disk.

Part 4

Dual-Mode CLI for Humans and Agents

31What is Dual-Mode?+

One CLI that switches between human-friendly and machine-friendly behavior.

32How is mode detected?+

Laminar checks whether stdout is a TTY at startup. You can override this with flags.

33What does Operator Mode optimize for?+

Safety and clarity: confirmations, readable summaries, and high-signal validation output.

34What does Agent Mode optimize for?+

Machine-friendly output: strict JSON, stable schema, and no interactive prompts.

35Can Agent Mode block waiting for stdin?+

No. In Agent Mode it does not wait on stdin; missing arguments return an immediate structured error.

36Can Agent Mode be forced manually?+

Yes. Example: --output json.

37How are failures communicated to agents?+

With structured JSON error objects, stable error codes, and deterministic exit codes.

38How are agent input injection risks addressed?+

Through strict schema validation, sanitization, explicit size limits, and fail-closed processing.

39What is the minimum agent integration proof?+

A scripted end-to-end Agent Mode run that generates intents and receipts with no manual steps.

40Why support agents?+

Automation needs safe financial building blocks. Laminar provides payout construction without custody.

Part 5

Wallet Handoff, QR/UR Constraints, and Compatibility

41How does Laminar hand off to wallets?+

Through an air gap: static QR or animated UR, plus deeplink or manual copy where supported.

42What is the primary compatibility target wallet?+

Zodl (formerly Zashi) on iOS and Android.

43What about YWallet?+

YWallet is supported as a fallback for static QR and deeplink. If animated UR is unavailable, Laminar splits more often.

44What determines static QR vs animated UR?+

Payload size. Smaller payloads use static QR; larger payloads use animated UR.

45How many recipients fit in a static QR?+

Typically around 8 to 12 recipients, depending on memo lengths and payload overhead.

46How many recipients fit in an animated UR segment?+

Often 50+ recipients per segment, depending on memo size and scan conditions.

47What happens if a batch exceeds UR capacity?+

Laminar splits the batch into ordered segments until all recipients are included.

48Can operators control animated playback for scan reliability?+

Yes. The desktop UI provides pause and play controls for scan stability.

Part 6

Grant Execution and Acceptance Criteria

49What are the Phase 1 milestones?+
  • M1: Iron Core (core engine + dual-mode CLI).
  • M2: Interface (desktop UI + end-to-end workflows).
  • M3: Release package (v1.0, field manual, integration guide, production proof).
50What is the committee pass/fail acceptance standard?+

Pass/fail requires clear proof of deterministic output, fail-fast validation, strict non-custodial boundaries, non-blocking dual-mode behavior, wallet compatibility tests, and a final end-to-end Genesis run.

Need Full Operating Detail?

Use the Field Manual for schemas, constants, compatibility matrices, and implementation detail.