Class: Vangrail::JointRiskArtifact
- Inherits:
-
Object
- Object
- Vangrail::JointRiskArtifact
- Defined in:
- lib/vangrail/joint_risk_artifact.rb
Overview
Bounded, versioned posterior approximation consumed by stdlib inference.
Constant Summary collapse
- SCHEMA =
'vangrail-joint-risk-v1'- METHODS =
%w[laplace_diagonal].freeze
- MAX_BYTES =
4 * 1024 * 1024
- MAX_FEATURES =
256- MAX_READERS =
64- MAX_INTERACTIONS =
1024- MAX_THREAT_FAMILIES =
64- MAX_DISAGREEMENT_RULES =
128- FIELDS =
%w[ schema id posterior_method training_prevalence normalization feature_schema readers intercept coefficients interactions context_offsets covariance_diagonal threat_model ood risk_control score_ranges supported calibration training_manifest_sha256 ].freeze
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
-
#sha256 ⇒ Object
readonly
Returns the value of attribute sha256.
Class Method Summary collapse
Instance Method Summary collapse
- #calibration ⇒ Object included from JointRiskArtifactAccessors
- #coefficients ⇒ Object included from JointRiskArtifactAccessors
- #context_offsets ⇒ Object included from JointRiskArtifactAccessors
- #covariance_diagonal ⇒ Object included from JointRiskArtifactAccessors
- #feature_schema ⇒ Object included from JointRiskArtifactAccessors
- #id ⇒ Object included from JointRiskArtifactAccessors
-
#initialize(raw, source_sha256: nil) ⇒ JointRiskArtifact
constructor
A new instance of JointRiskArtifact.
- #interactions ⇒ Object included from JointRiskArtifactAccessors
- #intercept ⇒ Object included from JointRiskArtifactAccessors
- #normalization ⇒ Object included from JointRiskArtifactAccessors
- #ood ⇒ Object included from JointRiskArtifactAccessors
- #posterior_method ⇒ Object included from JointRiskArtifactAccessors
- #readers ⇒ Object included from JointRiskArtifactAccessors
- #risk_control ⇒ Object included from JointRiskArtifactAccessors
- #score_ranges ⇒ Object included from JointRiskArtifactAccessors
- #supported ⇒ Object included from JointRiskArtifactAccessors
- #threat_model ⇒ Object included from JointRiskArtifactAccessors
- #to_h ⇒ Object
- #training_prevalence ⇒ Object included from JointRiskArtifactAccessors
Constructor Details
#initialize(raw, source_sha256: nil) ⇒ JointRiskArtifact
Returns a new instance of JointRiskArtifact.
36 37 38 39 40 41 42 43 44 |
# File 'lib/vangrail/joint_risk_artifact.rb', line 36 def initialize(raw, source_sha256: nil) raise ProtocolError, 'joint risk artifact must be a hash' unless raw.is_a?(Hash) @data = stringify(raw) validate! @data = immutable(@data) @sha256 = (source_sha256 || Digest::SHA256.hexdigest(canonical(@data))).freeze freeze end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
34 35 36 |
# File 'lib/vangrail/joint_risk_artifact.rb', line 34 def data @data end |
#sha256 ⇒ Object (readonly)
Returns the value of attribute sha256.
34 35 36 |
# File 'lib/vangrail/joint_risk_artifact.rb', line 34 def sha256 @sha256 end |
Class Method Details
.load(path, expected_sha256: nil) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/vangrail/joint_risk_artifact.rb', line 46 def self.load(path, expected_sha256: nil) size = File.size(path) raise ProtocolError, "joint risk artifact exceeds #{MAX_BYTES} bytes" if size > MAX_BYTES bytes = File.binread(path) actual = Digest::SHA256.hexdigest(bytes) raise ProtocolError, 'joint risk artifact hash does not match' if expected_sha256 && actual != expected_sha256 new(JSON.parse(bytes), source_sha256: actual) rescue JSON::ParserError => e raise ProtocolError, "joint risk artifact is not JSON: #{e.}" end |
Instance Method Details
#calibration ⇒ Object Originally defined in module JointRiskArtifactAccessors
#coefficients ⇒ Object Originally defined in module JointRiskArtifactAccessors
#context_offsets ⇒ Object Originally defined in module JointRiskArtifactAccessors
#covariance_diagonal ⇒ Object Originally defined in module JointRiskArtifactAccessors
#feature_schema ⇒ Object Originally defined in module JointRiskArtifactAccessors
#id ⇒ Object Originally defined in module JointRiskArtifactAccessors
#interactions ⇒ Object Originally defined in module JointRiskArtifactAccessors
#intercept ⇒ Object Originally defined in module JointRiskArtifactAccessors
#normalization ⇒ Object Originally defined in module JointRiskArtifactAccessors
#ood ⇒ Object Originally defined in module JointRiskArtifactAccessors
#posterior_method ⇒ Object Originally defined in module JointRiskArtifactAccessors
#readers ⇒ Object Originally defined in module JointRiskArtifactAccessors
#risk_control ⇒ Object Originally defined in module JointRiskArtifactAccessors
#score_ranges ⇒ Object Originally defined in module JointRiskArtifactAccessors
#supported ⇒ Object Originally defined in module JointRiskArtifactAccessors
#threat_model ⇒ Object Originally defined in module JointRiskArtifactAccessors
#to_h ⇒ Object
59 60 61 |
# File 'lib/vangrail/joint_risk_artifact.rb', line 59 def to_h data.merge('sha256' => sha256) end |