Skip to main content
Status: Draft spec (Phase 1) Canonical capability ids for target profiles, artifact metadata, and compile-time rejection. Semantic meanings align with the matrix in RFC 0002. Legend: Y supported (planned or implemented), P partial/spike only, N not supported, not applicable.

Relationship to target ids

  • Target ids are recorded in docs/decisions.md and summarized by docs/rfcs/0002-target-implementation-design.md.
  • This registry owns capability ids, not target lifecycle stages.
  • Docs must not invent alternate ids for the same semantics.

Relationship to Contract Intent and Target Extensions

Capability ids are the lower-level protocol used after target selection, not the default user-facing SDK. Portable contracts should normally call the chain-neutral Contract Intent API. The selected target adapter resolves those intents into a capability plan, then checks this registry before lowering. Target Extension SDKs may expose target-specific operations such as Solana PDA/CPI/runtime allocator configuration, Move resources, or UTXO covenant primitives. Those extensions still route through capability ids and target metadata so diagnostics, artifact metadata, and cross-target support checks remain uniform.

Core Capabilities

The Solana column reflects the canonical solana-sbpf-asm route (D-026): direct sBPF assembly codegen. Solana uses crosscall.cpi (not crosscall.invoke) and storage.pda — these are Solana-specific per D-027. The CF Workers column is the off-chain wasm-cloudflare-workers host (D-033); it reinterprets capabilities without consensus or on-chain state.

Id Naming Rules

  • Format: <domain>.<operation> or <domain>.<variant> (lowercase, dot-separated).
  • Domains: storage, caller, value, events, crosscall, env, control, data, crypto, assertions, account, runtime, zk.
  • Artifact metadata lists the ids used by a build (see RFC 0002 artifact schema).
  • Diagnostics must cite capability id and target id on rejection.

Candidate Capabilities Not Yet Registered

These candidates are documented for target research only. Do not add them to ProofForge.Target.Capability until a target profile and lowering rules are accepted.

Kaspa Toccata

See Kaspa Toccata target. zk.circuit remains reserved for targets whose primary artifact is a circuit or circuit-oriented source package. Toccata may use proofs, but its base target is a Kaspa covenant package.

Stellar Soroban

See Stellar Soroban target. Most Soroban behavior can start from the existing Wasm-host capability set, but several target semantics are not covered by the current registry.

Internet Computer

See Internet Computer target. ICP canisters overlap with the Wasm-host family, but several canister semantics need explicit representation before a target profile is added.

Algorand AVM

See Algorand AVM target. Algorand overlaps with generic contract capabilities, but AVM programs, storage classes, transaction groups, and explicit resource references need separate representation before a target profile is added.

Cardano Plutus/Aiken

See Cardano Plutus/Aiken target. Cardano overlaps with UTXO covenant targets, but eUTXO validator roles, datum, redeemer, script context, execution units, and Plutus blueprint metadata need separate representation before a target profile is added.

Tezos Michelson/LIGO

See Tezos Michelson/LIGO target. Tezos overlaps with generic contract storage and entrypoints, but Michelson’s typed data, operation-list effects, views, events, tickets, and gas/storage-burn semantics need explicit representation before a target profile is added.

Starknet Cairo

See Starknet Cairo target. Starknet overlaps with contract storage, events, and calls, but Cairo/Sierra/CASM artifacts, class hashes, account abstraction, syscalls, and L1/L2 messaging need explicit representation before a target profile is added.

Aleo Leo

See Aleo Leo target and docs/superpowers/specs/2026-07-01-aleo-leo-design.md. Aleo overlaps with source-generation and ZK targets, but its contract model has an explicit proof/finalization split. Private execution creates transitions and proofs; public finalization updates mappings or storage on-chain. Records, program ids, imports, Aleo Instructions, Aleo VM bytecode, ABI, prover/verifier artifacts, fees, and devnet validation need explicit representation before a target profile is added.

Canonical capabilities (Road 1 spike)

These capabilities are accepted for the first aleo-leo spike and are listed in Aleo artifact metadata produced by scripts/aleo/counter-smoke.sh. They are not added to ProofForge.Target.Capability until the target profile and proof/finalization split are reviewed.

Research candidate capabilities (future spikes)

These remain candidates until private records, transitions, proofs, imports, deployment, or devnet validation are scoped. The existing zk.circuit capability is not enough for Aleo. It may describe part of the proof surface, but Aleo also needs program, transaction, state-record, finalization, and artifact capabilities.

TON TVM

See TON TVM target. TON overlaps with generic contract capabilities, but TVM cells, messages, and actions need explicit representation before a target profile is added.

Bitcoin Script/Miniscript

See Bitcoin Script/Miniscript target. Bitcoin overlaps with UTXO script targets, but base-layer Script is best modeled as spending policy rather than general contract execution. Miniscript, descriptors, Taproot/Tapscript, PSBT flows, standardness, and weight/fee checks need explicit representation before a target profile is added. Bitcoin should reuse existing UTXO candidate ids where the semantics match, including storage.utxo, script.p2sh, script.unlocker, timelock.locktime, signature.checksig, and tx.builder.

Zcash Shielded

See Zcash Shielded target. Zcash overlaps with Bitcoin-derived UTXO flows, but its shielded pools are not ordinary Bitcoin Script or a generic ZK circuit target. Sapling/Orchard notes, nullifiers, commitment tree anchors, value-balance constraints, viewing-key disclosure, and protocol-defined proofs need explicit representation before a target profile is added. Zcash should reuse existing UTXO candidate ids for transparent flows where the semantics match, including storage.utxo, tx.builder, signature.checksig, and fee.weight. The existing zk.circuit capability is not the right first abstraction for ordinary Zcash shielded transfers; it only fits future auxiliary proof-program work outside the Zcash consensus proof system.

Bitcoin Cash CashScript

See Bitcoin Cash CashScript target. BCH/CashScript overlaps with UTXO covenant targets, but its CashVM, transaction-introspection, CashTokens, and transaction-builder semantics need explicit representation before a target profile is added.

EVM Mapping (baseline)

Implemented today via ProofForge.Evm / Lean.Evm — see targets/evm.md.

Phase 1 Acceptance Criteria

  • Every id in this table appears in TargetProfile.capabilities for at least one target.
  • EVM Counter build lists storage.scalar (and others used) in artifact metadata.
  • Attempting storage.pda on EVM fails with capability unsupported diagnostic.
  • Registry stays in sync when RFC 0002 semantic matrix changes.

Changelog