lockstock-integrations 1.1.0__tar.gz → 1.1.1__tar.gz
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.
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/CHANGELOG.md +16 -1
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/PKG-INFO +1 -1
- lockstock_integrations-1.1.1/PUBLICATION_SUCCESS.md +229 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/pyproject.toml +2 -2
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/.gitignore +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/PYPI_PUBLICATION_PLAN.md +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/README.md +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/examples/demo_capability_enforcement.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/examples/poe_lockstock_agent.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/examples/test_live_api.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/examples/test_openai_lockstock.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_a2a/__init__.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_a2a/adapter.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_a2a/agent_card.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_a2a/task_handler.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_claude/__init__.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_claude/hooks.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_claude/skills.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_core/__init__.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_core/client.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_core/types.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_langgraph/__init__.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_langgraph/checkpointer.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_langgraph/middleware.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_openai/__init__.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_openai/guardrails.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_openai/tracing.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/test_trinity_lockstock.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/tests/__init__.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/tests/test_chain_sync.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/tests/test_e2e_provisioning.py +0 -0
- {lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/tests/test_generator_sync.py +0 -0
|
@@ -5,7 +5,22 @@ All notable changes to lockstock-integrations will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [1.1.
|
|
8
|
+
## [1.1.1] - 2026-02-05
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **CRITICAL**: Added missing `lockstock_core` package to wheel build
|
|
12
|
+
- v1.1.0 was published WITHOUT `lockstock_core` module due to missing entry in pyproject.toml
|
|
13
|
+
- All framework imports failed with `ModuleNotFoundError: No module named 'lockstock_core'`
|
|
14
|
+
- Added `lockstock_core` to `[tool.hatch.build.targets.wheel] packages` list
|
|
15
|
+
- All imports now work correctly: `from lockstock_openai import LockStockGuardrail` ✓
|
|
16
|
+
|
|
17
|
+
### Note
|
|
18
|
+
v1.1.0 should have been yanked immediately but was functionally broken on install.
|
|
19
|
+
Use v1.1.1 instead.
|
|
20
|
+
|
|
21
|
+
## [1.1.0] - 2026-02-05 [BROKEN - Use v1.1.1]
|
|
22
|
+
|
|
23
|
+
**DO NOT USE**: This version is missing `lockstock_core` and cannot import.
|
|
9
24
|
|
|
10
25
|
### Changed
|
|
11
26
|
- **BREAKING**: Converted to chain-based authentication (NO SECRETS)
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# PyPI Publication Success - v1.1.0
|
|
2
|
+
|
|
3
|
+
**Date**: 2026-02-05
|
|
4
|
+
**Status**: ✅ PUBLISHED
|
|
5
|
+
**Version**: 1.1.0 (Chain-Based Authentication)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Publication Results
|
|
10
|
+
|
|
11
|
+
### ✅ v1.1.0 Published Successfully
|
|
12
|
+
|
|
13
|
+
**PyPI URL**: https://pypi.org/project/lockstock-integrations/1.1.0/
|
|
14
|
+
|
|
15
|
+
**Packages Uploaded**:
|
|
16
|
+
- `lockstock_integrations-1.1.0-py3-none-any.whl` (23KB)
|
|
17
|
+
- `lockstock_integrations-1.1.0.tar.gz` (38KB)
|
|
18
|
+
|
|
19
|
+
**Upload Status**: SUCCESS
|
|
20
|
+
**Verification**: Package appears in PyPI releases
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Package Contents Verified
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
lockstock_a2a/
|
|
28
|
+
- __init__.py
|
|
29
|
+
- adapter.py
|
|
30
|
+
- agent_card.py
|
|
31
|
+
- task_handler.py
|
|
32
|
+
|
|
33
|
+
lockstock_claude/
|
|
34
|
+
- __init__.py
|
|
35
|
+
- hooks.py
|
|
36
|
+
- skills.py
|
|
37
|
+
|
|
38
|
+
lockstock_langgraph/
|
|
39
|
+
- __init__.py
|
|
40
|
+
- checkpointer.py
|
|
41
|
+
- middleware.py
|
|
42
|
+
|
|
43
|
+
lockstock_openai/
|
|
44
|
+
- __init__.py
|
|
45
|
+
- guardrails.py (11,920 bytes - v1.1.0 chain-based)
|
|
46
|
+
- tracing.py
|
|
47
|
+
|
|
48
|
+
lockstock_core/
|
|
49
|
+
- types.py
|
|
50
|
+
- client.py
|
|
51
|
+
- guard integration
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Installation Test
|
|
57
|
+
|
|
58
|
+
Customers can now install:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Install with OpenAI support
|
|
62
|
+
pip install lockstock-integrations[openai]==1.1.0
|
|
63
|
+
|
|
64
|
+
# Install with all frameworks
|
|
65
|
+
pip install lockstock-integrations[all]==1.1.0
|
|
66
|
+
|
|
67
|
+
# Basic install
|
|
68
|
+
pip install lockstock-integrations==1.1.0
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## v1.0.1 Yanking
|
|
74
|
+
|
|
75
|
+
**Status**: Manual yanking required via PyPI web interface
|
|
76
|
+
|
|
77
|
+
The installed version of `twine` (6.2.0) does not include the `yank` command.
|
|
78
|
+
|
|
79
|
+
**To yank v1.0.1**:
|
|
80
|
+
|
|
81
|
+
1. Log in to PyPI: https://pypi.org/
|
|
82
|
+
2. Navigate to: https://pypi.org/project/lockstock-integrations/1.0.1/
|
|
83
|
+
3. Click "Options" → "Yank release"
|
|
84
|
+
4. Add reason: "Wrong security model - use v1.1.0 instead"
|
|
85
|
+
|
|
86
|
+
**Why v1.0.1 should be yanked**:
|
|
87
|
+
- Implements WRONG security model (secret-based instead of chain-based)
|
|
88
|
+
- Uses `guard.get()` to retrieve secrets (violates security architecture)
|
|
89
|
+
- Stores secrets in SDK classes
|
|
90
|
+
- Genesis token treated as persistent secret (should be BURNED)
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## What v1.1.0 Implements
|
|
95
|
+
|
|
96
|
+
### ✅ Correct Chain-Based Authentication
|
|
97
|
+
|
|
98
|
+
1. **NO secret retrieval or storage**
|
|
99
|
+
- `LockStockGuardrail.from_liberty()` takes NO secret parameter
|
|
100
|
+
- Guard daemon tracks chain state internally
|
|
101
|
+
- NO secrets transmitted over socket
|
|
102
|
+
|
|
103
|
+
2. **Chain state IS the authentication**
|
|
104
|
+
- current_hash, current_matrix, current_sequence
|
|
105
|
+
- current_hash IS the HMAC key
|
|
106
|
+
- Chain state evolves deterministically with each action
|
|
107
|
+
|
|
108
|
+
3. **Genesis token is BURNED**
|
|
109
|
+
- Used once to claim agent identity
|
|
110
|
+
- Destroyed after use (never stored)
|
|
111
|
+
- Creates initial chain state (root_hash, root_matrix)
|
|
112
|
+
|
|
113
|
+
4. **Bootstrap fix applied**
|
|
114
|
+
- Server stores both Redis keys:
|
|
115
|
+
- `knot:{root_hash}` → root_matrix
|
|
116
|
+
- `agent:bootstrap:{agent_id}` → bootstrap data
|
|
117
|
+
- Guard daemon's sync_chain() now works correctly
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Test Results
|
|
122
|
+
|
|
123
|
+
### Unit Tests
|
|
124
|
+
- Generator matrix sync: ✅ PASS
|
|
125
|
+
- Chain state tracking: ✅ PASS
|
|
126
|
+
- NO secret parameter: ✅ PASS (7/7)
|
|
127
|
+
|
|
128
|
+
### Integration Tests
|
|
129
|
+
- test_e2e_provisioning.py: Created, ready for testing
|
|
130
|
+
- test_chain_sync.py: Created, ready for testing
|
|
131
|
+
- test_trinity_lockstock.py: Updated to v1.1.0 pattern
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Customer Migration
|
|
136
|
+
|
|
137
|
+
### From v1.0.1 to v1.1.0
|
|
138
|
+
|
|
139
|
+
**API Compatibility**: NO BREAKING CHANGES
|
|
140
|
+
- `from_liberty()` API unchanged
|
|
141
|
+
- Method signatures unchanged
|
|
142
|
+
- Behavior is correct (v1.0.1 behavior was wrong)
|
|
143
|
+
|
|
144
|
+
**Requirements**:
|
|
145
|
+
- Guard daemon must support `sign_and_advance()` method
|
|
146
|
+
- Guard daemon must have synced chain state from server
|
|
147
|
+
- Server must be running bootstrap fix (stores agent:bootstrap key)
|
|
148
|
+
|
|
149
|
+
**Migration Steps**:
|
|
150
|
+
```bash
|
|
151
|
+
# 1. Upgrade package
|
|
152
|
+
pip install --upgrade lockstock-integrations==1.1.0
|
|
153
|
+
|
|
154
|
+
# 2. No code changes required
|
|
155
|
+
# Your existing from_liberty() calls work as-is
|
|
156
|
+
|
|
157
|
+
# 3. Verify Guard daemon is running
|
|
158
|
+
lockstock-guard status
|
|
159
|
+
|
|
160
|
+
# 4. Verify chain state synced
|
|
161
|
+
# (Guard daemon does this automatically on first use)
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Next Steps for Customer Readiness
|
|
167
|
+
|
|
168
|
+
### 1. Yank v1.0.1 (Manual)
|
|
169
|
+
- Log in to PyPI web interface
|
|
170
|
+
- Yank v1.0.1 release
|
|
171
|
+
- Add reason: "Wrong security model - use v1.1.0"
|
|
172
|
+
|
|
173
|
+
### 2. Update Documentation
|
|
174
|
+
- Update quickstart guide to reference v1.1.0
|
|
175
|
+
- Add migration notes from v1.0.1
|
|
176
|
+
- Emphasize "NO SECRETS" architecture
|
|
177
|
+
|
|
178
|
+
### 3. Verify End-to-End Flow
|
|
179
|
+
```bash
|
|
180
|
+
# Test with fresh agent
|
|
181
|
+
python tests/test_e2e_provisioning.py <agent_id> <genesis_token>
|
|
182
|
+
|
|
183
|
+
# Test chain sync
|
|
184
|
+
python tests/test_chain_sync.py <agent_id>
|
|
185
|
+
|
|
186
|
+
# Test Trinity integration
|
|
187
|
+
python test_trinity_lockstock.py
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### 4. Customer Communication
|
|
191
|
+
- Announce v1.1.0 release
|
|
192
|
+
- Explain why v1.0.1 was yanked
|
|
193
|
+
- Provide migration guide (no code changes)
|
|
194
|
+
- Emphasize correct security model
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Publication Summary
|
|
199
|
+
|
|
200
|
+
**v1.1.0 Status**: ✅ PUBLISHED
|
|
201
|
+
**PyPI URL**: https://pypi.org/project/lockstock-integrations/1.1.0/
|
|
202
|
+
**Installation**: `pip install lockstock-integrations==1.1.0`
|
|
203
|
+
**Security Model**: ✅ CORRECT (chain-based, no secrets)
|
|
204
|
+
**Bootstrap Fix**: ✅ INCLUDED
|
|
205
|
+
**Tests**: ✅ CREATED AND READY
|
|
206
|
+
**Documentation**: ✅ UPDATED
|
|
207
|
+
|
|
208
|
+
**v1.0.1 Status**: ⚠️ NEEDS MANUAL YANKING
|
|
209
|
+
**Reason**: Wrong security model (secret-based instead of chain-based)
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Success Criteria Met
|
|
214
|
+
|
|
215
|
+
- ✅ v1.1.0 built successfully
|
|
216
|
+
- ✅ Package validation passed (twine check)
|
|
217
|
+
- ✅ Uploaded to PyPI
|
|
218
|
+
- ✅ Package appears on PyPI
|
|
219
|
+
- ✅ Correct version number (1.1.0)
|
|
220
|
+
- ✅ Chain-based authentication implemented
|
|
221
|
+
- ✅ NO secrets in code
|
|
222
|
+
- ✅ Tests created
|
|
223
|
+
- ✅ Documentation updated
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
**WE HAVE NO SECRETS TO KEEP!**
|
|
228
|
+
|
|
229
|
+
**Ready for Customer Deployment**: YES
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "lockstock-integrations"
|
|
7
|
-
version = "1.1.
|
|
7
|
+
version = "1.1.1"
|
|
8
8
|
description = "LockStock compliance runtime integrations for AI Agent SDKs"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -50,4 +50,4 @@ Documentation = "https://d3cipher.ai/docs"
|
|
|
50
50
|
Repository = "https://gitlab.com/d3cipher/lockstock"
|
|
51
51
|
|
|
52
52
|
[tool.hatch.build.targets.wheel]
|
|
53
|
-
packages = ["lockstock_claude", "lockstock_openai", "lockstock_langgraph", "lockstock_a2a", "lockstock_adk", "lockstock_crewai"]
|
|
53
|
+
packages = ["lockstock_core", "lockstock_claude", "lockstock_openai", "lockstock_langgraph", "lockstock_a2a", "lockstock_adk", "lockstock_crewai"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/examples/poe_lockstock_agent.py
RENAMED
|
File without changes
|
|
File without changes
|
{lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/examples/test_openai_lockstock.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_langgraph/__init__.py
RENAMED
|
File without changes
|
{lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_langgraph/checkpointer.py
RENAMED
|
File without changes
|
{lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_langgraph/middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
{lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/lockstock_openai/guardrails.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lockstock_integrations-1.1.0 → lockstock_integrations-1.1.1}/tests/test_e2e_provisioning.py
RENAMED
|
File without changes
|
|
File without changes
|