Every GasHammer error carries a structured code in the format GH-Exxx. The prefix GH-E is part of GasHammer’s structural DNA (RFC-0011 §8.3). Codes are unique across the entire codebase and grouped by crate.
Range Crate Category
E001–E099 gashammer-common Shared infrastructure
E100–E199 gashammer-nitro Nitro protocol adapters
E200–E299 gashammer-edge Edge runtime
E300–E399 gashammer-hive Hive control plane
E400–E499 gashammer-workload Workload engine
E500–E599 gashammer-telemetry Telemetry pipeline
E600–E699 gashammer-oracle Correctness oracle
E700–E799 gashammer-fault Fault injection
E800–E899 gashammer-report Reporting engine
E900–E949 gashammer-scenario SDL parser/compiler
E950–E979 gashammer-docgen Documentation engine
E980–E999 gashammer-testenv Test environment
Code Name Description
GH-E001ConfigErrorConfiguration loading or validation failed
GH-E002SerializationErrorSerialization or deserialization failed
GH-E003InvariantViolationAn internal invariant was violated
Code Name Description
GH-E100RpcErrorJSON-RPC call failed
GH-E101FeedErrorSequencer feed connection or parsing failed
GH-E102L1ContractErrorL1 contract read failed
Code Name Description
GH-E200EdgeRegistrationFailedEdge failed to register with the hive
GH-E201TxPipelineErrorTransaction pipeline error
GH-E202FeedCorrelationErrorFeed correlation error
Code Name Description
GH-E300OrchestrationErrorRun orchestration failed
GH-E301EdgeRegistryErrorEdge registry operation failed
GH-E302ApiErrorREST API error
Code Name Description
GH-E400TemplateErrorTransaction template construction failed
GH-E401RateControlErrorRate control error
GH-E402AccountPoolErrorAccount pool exhausted or nonce error
Code Name Description
GH-E500EventShippingErrorEvent shipping failed
GH-E501StorageWriteErrorParquet storage write failed
GH-E502MetricErrorMetric registration or recording failed
Code Name Description
GH-E600CheckExecutionErrorInvariant check execution failed
GH-E601EvidenceErrorEvidence collection failed
GH-E602VerdictAggregationErrorVerdict aggregation error
Code Name Description
GH-E700FaultInjectionErrorFault injection failed
GH-E701FaultReversionErrorFault reversion (clear) failed
GH-E702FaultSchedulingErrorFault scheduling error
Code Name Description
GH-E800ReportGenerationErrorReport generation failed
GH-E801RegressionAnalysisErrorRegression analysis failed
GH-E802ReportTemplateErrorTemplate rendering failed
Code Name Description
GH-E900ScenarioParseErrorScenario YAML parsing failed
GH-E901ScenarioValidationErrorScenario validation failed
GH-E902ScenarioCompilationErrorScenario compilation failed
Code Name Description
GH-E950SourceParseErrorSource file parsing failed
GH-E951DocgenTemplateErrorTemplate rendering failed
GH-E952DocgenOutputErrormdBook output write failed
Code Name Description
GH-E980ContainerErrorContainer startup failed
GH-E981HealthCheckErrorDevnet health check failed
GH-E982ContractDeployErrorContract deployment failed
All error types use thiserror and embed the error code in the Display impl:
#![allow(unused)]
fn main() {
#[derive(Debug, thiserror::Error)]
pub enum NitroError {
#[error("[{code}] {msg}", code = ErrorCode::RpcError.code())]
Transport(String),
// ...
}
}
In log output and API responses, errors appear as:
[GH-E100] RPC call failed: connection refused
Search logs for a specific code with grep "GH-E100" to find all instances of a particular error class.