devtime-ei 0.5.0__tar.gz → 0.5.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.
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/PKG-INFO +66 -31
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/README.md +64 -29
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/pyproject.toml +2 -2
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/__init__.py +1 -1
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/intelligence/verification.py +332 -102
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/scanner/extractors/typescript.py +33 -3
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime_ei.egg-info/PKG-INFO +66 -31
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/LICENSE +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/setup.cfg +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/ai/__init__.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/ai/local.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/ai/prompts.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/ai/providers.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/assets/devtimeignore.starter +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/cli.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/config.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/db/__init__.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/db/connection.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/db/migrations.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/db/repository.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/db/schema.sql +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/demo.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/fixtures/__init__.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/fixtures/assertions.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/fixtures/loader.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/fixtures/runner.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/intelligence/__init__.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/intelligence/claims.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/intelligence/concepts.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/intelligence/context_pack.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/intelligence/evidence.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/intelligence/lineage.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/intelligence/risk.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/intelligence/scoring.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/mcp/__init__.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/mcp/schemas.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/mcp/server.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/mcp/tools.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/mcp/transport.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/output/__init__.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/output/json_export.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/output/markdown.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/output/terminal.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/paths.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/privacy.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/.devtimeignore +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/README.md +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/docs/decisions/0001-use-jwt.md +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/package.json +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/src/admin/permissions.ts +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/src/auth/login.ts +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/src/auth/middleware.ts +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/src/auth/tokens.ts +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/src/billing/stripe-webhook.ts +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/src/billing/subscription-service.ts +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/src/export/export-csv.ts +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/src/jobs/email-worker.ts +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/src/jobs/queues.ts +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/tests/auth-login.test.ts +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/resources/demo-saas/tests/stripe-signature.test.ts +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/scanner/__init__.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/scanner/extractors/__init__.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/scanner/extractors/base.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/scanner/extractors/config_files.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/scanner/extractors/docs.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/scanner/extractors/nextjs.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/scanner/extractors/python.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/scanner/extractors/tests.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/scanner/file_walker.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/scanner/ignore.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/scanner/language.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime/scanner/signals.py +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime_ei.egg-info/SOURCES.txt +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime_ei.egg-info/dependency_links.txt +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime_ei.egg-info/entry_points.txt +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime_ei.egg-info/requires.txt +0 -0
- {devtime_ei-0.5.0 → devtime_ei-0.5.1}/src/devtime_ei.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devtime-ei
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.1
|
|
4
4
|
Summary: Local-first Engineering Intelligence for software repositories
|
|
5
5
|
Author-email: Aviad Shakargi <aviad94@gmail.com>
|
|
6
6
|
Maintainer-email: Aviad Shakargi <aviad94@gmail.com>
|
|
@@ -8,7 +8,7 @@ License: Apache-2.0
|
|
|
8
8
|
Project-URL: Homepage, https://github.com/Shakargy/devtime
|
|
9
9
|
Project-URL: Repository, https://github.com/Shakargy/devtime
|
|
10
10
|
Project-URL: Issues, https://github.com/Shakargy/devtime/issues
|
|
11
|
-
Project-URL: Release Notes, https://github.com/Shakargy/devtime/releases/tag/v0.5.
|
|
11
|
+
Project-URL: Release Notes, https://github.com/Shakargy/devtime/releases/tag/v0.5.1
|
|
12
12
|
Project-URL: Demo, https://youtu.be/1Hiu3Y9J_SI
|
|
13
13
|
Keywords: devtools,cli,static-analysis,repository-analysis,engineering-intelligence,local-first
|
|
14
14
|
Classifier: Development Status :: 3 - Alpha
|
|
@@ -39,17 +39,17 @@ Dynamic: license-file
|
|
|
39
39
|
|
|
40
40
|
# DevTime
|
|
41
41
|
|
|
42
|
-
**
|
|
42
|
+
**DevTime verifies what your repository can actually prove.**
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
A file named `stripe/webhook.ts` looks like proof that a repo handles Stripe
|
|
45
|
+
webhooks. It might be a handler that only returns 404. DevTime checks statements
|
|
46
|
+
about a repository against its implementation, tests, configuration, and recorded
|
|
47
|
+
decisions, then reports what is supported, what is contradicted, what is missing,
|
|
48
|
+
and what went stale.
|
|
49
49
|
|
|
50
50
|
> No cloud. No telemetry. No code execution. No AI required.
|
|
51
51
|
|
|
52
|
-

