reeve 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +281 -3
- data/README.md +151 -6
- data/lib/generators/reeve/install/templates/create_audit_entries.rb.tt +63 -3
- data/lib/generators/reeve/install/templates/initializer.rb.tt +20 -0
- data/lib/generators/reeve/upgrade/templates/add_key_epochs_to_reeve_audit_entries.rb.tt +35 -0
- data/lib/generators/reeve/upgrade/templates/add_ledger_chain_to_reeve_audit_entries.rb.tt +51 -0
- data/lib/generators/reeve/upgrade/upgrade_generator.rb +25 -2
- data/lib/generators/reeve/upgrade/upgrade_notes.rb +51 -0
- data/lib/reeve/audit/chain/canonical.rb +144 -0
- data/lib/reeve/audit/chain/epoch_rules.rb +159 -0
- data/lib/reeve/audit/chain/epochs.rb +77 -0
- data/lib/reeve/audit/chain/head.rb +122 -0
- data/lib/reeve/audit/chain/keyring.rb +53 -0
- data/lib/reeve/audit/chain/normalizer.rb +88 -0
- data/lib/reeve/audit/chain/report.rb +177 -0
- data/lib/reeve/audit/chain/rotation.rb +124 -0
- data/lib/reeve/audit/chain/schema.rb +59 -0
- data/lib/reeve/audit/chain/verification.rb +131 -0
- data/lib/reeve/audit/chain/verifier.rb +168 -0
- data/lib/reeve/audit/chain/walk.rb +137 -0
- data/lib/reeve/audit/chain.rb +207 -0
- data/lib/reeve/audit/chain_epoch.rb +24 -0
- data/lib/reeve/audit/chain_record.rb +66 -0
- data/lib/reeve/audit/isolated_recorder.rb +5 -0
- data/lib/reeve/audit/recorder.rb +32 -19
- data/lib/reeve/audit.rb +37 -6
- data/lib/reeve/configuration.rb +66 -2
- data/lib/reeve/errors.rb +15 -0
- data/lib/reeve/ledger_key.rb +47 -0
- data/lib/reeve/railtie.rb +16 -0
- data/lib/reeve/tasks.rb +91 -0
- data/lib/reeve/testing/checks/contract_version.rb +2 -1
- data/lib/reeve/testing/checks/ledger_chain.rb +116 -0
- data/lib/reeve/testing/checks.rb +29 -4
- data/lib/reeve/testing/compliance_assertions.rb +3 -2
- data/lib/reeve/testing/compliance_suite.rb +2 -2
- data/lib/reeve/testing/ledger.rb +11 -1
- data/lib/reeve/testing/report.rb +8 -0
- data/lib/reeve/testing.rb +1 -1
- data/lib/reeve/version.rb +1 -1
- data/lib/reeve.rb +2 -0
- metadata +24 -2
data/lib/reeve/testing/ledger.rb
CHANGED
|
@@ -10,7 +10,8 @@ module Reeve
|
|
|
10
10
|
# the ledger is absent.
|
|
11
11
|
#
|
|
12
12
|
# A host with its own non-ActiveRecord recorder can pass any object with these six
|
|
13
|
-
# methods as `ledger:` to any ledger-reading check
|
|
13
|
+
# methods as `ledger:` to any ledger-reading check; LedgerChain also asks for
|
|
14
|
+
# #verify_chain, and is skipped by a ledger that has none.
|
|
14
15
|
class Ledger
|
|
15
16
|
def self.default
|
|
16
17
|
new
|
|
@@ -67,6 +68,15 @@ module Reeve
|
|
|
67
68
|
entry_class.column_names.map(&:to_s)
|
|
68
69
|
end
|
|
69
70
|
|
|
71
|
+
# The chain's verification of the whole ledger (specs/002), or nil when the ledger is
|
|
72
|
+
# not loaded. The kit's only way to the chain: it names Reeve::Audit::Chain here, at
|
|
73
|
+
# call time, so `require "reeve/testing"` still loads with no ActiveRecord at all.
|
|
74
|
+
def verify_chain
|
|
75
|
+
return nil unless available? && Reeve::Audit.const_defined?(:Chain, false)
|
|
76
|
+
|
|
77
|
+
Reeve::Audit::Chain.verify(entry_class: entry_class)
|
|
78
|
+
end
|
|
79
|
+
|
|
70
80
|
private
|
|
71
81
|
|
|
72
82
|
def entry_class
|
data/lib/reeve/testing/report.rb
CHANGED
|
@@ -31,6 +31,14 @@ module Reeve
|
|
|
31
31
|
!results.empty? && results.all?(&:skipped?)
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
+
# A check had nothing to examine — a per-tool check run over no tools at all. passed?
|
|
35
|
+
# is still true then, since nothing failed; a test framework shows the skip, but a
|
|
36
|
+
# gate with no framework (a CI script, a deploy step) has only this to stop on. A skip
|
|
37
|
+
# for a missing inventory is not this: there the tools existed and were checked.
|
|
38
|
+
def nothing_checked?
|
|
39
|
+
results.any? { |result| result.skipped? && result.details[:coverage] == :none }
|
|
40
|
+
end
|
|
41
|
+
|
|
34
42
|
def failures
|
|
35
43
|
results.select(&:failed?)
|
|
36
44
|
end
|
data/lib/reeve/testing.rb
CHANGED
|
@@ -18,7 +18,7 @@ module Reeve
|
|
|
18
18
|
#
|
|
19
19
|
# require "reeve/testing"
|
|
20
20
|
# report = Reeve::Checks.run_all(principals: [alice, bob])
|
|
21
|
-
# abort report.to_s
|
|
21
|
+
# abort report.to_s if report.failed? || report.nothing_checked?
|
|
22
22
|
module Testing
|
|
23
23
|
class << self
|
|
24
24
|
# The two fixture principals the compliance suite runs every tool against. Set once,
|
data/lib/reeve/version.rb
CHANGED
data/lib/reeve.rb
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require_relative "reeve/version"
|
|
4
4
|
require_relative "reeve/errors"
|
|
5
|
+
require_relative "reeve/ledger_key"
|
|
5
6
|
require_relative "reeve/decision"
|
|
6
7
|
require_relative "reeve/configuration"
|
|
7
8
|
require_relative "reeve/context"
|
|
@@ -9,6 +10,7 @@ require_relative "reeve/scope_result"
|
|
|
9
10
|
require_relative "reeve/invocation"
|
|
10
11
|
require_relative "reeve/authorization"
|
|
11
12
|
require_relative "reeve/inventory"
|
|
13
|
+
require_relative "reeve/railtie" if defined?(Rails::Railtie)
|
|
12
14
|
|
|
13
15
|
# Reeve — per-record authorization and an append-only audit ledger for the MCP tools
|
|
14
16
|
# a Rails application exposes to AI agents.
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: reeve
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Victor Velazquez
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-10-
|
|
11
|
+
date: 2026-10-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: |
|
|
14
14
|
Reeve makes it safe for a Rails application to expose MCP (Model Context Protocol)
|
|
@@ -31,9 +31,27 @@ files:
|
|
|
31
31
|
- lib/generators/reeve/install/templates/create_audit_entries.rb.tt
|
|
32
32
|
- lib/generators/reeve/install/templates/initializer.rb.tt
|
|
33
33
|
- lib/generators/reeve/upgrade/templates/add_contract_version_to_reeve_audit_entries.rb.tt
|
|
34
|
+
- lib/generators/reeve/upgrade/templates/add_key_epochs_to_reeve_audit_entries.rb.tt
|
|
35
|
+
- lib/generators/reeve/upgrade/templates/add_ledger_chain_to_reeve_audit_entries.rb.tt
|
|
34
36
|
- lib/generators/reeve/upgrade/upgrade_generator.rb
|
|
37
|
+
- lib/generators/reeve/upgrade/upgrade_notes.rb
|
|
35
38
|
- lib/reeve.rb
|
|
36
39
|
- lib/reeve/audit.rb
|
|
40
|
+
- lib/reeve/audit/chain.rb
|
|
41
|
+
- lib/reeve/audit/chain/canonical.rb
|
|
42
|
+
- lib/reeve/audit/chain/epoch_rules.rb
|
|
43
|
+
- lib/reeve/audit/chain/epochs.rb
|
|
44
|
+
- lib/reeve/audit/chain/head.rb
|
|
45
|
+
- lib/reeve/audit/chain/keyring.rb
|
|
46
|
+
- lib/reeve/audit/chain/normalizer.rb
|
|
47
|
+
- lib/reeve/audit/chain/report.rb
|
|
48
|
+
- lib/reeve/audit/chain/rotation.rb
|
|
49
|
+
- lib/reeve/audit/chain/schema.rb
|
|
50
|
+
- lib/reeve/audit/chain/verification.rb
|
|
51
|
+
- lib/reeve/audit/chain/verifier.rb
|
|
52
|
+
- lib/reeve/audit/chain/walk.rb
|
|
53
|
+
- lib/reeve/audit/chain_epoch.rb
|
|
54
|
+
- lib/reeve/audit/chain_record.rb
|
|
37
55
|
- lib/reeve/audit/entry.rb
|
|
38
56
|
- lib/reeve/audit/isolated_recorder.rb
|
|
39
57
|
- lib/reeve/audit/query.rb
|
|
@@ -59,9 +77,12 @@ files:
|
|
|
59
77
|
- lib/reeve/inventory.rb
|
|
60
78
|
- lib/reeve/inventory/report.rb
|
|
61
79
|
- lib/reeve/invocation.rb
|
|
80
|
+
- lib/reeve/ledger_key.rb
|
|
62
81
|
- lib/reeve/minitest.rb
|
|
82
|
+
- lib/reeve/railtie.rb
|
|
63
83
|
- lib/reeve/rspec.rb
|
|
64
84
|
- lib/reeve/scope_result.rb
|
|
85
|
+
- lib/reeve/tasks.rb
|
|
65
86
|
- lib/reeve/testing.rb
|
|
66
87
|
- lib/reeve/testing/assertions.rb
|
|
67
88
|
- lib/reeve/testing/checks.rb
|
|
@@ -71,6 +92,7 @@ files:
|
|
|
71
92
|
- lib/reeve/testing/checks/cross_principal_leak.rb
|
|
72
93
|
- lib/reeve/testing/checks/endpoint_coverage.rb
|
|
73
94
|
- lib/reeve/testing/checks/guard_declared.rb
|
|
95
|
+
- lib/reeve/testing/checks/ledger_chain.rb
|
|
74
96
|
- lib/reeve/testing/checks/principal_required.rb
|
|
75
97
|
- lib/reeve/testing/checks/redaction_holds.rb
|
|
76
98
|
- lib/reeve/testing/checks/rule_present.rb
|