docs-drift 0.1.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.
- docs_drift/__init__.py +7 -0
- docs_drift/analysis.py +52 -0
- docs_drift/baseline.py +70 -0
- docs_drift/cli.py +871 -0
- docs_drift/collaboration.py +282 -0
- docs_drift/config.py +113 -0
- docs_drift/docs/__init__.py +1 -0
- docs_drift/docs/defaults.py +250 -0
- docs_drift/docs/discover.py +172 -0
- docs_drift/docs/extract_blocks.py +596 -0
- docs_drift/docs/extract_inline.py +561 -0
- docs_drift/docs/pipeline.py +234 -0
- docs_drift/docs/preprocess.py +71 -0
- docs_drift/docs/sections.py +247 -0
- docs_drift/errors.py +119 -0
- docs_drift/fix/__init__.py +1 -0
- docs_drift/fix/edits.py +124 -0
- docs_drift/fix/model.py +139 -0
- docs_drift/fix/rules.py +232 -0
- docs_drift/git_safety.py +35 -0
- docs_drift/graph/queries/evidence_path.cypher +6 -0
- docs_drift/history.py +412 -0
- docs_drift/history_cache.py +62 -0
- docs_drift/ids.py +50 -0
- docs_drift/index/__init__.py +211 -0
- docs_drift/index/base.py +239 -0
- docs_drift/index/config.py +185 -0
- docs_drift/index/js_cli.py +211 -0
- docs_drift/index/js_routes.py +68 -0
- docs_drift/index/js_symbols.py +219 -0
- docs_drift/index/python_cli.py +370 -0
- docs_drift/index/python_routes.py +102 -0
- docs_drift/index/python_source.py +20 -0
- docs_drift/index/python_symbols.py +335 -0
- docs_drift/index/queries/javascript.scm +4 -0
- docs_drift/index/queries/typescript.scm +4 -0
- docs_drift/index/routes_common.py +16 -0
- docs_drift/index/tasks.py +131 -0
- docs_drift/index/ts_parser.py +20 -0
- docs_drift/limits.py +18 -0
- docs_drift/llm/__init__.py +7 -0
- docs_drift/llm/candidates.py +81 -0
- docs_drift/llm/client.py +185 -0
- docs_drift/llm/pricing.py +54 -0
- docs_drift/llm/privacy.py +63 -0
- docs_drift/llm/prompts/rewrite_v1.md +9 -0
- docs_drift/llm/prompts/verify_v1.md +12 -0
- docs_drift/llm/prompts.py +28 -0
- docs_drift/llm/retrieve.py +60 -0
- docs_drift/llm/types.py +68 -0
- docs_drift/llm/verify.py +179 -0
- docs_drift/lsp.py +199 -0
- docs_drift/match/__init__.py +5 -0
- docs_drift/match/commands.py +201 -0
- docs_drift/match/defaults.py +79 -0
- docs_drift/match/engine.py +319 -0
- docs_drift/match/rename.py +69 -0
- docs_drift/models.py +249 -0
- docs_drift/ownership.py +70 -0
- docs_drift/policy.py +81 -0
- docs_drift/portfolio.py +147 -0
- docs_drift/py.typed +0 -0
- docs_drift/report/__init__.py +38 -0
- docs_drift/report/common.py +31 -0
- docs_drift/report/github.py +22 -0
- docs_drift/report/html.py +106 -0
- docs_drift/report/json.py +17 -0
- docs_drift/report/junit.py +30 -0
- docs_drift/report/markdown.py +58 -0
- docs_drift/report/partials/body.html +19 -0
- docs_drift/report/partials/report.css +12 -0
- docs_drift/report/partials/script.js +95 -0
- docs_drift/report/portfolio.html +14 -0
- docs_drift/report/report.html +8 -0
- docs_drift/report/sarif.py +68 -0
- docs_drift/report/terminal.py +90 -0
- docs_drift/report/vendor/CYTOSCAPE-LICENSE +19 -0
- docs_drift/report/vendor/cytoscape.min.js +32 -0
- docs_drift/report/workflow.html +12 -0
- docs_drift/review.py +113 -0
- docs_drift/safe_files.py +19 -0
- docs_drift/scanning.py +202 -0
- docs_drift/schemas/SARIF-LICENSE.md +7 -0
- docs_drift/schemas/SARIF-NOTICES.txt +3 -0
- docs_drift/schemas/sarif-schema-2.1.0.json +3389 -0
- docs_drift/schemas/scan-result.v1.json +1024 -0
- docs_drift/setup.py +130 -0
- docs_drift/snapshots.py +100 -0
- docs_drift/support.py +31 -0
- docs_drift/watch.py +157 -0
- docs_drift/web/__init__.py +1 -0
- docs_drift/web/__main__.py +23 -0
- docs_drift/web/app.py +289 -0
- docs_drift/web/cleanup.py +23 -0
- docs_drift/web/examples/clean-repo.json +646 -0
- docs_drift/web/examples/fastapi-svc.json +723 -0
- docs_drift/web/examples/files-to-prompt.json +3366 -0
- docs_drift/web/examples/judge-fixture.json +226 -0
- docs_drift/web/examples/manifest.json +89 -0
- docs_drift/web/examples/node-tool.json +823 -0
- docs_drift/web/examples/py-cli.json +1267 -0
- docs_drift/web/examples/rich-cli-reviewed.json +7855 -0
- docs_drift/web/examples/rich-cli.json +8010 -0
- docs_drift/web/examples/verification.json +16 -0
- docs_drift/web/git.py +274 -0
- docs_drift/web/jobs.py +352 -0
- docs_drift/web/settings.py +50 -0
- docs_drift/web/static/demo.css +37 -0
- docs_drift/web/static/demo.js +184 -0
- docs_drift/web/static/evidence/correction-verification.json +28 -0
- docs_drift/web/static/evidence/flow-highlights-2026-10-22.png +0 -0
- docs_drift/web/static/evidence/fresh-scan.json +7855 -0
- docs_drift/web/static/evidence/review.json +44 -0
- docs_drift/web/static/evidence/rich-cli-correction.patch +20 -0
- docs_drift/web/static/evidence/runtime.json +26 -0
- docs_drift/web/static/evidence/saved-scan.json +8010 -0
- docs_drift/web/static/evidence/usage-card-supplied.png +0 -0
- docs_drift/web/templates/base.html +34 -0
- docs_drift/web/templates/case.html +13 -0
- docs_drift/web/templates/landing.html +90 -0
- docs_drift/web/templates/scan.html +2 -0
- docs_drift/web/templates/voice.html +1 -0
- docs_drift/web/validation.py +47 -0
- docs_drift/web/worker.py +152 -0
- docs_drift/workflow_cli.py +96 -0
- docs_drift/workspaces.py +128 -0
- docs_drift-0.1.0.dist-info/METADATA +331 -0
- docs_drift-0.1.0.dist-info/RECORD +131 -0
- docs_drift-0.1.0.dist-info/WHEEL +4 -0
- docs_drift-0.1.0.dist-info/entry_points.txt +2 -0
- docs_drift-0.1.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: docs-drift
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Find evidence-backed drift between repository documentation and code.
|
|
5
|
+
Project-URL: Homepage, https://github.com/ayushagarwalhere/docs-drift
|
|
6
|
+
Project-URL: Documentation, https://ayushagarwalhere.github.io/docs-drift/
|
|
7
|
+
Project-URL: Source, https://github.com/ayushagarwalhere/docs-drift
|
|
8
|
+
Project-URL: Issues, https://github.com/ayushagarwalhere/docs-drift/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/ayushagarwalhere/docs-drift/blob/main/CHANGELOG.md
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: cli,developer-tools,documentation,drift,sarif,static-analysis
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Topic :: Software Development :: Documentation
|
|
22
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
23
|
+
Requires-Python: >=3.11
|
|
24
|
+
Requires-Dist: jinja2>=3.1
|
|
25
|
+
Requires-Dist: markdown-it-py>=3.0
|
|
26
|
+
Requires-Dist: pathspec>=1.0
|
|
27
|
+
Requires-Dist: pydantic>=2.7
|
|
28
|
+
Requires-Dist: pyyaml>=6.0
|
|
29
|
+
Requires-Dist: rapidfuzz>=3.9
|
|
30
|
+
Requires-Dist: rich>=13.9
|
|
31
|
+
Requires-Dist: tomli-w>=1.0
|
|
32
|
+
Requires-Dist: tree-sitter-javascript<0.26,>=0.25
|
|
33
|
+
Requires-Dist: tree-sitter-typescript<0.24,>=0.23.2
|
|
34
|
+
Requires-Dist: tree-sitter<0.27,>=0.25
|
|
35
|
+
Requires-Dist: typer<0.28,>=0.27.3
|
|
36
|
+
Provides-Extra: dev
|
|
37
|
+
Requires-Dist: deptry>=0.24; extra == 'dev'
|
|
38
|
+
Requires-Dist: httpx>=0.28; extra == 'dev'
|
|
39
|
+
Requires-Dist: hypothesis>=6.100; extra == 'dev'
|
|
40
|
+
Requires-Dist: jsonschema>=4.23; extra == 'dev'
|
|
41
|
+
Requires-Dist: mypy>=1.14; extra == 'dev'
|
|
42
|
+
Requires-Dist: pillow>=11; extra == 'dev'
|
|
43
|
+
Requires-Dist: pip-audit>=2.9; extra == 'dev'
|
|
44
|
+
Requires-Dist: playwright>=1.48; extra == 'dev'
|
|
45
|
+
Requires-Dist: pre-commit>=4.0; extra == 'dev'
|
|
46
|
+
Requires-Dist: pytest-cov>=6.0; extra == 'dev'
|
|
47
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
48
|
+
Requires-Dist: ruff>=0.17.1; extra == 'dev'
|
|
49
|
+
Requires-Dist: rust-just>=1.40; extra == 'dev'
|
|
50
|
+
Requires-Dist: types-jsonschema>=4.26; extra == 'dev'
|
|
51
|
+
Requires-Dist: types-pyyaml>=6; extra == 'dev'
|
|
52
|
+
Provides-Extra: docs
|
|
53
|
+
Requires-Dist: mkdocs-material>=9.6; extra == 'docs'
|
|
54
|
+
Provides-Extra: graph
|
|
55
|
+
Provides-Extra: llm
|
|
56
|
+
Requires-Dist: httpx>=0.28; extra == 'llm'
|
|
57
|
+
Provides-Extra: lsp
|
|
58
|
+
Requires-Dist: lsprotocol>=2025.0; extra == 'lsp'
|
|
59
|
+
Requires-Dist: pygls<3,>=2.0; extra == 'lsp'
|
|
60
|
+
Provides-Extra: watch
|
|
61
|
+
Requires-Dist: watchfiles<2,>=1.0; extra == 'watch'
|
|
62
|
+
Provides-Extra: web
|
|
63
|
+
Requires-Dist: fastapi>=0.115; extra == 'web'
|
|
64
|
+
Requires-Dist: jinja2>=3.1; extra == 'web'
|
|
65
|
+
Requires-Dist: uvicorn[standard]>=0.32; extra == 'web'
|
|
66
|
+
Description-Content-Type: text/markdown
|
|
67
|
+
|
|
68
|
+
# docs-drift
|
|
69
|
+
|
|
70
|
+
Self-hosted documentation drift checks for maintainers: scan local repositories,
|
|
71
|
+
review source evidence, and gate newly introduced drift in CI. Organizations can
|
|
72
|
+
scan multiple checkouts into one dashboard with `docs-drift portfolio`.
|
|
73
|
+
[PR reviews, feedback, history, ownership and fix branches](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/TEAM-WORKFLOWS.md).
|
|
74
|
+
[Organization adoption](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/ORGANIZATIONS.md) · [Product maturity](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/PRODUCT.md).
|
|
75
|
+
|
|
76
|
+
The product hypothesis is repeatable CI checks of exact documentation contracts
|
|
77
|
+
for SDK, CLI and API maintainers. Start external repositories in report-only mode:
|
|
78
|
+
real-world precision/recall and maintainer adoption remain unestablished.
|
|
79
|
+
[Run a frozen maintainer review](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/MAINTAINER-PILOT.md) with blank human labels,
|
|
80
|
+
source evidence and an explicit decision about keeping it in CI.
|
|
81
|
+
|
|
82
|
+
## Judges start here
|
|
83
|
+
|
|
84
|
+
**Smallest offline demo:** [exact local run steps and one synthetic claim](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/JUDGE-DEMO.md).
|
|
85
|
+
Open `/scan/example-judge` in the local app to inspect the source, rename commit,
|
|
86
|
+
and proposed documentation fix. Fixture results are not real-world accuracy measurements.
|
|
87
|
+
|
|
88
|
+
- **Public demo:** AWS deployment deferred by owner. Run the app locally on port 8080; no public URL is claimed. [AWS handoff](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/AWS-HANDOFF.md).
|
|
89
|
+
- **Real case:** [reproduced rich-cli failure, source and commit](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/REAL-CASE.md).
|
|
90
|
+
- **Try immediately:** the local app includes a repo URL scanner and precomputed real sample, with no sign-in or API key.
|
|
91
|
+
- **Interface:** monochrome themes, scroll-driven 3D evidence layers, motion controls and searchable reports; [UI verification](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/UI-REVIEW.md).
|
|
92
|
+
- **Video:** pending owner recording and upload; target 1:50 with captions; [updated shot list](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/FLOW-RECORDING.md).
|
|
93
|
+
- **Source:** [GitHub repository](https://github.com/ayushagarwalhere/docs-drift).
|
|
94
|
+
- **Evidence:** [benchmark results](https://github.com/ayushagarwalhere/docs-drift/blob/main/benchmark/RESULTS.md),
|
|
95
|
+
[measured limitations](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/RESULTS.md), and [submission checklist](https://github.com/ayushagarwalhere/docs-drift/blob/main/SUBMISSION.md).
|
|
96
|
+
|
|
97
|
+
Three-command local quick start (Python 3.11+, Git and uv installed):
|
|
98
|
+
|
|
99
|
+
```sh
|
|
100
|
+
git clone https://github.com/ayushagarwalhere/docs-drift.git
|
|
101
|
+
cd docs-drift
|
|
102
|
+
uv run --all-extras docs-drift scan --repo .
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Release preparation: [owner's publish gates](https://github.com/ayushagarwalhere/docs-drift/blob/main/RELEASING.md). Public installs and
|
|
106
|
+
URLs must be verified after publication; local checks do not prove a published release.
|
|
107
|
+
|
|
108
|
+
**Find documentation statements your code no longer supports, with source evidence and available Git history.**
|
|
109
|
+
|
|
110
|
+
[](https://github.com/ayushagarwalhere/docs-drift/blob/main/.github/workflows/ci.yml)
|
|
111
|
+
**Package status:** PyPI unpublished (404 verified 22 October 2026); use the source quick start.
|
|
112
|
+
[](https://github.com/ayushagarwalhere/docs-drift/blob/main/LICENSE)
|
|
113
|
+
[](https://github.com/ayushagarwalhere/docs-drift/blob/main/pyproject.toml)
|
|
114
|
+
|
|
115
|
+
Alpha software: source installation works before the first package is published.
|
|
116
|
+
The PyPI page becomes available after authenticated publication; the hosted
|
|
117
|
+
demo and video remain explicitly pending above. Real-world
|
|
118
|
+
precision and recall are **pending human labeling**, not inferred from fixtures.
|
|
119
|
+
|
|
120
|
+

|
|
121
|
+
|
|
122
|
+

|
|
123
|
+
|
|
124
|
+
## A real failure, reproduced during this build
|
|
125
|
+
|
|
126
|
+
To render rich-cli's README with line numbers, we followed its documented
|
|
127
|
+
`--line-number` option. It exited 2: "No such option." Source declares
|
|
128
|
+
`--line-numbers`, which exited 0. docs-drift locates README:61; manual Git
|
|
129
|
+
inspection identifies documentation commit `567f6c84`. The scanner does not
|
|
130
|
+
attribute a breaking commit for this finding. This is an agent-assisted build
|
|
131
|
+
investigation, not an invented account of the owner's earlier work.
|
|
132
|
+
[Exact snapshot, commands, source and review](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/REAL-CASE.md).
|
|
133
|
+
|
|
134
|
+
The four-finding saved sample includes **two confirmed defects and two false
|
|
135
|
+
positives**. A fresh scan flags only the defective options. This selected,
|
|
136
|
+
agent-assisted review is not an independent human accuracy measurement.
|
|
137
|
+
|
|
138
|
+
The `--port` / `--listen` images above are synthetic fixtures, excluded from the
|
|
139
|
+
real case and review sample.
|
|
140
|
+
|
|
141
|
+
For beginners contributing to documentation, an evidence-backed finding can be a
|
|
142
|
+
concrete first contribution. Maintainers can use the same checks to keep docs
|
|
143
|
+
aligned with a changing codebase; the suggested patches still need review.
|
|
144
|
+
|
|
145
|
+
## Quick start
|
|
146
|
+
|
|
147
|
+
From this source checkout, with Python 3.11+ and Git:
|
|
148
|
+
|
|
149
|
+
```sh
|
|
150
|
+
uv sync --locked --all-extras
|
|
151
|
+
uv run docs-drift scan
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
After the first PyPI release, these are the intended package entry points:
|
|
155
|
+
|
|
156
|
+
```sh
|
|
157
|
+
pipx install docs-drift
|
|
158
|
+
docs-drift scan
|
|
159
|
+
# Alternative after publication:
|
|
160
|
+
uvx docs-drift scan
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Or build the CLI container locally (Docker must be running):
|
|
164
|
+
|
|
165
|
+
```sh
|
|
166
|
+
docker build -t docs-drift:local . && docker run --rm -v "$PWD:/repo" docs-drift:local scan --repo /repo
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Try it in your browser: AWS hosting is deferred by the owner. Locally,
|
|
170
|
+
start `uv run python -m docs_drift.web` and open `http://127.0.0.1:8080`; set
|
|
171
|
+
`DOCS_DRIFT_ALLOWED_ORIGIN` to that exact origin before submitting a scan.
|
|
172
|
+
|
|
173
|
+
Useful commands, exercised against a trusted fixture in CI:
|
|
174
|
+
|
|
175
|
+
```sh
|
|
176
|
+
docs-drift scan --no-color
|
|
177
|
+
docs-drift scan --format html --output scan.html
|
|
178
|
+
docs-drift insights --format json
|
|
179
|
+
docs-drift impact --base HEAD~1 --format json
|
|
180
|
+
docs-drift fix
|
|
181
|
+
docs-drift check # documented exit: 1 on the stale py-cli fixture
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
`scan` reports findings and exits 0. `check` exits 1 for findings meeting its
|
|
185
|
+
threshold, or 2 for usage/configuration errors. `fix` previews a patch; applying
|
|
186
|
+
it requires an explicit write option and confirmation. No target code is run.
|
|
187
|
+
|
|
188
|
+
## What it checks (illustrative fixtures)
|
|
189
|
+
|
|
190
|
+
| Claim kind | Example documentation | Static evidence |
|
|
191
|
+
| --- | --- | --- |
|
|
192
|
+
| CLI flag / command | A synthetic README mentions `--port` | argparse/Click/Typer or Commander declarations |
|
|
193
|
+
| Environment variable | A synthetic README mentions `APP_LOG_LEVEL` | literal environment reads or safe config templates |
|
|
194
|
+
| Endpoint | A synthetic guide requests `GET /status` | literal FastAPI/Flask/Express routes |
|
|
195
|
+
| Setting / default | A synthetic guide says `workers` defaults to 4 | a recognized literal declaration/default |
|
|
196
|
+
| Code symbol | A synthetic guide calls `Client.connect()` | a parsed function/class/method declaration |
|
|
197
|
+
| File path | A synthetic guide links `config/settings.toml` | a contained repository-relative path |
|
|
198
|
+
| Package script / task | A synthetic guide invokes `npm run build` | package manifests and Make/just task declarations |
|
|
199
|
+
| Project command | A synthetic guide runs `tool serve --port 8000` | independently identified executable/command/flags |
|
|
200
|
+
|
|
201
|
+
Arbitrary behavioural prose is not proved by name matching. Optional model
|
|
202
|
+
assessment is separately labeled and constrained by source citations.
|
|
203
|
+
|
|
204
|
+
## Supported ecosystems
|
|
205
|
+
|
|
206
|
+
<!-- support-table:start -->
|
|
207
|
+
| Language | Framework / surface | Support |
|
|
208
|
+
| --- | --- | --- |
|
|
209
|
+
| Python | AST declarations | partial |
|
|
210
|
+
| Python | argparse | partial |
|
|
211
|
+
| Python | Click | partial |
|
|
212
|
+
| Python | Typer | partial |
|
|
213
|
+
| Python | FastAPI | partial |
|
|
214
|
+
| Python | Flask | partial |
|
|
215
|
+
| Python | Django / DRF | none |
|
|
216
|
+
| JavaScript / TypeScript | AST declarations | partial |
|
|
217
|
+
| JavaScript / TypeScript | Commander | partial |
|
|
218
|
+
| JavaScript / TypeScript | yargs | none |
|
|
219
|
+
| JavaScript / TypeScript | Express | partial |
|
|
220
|
+
| JavaScript / TypeScript | Next.js / NestJS routes | none |
|
|
221
|
+
| JSON / YAML / TOML / INI | literal settings | partial |
|
|
222
|
+
| Go / Rust | language-specific configuration | none |
|
|
223
|
+
<!-- support-table:end -->
|
|
224
|
+
|
|
225
|
+
Partial means recognized literal/static patterns, not complete framework support.
|
|
226
|
+
No framework is advertised as fully supported. Dynamic registration, signatures,
|
|
227
|
+
router composition and generated source may remain unverifiable.
|
|
228
|
+
|
|
229
|
+
## CI
|
|
230
|
+
|
|
231
|
+
This ten-line example uses the development Action from this repository:
|
|
232
|
+
|
|
233
|
+
```yaml
|
|
234
|
+
name: Documentation
|
|
235
|
+
on: [push, pull_request]
|
|
236
|
+
permissions: {contents: read}
|
|
237
|
+
jobs:
|
|
238
|
+
docs:
|
|
239
|
+
runs-on: ubuntu-latest
|
|
240
|
+
steps:
|
|
241
|
+
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803
|
|
242
|
+
- uses: ./
|
|
243
|
+
with: {repo: '.', fail-on-drift: 'true'}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Other projects must replace the local action path with the real repository pinned
|
|
247
|
+
to a reviewed commit after publication. Reports include JSON, HTML, SARIF and
|
|
248
|
+
escaped Markdown. The Action needs no write token, accepts no model key, and never
|
|
249
|
+
posts a PR comment automatically. [Action guide](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/github-action.md).
|
|
250
|
+
|
|
251
|
+

|
|
252
|
+
|
|
253
|
+
## Editor
|
|
254
|
+
|
|
255
|
+
The development VS Code extension supplies diagnostics, definitions and safe
|
|
256
|
+
quick fixes via the stdio LSP. **Actual squiggle GIF pending a verified editor
|
|
257
|
+
capture**; protocol tests are not presented as a native-editor recording.
|
|
258
|
+
[Extension guide](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/vscode.md).
|
|
259
|
+
|
|
260
|
+
## How it works
|
|
261
|
+
|
|
262
|
+
```mermaid
|
|
263
|
+
flowchart LR
|
|
264
|
+
D[Docs] --> C[Located claims]
|
|
265
|
+
S[Source text / AST] --> I[Static index]
|
|
266
|
+
C --> M[Scoped matching]
|
|
267
|
+
I --> M
|
|
268
|
+
M --> H[Bounded Git history]
|
|
269
|
+
H --> R[Evidence, reports and reviewable fixes]
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
```mermaid
|
|
273
|
+
flowchart LR
|
|
274
|
+
Section --> Claim
|
|
275
|
+
Claim --> Symbol
|
|
276
|
+
Symbol --> SourceFile
|
|
277
|
+
SourceFile --> Commit
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
Rules decide literal claims first. Optional model assessment handles selected
|
|
281
|
+
anchored prose, cannot override code-decided findings, and must cite supplied
|
|
282
|
+
source that passes validation.
|
|
283
|
+
|
|
284
|
+
## Accuracy and limitations
|
|
285
|
+
|
|
286
|
+
<!-- accuracy:start -->
|
|
287
|
+
Real-world accuracy is **not yet established**. The 12-repository protocol and
|
|
288
|
+
blank human labeling sheet are in [the benchmark](https://github.com/ayushagarwalhere/docs-drift/blob/main/benchmark/PROTOCOL.md); its
|
|
289
|
+
[dated results](https://github.com/ayushagarwalhere/docs-drift/blob/main/benchmark/RESULTS.md) keep precision/recall pending until the owner
|
|
290
|
+
labels them. Fixture scores establish plumbing, not product accuracy. Missing
|
|
291
|
+
findings can be intentional examples, third-party tools or indexing limitations;
|
|
292
|
+
review every report. [Known limitations](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/LIMITATIONS.md).
|
|
293
|
+
<!-- accuracy:end -->
|
|
294
|
+
|
|
295
|
+
## Configuration
|
|
296
|
+
|
|
297
|
+
```toml
|
|
298
|
+
# .docs-drift.toml
|
|
299
|
+
min_confidence = 0.6
|
|
300
|
+
[history]
|
|
301
|
+
max_commits = 2000
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
The [full configuration reference](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/configuration.md) is generated from the
|
|
305
|
+
Pydantic model and checked for freshness in CI. Common CLI options work before
|
|
306
|
+
or after subcommands. [CLI reference](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/CLI.md).
|
|
307
|
+
|
|
308
|
+
## Privacy and security
|
|
309
|
+
|
|
310
|
+
Rule-only scans parse local text/AST and call Git for evidence. They never import
|
|
311
|
+
or execute target modules or fenced commands. Optional model mode sends selected
|
|
312
|
+
redacted documentation/source excerpts through OpenRouter to the chosen provider;
|
|
313
|
+
replay mode sends nothing. The public demo and composite Action are rule-only.
|
|
314
|
+
[Security policy](https://github.com/ayushagarwalhere/docs-drift/blob/main/SECURITY.md) ? [Threat model](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/SECURITY.md).
|
|
315
|
+
|
|
316
|
+
## Built with voice
|
|
317
|
+
|
|
318
|
+
The owner supplied original Flow usage cards, including **31,351 total words**,
|
|
319
|
+
**276 words/minute**, **11 apps**, and a **1-day streak**, plus a separate card
|
|
320
|
+
showing **26,412 total words**. These are account-level figures, not docs-drift
|
|
321
|
+
word counts. [Actual cards and provenance](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/built-with-voice.md).
|
|
322
|
+
|
|
323
|
+
The specific dictated prompts, build revisions and Flow-use recording still need
|
|
324
|
+
owner evidence. [Concrete 1:50 recording plan](https://github.com/ayushagarwalhere/docs-drift/blob/main/docs/FLOW-RECORDING.md). No personal
|
|
325
|
+
workflow or recording has been invented.
|
|
326
|
+
|
|
327
|
+
## Contributing and licence
|
|
328
|
+
|
|
329
|
+
See [CONTRIBUTING.md](https://github.com/ayushagarwalhere/docs-drift/blob/main/CONTRIBUTING.md). Run tests, lint and type checks before
|
|
330
|
+
opening a change; do not change a frozen benchmark's rules or prefill human labels.
|
|
331
|
+
The code is [MIT licensed](https://github.com/ayushagarwalhere/docs-drift/blob/main/LICENSE). [Changelog](https://github.com/ayushagarwalhere/docs-drift/blob/main/CHANGELOG.md).
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
docs_drift/__init__.py,sha256=Si6xBsOXcvL6abZlm8iSJqzsts72kGbzT8QqWlFIIgM,174
|
|
2
|
+
docs_drift/analysis.py,sha256=z5BgvinDvZ55qrncnMI5oNzEUXXE5J6OTmikELoYOGI,2417
|
|
3
|
+
docs_drift/baseline.py,sha256=TUI35iKmG7CJffY5-dk1TIxaaOUJm9u56Akdvmn4t9Y,2509
|
|
4
|
+
docs_drift/cli.py,sha256=3xlUmbLyYKP8qNRxA3I0se4PMlsVjFl8rRgD7fJvJyg,40986
|
|
5
|
+
docs_drift/collaboration.py,sha256=F06_TKhWtet5_Sgf6uVFjsgsywUKnG5CJFcy6U0xSJg,12282
|
|
6
|
+
docs_drift/config.py,sha256=6ZL7TlWDNq8iiVjLgeXHu5D5x0jxt5BX-gOIYFmHfxU,4027
|
|
7
|
+
docs_drift/errors.py,sha256=TRoZShTVLDApx0ATyG_VsUxT9PpqwoSthAF6AXGRNZU,5163
|
|
8
|
+
docs_drift/git_safety.py,sha256=HhWxf3xZh02sb-EvRatwKmcTI84dhb_KClLH_iVhdAs,1316
|
|
9
|
+
docs_drift/history.py,sha256=qRhmgOX4FTRi4PJJ2RAqLKdrW79AcyYUyuLWgXrg5HU,17369
|
|
10
|
+
docs_drift/history_cache.py,sha256=bbv2peRfFpgswowRd4x4s1kNWHa5--yQHhClgdRf-bk,2791
|
|
11
|
+
docs_drift/ids.py,sha256=vpry0zpDvEt9oExuNOlNyELq2YMN0GDzgql6sq6urSI,2461
|
|
12
|
+
docs_drift/limits.py,sha256=KaWEcebUyU9sVpCg8Onta6at9pXUvnz2rY2urcZRc1s,454
|
|
13
|
+
docs_drift/lsp.py,sha256=G1GL19KlwP9cbB_ETZeEqFNWXnmZSvKhJr_R5lBQkv4,7940
|
|
14
|
+
docs_drift/models.py,sha256=O3wZ1Jh1mCOa_w6uBhiPD03opLdGfxItkVb_rgMZULc,7451
|
|
15
|
+
docs_drift/ownership.py,sha256=3G92Gf0i60SOsWjWusIt3PjvLxDL6MkUf6L7fzONUAA,2931
|
|
16
|
+
docs_drift/policy.py,sha256=IBn_jHPuUdc0vumEIwxGTdhYruNCtkMKMcHaW_v6Fbw,3046
|
|
17
|
+
docs_drift/portfolio.py,sha256=4HoqeF2Gr9-A730n5SpLlaJEa9vok9iB6BZ54wNdtyc,6777
|
|
18
|
+
docs_drift/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
|
+
docs_drift/review.py,sha256=hKC6B2ew9x02SqvA-Kdsu9AFTAYXzXIU5pwI1bxToNs,4661
|
|
20
|
+
docs_drift/safe_files.py,sha256=uhduUmJ8eUaYT9lhn1xICt-3dja9siikkk9HAIuuV1U,827
|
|
21
|
+
docs_drift/scanning.py,sha256=zwUeoma_PWiun8OZE0wuy6IKgGc15oXGlnETFuKCUWg,8381
|
|
22
|
+
docs_drift/setup.py,sha256=-3BOBY4xWkMNWA0r_N-6I47To5e-WMG-EGLQ5WAvaNw,5836
|
|
23
|
+
docs_drift/snapshots.py,sha256=94etQQeMd36ka6aq6xt0j1ChOMYR4xguPWPLTX6FTbw,4275
|
|
24
|
+
docs_drift/support.py,sha256=nfnL36U2VhpThNDopOquydRQtfZMZ_uUhgmABJnRr1I,1298
|
|
25
|
+
docs_drift/watch.py,sha256=5auS6xe7x8fjVN8Q7eVC55JIHnfqwraicUBWgZCuSEY,7819
|
|
26
|
+
docs_drift/workflow_cli.py,sha256=KnH2lc7nw-Zo7P3H-g5AvR5VK-q4PsD2WbTZn23oB7g,3973
|
|
27
|
+
docs_drift/workspaces.py,sha256=acJD2bw3Un6KLpJQYmT6t3LOBTX4EVIqXl_lZkrFkmA,5639
|
|
28
|
+
docs_drift/docs/__init__.py,sha256=ZI_imBQZnU8Fr-Xe84QCZFJ0rLNdQ-mH2eZPkZJ-i1w,75
|
|
29
|
+
docs_drift/docs/defaults.py,sha256=tngnRS6rQB7quZKJhc1fuMLbpXEGLw1yVzUNhfjJhL0,11167
|
|
30
|
+
docs_drift/docs/discover.py,sha256=bi_qSKAEfEu8cTKtBEGwtZ6BPJmW7radKHi7lEY3VNI,6922
|
|
31
|
+
docs_drift/docs/extract_blocks.py,sha256=HHFlK1q70o26jnIM80l8bfRigshkJTjJa--og0asETg,23518
|
|
32
|
+
docs_drift/docs/extract_inline.py,sha256=LjYf5gZExLPCa3Lmncsxu7vlcjL-nQapBLjzu1tuWHc,24914
|
|
33
|
+
docs_drift/docs/pipeline.py,sha256=ic3Sy5khiC9qi9XuYmtQnVZw4yBqy9wgx13NkHmT73I,10107
|
|
34
|
+
docs_drift/docs/preprocess.py,sha256=2MGwK5AH_YJeCj5wLWqpHD3T_idOgiwYYEisgTko1pc,3122
|
|
35
|
+
docs_drift/docs/sections.py,sha256=XI-c9ZEnKGOv_kmkCu1M8beKag5bonmcImGWvwmm_pM,9641
|
|
36
|
+
docs_drift/fix/__init__.py,sha256=UCpypMxPsurRaHxTdBwpMpo6m0l2Vjj2KRhIIe1Uodk,84
|
|
37
|
+
docs_drift/fix/edits.py,sha256=p3udn2TWACPDiyxjPAcADwoYG0R_ar1ppFAMGB5Efuo,4720
|
|
38
|
+
docs_drift/fix/model.py,sha256=VtA7gUDF0Wssu-yMtNeXtXpsFGr0YNXVXiCHmRTSLEU,6676
|
|
39
|
+
docs_drift/fix/rules.py,sha256=QNZIQYdNt0pTQzuB1Lf7N8do6X9i8D0vBmewL-DBfR4,9604
|
|
40
|
+
docs_drift/graph/queries/evidence_path.cypher,sha256=EzXzsd7ndfrJnQLgGR83nNXBzjVKB3QTWyk1SsqDtdo,365
|
|
41
|
+
docs_drift/index/__init__.py,sha256=vpTt4Hc9jT1jciGZTc3mY1GRyT_FuyTvvk66C1hZsKI,9296
|
|
42
|
+
docs_drift/index/base.py,sha256=4K1_YKIikzfq7BW1VjgL0nqWUKvMgXnMbInZ8CG201w,9825
|
|
43
|
+
docs_drift/index/config.py,sha256=3dA4j-IzVbvwawk6VeJqJb5vvL-6lb78hjpiTiIZRh8,6520
|
|
44
|
+
docs_drift/index/js_cli.py,sha256=uA2Die_U8PqdDUFdgcQCOVg195aHsFtdFzvsJsbZeAQ,8194
|
|
45
|
+
docs_drift/index/js_routes.py,sha256=ReESiPE2LDXGmG2r0xUfT8u3ldnIVD9_4zbpHvxlCXU,2509
|
|
46
|
+
docs_drift/index/js_symbols.py,sha256=5szaon3FFqvuvs4oMoy4ZKXzIeQ-xxWa_LtEhQlttRc,8358
|
|
47
|
+
docs_drift/index/python_cli.py,sha256=gLpzJKV-zP6sRy46tS79fZ3nktpBJC2ogAOCn-XDNTM,15012
|
|
48
|
+
docs_drift/index/python_routes.py,sha256=YPD-K7BwWzfEE4NjF7KkPSKi39dkTOZsRSOKOFOx66s,4692
|
|
49
|
+
docs_drift/index/python_source.py,sha256=x7Flj9RXSnT4DIzFIqxM3dCbYPBQyESSvWdlUfPFAkw,586
|
|
50
|
+
docs_drift/index/python_symbols.py,sha256=2WK0d-x1kb-SRbN0jvyH5YVuc6CNOD-g7jmQZ_rvPXw,13339
|
|
51
|
+
docs_drift/index/routes_common.py,sha256=7WNRWrJnvd7A8nsQDK42S0IfU24faRzHHxe1FP1nkxM,589
|
|
52
|
+
docs_drift/index/tasks.py,sha256=_V3DhWya7ZMxMt6IM5mVSB-5AFPQ8aopfdOcgevV4jk,5554
|
|
53
|
+
docs_drift/index/ts_parser.py,sha256=8BAC5NBE8dzjQDDboFeaOlRL9R4o8DaYBB6PX2O5oKk,720
|
|
54
|
+
docs_drift/index/queries/javascript.scm,sha256=VT2A1y1J6oqTj4VbF7O9jY-XgQaa7Gudku5XPKqjfkE,325
|
|
55
|
+
docs_drift/index/queries/typescript.scm,sha256=gKn0_Z_W-no7QZ3eSAq4KHhdXS4OryVuJCSb487r1vc,291
|
|
56
|
+
docs_drift/llm/__init__.py,sha256=TrE0LGnwTTD8wPqDbxESTdJeoGNXD_o72VoGpDAKPbw,368
|
|
57
|
+
docs_drift/llm/candidates.py,sha256=Kj7tE6ZzmQfc-dpx_8Oh_jZWj9Ol7ItFkIeozWDOOmw,3928
|
|
58
|
+
docs_drift/llm/client.py,sha256=QwakmZv0YMq4__T5MC6p_u5bXHEt55zu__6oSmClyUU,8171
|
|
59
|
+
docs_drift/llm/pricing.py,sha256=1ZdXhQDQkmXmgbZ7mYA1wnwf7XrdmDqFONa1BRDJQko,1964
|
|
60
|
+
docs_drift/llm/privacy.py,sha256=l_iOg491Lch4GdxlYzerszRjiOSfrOLolLlx9sEbGLg,2657
|
|
61
|
+
docs_drift/llm/prompts.py,sha256=4zDsSijXANXKTlDumXuRGIGukcCloaWCLp0M6EEtGB0,1127
|
|
62
|
+
docs_drift/llm/retrieve.py,sha256=32PJSGYd5EO3OxCAyCeeV9LMCCuyU1nTYagKI4ixfwQ,2518
|
|
63
|
+
docs_drift/llm/types.py,sha256=kW7-nvTxxSfvH2aI4DyrOrMQVZ1J3IpegJqtQMSE_Es,1768
|
|
64
|
+
docs_drift/llm/verify.py,sha256=L0wlURW7I-i7OiDyE6ikVY2r48z-vGESFnpWTW-u5o8,8072
|
|
65
|
+
docs_drift/llm/prompts/rewrite_v1.md,sha256=sa4xkx548IojY_-xR7i5ibyxq-cPZRQ2KxmEOQ3o7FY,683
|
|
66
|
+
docs_drift/llm/prompts/verify_v1.md,sha256=QuempE9NWcTpSWfZ8cfFkaTLZq-piKV287F-XtZjjQk,931
|
|
67
|
+
docs_drift/match/__init__.py,sha256=AIYrndorS9j21hnfEDsbNmqeHt_Efr7Sbimo45_X5JU,127
|
|
68
|
+
docs_drift/match/commands.py,sha256=sO5Ra--sHBficvlntXPL_9ZhceLJb1XVkAGeCG26RvM,8227
|
|
69
|
+
docs_drift/match/defaults.py,sha256=8N9HdIA5JNrXc6wGolqMSQ0sd9yf6Xr7UhFnGbJXChs,3378
|
|
70
|
+
docs_drift/match/engine.py,sha256=-VPZCWJdyq5OLwibViTMup-Wj7uDxnuK3A82dwabk84,13860
|
|
71
|
+
docs_drift/match/rename.py,sha256=8nL8eTi0N7pP51-jJl6dCEQZReWA0Wz4WSZPIvrtVJA,2723
|
|
72
|
+
docs_drift/report/__init__.py,sha256=aeBEKdrD-7e0AeZ2Q4_3OfISUI7TEdrVrjtbRiZoXc8,1471
|
|
73
|
+
docs_drift/report/common.py,sha256=Wki6d0Rcymr46oe9uS7tuVKjCHhLyGkNHcIwJbCPpDU,1323
|
|
74
|
+
docs_drift/report/github.py,sha256=gVWffvntVN4htX7tpd0MHovp_jRzTR14JxJcvYuDbNA,964
|
|
75
|
+
docs_drift/report/html.py,sha256=bHoikTvXjYSxBFX0yogFXu_oJzGgW1Q2yBDwuiMrLTg,4379
|
|
76
|
+
docs_drift/report/json.py,sha256=heyJQTqHWTfO_N4fb4gt3q_FB_KNeqMPcvTMKwT2qVQ,650
|
|
77
|
+
docs_drift/report/junit.py,sha256=ClH6f_3WDYaXYc43-dNwNgNMjtRuOC4INCgHen1ujeU,1088
|
|
78
|
+
docs_drift/report/markdown.py,sha256=vqfy0Fz5i0EDiWQrY1-LISJtidzNppIYM6_6r0BNdfg,2390
|
|
79
|
+
docs_drift/report/portfolio.html,sha256=5-hluF80KGsTFh1xMFqIDYswu7rdamcJHQgImUNmuo8,4271
|
|
80
|
+
docs_drift/report/report.html,sha256=JghiZ-D7rUicZGY7NhZ8_reCnPUBMAGoupdXdtwhFXU,617
|
|
81
|
+
docs_drift/report/sarif.py,sha256=x2oLC65hS-Z2AbQQ9dxXSIzVSQoA0SYkR-DYTOqb_5w,2324
|
|
82
|
+
docs_drift/report/terminal.py,sha256=1YcNPY7y3fHylTCMp3a_bhjqeOtYCgiECTPXz_7x4N4,4013
|
|
83
|
+
docs_drift/report/workflow.html,sha256=q8iuRbtcVTyP2Dhq9Ks9Lz3j5T-8fqkHwP3J9r9ZOd4,3171
|
|
84
|
+
docs_drift/report/partials/body.html,sha256=3ewMYpxePSVkS1KiYsf6tj4YpaR9UtJCWdPg441BdY4,6295
|
|
85
|
+
docs_drift/report/partials/report.css,sha256=aDbshvg0nhz1123b5MJQ75fkgjAqEoefVG6n0rYduHM,10614
|
|
86
|
+
docs_drift/report/partials/script.js,sha256=KKoGE5QuJRYYeiOtS771wA5irdhrZeRLoImhVCwhvVg,6251
|
|
87
|
+
docs_drift/report/vendor/CYTOSCAPE-LICENSE,sha256=8K9Zl63osaz9lqzy3pDMa_qBGABsoR6S3n5wev1n_d8,1083
|
|
88
|
+
docs_drift/report/vendor/cytoscape.min.js,sha256=G7U0DlSVEeERsx5WhIcslJrTPUDqXboK2OfZDGLHs7k,373734
|
|
89
|
+
docs_drift/schemas/SARIF-LICENSE.md,sha256=HuNxoIxLwqZM9DgpkCcWdoNcPXW8mEVgoYHeVMiEccU,1385
|
|
90
|
+
docs_drift/schemas/SARIF-NOTICES.txt,sha256=fqF3ztdWZKSRgpRyD8S1q_eVBo0lnjz_F60ffAxaCz0,4475
|
|
91
|
+
docs_drift/schemas/sarif-schema-2.1.0.json,sha256=w7S7LWCTiXSDNIklqqc68Ds-P0vUyjjO8m3LQhKiaC4,112768
|
|
92
|
+
docs_drift/schemas/scan-result.v1.json,sha256=zSSOncCjHAgmvbFLqSZO7qWn2Dgo6-ep8fGM2RsJlQE,21831
|
|
93
|
+
docs_drift/web/__init__.py,sha256=395oR-syP3bxcl0kv_UC_EgL_GVmjEJPHy6wLLkFotI,63
|
|
94
|
+
docs_drift/web/__main__.py,sha256=fI657UNkQzmsvS_C7hshRQj2cVi-jvB0LUZsOMlPTcM,529
|
|
95
|
+
docs_drift/web/app.py,sha256=gj4nNXhTTd8kDzpl_Y8H0Q3R0hReaFgY8qaXxXfm9u8,12493
|
|
96
|
+
docs_drift/web/cleanup.py,sha256=1Xvcdr7FXes12C2vmrApxCunY7iOO_by8Eo31zalj5s,893
|
|
97
|
+
docs_drift/web/git.py,sha256=EHO96KzaDqYONDKyHqjRfq-ShYCsxuNB3eMVNa9_3xs,9959
|
|
98
|
+
docs_drift/web/jobs.py,sha256=hBDqDb1CVTjaij6ngZF6U39Y7IyP3EW0xkueMOp-PlM,14705
|
|
99
|
+
docs_drift/web/settings.py,sha256=7ZfgSJWM1ye_FoDC80liqDsvTi-9CWcOPA32uwCio_Y,2132
|
|
100
|
+
docs_drift/web/validation.py,sha256=09e3R5NK7lUwQtPHDuJGD1EdMzgFr3QHqBfoSgc7MV8,1788
|
|
101
|
+
docs_drift/web/worker.py,sha256=5Yo6Dm3R9ha-t3NkgeYU3HFgZKd1GwNF7x9a4axAImc,6182
|
|
102
|
+
docs_drift/web/examples/clean-repo.json,sha256=IOkXijIeLMOvB2T-X17MpX-RSmn3bEtWRWlg_oo3M88,18103
|
|
103
|
+
docs_drift/web/examples/fastapi-svc.json,sha256=HSuvX80lj318-IGGU9TDYHOs1-gGHs7EYgXOaj1ru2E,21880
|
|
104
|
+
docs_drift/web/examples/files-to-prompt.json,sha256=fbgVtbaMDQhg_7sahU63o3HH_QPFsoLUtu_-oNVJ35U,107872
|
|
105
|
+
docs_drift/web/examples/judge-fixture.json,sha256=OZ-3wHRqCP7CyNbgQ_zm-ThTeAAUButk4KMN-8t3bKI,6352
|
|
106
|
+
docs_drift/web/examples/manifest.json,sha256=vykut5vPuCp7GI96yfyJ6AZi5lT_1vpYZSwQ4Do2TkI,3267
|
|
107
|
+
docs_drift/web/examples/node-tool.json,sha256=JtR-0wEO1q4GTMEEAK6ZIURST6daqSQSPcuOrWf80Ow,24514
|
|
108
|
+
docs_drift/web/examples/py-cli.json,sha256=lwjZFmDN9JlXIwfvo5Ln5Nt9l6p99CHVfE32lbmTrZA,37566
|
|
109
|
+
docs_drift/web/examples/rich-cli-reviewed.json,sha256=2qcZ4q-YSOu7uCIFZGCO0l7K9KOlt3NTeE-zAqtmC9A,243738
|
|
110
|
+
docs_drift/web/examples/rich-cli.json,sha256=BOIZpVwBy4kQKbZ6y4DcOQr-UtbWOPwKULrDvOdCKWc,248732
|
|
111
|
+
docs_drift/web/examples/verification.json,sha256=NtXGbxS_xjerjdrzceCio2t7mpUi96k3liXdyqqFxag,908
|
|
112
|
+
docs_drift/web/static/demo.css,sha256=3WiDHswjbUA8A1XWT6K4GqwTKTtEYwQQisVV8Ah0nZQ,25527
|
|
113
|
+
docs_drift/web/static/demo.js,sha256=kaRv-s2inrjbOv7xGjj1J64PgPz2XZcTRNYxgxPbJRo,10359
|
|
114
|
+
docs_drift/web/static/evidence/correction-verification.json,sha256=yIomvHX0HKJerfnKfUeNzVHtp0GzYxvylshaPEWLwZQ,1013
|
|
115
|
+
docs_drift/web/static/evidence/flow-highlights-2026-10-22.png,sha256=CpkRXJzBCwC7G78xzdA9X67txRtQobUd6C3bBKSUfdw,293059
|
|
116
|
+
docs_drift/web/static/evidence/fresh-scan.json,sha256=2qcZ4q-YSOu7uCIFZGCO0l7K9KOlt3NTeE-zAqtmC9A,243738
|
|
117
|
+
docs_drift/web/static/evidence/review.json,sha256=TbF7BDF_DBE5pHRAF4n-TZBw6UgfViaFJN_Klr7LYZQ,1149
|
|
118
|
+
docs_drift/web/static/evidence/rich-cli-correction.patch,sha256=Dd_7lb0XoGKjVoLubyGy1dNvlJJIQh3Mz10um4P-Ats,976
|
|
119
|
+
docs_drift/web/static/evidence/runtime.json,sha256=gg68PLupnXprEQk4mxcOiJcAdrvt0RqpHI8-W0Fu8uA,1474
|
|
120
|
+
docs_drift/web/static/evidence/saved-scan.json,sha256=BOIZpVwBy4kQKbZ6y4DcOQr-UtbWOPwKULrDvOdCKWc,248732
|
|
121
|
+
docs_drift/web/static/evidence/usage-card-supplied.png,sha256=mFpUIqjSUvUuhFCxavpL7lfaAHoZzAZWg6fhcl-yHfc,408692
|
|
122
|
+
docs_drift/web/templates/base.html,sha256=BgmqivU8DDn2bwC1bQZVNn6YjkxL4XpdTvoWTJDiK40,2098
|
|
123
|
+
docs_drift/web/templates/case.html,sha256=cMDuA9Lr4qc2LsNloPqVs-_KCTLWzLzsgUgbaB1c5ZM,4033
|
|
124
|
+
docs_drift/web/templates/landing.html,sha256=SDVYi9n3TQieQafpcYE5wyy4ifp4f-E2Z0W-t0M1-nI,12498
|
|
125
|
+
docs_drift/web/templates/scan.html,sha256=Di383E3k9vc10za3zcbUbRueTKMqQ76P6CN_FO9bvLY,1370
|
|
126
|
+
docs_drift/web/templates/voice.html,sha256=WzguGNLfOJ0vrq5z3jTQINiM8eoyCLsWKhyKoAo_uO0,2194
|
|
127
|
+
docs_drift-0.1.0.dist-info/METADATA,sha256=g1H2xpmuMLIzBrTGN0HAzZaJy4u4-GM3Rj8oke9wob0,16217
|
|
128
|
+
docs_drift-0.1.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
129
|
+
docs_drift-0.1.0.dist-info/entry_points.txt,sha256=qS006wBFPls9ZVq4JXje4JTczN8xPisehBjt5pSiAh8,50
|
|
130
|
+
docs_drift-0.1.0.dist-info/licenses/LICENSE,sha256=q6569T4tCmZjKKuJqHM4eywtgQ9QdaNTFqT8C3stL2s,1080
|
|
131
|
+
docs_drift-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 docs-drift contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|