sourcecode 4.2.0__py3-none-any.whl → 4.3.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.
sourcecode/verify_repo.py CHANGED
@@ -145,11 +145,20 @@ def _head_sha(root: Path) -> str:
145
145
  return (r.stdout or "").strip() if r.returncode == 0 else ""
146
146
 
147
147
 
148
- def evaluate_repo(root: Path) -> "tuple[list[Any], Optional[Path], int]":
148
+ def evaluate_repo(
149
+ root: Path, *, on_cir: "Optional[Any]" = None
150
+ ) -> "tuple[list[Any], Optional[Path], int]":
149
151
  """(violations, contracts file, contract count) for the tree as it stands.
150
152
 
151
153
  Raises VerifyError when the contracts cannot be read or the repository
152
154
  cannot be analysed — the caller reports `unverified`.
155
+
156
+ `on_cir` is handed the IR this gate builds, once, before the contracts are
157
+ evaluated. It exists so that work which needs the same IR — capturing the
158
+ architectural baseline of this commit — rides along with the run instead of
159
+ paying for a second analysis. It is a side channel by design: whatever it
160
+ does cannot change the verdict, and an exception inside it is swallowed,
161
+ because the gate's answer is about contracts and nothing else.
153
162
  """
154
163
  from sourcecode.verify_edit import _build_cir
155
164
  from sourcecode.verify_rules import RulesError, evaluate_all, load_rules, rules_path
@@ -165,6 +174,11 @@ def evaluate_repo(root: Path) -> "tuple[list[Any], Optional[Path], int]":
165
174
  cir = _build_cir(root)
166
175
  except Exception as exc: # analysis failure is never a pass
167
176
  raise VerifyError(f"could not analyse {root}: {exc}") from exc
177
+ if on_cir is not None:
178
+ try:
179
+ on_cir(cir)
180
+ except Exception: # noqa: BLE001 — a passenger never crashes the gate
181
+ pass
168
182
  return evaluate_all(rules, cir), path, len(rules)
169
183
 
170
184
 
@@ -173,6 +187,7 @@ def verify_repo(
173
187
  *,
174
188
  fail_on: str = "new",
175
189
  baseline_path: "Optional[Path]" = None,
190
+ on_cir: "Optional[Any]" = None,
176
191
  ) -> VerifyReport:
177
192
  """Check the repository against its declared contracts."""
178
193
  if fail_on not in FAIL_ON_CHOICES:
