Module: Causalontology
- Defined in:
- lib/causalontology/jcs.rb,
lib/causalontology.rb,
lib/causalontology/store.rb,
lib/causalontology/schema.rb,
lib/causalontology/ed25519.rb,
lib/causalontology/signing.rb,
lib/causalontology/canonical.rb,
lib/causalontology/semantics.rb
Overview
RFC 8785 (JSON Canonicalization Scheme) serialization.
Sorted keys (code-point order), minimal string escaping, ECMAScript-style
canonical numbers (1.0 -> "1", 0.7 stays "0.7", exponent "1e-7" not
"1e-07"). The number serialization implements the RFC 8785 rules for the
value ranges Causalontology uses (integers, integer-valued floats, and
short decimals); full ECMAScript exponent formatting for extreme
magnitudes is pinned at the 1.0.0 conformance freeze.
Ruby specifics relied on here: JSON.parse keeps the integer-versus-decimal
source distinction ("1" -> Integer, "1.0" -> Float), and Float#to_s prints
the shortest round-trip decimal with the same decimal/exponent thresholds
as Python's repr (1e16 and 1e-4), so only the exponent spelling needs
normalizing ("1.0e-07" -> "1e-7").
Defined Under Namespace
Modules: Canonical, Ed25519, Jcs, Schema, Semantics, Signing
Classes: InMemoryStore, RejectedWrite
Constant Summary
collapse
- VERSION =
specification 1.0.0 (vectors frozen 2026-07-13)
"1.0.0"
- UNIT_SECONDS =
Rule 4's fixed unit-conversion constants, re-exported at the top level.
Semantics::UNIT_SECONDS
- CONTENT_KINDS =
Set.new(["occurrent", "cro", "continuant", "realizable"]).freeze
- RECORD_KINDS =
Set.new(["assertion", "enrichment", "retraction", "succession"]).freeze
Class Method Summary
collapse
-
.admissible(cro, elapsed_seconds) ⇒ Object
-
.canonicalize(obj, kind = nil) ⇒ Object
-- canonicalization and identity (spec/identity.md) ---------------------.
-
.conflicts(a, b) ⇒ Object
-
.hierarchy_consistent(parent, members) ⇒ Object
-
.identify(obj, kind = nil) ⇒ Object
-
.identity_bearing(obj, kind = nil) ⇒ Object
-
.infer_kind(obj) ⇒ Object
-
.is_partial(cro) ⇒ Object
-
.keypair_from_seed(seed32) ⇒ Object
-- provenance (spec/provenance.md) ---------------------------------------.
-
.refinement_valid(child, parent) ⇒ Object
-
.sign_record(record, secret, kind = nil) ⇒ Object
-
.validate_schema(obj, kind = nil) ⇒ Object
-- validation (spec/schema/, spec/semantics.md) --------------------------.
-
.validate_semantics(obj, kind = nil) ⇒ Object
-
.verify_record(record, kind = nil) ⇒ Object
Class Method Details
.admissible(cro, elapsed_seconds) ⇒ Object
64
65
66
|
# File 'lib/causalontology.rb', line 64
def admissible(cro, elapsed_seconds)
Semantics.admissible(cro, elapsed_seconds)
end
|
.canonicalize(obj, kind = nil) ⇒ Object
-- canonicalization and identity (spec/identity.md) ---------------------
34
35
36
|
# File 'lib/causalontology.rb', line 34
def canonicalize(obj, kind = nil)
Canonical.canonicalize(obj, kind)
end
|
.conflicts(a, b) ⇒ Object
68
69
70
|
# File 'lib/causalontology.rb', line 68
def conflicts(a, b)
Semantics.conflicts(a, b)
end
|
.hierarchy_consistent(parent, members) ⇒ Object
.identify(obj, kind = nil) ⇒ Object
38
39
40
|
# File 'lib/causalontology.rb', line 38
def identify(obj, kind = nil)
Canonical.identify(obj, kind)
end
|
.identity_bearing(obj, kind = nil) ⇒ Object
42
43
44
|
# File 'lib/causalontology.rb', line 42
def identity_bearing(obj, kind = nil)
Canonical.identity_bearing(obj, kind)
end
|
.infer_kind(obj) ⇒ Object
46
47
48
|
# File 'lib/causalontology.rb', line 46
def infer_kind(obj)
Canonical.infer_kind(obj)
end
|
.is_partial(cro) ⇒ Object
60
61
62
|
# File 'lib/causalontology.rb', line 60
def is_partial(cro)
Semantics.is_partial(cro)
end
|
.keypair_from_seed(seed32) ⇒ Object
-- provenance (spec/provenance.md) ---------------------------------------
.refinement_valid(child, parent) ⇒ Object
72
73
74
|
# File 'lib/causalontology.rb', line 72
def refinement_valid(child, parent)
Semantics.refinement_valid(child, parent)
end
|
.sign_record(record, secret, kind = nil) ⇒ Object
86
87
88
|
# File 'lib/causalontology.rb', line 86
def sign_record(record, secret, kind = nil)
Signing.sign_record(record, secret, kind)
end
|
.validate_schema(obj, kind = nil) ⇒ Object
-- validation (spec/schema/, spec/semantics.md) --------------------------
52
53
54
|
# File 'lib/causalontology.rb', line 52
def validate_schema(obj, kind = nil)
Schema.validate_schema(obj, kind)
end
|
.validate_semantics(obj, kind = nil) ⇒ Object
.verify_record(record, kind = nil) ⇒ Object
90
91
92
|
# File 'lib/causalontology.rb', line 90
def verify_record(record, kind = nil)
Signing.verify_record(record, kind)
end
|