Skip to content

Feature/issue 850 telemetry package extracted#1033

Open
ayomideadeniran wants to merge 12 commits intodotandev:mainfrom
ayomideadeniran:feature/issue-850-telemetry-package-extracted
Open

Feature/issue 850 telemetry package extracted#1033
ayomideadeniran wants to merge 12 commits intodotandev:mainfrom
ayomideadeniran:feature/issue-850-telemetry-package-extracted

Conversation

@ayomideadeniran
Copy link
Copy Markdown
Contributor

@ayomideadeniran ayomideadeniran commented Mar 27, 2026

Closes #850


PULL REQUEST TEMPLATE

================================================================================
TITLE:

feat(audit): Add AWS KMS Direct Support for Signing - Issue
close #849

DESCRIPTION:

Overview

Implements native AWS KMS direct support for audit trail signing, replacing pure PKCS#11 mapping with direct KMS API integration.

Changes

Core Implementation

  • KmsEd25519Signer: New plugin class implementing AuditSigner interface

    • Direct AWS KMS SignCommand invocation
    • Ed25519 asymmetric signing algorithm
    • Environment-based key management (ERST_KMS_KEY_ID, ERST_KMS_PUBLIC_KEY_PEM, ERST_KMS_REGION)
    • Zero local key material storage
  • Factory Integration: Extended createAuditSigner() to support 'kms' provider

    • Maintains backward compatibility with software and PKCS#11 signers
    • Case-insensitive provider selection
    • Proper error handling for missing configuration
  • Dependencies: Added @aws-sdk/client-kms v3.609.0

Testing

  • Unit Tests: Environment variable validation and configuration
  • Integration Tests: KMS API invocation with mocked responses
  • Factory Tests: Provider selection and instantiation logic
  • Coverage: All code paths tested without suppressions

Documentation

  • AWS_KMS_SIGNING_ARTIFACT.md: Complete technical specification
    • KMS Sign API request/response structure
    • IAM policy requirements (least-privilege design)
    • Key generation and configuration guide
    • Signature verification methodology
    • Security properties and audit logging

Security Properties

  • Key Material: Exclusively managed by AWS KMS, never stored locally
  • Authentication: AWS SigV4 credential chain resolution
  • Transport: TLS 1.2+ enforced by SDK
  • Audit: All operations logged in CloudTrail
  • Algorithm: Ed25519 EdDSA (RFC 8032 compliant)

Configuration

Required environment variables:

  • ERST_KMS_KEY_ID: KMS key ARN or ID
  • ERST_KMS_PUBLIC_KEY_PEM: Ed25519 public key in PEM format
  • ERST_KMS_REGION: AWS region (optional, defaults to us-east-1)

IAM Permissions

Minimal policy required:

{
  "Effect": "Allow",
  "Action": ["kms:Sign"],
  "Resource": "arn:aws:kms:*:ACCOUNT-ID:key/KEY-ID",
  "Condition": {
    "StringEquals": {
      "kms:SigningAlgorithm": "Ed25519"
    }
  }
}

close #992

Verification

  • All tests pass without lint suppressions
  • Code follows DRY principles
  • Zero conversational filler in implementation
  • Backward compatible with existing audit signers
  • Ready for production deployment

Related Issues

Closes

Type of Change

  • New feature
  • Bug fix
  • Breaking change
  • Documentation update

Checklist

  • Code follows project style guidelines
  • Self-review completed
  • Tests added/updated
  • Documentation updated
  • No new linting issues
  • Changes verified locally

================================================================================

Your Name added 6 commits March 25, 2026 19:42
- Add CircuitBreakerThreshold and CircuitBreakerTimeout fields to Config struct
- Update TOML parser to read circuit_breaker_threshold and circuit_breaker_timeout
- Add environment variable support: ERST_CIRCUIT_BREAKER_THRESHOLD and ERST_CIRCUIT_BREAKER_TIMEOUT
- Add WithCircuitBreaker option to RPC client builder
- Replace hardcoded circuit breaker values (5 failures, 60s) with configurable values
- Provide sensible defaults matching current production behavior
- Update erst.example.toml with circuit breaker documentation
- Add comprehensive tests for circuit breaker configuration

Fixes dotandev#849
- Create new package internal/telemetry/methods for method telemetry interfaces
- Move MethodTelemetry and MethodTimer interfaces from internal/rpc to new package
- Export NoopMethodTimer and DefaultMethodTelemetry for external use
- Update all imports in internal/rpc to use the new package location
- Maintain backward compatibility with existing telemetry consumers
- Ensure seamless transition for all method telemetry implementations

Fixes dotandev#850
- MethodTelemetry interface now lives in internal/telemetry/methods/package
- Decoupled from RPC logic for better reusability
- Used by RPC client via methods.MethodTelemetry interface
- Provides StartMethodTimer and MethodTimer hooks for SDK method execution timings

Closes dotandev#850
Issue dotandev#987: dotandev#987
- Add GetSnapshotAtInstruction() method with binary search
- Implement snapshotIndex for fast instruction-based lookup
- Optimize ReconstructStateAt() to use O(log N) search instead of O(N)
- Achieve instantaneous navigation to specific steps

Closes dotandev#987
Issue dotandev#992: dotandev#992
- Add CPU/memory usage metrics to ExecutionState struct
- Add resource metrics to StateSnapshot for time-travel debugging
- Track cpu_instructions, memory_bytes, limits, and usage percentages
- Export all resource metrics in JSON snapshot format
- Enables developers to see gas/budget consumption per step

Closes dotandev#992
Issue dotandev#849: dotandev#849
- Expose circuit_breaker_threshold and circuit_breaker_timeout in erst.toml
- Add ERST_CIRCUIT_BREAKER_THRESHOLD and ERST_CIRCUIT_BREAKER_TIMEOUT env vars
- Inject circuit breaker config into RPC client initialization
- Update example TOML with documented configuration

Closes dotandev#849
@drips-wave
Copy link
Copy Markdown

drips-wave bot commented Mar 27, 2026

@ayomideadeniran Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

ayomideadeniran and others added 6 commits March 27, 2026 22:59
Issue dotandev#850: dotandev#850
- MethodTelemetry interface lives in internal/telemetry/methods/package
- Decoupled from RPC logic for better reusability
- Used by RPC client via methods.MethodTelemetry interface
- Provides StartMethodTimer and MethodTimer hooks

Closes dotandev#850
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant