lex-synapse 0.4.3 → 0.4.4
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 +9 -0
- data/README.md +25 -2
- data/lex-synapse.gemspec +7 -0
- data/lib/legion/extensions/synapse/runners/promote.rb +10 -10
- data/lib/legion/extensions/synapse/version.rb +1 -1
- metadata +99 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8ac47c724b07e3382204748e240fe21e2792c1b0d4e66e8417e659355925016e
|
|
4
|
+
data.tar.gz: f285d48a6b47c8600ad1df931e6309c67a0568f98fe21b5f37765fe9ec15ef52
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d5a9896bc17f20522048beb8143c072f0fc0ba6a11a3d5e05297b3e4f331d249ae03e17fdb2a97f9ff0aec058e0c1b2deaf64a5de11e43643b219aa06a7b5f22
|
|
7
|
+
data.tar.gz: 931632045d2f99c46744848ba3a41cf49290e9e8059e64bb77e263f8777068efc8a15d7d55384c6bcf62d73ce9a129285cc0f04e6f35e196bfd2dacd2b8952e7
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.4.4] - 2026-03-22
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- Add sub-gem runtime dependencies: legion-cache, legion-crypt, legion-data, legion-json, legion-logging, legion-settings, legion-transport
|
|
7
|
+
- Replace hand-rolled stubs in spec_helper with real sub-gem requires (legion/logging, legion/json, legion/settings)
|
|
8
|
+
- Add Helpers::Lex and actor base class stubs to spec_helper for consistent test setup
|
|
9
|
+
- Fix Legion::JSON.dump calls in runners/promote.rb and specs to wrap kwargs in explicit hash (single positional arg)
|
|
10
|
+
- Force Legion::Settings.dig override in support/database.rb so lazy model definitions run against in-memory DB
|
|
11
|
+
|
|
3
12
|
## [0.4.3] - 2026-03-22
|
|
4
13
|
|
|
5
14
|
### Fixed
|
data/README.md
CHANGED
|
@@ -58,7 +58,7 @@ report[:success_rate] # => 1.0
|
|
|
58
58
|
```
|
|
59
59
|
Layer 1 (Bones) — Explicit relationships defined by users (lex-tasker)
|
|
60
60
|
Layer 2 (Nerves) — Synapses wrapping relationships with learning (lex-synapse)
|
|
61
|
-
Layer 3 (Mind) — GAIA cognitive coordination + Apollo shared knowledge
|
|
61
|
+
Layer 3 (Mind) — GAIA cognitive coordination + Apollo shared knowledge
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
### Confidence Scoring
|
|
@@ -123,6 +123,21 @@ Rolls back to a previous mutation version, restoring the before_state.
|
|
|
123
123
|
|
|
124
124
|
Aggregates stats: confidence, status, 24h signal count, success rate, last mutation.
|
|
125
125
|
|
|
126
|
+
### Dream
|
|
127
|
+
`dream(synapse_id:, limit:)`
|
|
128
|
+
|
|
129
|
+
Replays historical signals in simulation mode without affecting live state. Used by the dream cycle to test routing hypothesis changes.
|
|
130
|
+
|
|
131
|
+
### Propose
|
|
132
|
+
`propose(synapse_id:, ...)` / `proposals(synapse_id:, status:)` / `review_proposal(proposal_id:, status:)`
|
|
133
|
+
|
|
134
|
+
Generates proposed changes (reactive on signal evaluation, proactive on periodic analysis) for AUTONOMOUS-tier synapses. Proposals enter a status lifecycle: pending -> approved/rejected/applied/expired/auto_accepted/auto_rejected.
|
|
135
|
+
|
|
136
|
+
### Challenge
|
|
137
|
+
`challenge_proposal(proposal_id:)` / `challenges(proposal_id:)` / `challenger_stats`
|
|
138
|
+
|
|
139
|
+
Runs the adversarial challenge pipeline on pending proposals: conflict detection -> impact scoring -> LLM challenge (gated by impact score) -> weighted aggregation -> auto-accept/reject/await-review outcome.
|
|
140
|
+
|
|
126
141
|
## Relationship Wrapper
|
|
127
142
|
|
|
128
143
|
Wrap existing Layer 1 relationships as synapses (opt-in, zero breaking changes):
|
|
@@ -139,9 +154,17 @@ synapse = Legion::Extensions::Synapse::Helpers::RelationshipWrapper.wrap(relatio
|
|
|
139
154
|
- **Queues**: `synapse.evaluate`, `synapse.pain`
|
|
140
155
|
- **Routing keys**: `synapse.evaluate`, `task.failed`
|
|
141
156
|
|
|
157
|
+
## Autonomous Observation Mode
|
|
158
|
+
|
|
159
|
+
AUTONOMOUS-tier synapses (confidence >= 0.8) generate proposals instead of directly executing changes. Proposals are reactive (triggered on signal evaluation) or proactive (generated periodically). The `lex-synapse.proposals.*` settings control enabled state, LLM engine options, and thresholds.
|
|
160
|
+
|
|
161
|
+
## Adversarial Challenge Phase
|
|
162
|
+
|
|
163
|
+
Pending proposals are subjected to a multi-stage challenge pipeline: conflict detection among sibling proposals, impact scoring, optional LLM challenge (for high-impact proposals), weighted aggregation across verdicts, and auto-accept/reject based on configurable thresholds. The `lex-synapse.challenge.*` settings control gating.
|
|
164
|
+
|
|
142
165
|
## Data Model
|
|
143
166
|
|
|
144
|
-
|
|
167
|
+
Five tables: `synapses` (core routing definition + confidence + status), `synapse_mutations` (versioned change history), `synapse_signals` (per-signal outcome records), `synapse_proposals` (proposal lifecycle), `synapse_challenges` (per-challenge verdicts).
|
|
145
168
|
|
|
146
169
|
## Dependencies
|
|
147
170
|
|
data/lex-synapse.gemspec
CHANGED
|
@@ -26,6 +26,13 @@ Gem::Specification.new do |spec|
|
|
|
26
26
|
end
|
|
27
27
|
spec.require_paths = ['lib']
|
|
28
28
|
|
|
29
|
+
spec.add_dependency 'legion-cache', '>= 1.3.11'
|
|
30
|
+
spec.add_dependency 'legion-crypt', '>= 1.4.9'
|
|
31
|
+
spec.add_dependency 'legion-data', '>= 1.4.17'
|
|
32
|
+
spec.add_dependency 'legion-json', '>= 1.2.1'
|
|
33
|
+
spec.add_dependency 'legion-logging', '>= 1.3.2'
|
|
34
|
+
spec.add_dependency 'legion-settings', '>= 1.3.14'
|
|
35
|
+
spec.add_dependency 'legion-transport', '>= 1.3.9'
|
|
29
36
|
spec.add_dependency 'lex-conditioner', '>= 0.3.0'
|
|
30
37
|
spec.add_dependency 'lex-transformer', '>= 0.3.0'
|
|
31
38
|
end
|
|
@@ -59,16 +59,16 @@ module Legion
|
|
|
59
59
|
def build_knowledge_entry(synapse)
|
|
60
60
|
{
|
|
61
61
|
content_type: 'synapse_pattern',
|
|
62
|
-
content: Legion::JSON.dump(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
62
|
+
content: Legion::JSON.dump({
|
|
63
|
+
source_function_id: synapse.source_function_id,
|
|
64
|
+
target_function_id: synapse.target_function_id,
|
|
65
|
+
attention: synapse.attention,
|
|
66
|
+
transform: synapse.transform,
|
|
67
|
+
routing_strategy: synapse.routing_strategy,
|
|
68
|
+
confidence: synapse.confidence,
|
|
69
|
+
origin: synapse.origin,
|
|
70
|
+
version: synapse.version
|
|
71
|
+
}),
|
|
72
72
|
tags: ['synapse', "origin:#{synapse.origin}", "route:#{synapse.routing_strategy}"],
|
|
73
73
|
source_agent: 'lex-synapse',
|
|
74
74
|
synapse_id: synapse.id
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lex-synapse
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
@@ -9,6 +9,104 @@ bindir: bin
|
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: legion-cache
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: 1.3.11
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: 1.3.11
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: legion-crypt
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: 1.4.9
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - ">="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: 1.4.9
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: legion-data
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: 1.4.17
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: 1.4.17
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: legion-json
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - ">="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: 1.2.1
|
|
61
|
+
type: :runtime
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - ">="
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: 1.2.1
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: legion-logging
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: 1.3.2
|
|
75
|
+
type: :runtime
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - ">="
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: 1.3.2
|
|
82
|
+
- !ruby/object:Gem::Dependency
|
|
83
|
+
name: legion-settings
|
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: 1.3.14
|
|
89
|
+
type: :runtime
|
|
90
|
+
prerelease: false
|
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - ">="
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: 1.3.14
|
|
96
|
+
- !ruby/object:Gem::Dependency
|
|
97
|
+
name: legion-transport
|
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - ">="
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: 1.3.9
|
|
103
|
+
type: :runtime
|
|
104
|
+
prerelease: false
|
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
106
|
+
requirements:
|
|
107
|
+
- - ">="
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: 1.3.9
|
|
12
110
|
- !ruby/object:Gem::Dependency
|
|
13
111
|
name: lex-conditioner
|
|
14
112
|
requirement: !ruby/object:Gem::Requirement
|