Gear Message Execution
Goal
Provide a focused local path for reasoning about message flow and execution behavior in standard Gear/Vara Sails work.
Inputs
../../references/gear-execution-model.md../../references/gear-sails-production-patterns.md../../references/gear-messaging-and-replies.md../../references/gear-gas-reservations-and-waitlist.md../../references/scale-binary-decoding-guide.md../../references/sails-syscall-mapping.md
Route Here When
- replies, timeouts, or error replies are surprising
- delayed work spans future blocks
- reservations or waitlist behavior affect the design
- a builder is mixing raw payload handling into an otherwise standard Sails flow
- raw hex, reply bytes, event bytes, or metadata-vs-IDL decoding path is unclear
- a reply from a hardcoded non-program
ActorIddoes not decode as a Sails route; route togear-builtin-actorsfor the matchinggbuiltin_*::Responsetype
Working Model
- Confirm what executes now versus after the next block.
- If raw bytes are involved, classify the source first: constructor, service payload, reply, event, full state, or state-function output.
- Determine whether the bytes are Sails-routed, plain SCALE, or metadata-driven state output.
- Match the decoder artifact to the source: generated client or
.idl,ProgramMetadata, orstate.meta.wasm. - Identify whether the path is fire-and-forget, reply-driven, delayed, or reservation-backed.
- Separate transport failure, timeout, and error reply.
- Check whether rollback should revert local state if a send or reply path fails.
- If the path is in tests, confirm the block-advance pattern and expected reply timing.
Guardrails
- Treat reply, timeout, and late hook execution as distinct states.
- Keep staged payload flows paired with their commit step.
- Treat reservation duration and waitlist expiry as architecture constraints.
- Use
exec::gas_available()(orSyscall::gas_available()if using Sails) when checking available gas during the current execution. - Prefer generated Sails clients unless debugging the route or codec layer.
- If a Sails route is involved, expect Sails Header-aware encoding rather than a raw struct payload.
- Keep the guidance on the standard Gear/Vara Sails path.
- Prefer local repo references over external skill dependencies.
- Do not start with plain
Decode::<T>on arbitrary bytes when a Sails route may be involved. - Match decode artifact to source: generated client or
.idlfor standard Sails interface paths,ProgramMetadatafor full state, andstate.meta.wasmfor state-function output. - Treat
gear-metaas a debugging fallback, not the first-choice default path.