Module: Engram::Ports::ProcessedTurns

Included in:
Adapters::InMemoryProcessedTurns, Rails::CacheProcessedTurns
Defined in:
lib/engram/ports/processed_turns.rb

Overview

Scoped lifecycle for observation idempotency. Implementations suppress concurrent claims while a lease is live. Lease expiry may permit overlap; this contract does not provide token ownership, fencing, or exactly-once execution. #claim returns a truthy opaque token when the caller may proceed, or nil when suppressed. Implementations: Adapters::InMemoryProcessedTurns, Rails::CacheProcessedTurns.

Instance Method Summary collapse

Instance Method Details

#claim(scope:, key:) ⇒ Object

Raises:

  • (NotImplementedError)


11
12
13
# File 'lib/engram/ports/processed_turns.rb', line 11

def claim(scope:, key:)
  raise NotImplementedError, "#{self.class} must implement #claim"
end

#complete(scope:, key:, claim:) ⇒ Object

Raises:

  • (NotImplementedError)


15
16
17
# File 'lib/engram/ports/processed_turns.rb', line 15

def complete(scope:, key:, claim:)
  raise NotImplementedError, "#{self.class} must implement #complete"
end

#completed?(scope:, key:) ⇒ Boolean

Returns:

  • (Boolean)

Raises:

  • (NotImplementedError)


23
24
25
# File 'lib/engram/ports/processed_turns.rb', line 23

def completed?(scope:, key:)
  raise NotImplementedError, "#{self.class} must implement #completed?"
end

#release(scope:, key:, claim:) ⇒ Object

Raises:

  • (NotImplementedError)


19
20
21
# File 'lib/engram/ports/processed_turns.rb', line 19

def release(scope:, key:, claim:)
  raise NotImplementedError, "#{self.class} must implement #release"
end