|
|
53
53
|
|
|
54
54
|
Prefer video? [Watch the 2-minute demo](https://youtu.be/1Hiu3Y9J_SI): DevTime scans
|
|
55
55
|
a repo locally, explains concepts from evidence, surfaces uncertainty, catches a
|
|
@@ -65,8 +65,17 @@ dtc demo init
|
|
|
65
65
|
cd devtime-demo-saas
|
|
66
66
|
dtc init
|
|
67
67
|
dtc scan
|
|
68
|
-
dtc
|
|
69
|
-
|
|
68
|
+
dtc verify
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
On the demo repo that ends with billing webhook signature verification
|
|
72
|
+
SUPPORTED, JWT authentication SUPPORTED, and route test association WEAK, naming
|
|
73
|
+
the routes with no test importing them. Point it at your own repository and the
|
|
74
|
+
answers change:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
cd your-repo
|
|
78
|
+
dtc init && dtc scan && dtc verify
|
|
70
79
|
```
|
|
71
80
|
|
|
72
81
|
The PyPI distribution is `devtime-ei`. The Python package remains `devtime`, and the
|
|
@@ -115,6 +124,39 @@ dtc risk --diff
|
|
|
115
124
|
A full, copy-pasteable walkthrough (including the risk-diff and corroborated-decision
|
|
116
125
|
steps) is in **[DEMO_SCRIPT.md](DEMO_SCRIPT.md)**.
|
|
117
126
|
|
|
127
|
+
## Verify claims (experimental)
|
|
128
|
+
|
|
129
|
+
A claim is a statement about the repository. Verification answers it with a
|
|
130
|
+
status and receipts, never with confidence the evidence cannot back.
|
|
131
|
+
|
|
132
|
+
```text
|
|
133
|
+
Status: CONTRADICTED
|
|
134
|
+
|
|
135
|
+
Contradictions:
|
|
136
|
+
- The billing webhook endpoint cannot verify signatures
|
|
137
|
+
because it is a disabled stub.
|
|
138
|
+
claimed: pages/api/stripe/webhook.ts is named and routed
|
|
139
|
+
as a billing webhook endpoint.
|
|
140
|
+
observed: The handler's only behavior is a 404/501 response.
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
- **SUPPORTED** - required behavior evidence exists in the current scan
|
|
144
|
+
- **WEAK** - the surface exists, but the proving evidence is missing
|
|
145
|
+
- **CONTRADICTED** - credible evidence conflicts with the claim, both sides shown
|
|
146
|
+
- **UNKNOWN** - the surface exists but coverage cannot responsibly decide
|
|
147
|
+
- **NOT_APPLICABLE** - the repository has no surface this claim is about
|
|
148
|
+
|
|
149
|
+
Four built-in claims ship: route test association, admin authorization, billing
|
|
150
|
+
webhook signatures, and JWT authentication. `dtc verify` leads with what it can
|
|
151
|
+
actually verify in your repository, and when nothing applies it says what would
|
|
152
|
+
make a claim verifiable instead of dead-ending.
|
|
153
|
+
|
|
154
|
+
Truth and freshness are separate: when a file behind a verified claim changes,
|
|
155
|
+
the claim goes STALE and names the file. `dtc risk --diff` reports which verified
|
|
156
|
+
claims a diff destabilizes.
|
|
157
|
+
|
|
158
|
+
See **[VERIFICATION.md](VERIFICATION.md)** for the full model and its limits.
|
|
159
|
+
|
|
118
160
|
## Why this exists
|
|
119
161
|
|
|
120
162
|
Git records what changed, but it does not preserve the reasoning behind those
|
|
@@ -142,6 +184,7 @@ It is especially useful if you:
|
|
|
142
184
|
|
|
143
185
|
Questions DevTime helps answer include:
|
|
144
186
|
|
|
187
|
+
- Can this repository actually prove the thing its file names imply?
|
|
145
188
|
- Where is authentication actually implemented?
|
|
146
189
|
- What files prove that Billing Webhooks exist?
|
|
147
190
|
- What is still uncertain?
|
|
@@ -150,17 +193,25 @@ Questions DevTime helps answer include:
|
|
|
150
193
|
|
|
151
194
|
## What DevTime does
|
|
152
195
|
|
|
196
|
+
- Verifies claims about a repository and reports status, evidence, and both sides
|
|
197
|
+
of any contradiction.
|
|
198
|
+
- Tracks freshness, so a verified claim goes stale when the evidence behind it changes.
|
|
153
199
|
- Detects concepts from routes, tests, configs, dependencies, and docs.
|
|
154
200
|
- Explains from evidence by linking claims to files and signals.
|
|
155
201
|
- Surfaces uncertainty when evidence is missing or weak.
|
|
156
202
|
- Scores understanding with an Understanding Score and Understanding Debt label.
|
|
157
|
-
- Reviews narrow risky diffs with advisory findings
|
|
203
|
+
- Reviews narrow risky diffs with advisory findings, including which verified
|
|
204
|
+
claims a diff destabilizes.
|
|
158
205
|
- Records decisions locally so rationale can reduce uncertainty when corroborated by code.
|
|
159
206
|
|
|
160
207
|
## Supported concepts
|
|
161
208
|
|
|
162
|
-
|
|
163
|
-
|
|
209
|
+
Underneath verification is a scanner that builds local, evidence-backed memory:
|
|
210
|
+
|
|
211
|
+

|
|
212
|
+
|
|
213
|
+
DevTime detects six supported concept families. It does not discover arbitrary
|
|
214
|
+
domain concepts yet:
|
|
164
215
|
|
|
165
216
|
- Authentication
|
|
166
217
|
- Billing Webhooks
|
|
@@ -169,7 +220,7 @@ concepts yet:
|
|
|
169
220
|
- Admin Permissions
|
|
170
221
|
- File Uploads
|
|
171
222
|
|
|
172
|
-
Anything outside these six is out of scope for
|
|
223
|
+
Anything outside these six is out of scope for now. See [LIMITATIONS.md](LIMITATIONS.md).
|
|
173
224
|
|
|
174
225
|
## What DevTime does not do
|
|
175
226
|
|
|
@@ -296,22 +347,6 @@ python -m venv .venv
|
|
|
296
347
|
pip install -e ".[dev]"
|
|
297
348
|
```
|
|
298
349
|
|
|
299
|
-
## Verify claims (experimental)
|
|
300
|
-
|
|
301
|
-
DevTime is growing into a verification layer: ask whether a statement about the
|
|
302
|
-
repository is actually supported. Watch a claim live through its whole life -
|
|
303
|
-
supported, contradicted by a stub, restored, and stale after the evidence
|
|
304
|
-
changes:
|
|
305
|
-
|
|
306
|
-

|
|
307
|
-
|
|
308
|
-
Statuses are SUPPORTED, WEAK, CONTRADICTED, UNKNOWN, or NOT_APPLICABLE;
|
|
309
|
-
contradictions always show both sides; changed evidence marks a claim STALE.
|
|
310
|
-
Four built-in claims ship: route test coverage, admin authorization, billing
|
|
311
|
-
webhook signatures, and JWT authentication. `dtc verify` leads with what it can
|
|
312
|
-
actually verify here, and when nothing applies it says what would make a claim
|
|
313
|
-
verifiable instead of dead-ending. See **[VERIFICATION.md](VERIFICATION.md)**.
|
|
314
|
-
|
|
315
350
|
## Example output
|
|
316
351
|
|
|
317
352
|
```
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# DevTime
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**DevTime verifies what your repository can actually prove.**
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
A file named `stripe/webhook.ts` looks like proof that a repo handles Stripe
|
|
6
|
+
webhooks. It might be a handler that only returns 404. DevTime checks statements
|
|
7
|
+
about a repository against its implementation, tests, configuration, and recorded
|
|
8
|
+
decisions, then reports what is supported, what is contradicted, what is missing,
|
|
9
|
+
and what went stale.
|
|
10
10
|
|
|
11
11
|
> No cloud. No telemetry. No code execution. No AI required.
|
|
12
12
|
|
|
13
|
-

|
|
14
14
|
|
|
15
15
|
Prefer video? [Watch the 2-minute demo](https://youtu.be/1Hiu3Y9J_SI): DevTime scans
|
|
16
16
|
a repo locally, explains concepts from evidence, surfaces uncertainty, catches a
|
|
@@ -26,8 +26,17 @@ dtc demo init
|
|
|
26
26
|
cd devtime-demo-saas
|
|
27
27
|
dtc init
|
|
28
28
|
dtc scan
|
|
29
|
-
dtc
|
|
30
|
-
|
|
29
|
+
dtc verify
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
On the demo repo that ends with billing webhook signature verification
|
|
33
|
+
SUPPORTED, JWT authentication SUPPORTED, and route test association WEAK, naming
|
|
34
|
+
the routes with no test importing them. Point it at your own repository and the
|
|
35
|
+
answers change:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
cd your-repo
|
|
39
|
+
dtc init && dtc scan && dtc verify
|
|
31
40
|
```
|
|
32
41
|
|
|
33
42
|
The PyPI distribution is `devtime-ei`. The Python package remains `devtime`, and the
|
|
@@ -76,6 +85,39 @@ dtc risk --diff
|
|
|
76
85
|
A full, copy-pasteable walkthrough (including the risk-diff and corroborated-decision
|
|
77
86
|
steps) is in **[DEMO_SCRIPT.md](DEMO_SCRIPT.md)**.
|
|
78
87
|
|
|
88
|
+
## Verify claims (experimental)
|
|
89
|
+
|
|
90
|
+
A claim is a statement about the repository. Verification answers it with a
|
|
91
|
+
status and receipts, never with confidence the evidence cannot back.
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
Status: CONTRADICTED
|
|
95
|
+
|
|
96
|
+
Contradictions:
|
|
97
|
+
- The billing webhook endpoint cannot verify signatures
|
|
98
|
+
because it is a disabled stub.
|
|
99
|
+
claimed: pages/api/stripe/webhook.ts is named and routed
|
|
100
|
+
as a billing webhook endpoint.
|
|
101
|
+
observed: The handler's only behavior is a 404/501 response.
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
- **SUPPORTED** - required behavior evidence exists in the current scan
|
|
105
|
+
- **WEAK** - the surface exists, but the proving evidence is missing
|
|
106
|
+
- **CONTRADICTED** - credible evidence conflicts with the claim, both sides shown
|
|
107
|
+
- **UNKNOWN** - the surface exists but coverage cannot responsibly decide
|
|
108
|
+
- **NOT_APPLICABLE** - the repository has no surface this claim is about
|
|
109
|
+
|
|
110
|
+
Four built-in claims ship: route test association, admin authorization, billing
|
|
111
|
+
webhook signatures, and JWT authentication. `dtc verify` leads with what it can
|
|
112
|
+
actually verify in your repository, and when nothing applies it says what would
|
|
113
|
+
make a claim verifiable instead of dead-ending.
|
|
114
|
+
|
|
115
|
+
Truth and freshness are separate: when a file behind a verified claim changes,
|
|
116
|
+
the claim goes STALE and names the file. `dtc risk --diff` reports which verified
|
|
117
|
+
claims a diff destabilizes.
|
|
118
|
+
|
|
119
|
+
See **[VERIFICATION.md](VERIFICATION.md)** for the full model and its limits.
|
|
120
|
+
|
|
79
121
|
## Why this exists
|
|
80
122
|
|
|
81
123
|
Git records what changed, but it does not preserve the reasoning behind those
|
|
@@ -103,6 +145,7 @@ It is especially useful if you:
|
|
|
103
145
|
|
|
104
146
|
Questions DevTime helps answer include:
|
|
105
147
|
|
|
148
|
+
- Can this repository actually prove the thing its file names imply?
|
|
106
149
|
- Where is authentication actually implemented?
|
|
107
150
|
- What files prove that Billing Webhooks exist?
|
|
108
151
|
- What is still uncertain?
|
|
@@ -111,17 +154,25 @@ Questions DevTime helps answer include:
|
|
|
111
154
|
|
|
112
155
|
## What DevTime does
|
|
113
156
|
|
|
157
|
+
- Verifies claims about a repository and reports status, evidence, and both sides
|
|
158
|
+
of any contradiction.
|
|
159
|
+
- Tracks freshness, so a verified claim goes stale when the evidence behind it changes.
|
|
114
160
|
- Detects concepts from routes, tests, configs, dependencies, and docs.
|
|
115
161
|
- Explains from evidence by linking claims to files and signals.
|
|
116
162
|
- Surfaces uncertainty when evidence is missing or weak.
|
|
117
163
|
- Scores understanding with an Understanding Score and Understanding Debt label.
|
|
118
|
-
- Reviews narrow risky diffs with advisory findings
|
|
164
|
+
- Reviews narrow risky diffs with advisory findings, including which verified
|
|
165
|
+
claims a diff destabilizes.
|
|
119
166
|
- Records decisions locally so rationale can reduce uncertainty when corroborated by code.
|
|
120
167
|
|
|
121
168
|
## Supported concepts
|
|
122
169
|
|
|
123
|
-
|
|
124
|
-
|
|
170
|
+
Underneath verification is a scanner that builds local, evidence-backed memory:
|
|
171
|
+
|
|
172
|
+

|
|
173
|
+
|
|
174
|
+
DevTime detects six supported concept families. It does not discover arbitrary
|
|
175
|
+
domain concepts yet:
|
|
125
176
|
|
|
126
177
|
- Authentication
|
|
127
178
|
- Billing Webhooks
|
|
@@ -130,7 +181,7 @@ concepts yet:
|
|
|
130
181
|
- Admin Permissions
|
|
131
182
|
- File Uploads
|
|
132
183
|
|
|
133
|
-
Anything outside these six is out of scope for
|
|
184
|
+
Anything outside these six is out of scope for now. See [LIMITATIONS.md](LIMITATIONS.md).
|
|
134
185
|
|
|
135
186
|
## What DevTime does not do
|
|
136
187
|
|
|
@@ -257,22 +308,6 @@ python -m venv .venv
|
|
|
257
308
|
pip install -e ".[dev]"
|
|
258
309
|
```
|
|
259
310
|
|
|
260
|
-
## Verify claims (experimental)
|
|
261
|
-
|
|
262
|
-
DevTime is growing into a verification layer: ask whether a statement about the
|
|
263
|
-
repository is actually supported. Watch a claim live through its whole life -
|
|
264
|
-
supported, contradicted by a stub, restored, and stale after the evidence
|
|
265
|
-
changes:
|
|
266
|
-
|
|
267
|
-

|
|
268
|
-
|
|
269
|
-
Statuses are SUPPORTED, WEAK, CONTRADICTED, UNKNOWN, or NOT_APPLICABLE;
|
|
270
|
-
contradictions always show both sides; changed evidence marks a claim STALE.
|
|
271
|
-
Four built-in claims ship: route test coverage, admin authorization, billing
|
|
272
|
-
webhook signatures, and JWT authentication. `dtc verify` leads with what it can
|
|
273
|
-
actually verify here, and when nothing applies it says what would make a claim
|
|
274
|
-
verifiable instead of dead-ending. See **[VERIFICATION.md](VERIFICATION.md)**.
|
|
275
|
-
|
|
276
311
|
## Example output
|
|
277
312
|
|
|
278
313
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "devtime-ei"
|
|
3
|
-
version = "0.5.
|
|
3
|
+
version = "0.5.1"
|
|
4
4
|
description = "Local-first Engineering Intelligence for software repositories"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
@@ -50,7 +50,7 @@ dev = [
|
|
|
50
50
|
Homepage = "https://github.com/Shakargy/devtime"
|
|
51
51
|
Repository = "https://github.com/Shakargy/devtime"
|
|
52
52
|
Issues = "https://github.com/Shakargy/devtime/issues"
|
|
53
|
-
"Release Notes" = "https://github.com/Shakargy/devtime/releases/tag/v0.5.
|
|
53
|
+
"Release Notes" = "https://github.com/Shakargy/devtime/releases/tag/v0.5.1"
|
|
54
54
|
Demo = "https://youtu.be/1Hiu3Y9J_SI"
|
|
55
55
|
|
|
56
56
|
[project.scripts]
|