Class: Necropsy::Bench::PrecisionGate

Inherits:
Object
  • Object
show all
Defined in:
lib/necropsy/bench/precision_gate.rb

Constant Summary collapse

MAX_FEATURES =
100
IMPROVEMENT_DIRECTIONS =
{
  'candidate_precision' => :increase,
  'known_positive_recall' => :increase,
  'candidate_count' => :increase,
  'candidate_loc' => :increase,
  'blocked_count' => :decrease,
  'blocked_rate' => :decrease,
  'unknown_finding_count' => :decrease,
  'unknown_finding_rate' => :decrease,
  'unknown_resolution_rate' => :decrease
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(policy:, candidate_union_summary:, feature_ablation:) ⇒ PrecisionGate

Returns a new instance of PrecisionGate.



19
20
21
22
23
# File 'lib/necropsy/bench/precision_gate.rb', line 19

def initialize(policy:, candidate_union_summary:, feature_ablation:)
  @policy = policy
  @candidate_union_summary = candidate_union_summary
  @feature_ablation = feature_ablation
end

Instance Method Details

#callObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/necropsy/bench/precision_gate.rb', line 25

def call
  validate!
  quality = quality_status
  features = feature_status
  checks = {
    'precision' => quality.fetch('precision_passed'),
    'candidate_yield' => quality.fetch('yield_passed'),
    'default_features_evaluated' => features.values.all? { |feature| feature['evaluated'] },
    'default_features_improve' => features.values.all? { |feature| feature['passed'] }
  }
  {
    'schema_version' => 1,
    'enforced' => true,
    'policy' => normalized_policy,
    'quality' => quality,
    'features' => features,
    'checks' => checks,
    'passed' => checks.values.all?
  }
end