buildlog 0.4.0__py3-none-any.whl → 0.5.0__py3-none-any.whl

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.
@@ -0,0 +1,419 @@
1
+ Metadata-Version: 2.4
2
+ Name: buildlog
3
+ Version: 0.5.0
4
+ Summary: Engineering notebook for AI-assisted development
5
+ Project-URL: Homepage, https://github.com/Peleke/buildlog-template
6
+ Project-URL: Repository, https://github.com/Peleke/buildlog-template
7
+ Author: Peleke Sengstacke
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Keywords: ai,buildlog,development,documentation,journal
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Documentation
21
+ Classifier: Topic :: Software Development :: Documentation
22
+ Requires-Python: >=3.10
23
+ Requires-Dist: click>=8.0.0
24
+ Requires-Dist: copier>=9.0.0
25
+ Requires-Dist: numpy>=1.21.0
26
+ Requires-Dist: pyyaml>=6.0.0
27
+ Provides-Extra: all
28
+ Requires-Dist: mcp>=1.0.0; extra == 'all'
29
+ Requires-Dist: openai>=1.0.0; extra == 'all'
30
+ Requires-Dist: sentence-transformers>=2.2.0; extra == 'all'
31
+ Provides-Extra: dev
32
+ Requires-Dist: black>=24.0.0; extra == 'dev'
33
+ Requires-Dist: flake8>=7.0.0; extra == 'dev'
34
+ Requires-Dist: isort>=5.13.0; extra == 'dev'
35
+ Requires-Dist: mypy>=1.8.0; extra == 'dev'
36
+ Requires-Dist: pre-commit>=3.6.0; extra == 'dev'
37
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
38
+ Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
39
+ Requires-Dist: pytest>=7.0.0; extra == 'dev'
40
+ Requires-Dist: types-pyyaml>=6.0.0; extra == 'dev'
41
+ Provides-Extra: embeddings
42
+ Requires-Dist: sentence-transformers>=2.2.0; extra == 'embeddings'
43
+ Provides-Extra: mcp
44
+ Requires-Dist: mcp>=1.0.0; extra == 'mcp'
45
+ Provides-Extra: openai
46
+ Requires-Dist: openai>=1.0.0; extra == 'openai'
47
+ Description-Content-Type: text/markdown
48
+
49
+ <div align="center">
50
+
51
+ > **NOTE:** Forgive the agent dump; edit incoming.
52
+ >
53
+ > **RE: The art** — Yes, it's AI-generated. Yes, that's hypocritical for a project about rigor over vibes. Now that this is no longer internal, looking for an actual artist to pay for a real logo. If you know someone good, [open an issue](https://github.com/Peleke/buildlog-template/issues) or DM me. Budget exists.
54
+
55
+ # buildlog
56
+
57
+ ### The Only Agent Learning System You Can Prove Works
58
+
59
+ [![PyPI](https://img.shields.io/pypi/v/buildlog?style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/buildlog/)
60
+ [![Python](https://img.shields.io/pypi/pyversions/buildlog?style=for-the-badge&logo=python&logoColor=white)](https://python.org/)
61
+ [![CI](https://img.shields.io/github/actions/workflow/status/Peleke/buildlog-template/ci.yml?branch=main&style=for-the-badge&logo=github&label=CI)](https://github.com/Peleke/buildlog-template/actions/workflows/ci.yml)
62
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)
63
+
64
+ **Falsifiable claims. Measurable outcomes. No vibes.**
65
+
66
+ <img src="assets/hero-banner-perfectdeliberate.png" alt="buildlog - The Only Agent Learning System You Can Prove Works" width="800"/>
67
+
68
+ [The Problem](#the-problem) · [The Claim](#the-claim) · [The Mechanism](#the-mechanism) · [Quick Start](#quick-start)
69
+
70
+ ---
71
+
72
+ </div>
73
+
74
+ ## The Problem
75
+
76
+ Everyone's building "agent memory." Blog posts announce breakthroughs. Tweets show impressive demos. Products ship with "learning" in the tagline.
77
+
78
+ Ask them one question: **How do you know it works?**
79
+
80
+ You'll get:
81
+ - "It feels smarter"
82
+ - "Users report better results"
83
+ - "The agent remembers things now"
84
+
85
+ That's not evidence. That's vibes.
86
+
87
+ Here's what a real answer looks like:
88
+
89
+ > "We track Repeated Mistake Rate (RMR) across sessions. Our null hypothesis is that the system makes no difference. After 50 sessions, RMR decreased from 34% to 12% (p < 0.01). The effect size is 0.65. Here's the data."
90
+
91
+ If you can't say something like that, you don't have agent learning. You have a demo.
92
+
93
+ ---
94
+
95
+ ## The Claim
96
+
97
+ **buildlog** makes a falsifiable claim:
98
+
99
+ > **H₀ (Null Hypothesis):** buildlog makes no measurable difference to agent behavior.
100
+ >
101
+ > **H₁ (Alternative):** Agents using buildlog-learned rules have lower Repeated Mistake Rate than baseline.
102
+
103
+ We provide the infrastructure to **reject or fail to reject** this hypothesis with your own data.
104
+
105
+ If buildlog doesn't work, the numbers will show it. That's the point.
106
+
107
+ ---
108
+
109
+ ## The Metric: Repeated Mistake Rate (RMR)
110
+
111
+ ```
112
+ RMR = (Mistakes that match previous mistakes) / (Total mistakes logged)
113
+ ```
114
+
115
+ A mistake "matches" if it has the same semantic signature—same error class, similar description, same root cause showing up again.
116
+
117
+ **Why RMR?**
118
+ - **Observable**: You can count it
119
+ - **Attributable**: Lower RMR after rule injection = signal
120
+ - **Meaningful**: Repeating mistakes is the actual pain point
121
+
122
+ RMR is not the only metric that matters. But it's one we can measure, and measurement is where science starts.
123
+
124
+ ---
125
+
126
+ ## The Mechanism
127
+
128
+ buildlog uses **contextual bandits** to select which rules to surface.
129
+
130
+ ```
131
+ ┌─────────────────────────────────────────────────────────────────┐
132
+ │ CONTEXTUAL BANDIT SETUP │
133
+ ├─────────────────────────────────────────────────────────────────┤
134
+ │ │
135
+ │ Context (c): Error class, file type, task category │
136
+ │ Arms (a): Candidate rules to surface │
137
+ │ Reward (r): Human feedback (👍 helpful / 👎 not helpful) │
138
+ │ │
139
+ │ Policy π(c) → a: Thompson Sampling with Beta-Bernoulli │
140
+ │ │
141
+ │ Objective: Minimize regret = Σ(r* - r_chosen) │
142
+ │ │
143
+ └─────────────────────────────────────────────────────────────────┘
144
+ ```
145
+
146
+ **Arms** = learned rules (from buildlog entries, code reviews, explicit teaching)
147
+
148
+ **Context** = what kind of problem you're working on
149
+
150
+ **Reward** = did surfacing this rule actually help?
151
+
152
+ The system explores (tries uncertain rules) and exploits (uses proven rules) based on accumulated evidence. Thompson Sampling provides theoretical guarantees: O(√(KT log K)) regret bounds.
153
+
154
+ This isn't magic. It's a well-understood framework with decades of research. We're applying it to agent rule selection.
155
+
156
+ ---
157
+
158
+ ## The Pipeline
159
+
160
+ buildlog captures signal at every stage:
161
+
162
+ ```mermaid
163
+ flowchart LR
164
+ A["Work Sessions"] --> B["Structured Entries"]
165
+ B --> C["Extracted Rules"]
166
+ C --> D["Bandit Selection"]
167
+ D --> E["Rule Surfaced"]
168
+ E --> F["Human Feedback"]
169
+ F --> G["Posterior Update"]
170
+ G --> D
171
+
172
+ style F fill:#ff6b6b,color:#fff
173
+ style G fill:#4ecdc4,color:#fff
174
+ ```
175
+
176
+ ### Stage 1: Capture
177
+ Document your work. Include the fuckups—they're the most valuable signal.
178
+
179
+ ```bash
180
+ buildlog new auth-api
181
+ # Edit the markdown, document what happened
182
+ ```
183
+
184
+ ### Stage 2: Extract
185
+ Pull structured rules from your entries.
186
+
187
+ ```bash
188
+ buildlog distill # Extract patterns
189
+ buildlog skills # Deduplicate into rules
190
+ ```
191
+
192
+ ### Stage 3: Promote
193
+ Surface rules to your agent via CLAUDE.md, settings.json, or Agent Skills.
194
+
195
+ ```bash
196
+ buildlog promote --target skill
197
+ ```
198
+
199
+ ### Stage 4: Measure
200
+ Track what happens when rules are active.
201
+
202
+ ```bash
203
+ buildlog experiment start --error-class "type-errors"
204
+ # ... work session ...
205
+ buildlog experiment log-mistake --error-class "type-errors" \
206
+ --description "Forgot to handle null case"
207
+ buildlog experiment end
208
+ buildlog experiment report
209
+ ```
210
+
211
+ ### Stage 5: Learn
212
+ Log reward signals when rules help (or don't).
213
+
214
+ ```python
215
+ # Via MCP
216
+ buildlog_log_reward(
217
+ skill_id="arch-123",
218
+ reward=1, # 1 = helped, 0 = didn't help
219
+ context="type-errors",
220
+ outcome="Caught the bug before commit"
221
+ )
222
+ ```
223
+
224
+ ---
225
+
226
+ ## Experiment Infrastructure
227
+
228
+ buildlog ships with infrastructure to run actual experiments:
229
+
230
+ ```bash
231
+ # Start a tracked session
232
+ buildlog experiment start --error-class "api-design"
233
+
234
+ # Log mistakes as they happen
235
+ buildlog experiment log-mistake \
236
+ --error-class "api-design" \
237
+ --description "Returned 200 for error case"
238
+
239
+ # End session
240
+ buildlog experiment end
241
+
242
+ # Get metrics
243
+ buildlog experiment metrics
244
+
245
+ # Full report across all sessions
246
+ buildlog experiment report
247
+ ```
248
+
249
+ The report includes:
250
+ - Total sessions, total mistakes
251
+ - Repeat rate (RMR)
252
+ - Mistakes by error class
253
+ - Rules that correlate with corrections
254
+
255
+ This is the data you need to make claims.
256
+
257
+ ---
258
+
259
+ ## Quick Start
260
+
261
+ ```bash
262
+ # Install
263
+ pip install buildlog
264
+
265
+ # Initialize
266
+ buildlog init
267
+
268
+ # Create your first entry
269
+ buildlog new my-feature
270
+
271
+ # After a few entries, extract rules
272
+ buildlog distill
273
+ buildlog skills
274
+
275
+ # Start measuring
276
+ buildlog experiment start
277
+ # ... work ...
278
+ buildlog experiment end
279
+ buildlog experiment report
280
+ ```
281
+
282
+ ### MCP Server (Claude Code Integration)
283
+
284
+ ```bash
285
+ pip install buildlog[mcp]
286
+ ```
287
+
288
+ Add to `~/.claude/settings.json`:
289
+
290
+ ```json
291
+ {
292
+ "mcpServers": {
293
+ "buildlog": {
294
+ "command": "buildlog-mcp"
295
+ }
296
+ }
297
+ }
298
+ ```
299
+
300
+ Available tools:
301
+ | Tool | Purpose |
302
+ |------|---------|
303
+ | `buildlog_status` | View rules by category and confidence |
304
+ | `buildlog_promote` | Surface rules to agent |
305
+ | `buildlog_reject` | Mark false positives |
306
+ | `buildlog_diff` | Rules pending review |
307
+ | `buildlog_learn_from_review` | Extract rules from code review |
308
+ | `buildlog_log_reward` | Record reward signal for bandit |
309
+ | `buildlog_rewards` | View reward history |
310
+ | `buildlog_start_session` | Begin tracked experiment session |
311
+ | `buildlog_end_session` | End session |
312
+ | `buildlog_log_mistake` | Record mistake during session |
313
+ | `buildlog_session_metrics` | Get session statistics |
314
+ | `buildlog_experiment_report` | Full experiment report |
315
+
316
+ ---
317
+
318
+ ## What This Is Not
319
+
320
+ **This is not AGI.** This is not "agents that truly learn." This is not a revolution.
321
+
322
+ This is:
323
+ - A structured way to capture engineering knowledge
324
+ - A bandit framework for rule selection
325
+ - Infrastructure to measure whether it works
326
+
327
+ Boring? Maybe. But boring things that work beat exciting things that don't.
328
+
329
+ ---
330
+
331
+ ## The Falsification Protocol
332
+
333
+ Want to test whether buildlog actually helps? Here's the protocol:
334
+
335
+ 1. **Baseline**: Run N sessions without buildlog rules active. Log mistakes.
336
+ 2. **Treatment**: Run N sessions with buildlog rules active. Log mistakes.
337
+ 3. **Compare**: Calculate RMR for both conditions.
338
+ 4. **Statistical test**: Two-proportion z-test or chi-squared.
339
+ 5. **Report**: Effect size, confidence interval, p-value.
340
+
341
+ If p > 0.05, we fail to reject the null. buildlog didn't help. That's a valid outcome.
342
+
343
+ If p < 0.05, we have evidence of an effect. How big? Check the effect size.
344
+
345
+ This is how you know. Not vibes. Data.
346
+
347
+ ---
348
+
349
+ ## Theoretical Foundations
350
+
351
+ For the technically curious:
352
+
353
+ | Concept | Application in buildlog |
354
+ |---------|------------------------|
355
+ | **Thompson Sampling** | Rule selection under uncertainty |
356
+ | **Beta-Bernoulli model** | Posterior updates from binary reward |
357
+ | **Contextual bandits** | Context-dependent rule selection |
358
+ | **Regret bounds** | O(√(KT log K)) theoretical guarantee |
359
+ | **Semantic hashing** | Mistake deduplication for RMR |
360
+
361
+ We're not inventing new math. We're applying proven frameworks to a new domain.
362
+
363
+ ---
364
+
365
+ ## Honest Limitations
366
+
367
+ Things we don't have figured out yet:
368
+
369
+ - **Credit assignment**: When multiple rules are active, which one helped?
370
+ - **Non-stationarity**: Developer skill changes over time
371
+ - **Cold start**: New rules have high uncertainty
372
+ - **Context representation**: What features actually matter?
373
+
374
+ These are hard problems. We have directional ideas, not solutions. If you're a researcher working on bandit algorithms or causal inference, we'd love to talk.
375
+
376
+ ---
377
+
378
+ ## Philosophy
379
+
380
+ 1. **Falsifiability over impressiveness** - If you can't prove it wrong, it's not a claim
381
+ 2. **Measurement over intuition** - "Feels better" is not evidence
382
+ 3. **Mechanisms over magic** - Explain how it works or admit you don't know
383
+ 4. **Boring over exciting** - Proven frameworks beat novel demos
384
+ 5. **Honesty over marketing** - State limitations. Invite scrutiny.
385
+
386
+ ---
387
+
388
+ ## Contributing
389
+
390
+ We're especially interested in:
391
+ - Better context representations for the bandit
392
+ - Credit assignment approaches
393
+ - Statistical methodology improvements
394
+ - Real-world experiment results (positive or negative)
395
+
396
+ ```bash
397
+ git clone https://github.com/Peleke/buildlog-template
398
+ cd buildlog-template
399
+ pip install -e ".[dev]"
400
+ pytest
401
+ ```
402
+
403
+ ---
404
+
405
+ ## License
406
+
407
+ MIT License — see [LICENSE](./LICENSE)
408
+
409
+ ---
410
+
411
+ <div align="center">
412
+
413
+ **"Agent learning" without measurement is just prompt engineering with extra steps.**
414
+
415
+ **buildlog is measurement.**
416
+
417
+ [Back to top](#buildlog)
418
+
419
+ </div>
@@ -1,30 +1,30 @@
1
1
  buildlog/__init__.py,sha256=FrgjyZhC19YyB40rOXHJWTA4xKWx2Yn2heIhVraaZ7A,90
2
- buildlog/cli.py,sha256=cmg77_RVJx8mdtStApS1KXxBUUB8Id6psHZjtHo33iE,14350
2
+ buildlog/cli.py,sha256=UY95mCJNCdN7KRkUJiebSFbVvh0q7hk3eeom0mGhLz0,28433
3
3
  buildlog/confidence.py,sha256=EOkPxIH1_y7k6B3Hl7Wn0iR2qK_lumvOyyyqUdafXVY,9382
4
4
  buildlog/distill.py,sha256=fqXW_YyBFIFhwIWhnR-TQ7U65gypqG-mcAzNBr-qaag,11262
5
5
  buildlog/embeddings.py,sha256=vPydWjJVkYp172zFou-lJ737qsu6vRMQAMs143RGIpA,12364
6
6
  buildlog/skills.py,sha256=C_tqspj9lVRkjF-g-KpKt8WoQ-Xq0e0l1VtXly_Naks,30055
7
7
  buildlog/stats.py,sha256=2WdHdmzUNGobtWngmm9nA_UmqM7DQeAnZL8_rLQN8aw,13256
8
- buildlog/core/__init__.py,sha256=ifByeEE3sM13EHWIKNAOjNc3zx_4qYEfyXdB4Woumuw,594
9
- buildlog/core/operations.py,sha256=Q9wX8kfnpDBAC8ySHYXZi3vA9w0vuOyzOYl6JYB6YyM,22006
8
+ buildlog/core/__init__.py,sha256=U7FS1CLUfnJ4AHGlgc3-F5KS7bepRMFD7TTvp8vKfQM,1301
9
+ buildlog/core/operations.py,sha256=iXrhBd7cbr9wMgpiIl4Q-7WIQOgQCWBepQibzgoY0Gg,51751
10
10
  buildlog/mcp/__init__.py,sha256=jCLNUkYFrDcPd5dY9xbaaVANl-ZzdPim1BykgGY7f7U,334
11
- buildlog/mcp/server.py,sha256=vlfXlRvGfoXBhkHv2y5e1jc7JH2Hkv7G1obSdxlQ14w,583
12
- buildlog/mcp/tools.py,sha256=Rfk3dS4bLflvaUa5O2YLdvBx354ZQ_Lfy-Uoaz_AjGo,4397
11
+ buildlog/mcp/server.py,sha256=9AOvweRIQ-BJVbNc7OA6iRQ0lC9OjbUFsCHhU9FvJgk,1064
12
+ buildlog/mcp/tools.py,sha256=Zz_y4IwquSe1jwIb9EFlNO_Xc8GgR8f-OBj-yXdWUKk,12228
13
13
  buildlog/render/__init__.py,sha256=VxJWEmcX7pSiC3W-ytsHv9gNVUr4hJrVHBW084kEnAI,1993
14
14
  buildlog/render/base.py,sha256=gQfvOsH1zttAo10xtEyNsAbqZ4NRSPiDihO-aiGgTsw,533
15
15
  buildlog/render/claude_md.py,sha256=Z_E6MbJyVM_hJSoB4KL2rvbt5UEQHekTpJijj106lsI,2624
16
16
  buildlog/render/settings_json.py,sha256=4DS5OWksPrFCa7MIgWIu0t4rxYmItpMdGfTqMX3aMNs,2495
17
17
  buildlog/render/skill.py,sha256=_7umIS1Ms1oQ2_PopYueFjX41nMq1p28yJp6DhXFdgU,5981
18
18
  buildlog/render/tracking.py,sha256=6O0RIU-1gjVG-_S5dmXLz6RCMsQoHOR2u5___UpqXEo,1294
19
- buildlog-0.4.0.data/data/share/buildlog/copier.yml,sha256=A-1JKV59kOe0BQosGUBgRCg7iQozP_qyA3zfoHwpBKY,927
20
- buildlog-0.4.0.data/data/share/buildlog/post_gen.py,sha256=XFlo40LuPpAsBhIRRRtHqvU3_5POss4L401hp35ijhw,1744
21
- buildlog-0.4.0.data/data/share/buildlog/template/buildlog/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- buildlog-0.4.0.data/data/share/buildlog/template/buildlog/2026-01-01-example.md,sha256=7x9sKmydfmfKyNz9hV7MtYnQJuBwbxNanbPOcpQDDZQ,7040
23
- buildlog-0.4.0.data/data/share/buildlog/template/buildlog/BUILDLOG_SYSTEM.md,sha256=osclytWwl5jUiTgSpuT4cT3h3oPvCkZ5GPCnFuJZNcY,3802
24
- buildlog-0.4.0.data/data/share/buildlog/template/buildlog/_TEMPLATE.md,sha256=CUvxgcx1-9XT_EdQ8e_vnuPq_h-u1uhXJgForJU2Pso,2932
25
- buildlog-0.4.0.data/data/share/buildlog/template/buildlog/assets/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
- buildlog-0.4.0.dist-info/METADATA,sha256=adRpA8HpJlbAFLk7UCbHPqhWXNU7Xp9WEfYo-e4GqXI,30019
27
- buildlog-0.4.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
28
- buildlog-0.4.0.dist-info/entry_points.txt,sha256=BMFclPOomp_sgaa0OqBg6LfqCMlqzjZV88ww5TrPPoo,87
29
- buildlog-0.4.0.dist-info/licenses/LICENSE,sha256=fAgt-akug9nAwIj6M-SIf8u3ck-T7pJTwfmy9vWYASk,1074
30
- buildlog-0.4.0.dist-info/RECORD,,
19
+ buildlog-0.5.0.data/data/share/buildlog/copier.yml,sha256=A-1JKV59kOe0BQosGUBgRCg7iQozP_qyA3zfoHwpBKY,927
20
+ buildlog-0.5.0.data/data/share/buildlog/post_gen.py,sha256=XFlo40LuPpAsBhIRRRtHqvU3_5POss4L401hp35ijhw,1744
21
+ buildlog-0.5.0.data/data/share/buildlog/template/buildlog/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ buildlog-0.5.0.data/data/share/buildlog/template/buildlog/2026-01-01-example.md,sha256=7x9sKmydfmfKyNz9hV7MtYnQJuBwbxNanbPOcpQDDZQ,7040
23
+ buildlog-0.5.0.data/data/share/buildlog/template/buildlog/BUILDLOG_SYSTEM.md,sha256=osclytWwl5jUiTgSpuT4cT3h3oPvCkZ5GPCnFuJZNcY,3802
24
+ buildlog-0.5.0.data/data/share/buildlog/template/buildlog/_TEMPLATE.md,sha256=CUvxgcx1-9XT_EdQ8e_vnuPq_h-u1uhXJgForJU2Pso,2932
25
+ buildlog-0.5.0.data/data/share/buildlog/template/buildlog/assets/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ buildlog-0.5.0.dist-info/METADATA,sha256=KTL5nTO8ikp5IhtMgCzVO-1KYVXw-iyZ_oo4RVDk2nU,13210
27
+ buildlog-0.5.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
28
+ buildlog-0.5.0.dist-info/entry_points.txt,sha256=BMFclPOomp_sgaa0OqBg6LfqCMlqzjZV88ww5TrPPoo,87
29
+ buildlog-0.5.0.dist-info/licenses/LICENSE,sha256=fAgt-akug9nAwIj6M-SIf8u3ck-T7pJTwfmy9vWYASk,1074
30
+ buildlog-0.5.0.dist-info/RECORD,,