@@ -184,7 +199,7 @@ def verify_repo(
184
199
  resolved_baseline = Path(baseline_path) if baseline_path else (root / DEFAULT_BASELINE)
185
200
 
186
201
  try:
187
- violations, contracts_file, contract_count = evaluate_repo(root)
202
+ violations, contracts_file, contract_count = evaluate_repo(root, on_cir=on_cir)
188
203
  baselined_keys = load_baseline(resolved_baseline)
189
204
  except VerifyError as exc:
190
205
  return VerifyReport(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 4.2.0
3
+ Version: 4.3.0
4
4
  Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
5
5
  License-File: LICENSE
6
6
  Keywords: agents,ai,codebase,context,developer-tools,llm
@@ -160,8 +160,8 @@ ask verify /path/to/repo --init
160
160
  # writes nothing — the form an audit of somebody else's repository can run.
161
161
  ask verify /path/to/repo --init --dry-run
162
162
 
163
- # What each defect actually costs once reach, access and write effect are in it:
164
- # severity × reachability × auth_verdict × write_effect, ordered, every factor traceable.
163
+ # What each defect actually costs once reach, access, write effect and the shape of
164
+ # the input path are in it — ordered, every factor traceable to the command that owns it.
165
165
  ask risk /path/to/repo
166
166
  ```
167
167
 
@@ -254,12 +254,16 @@ guesses is a confident security falsehood — the worst failure mode this tool h
254
254
  ### 5c · Composed Risk *(experimental)*
255
255
  Every command above answers one axis, and a reader composes them by hand. `ask risk` does the
256
256
  join over the endpoint and symbol ids these commands already share with each other:
257
- `severity_effective = defect_severity × reachability × auth_verdict × write_effect`. The
258
- product of the published factors **is** the published score — decomposable to the four
257
+ `severity_effective = defect_severity × reachability × auth_verdict × write_effect × query_construction × input_constraints`. The
258
+ product of the published factors **is** the published score — decomposable to the six
259
259
  figures and the authority behind each — and an axis this build cannot measure is `unknown`,
260
260
  weighted 1.0 and named in `blind_axes` rather than silently treated as safe. Measured on a
261
261
  field case: a defect both `spring-audit` and `impact-chain` called *medium* composes to
262
262
  **high (8.06)** once *reachable unauthenticated* and *writes to the database* are in it.
263
+ The last two factors describe the input path — a query assembled by concatenation, a route
264
+ accepting a body with no declared constraint. They are **adjacencies, not dataflow**: no
265
+ value is followed from a request to a sink, which is `NC-001` and is published in the
266
+ payload's own `non_coverage` block.
263
267
  `ask risk .` · `ask risk . --min-band high` · `ask risk . --limit 10`
264
268
  → [reference](docs/USER_GUIDE.md)
265
269
 
@@ -285,7 +289,7 @@ experimental: both are true, and they are two different facts.
285
289
  |---|---|---|
286
290
  | **core** | contract stable within a major — safe to gate CI on | `endpoints` · `spring-audit` · `migrate-check` · `impact` · `impact-chain` · `pr-impact` · `verify` |
287
291
  | **supported** | maintained; fields are added, never removed without a major | every command not named in another row |
288
- | **experimental** | shape may change in a minor — do not gate CI on it | `risk` · `posture` · `archetype` |
292
+ | **experimental** | shape may change in a minor — do not gate CI on it | `risk` · `enrich` · `data-exposure` · `migrate-recipe` · `posture` · `archetype` |
289
293
  | **parked** | kept working, no longer developed | `retrieve` |
290
294
 
291
295
  The same table is printed by `ask --help`, and both are generated from one authority
@@ -302,7 +306,10 @@ from it.
302
306
  | Command | Tier | Answers | Note |
303
307
  |---|---|---|---|
304
308
  | `posture` | experimental | which beans a profile set wires, and how effective endpoint access differs between two sets | the most differentiated capability here |
305
- | `risk` | experimental | what each defect actually costs, once reach, access and write effect are in it | `defect_severity × reachability × auth_verdict × write_effect`; every factor names its authority |
309
+ | `risk` | experimental | what each defect actually costs, once reach, access, write effect and the shape of the input path are in it | `defect_severity × reachability × auth_verdict × write_effect × query_construction × input_constraints`; every factor names its authority |
310
+ | `enrich` | experimental | another scanner's SARIF findings, ranked by what this repository does with them | `--sarif <log>`; the same composition as `risk`, with the scanner as the severity authority |
311
+ | `migrate-recipe` | experimental | the migration report as the OpenRewrite recipe that applies it | only recipes a finding named; the manual remainder published beside them; writes nothing without `--write`, and never a runnable command for an empty recipe list |
312
+ | `data-exposure` | experimental | which routes can carry the data you labelled, and who reaches them | labels declared in `sourcecode.config.json` — never inferred from a name; `signature` and `call_reach` evidence published apart, field-level flow out of scope (NC-008) |
306
313
  | `endpoints` | core | every REST endpoint, effective path, security policy, confidence | Spring MVC + JAX-RS (~65 % recall on JAX-RS sub-resource locators) |
307
314
  | `spring-audit` | core | transactional anomalies + security surface + validation gaps | `--ci`, `-f github-comment` |
308
315
  | `migrate-check` | core | Boot 2→3 readiness: located blockers, per-dimension score, effort | `--blast-radius` orders the re-test plan |
@@ -317,7 +324,7 @@ from it.
317
324
  | `review-pr` / `fix-bug` / `prepare-context` | supported | diff review, symptom triage, task-shaped context | |
318
325
  | `plan` / `compare` / `delta` / `contract-diff` | supported | what to review for a change; candidates by measured cost; outcome of a change; public-contract break | no verdicts, measured cost only |
319
326
  | `validation` | supported | request-body validation coverage and gaps | |
320
- | `baseline capture\|diff` · `trend` | supported | versioned architectural metrics over time; `ask trend <dir>` reads the series | trend reporting, not gating. Baselines land in `.ask/baselines` **inside the repository** — the history travels with the code, not with a vendor; an audit that must not write passes `--dir`. Automate it: [baseline-ci.yml](docs/baseline-ci.yml) |
327
+ | `baseline capture\|diff` · `trend` | supported | versioned architectural metrics over time; `ask trend .` reads the series (a repository path or a baselines directory), `ask baseline diff .` compares the tree against its newest point | trend reporting, not gating. Baselines land in `.ask/baselines` **inside the repository** — the history travels with the code, not with a vendor; an audit that must not write passes `--dir`. `capture --auto` is the unattended form (one baseline per commit, never rewrites one, never fails the build) — automate it: [baseline-ci.yml](docs/baseline-ci.yml) |
321
328
  | `retrieve` | parked | typed knowledge queries over the model | |
322
329
  | `archetype` | experimental | evidence-based architectural archetype | |
323
330
  | `rename-class` / `chunk-file` | supported | word-boundary Java rename; split a large file for an agent | |
@@ -368,6 +375,18 @@ And one about the endpoint surface itself:
368
375
  |---|---|---|
369
376
  | **HTTP surface that is not a Spring handler mapping — a servlet declared in `web.xml` or registered as a `ServletRegistrationBean`, a container-level mapping, a static console mounted by a library.** | The endpoint population is projected from the Spring route model: one entry per handler mapping. A servlet is reachable over HTTP and is not in that model, so it is absent from `endpoints`, from the access verdicts derived from it, and from every ratio keyed on the total. Merging a second population into that count would move a published figure and every ratio with it, so the population is declared before it is widened. | Read the deployment descriptors for `<servlet-mapping>` entries and the Spring configuration for `ServletRegistrationBean` beans. Field evaluation #9 found a monitoring console mounted this way, behind a credential `ask spring-audit` did report (SEC-007) at a path nothing here listed. |
370
377
 
378
+ And one about labelled data:
379
+
380
+ | Not covered | Why | What answers it |
381
+ |---|---|---|
382
+ | **Whether a labelled member actually leaves the process on a given route — field-level dataflow through mappers, DTOs, serializers and projections.** | Exposure here is measured at TYPE granularity over the same call reach every other command walks: a route reaches the labelled type, or its signature names it. Whether the mapping in between keeps the labelled member is a dataflow question, and answering it by approximation would put a confident `no` on a route that does leak. So `call_reach` is published as a supremum and says so. | Read the mapping on the routes this answer ranks first — they are the ones worth a human — and label the DTO too if it carries the member, which makes the route `signature` instead of `call_reach`. |
383
+
384
+ And one about who calls a route:
385
+
386
+ | Not covered | Why | What answers it |
387
+ |---|---|---|
388
+ | **Whether a route is called from outside this repository — another service, a mobile app, a partner, a cron job, or a client whose URL is assembled at run time.** | The join reads the TypeScript/JavaScript checked in beside the server and only the call shapes whose verb and path are written at the call site. That is a floor on who calls a route and can never be a ceiling: the repository cannot observe consumers it does not contain. So a route with no call site here is published as a candidate for deletion, never as dead API. | Access logs or an API gateway answer who really calls a route. The opposite direction is decisive without them: a client call matching no route is a request this repository's own front end makes and its server does not serve. |
389
+
371
390
  **Positioning.** Until an executor ships, this is the **diagnosis layer**: it measures what
372
391
  must change, what each change reaches, and what a gate should block — and it removes none of
373
392
  it. Field evaluation scored it 7/10 as a report generator and 5.5/10 as a development tool,
@@ -1,13 +1,14 @@
1
- sourcecode/__init__.py,sha256=EFb1wf7RVjVZuSeBJuZWIx9FLFTExu1Z6pm2th-GIUg,308
1
+ sourcecode/__init__.py,sha256=VzE3y83kXkJoA93WrV4CYV_6qTGSQOQGTFSYee-Wiz8,308
2
2
  sourcecode/adaptive_scanner.py,sha256=yJBKjNpkY6bpueYJ2YnRezen3sYZDecEt7WaaNWdqug,9466
3
3
  sourcecode/archetype.py,sha256=HBGTTaS-bVHS6pdacPUMKcMxklkDEKnZMgz48Kc3yec,37630
4
- sourcecode/architectural_baseline.py,sha256=7QzJri4pbL3nzAn9gNutZW6mZR8HHD6H2C2H1EEwYPE,17904
4
+ sourcecode/architectural_baseline.py,sha256=agDSwGEakdkgLLh5xnd3hiD_TC6pRujWt4klnuYF1wo,18689
5
5
  sourcecode/architectural_delta.py,sha256=E6MkyjWl-1ZgR4KSKnI785gUAfc8nq-lK-jd_rupQBU,12496
6
6
  sourcecode/architecture_analyzer.py,sha256=GFc4ek-s1IHWM7pl-0L32WahZ93AmDgrAMcOuBKA5Dk,61463
7
7
  sourcecode/architecture_summary.py,sha256=BVVRHd952cjRhjHnR6CPrvKgaa-tdM16l-pBi1yDCPs,32395
8
8
  sourcecode/ast_extractor.py,sha256=ZwHN3Y0iRp2gpv3t5Nm5uvX7Xw1KtULCJPZqKpZQRAE,51255
9
+ sourcecode/baseline_autocapture.py,sha256=xxfXT9Nu4uiDbWMZRawcCXsA4fjgEjZW2qI173dq3GE,14962
9
10
  sourcecode/cache.py,sha256=Es9ZLqGRoheMv2bOD1azaFKqU2zJKJVudHhjQKcIxy8,40128
10
- sourcecode/cache_model.py,sha256=c6upV6sENXypx9ik01eTsMWNkz5ZYZr4jPWL2Sa_8pQ,15941
11
+ sourcecode/cache_model.py,sha256=hUGWNKBKLV76mGveFffOzr9fqFD1ZydJVakseRsg14s,17401
11
12
  sourcecode/call_surface.py,sha256=fiqYfHooxN1fX9oQoysq1LS3LoZcobhyUNjAGEZKpwk,4148
12
13
  sourcecode/caller_metrics.py,sha256=--sFGDnIog_YGu9xZHMcB91F5xZakfaAKvy15xU54hg,7904
13
14
  sourcecode/caller_reach.py,sha256=RRF49tv4-QswraJ2vsZ89VAMOj7BmYXlAdXr-tLP_CA,9483
@@ -16,13 +17,14 @@ sourcecode/chain_rules.py,sha256=Bi6UHfgd-GxWswmnHRcPz5jdbAuqka3Zkz_P-MTvqhw,127
16
17
  sourcecode/change_plan.py,sha256=kFjjp16XYbupgkv1CPkfqo39_SiZPMRQ8OOfC-Vy9eg,7929
17
18
  sourcecode/cir_graphs.py,sha256=9G0HHj1kw2325IDyzo2OpX73BNswEckecf4MZUXB4JM,12078
18
19
  sourcecode/classifier.py,sha256=JBzPwSSrDG-tUHAbcKB678HRbjLpD-ohzbzzO62mgpo,20114
19
- sourcecode/cli.py,sha256=ZlwBZ_vpb3G2nuAlWyPW2JWlXzDsc1u4MejlDb0_iRM,460367
20
+ sourcecode/cli.py,sha256=1iYGmrAvmN3lW1gWL3xVLo-tTj2VR92Sqa_k7rmuejA,482834
21
+ sourcecode/client_calls.py,sha256=fb5fvmryrBQlly2ETyLcjoQcyzQTPxZ38jYx47V_yqs,13293
20
22
  sourcecode/code_notes_analyzer.py,sha256=EJemNCNc9Dn-1RZYu-aNbK0ELzmsyC4s6FdHi3XyNEI,9392
21
23
  sourcecode/compare.py,sha256=xq3zsqAOAw4AWkoD9khb9xDP_O3KvwqO9k-pf8sbi3g,10951
22
24
  sourcecode/confidence_analyzer.py,sha256=5li0NyOdS3Ie-f2ZY1gBmnjtkuRvI50l4OnGaKkXAOU,22358
23
25
  sourcecode/constraint_diff.py,sha256=hWIO5vsxvHjsgQx23K3r_JMy1W6wQ2Ca4DqB9R_iMnY,5831
24
26
  sourcecode/context_cache.py,sha256=VCH-u6wPrTv6fz5uGqqwsLaVEUKVyZZSOhkb0BmZ6cA,26297
25
- sourcecode/context_graph.py,sha256=i2kOX3XiaCqcR20ojbUnqoX-hJbMyLNYc7rl-n15bwE,46426
27
+ sourcecode/context_graph.py,sha256=UBUW97DnJe5hGgCI-JohgKWDfKTszBuL3DIxQylVZQE,47034
26
28
  sourcecode/context_scorer.py,sha256=QpChSpsmaAYz91rXA4Ue5xzQmNz_ZboZN09YOHScq1U,14679
27
29
  sourcecode/context_summarizer.py,sha256=cI2TZMvEhl0BEma12VtPaX6z03ZVBAetVzuK5GaCOvg,6852
28
30
  sourcecode/contract_diff.py,sha256=ivgHL1qRKFhriwQ52KWj4oJselqd5icSJW7Z2Ke04po,9429
@@ -30,12 +32,14 @@ sourcecode/contract_init.py,sha256=MBzhrgCVfJRXsMYNe8k5cwxdDGcz4pZpIaJhieQTvmk,1
30
32
  sourcecode/contract_model.py,sha256=nRxJKPMs1VHwFTa8AVXhGmaLjti3Lr2sjHDpWgv1bfE,3917
31
33
  sourcecode/contract_pipeline.py,sha256=4XE-xhab7ysdExXyUOBl2hAH4MABo7moKnT9V4XcEwQ,30243
32
34
  sourcecode/coverage_parser.py,sha256=X9scuUWxacahYTrTBGea2Ku-sf-WCVcnc9OEB35_3IU,19340
35
+ sourcecode/data_exposure.py,sha256=NWavzz8tvsI_3QF9IulJdFQYNV_Z07QLWcBJSGduuN4,13768
36
+ sourcecode/data_labels.py,sha256=IF8xedY0uPFefpDpOSYrb1ita_XoyjPctlXTXAMe4pc,7230
33
37
  sourcecode/defect_identity.py,sha256=XS2VFDImg9NLaRImybKTeyk-CoDSsXmchldg0dwvM7c,7028
34
38
  sourcecode/degradation.py,sha256=BtuGUKFgkzI3Z6fwmUdxEUEaLFAcPQ_bHhU2w9ItDxw,18376
35
39
  sourcecode/dependency_analyzer.py,sha256=fQCaWQ7_BNcVgZv8gweJCwJ1CGlXsz8nw_tqN3aHJNE,63952
36
40
  sourcecode/deployment_prefix.py,sha256=g0_4bE_m9svjhnapRpOp8BJkj6Ul94Ij_iVezygMZ0I,11956
37
41
  sourcecode/doc_analyzer.py,sha256=05bjTUbDbmnbajD_cgRnACzS8T7xxBKVX4CjkJlhZg8,24411
38
- sourcecode/dynamic_argument_surface.py,sha256=iRzrJhs57UXrGvLhNPiTA-e_sdO6ka-wNqc0wIiegiM,2554
42
+ sourcecode/dynamic_argument_surface.py,sha256=u6zJoY-zChYVw1-SrgiyAq-rUwqMZ5ZqBwLfbPJ_8ng,2960
39
43
  sourcecode/endpoint_literals.py,sha256=Qf4gTZzvNSFDGDuOvF0YRL9NvaYKKj24klhR5LIOaXc,3263
40
44
  sourcecode/endpoint_metrics.py,sha256=sLSLUIgiIyvNdOynaxVgHd9SjRF_DbN3QxevaquykaU,2840
41
45
  sourcecode/entrypoint_classifier.py,sha256=jhTYlyqDJH2AtdEcLVaRU3lYRTJuF8DkxVzl4-W3zWE,5322
@@ -48,7 +52,7 @@ sourcecode/explain.py,sha256=8i1gQL8qNUO6NuUmzgO4vYdGGBn5_lp-1XqI9LPyx2k,25271
48
52
  sourcecode/file_chunker.py,sha256=3vkM3mDQ5eE_yTPvUgjyjpGFBIjkW6_mrBmIbrylnA8,16444
49
53
  sourcecode/file_classifier.py,sha256=pJCeN9KqWpAwKMCgGP4KDsBjuWMeo4zlbj5fv3hk9dA,15587
50
54
  sourcecode/filter_surface.py,sha256=HeV1qU0y_UO95KNTy3Xb551zXvv7_ns2gyxCS5uC3fs,16418
51
- sourcecode/format_contract.py,sha256=CB1esEH5EfUtUqreNZc9NqGBoUTxs7sWwS7kiN5_G38,4022
55
+ sourcecode/format_contract.py,sha256=nXohGRzH3GO5HdvPQTc4ZioomN_N8XQ8Px0GZXrMf_I,4062
52
56
  sourcecode/fqn_utils.py,sha256=XLU7zDkNBXz_RZkIUNfpPmp1nekWtqP-fxV92tDV1vg,2158
53
57
  sourcecode/git_analyzer.py,sha256=irvEwddbd5_tbA_eYUZebf4mH7_nFhpjwaWAV1f7jUY,15755
54
58
  sourcecode/git_checkout.py,sha256=gCnkMwHpU6yLyc10FoGzE8W9-tI8KyYxKTgpbWPjayo,6009
@@ -63,15 +67,16 @@ sourcecode/mcp_nudge.py,sha256=lKemOqK_wny2u7Ymcr2Idi5Kx8pXY02jCi-_nJYLGMg,2992
63
67
  sourcecode/metrics_analyzer.py,sha256=gLoRWKygF18jLgwsqmGXSWopw-f5iO1VbM7Jjdif6ag,22809
64
68
  sourcecode/migrate_check.py,sha256=jMv1GMhMthpHCnoEtkKWHiIC2Not2kdbU4UaA9sWX7I,134643
65
69
  sourcecode/migration_blast.py,sha256=OPryWkM6-PbvcG3eJFdcWUnlpXBje41nu2BkrZnE2hg,9359
66
- sourcecode/non_coverage.py,sha256=STfnE086oXPbRgcr9NdBVeHjMaqw_yABPYnHqvk_wnA,9529
70
+ sourcecode/non_coverage.py,sha256=W2q9-T6wXwCuKK2nVrcJ1lRVqzIKWDQtIZworGdFI_c,11715
67
71
  sourcecode/openapi_surface.py,sha256=BTt0K-woZbkbWTN77IkqeBm_Okag9owR0848fmot8sk,16207
72
+ sourcecode/openrewrite_recipe.py,sha256=4dyY5twRB6Xew-G9Zy5FafNZwlMU1S7DnRa2FqPkhpQ,12233
68
73
  sourcecode/output_budget.py,sha256=__DQrIg7MGsYrd0_S3lyd3AG0a0jWNGr55v5Gg9kK0U,12347
69
74
  sourcecode/parse_cache.py,sha256=SnHOhNTvAqHm_PXImPVBuj7NEoOQRn8dfIZHEqOFENs,7565
70
75
  sourcecode/path_admission.py,sha256=OGNSoluhVh8YYOBZBnACUrkmH4Tp_yxjGLifkcsxQpo,5838
71
76
  sourcecode/path_filters.py,sha256=qPKO7kRmVp2y9zjLNSuAVCbcpZrIInHE4QulLUlzPFI,10412
72
77
  sourcecode/perf.py,sha256=GAcEoouPIlPMCQIcHNToxK6K3WdIR-lj9aFg4prOYJI,9743
73
78
  sourcecode/pipe_contract.py,sha256=PML0Er5d8uDyec4OrdUXuyqHbGPUYndjeaKUjkFz2u4,8369
74
- sourcecode/posture.py,sha256=pqrCtvxmupB6_K5OXMn-8kqco_eNCRe7sazKDcO190Q,71763
79
+ sourcecode/posture.py,sha256=x1LY98XSjZzG4xThZYJYK3e5BTYDmJhyg5eqJ5KquNk,72999
75
80
  sourcecode/pr_comment_renderer.py,sha256=239PmJdf95av_ZW236C7_tvq_ahECeuF9AZxrheJ4OQ,15573
76
81
  sourcecode/pr_impact.py,sha256=eaFgcPMDsjaF8VZvcitFWCPCabMTi-khtGdxpK0wXTQ,22461
77
82
  sourcecode/prepare_context.py,sha256=B8TiBQbazxUOz6D37Dt9zqbOtD5b2S_fR3MB15P9DrI,237206
@@ -86,11 +91,12 @@ sourcecode/relevance_scorer.py,sha256=0AgEt4KrV73nioMqBgjhGjtY7L2C7L7cSyKtj3IKcr
86
91
  sourcecode/remedies.py,sha256=-zvOeVllMqhSVT3BzXmSLDwDNrPEv-VJsEzNtMKJ4WI,5034
87
92
  sourcecode/rename_refactor.py,sha256=h6dNFlB9aZ_3q6heeHBkgXQeXaT03nvPSsYH6P8qxFg,12965
88
93
  sourcecode/repo_classifier.py,sha256=FG1vaWKdWXsWdl-S8hjVMiTqcwgaRXkDyvK4rPcOGtQ,22681
89
- sourcecode/repository_ir.py,sha256=t4RSLn00mkru5p54KXsT3tmG78FjXKNFDMl2YR-jLiM,355314
94
+ sourcecode/repository_ir.py,sha256=uuJsPmtgSEi4MKVKJEiZl8bpvU1QFU2Oslxn96p5xi8,356849
90
95
  sourcecode/ris.py,sha256=Xin3d3U43-VthgRA6ttJnyIow8iyUEsQCBENvZc4eEc,23782
91
- sourcecode/risk.py,sha256=yrtKAO77XrKUFnqs-1_3ttKqLGFNcBIHZOTYSnj0Igo,17892
96
+ sourcecode/risk.py,sha256=cgkHu4fjAyLs9xSytegdv4b8ua8RqRJEQ5rHbQKgzfo,34851
92
97
  sourcecode/rule_catalog.py,sha256=buU6qZI1j1EjqAWOIzeDhZ9kO_6Tp_Ma-dmexNWkMe0,4324
93
98
  sourcecode/runtime_classifier.py,sha256=uTAD6BDCiBLUZEDRfqk718kM4RTT_vAbfkcOI2_Xx58,18432
99
+ sourcecode/sarif.py,sha256=_3ggbtV0O2iK5zeUiJSS36KxpPRVAtGy0hzXAFBmww8,25590
94
100
  sourcecode/scanner.py,sha256=z3CV0rcGunu0Y8mpNgp07wI7nxT0pxw1BkXRRtI0Rpo,9609
95
101
  sourcecode/schema.py,sha256=aHNXDf8LGyUC8ZDE_VS9kiskC2-Oswhi_WnpdGy6HDw,24897
96
102
  sourcecode/security_config.py,sha256=KblMEoRiEjrIE68YsPaUAFebxFp8UM7MS7lAk5CGD8U,3531
@@ -117,10 +123,10 @@ sourcecode/test_sources.py,sha256=2O7LXF-M-CQ0DwEF3B7BfWE6IWmHJngSOES5aRz6WR4,62
117
123
  sourcecode/token_estimate.py,sha256=RBXCGnF20jMzAeU0rUuf22Ol6y2wdf9q6nfs2sXIn4k,9262
118
124
  sourcecode/tree_utils.py,sha256=8GAkIfQAsvtEudIeW1l4ooH_oRtrWR8cpJQJsEa_Pfw,2093
119
125
  sourcecode/type_usage_surface.py,sha256=51IrKRQoIoRnlsiDjHnqpJBn2rc6E59aRhgS0HTzAF0,4428
120
- sourcecode/validation_inference.py,sha256=yd2TSuh-hhdF0vdBB63ffkbPn1vEUp896K2tAKkNogM,19508
126
+ sourcecode/validation_inference.py,sha256=-oWJqE6PqkqcZbCFDJeWCQHgI9Dbuv5ggJWD3LE_2IU,20817
121
127
  sourcecode/validation_surface.py,sha256=jYL-hkDjaaRKkAt7ZUcbxm3Dydl8o6KVRhTkuPXKPVc,31460
122
128
  sourcecode/verify_edit.py,sha256=FPvHmHQd0cUBAZE9smy9HGpNeH9BwAITPUKBBxyUXdk,35943
123
- sourcecode/verify_repo.py,sha256=ERvIwhLw-zV53BMEw7Zqo6X4cDsFJXQcWTNjsYNjvRE,11352
129
+ sourcecode/verify_repo.py,sha256=GRdw3vHHcuDD7JTW_dmLRmp93oyv8FH1yNa-ukBRjdc,12070
124
130
  sourcecode/verify_rules.py,sha256=vX0YADEI78J8-tjRTtRhe2pZP0x7K_qvS1EypuqD3KQ,18011
125
131
  sourcecode/version_check.py,sha256=CHp6ZxTIfo8kyHPCBgJA1uFC0xQCoXMuuOfrW8QTL8o,4942
126
132
  sourcecode/workspace.py,sha256=X_6NmNnitvT3_38V-JDChydo_sR68s249hLFlrQskU0,8271
@@ -182,8 +188,8 @@ sourcecode/telemetry/consent.py,sha256=pQdl-QeLl6Gcibn0eWHSKZrm-HYSsjpVqOnjrgFp8
182
188
  sourcecode/telemetry/events.py,sha256=4_yeO58U-Cwc1Qb27VB0_EjhmroY0k91n3_VGxeALB8,2776
183
189
  sourcecode/telemetry/filters.py,sha256=RzxauTz8HliO4BllQnXEXc7zTeqdCZi5MgqGEDuW7OQ,6570
184
190
  sourcecode/telemetry/transport.py,sha256=4gGHsq0WeY9VywEZXA3vUxykfiYnw9uuqfjAAec7F8o,1681
185
- sourcecode-4.2.0.dist-info/METADATA,sha256=91ZFju2Lqmbn7MjBx8HW3NpipglLYoWt__EGyQgilmw,29930
186
- sourcecode-4.2.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
187
- sourcecode-4.2.0.dist-info/entry_points.txt,sha256=-JEAdChrK5We51kZcb7OaDcyil-dHBjBPL-NhuO-QY8,89
188
- sourcecode-4.2.0.dist-info/licenses/LICENSE,sha256=7DdHrU9Z_3e7dSvq4ISijZNjnuHo5NIHNiHDouMQ9JU,10491
189
- sourcecode-4.2.0.dist-info/RECORD,,
191
+ sourcecode-4.3.0.dist-info/METADATA,sha256=T75swzEAj9oh9i0jR206k-oOMYRnilGJS2qlTY5gcgY,33052
192
+ sourcecode-4.3.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
193
+ sourcecode-4.3.0.dist-info/entry_points.txt,sha256=-JEAdChrK5We51kZcb7OaDcyil-dHBjBPL-NhuO-QY8,89
194
+ sourcecode-4.3.0.dist-info/licenses/LICENSE,sha256=7DdHrU9Z_3e7dSvq4ISijZNjnuHo5NIHNiHDouMQ9JU,10491
195
+ sourcecode-4.3.0.dist-info/RECORD,,