src2sink 1.0.2__tar.gz → 1.0.3__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.
- {src2sink-1.0.2/src2sink.egg-info → src2sink-1.0.3}/PKG-INFO +17 -11
- {src2sink-1.0.2 → src2sink-1.0.3}/README.md +16 -10
- {src2sink-1.0.2 → src2sink-1.0.3}/pyproject.toml +1 -1
- {src2sink-1.0.2 → src2sink-1.0.3/src2sink.egg-info}/PKG-INFO +17 -11
- {src2sink-1.0.2 → src2sink-1.0.3}/LICENSE +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/setup.cfg +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/__init__.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/__init__.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/api_client_discovery.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/auth_cards.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/crypto_cards.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/data_stores.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/graphs.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/index_v2.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/library_source_map.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/openapi_discovery.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/openapi_edges.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/openapi_match.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/openapi_models.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/openapi_report.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/payload_producers.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/phase3.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/pii_cross_repo.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/pii_flow_v2.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/pii_lifecycle.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/pii_lifecycle_report.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/pii_touchpoint_collect.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/pii_touchpoint_utils.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/queues.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/ropa.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/service_call_collect.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/service_call_index.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/service_call_models.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/service_call_report.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/service_calls.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/taint_buckets.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/taint_catalogs.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/taint_writers.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/traces_index.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/build_metabase_v2.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/constants.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/curate_internal_libraries.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/__init__.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/ast_walk.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/base.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/config.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/file_context.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/go.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/http_out.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/java.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/javascript.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/kotlin.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/node_factory.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/patterns.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/python_extractor.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/regex_extractors.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/ts_extractors.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/unified.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/graph_common.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/internal_groups.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/known_api_clients.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/library_taint_java.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/limits.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/models/__init__.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/models/auth_model.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/models/crypto_agility.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/models/pii_lifecycle.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/models/ropa.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/prescreen.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/py.typed +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/record_fleet_baseline.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/renderers/__init__.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/renderers/markdown.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/renderers/mermaid.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/repo_utils.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/safe_paths.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/sanitize.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/schema.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/trace.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/trace_batch.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/vocabulary.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink.egg-info/SOURCES.txt +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink.egg-info/dependency_links.txt +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink.egg-info/entry_points.txt +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink.egg-info/requires.txt +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/src2sink.egg-info/top_level.txt +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_aggregators_extra.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_api_client_discovery.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_build_internals.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_build_main.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_characterization.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_config_hygiene.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_curate.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_dependency_pinning.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_field_precision.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_graph_common.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_internal_groups.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_limits.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_module_imports.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_openapi.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_output_neutralisation.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase0_smoke.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase1_config.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase1_extractors.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase2_graphs.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase3_pii.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase4_aggregators.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase4_extractor_snapshots.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase4_fleet_regression.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase4_regression.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase4_taint_caps.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_post_phase4_backlog.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_prescreen.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_redos_bounds.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_renderers.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_repo_utils_helpers.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_run_manifest.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_sanitize.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_security_input_handling.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_source_map_fix.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_trace_batch.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_trace_render.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_zz_security_coverage_gate.py +0 -0
- {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_zz_untrusted_interpolation_guard.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: src2sink
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: Cross-repository source-to-sink metabase for LLM-assisted SAST
|
|
5
5
|
Author: Brett Crawley
|
|
6
6
|
License-Expression: MIT
|
|
@@ -196,21 +196,27 @@ Known small gaps: [`docs/todo.md`](https://github.com/mimecast/src2sink/blob/mai
|
|
|
196
196
|
|
|
197
197
|
### Verifying a release
|
|
198
198
|
|
|
199
|
-
Releases
|
|
200
|
-
|
|
201
|
-
|
|
199
|
+
Releases carry signed build provenance tying each artefact to the source commit,
|
|
200
|
+
tag, and workflow run that produced it — so a file claiming to be src2sink can be
|
|
201
|
+
checked rather than trusted. From 1.0.3 the provenance is generated by an
|
|
202
|
+
isolated builder (**SLSA Build L3**); 1.0.2 is L2; 1.0.0 and 1.0.1 have none.
|
|
202
203
|
|
|
203
204
|
```sh
|
|
204
|
-
#
|
|
205
|
-
|
|
205
|
+
# SLSA provenance, attached to the GitHub release (L3)
|
|
206
|
+
slsa-verifier verify-artifact src2sink-1.0.3-py3-none-any.whl \
|
|
207
|
+
--provenance-path multiple.intoto.jsonl \
|
|
208
|
+
--source-uri github.com/mimecast/src2sink --source-tag v1.0.3
|
|
206
209
|
|
|
207
|
-
#
|
|
208
|
-
|
|
210
|
+
# GitHub attestation, for the same artefact
|
|
211
|
+
gh attestation verify src2sink-1.0.3-py3-none-any.whl --repo mimecast/src2sink
|
|
212
|
+
|
|
213
|
+
# installed from PyPI instead (PEP 740 attestation)
|
|
214
|
+
python -m pypi_attestations verify pypi --repo mimecast/src2sink src2sink-1.0.3-*.whl
|
|
209
215
|
```
|
|
210
216
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
217
|
+
What the claim does and does not cover is in
|
|
218
|
+
[`docs/slsa.md`](https://github.com/mimecast/src2sink/blob/main/docs/slsa.md) —
|
|
219
|
+
the Build track says nothing about dependencies or source trustworthiness.
|
|
214
220
|
|
|
215
221
|
> **Incremental behaviour:** each re-run compares the repo's current `git HEAD` SHA
|
|
216
222
|
> against the SHA stored in the existing per-repo JSON. Repos that haven't changed are
|
|
@@ -161,21 +161,27 @@ Known small gaps: [`docs/todo.md`](https://github.com/mimecast/src2sink/blob/mai
|
|
|
161
161
|
|
|
162
162
|
### Verifying a release
|
|
163
163
|
|
|
164
|
-
Releases
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
Releases carry signed build provenance tying each artefact to the source commit,
|
|
165
|
+
tag, and workflow run that produced it — so a file claiming to be src2sink can be
|
|
166
|
+
checked rather than trusted. From 1.0.3 the provenance is generated by an
|
|
167
|
+
isolated builder (**SLSA Build L3**); 1.0.2 is L2; 1.0.0 and 1.0.1 have none.
|
|
167
168
|
|
|
168
169
|
```sh
|
|
169
|
-
#
|
|
170
|
-
|
|
170
|
+
# SLSA provenance, attached to the GitHub release (L3)
|
|
171
|
+
slsa-verifier verify-artifact src2sink-1.0.3-py3-none-any.whl \
|
|
172
|
+
--provenance-path multiple.intoto.jsonl \
|
|
173
|
+
--source-uri github.com/mimecast/src2sink --source-tag v1.0.3
|
|
171
174
|
|
|
172
|
-
#
|
|
173
|
-
|
|
175
|
+
# GitHub attestation, for the same artefact
|
|
176
|
+
gh attestation verify src2sink-1.0.3-py3-none-any.whl --repo mimecast/src2sink
|
|
177
|
+
|
|
178
|
+
# installed from PyPI instead (PEP 740 attestation)
|
|
179
|
+
python -m pypi_attestations verify pypi --repo mimecast/src2sink src2sink-1.0.3-*.whl
|
|
174
180
|
```
|
|
175
181
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
182
|
+
What the claim does and does not cover is in
|
|
183
|
+
[`docs/slsa.md`](https://github.com/mimecast/src2sink/blob/main/docs/slsa.md) —
|
|
184
|
+
the Build track says nothing about dependencies or source trustworthiness.
|
|
179
185
|
|
|
180
186
|
> **Incremental behaviour:** each re-run compares the repo's current `git HEAD` SHA
|
|
181
187
|
> against the SHA stored in the existing per-repo JSON. Repos that haven't changed are
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: src2sink
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: Cross-repository source-to-sink metabase for LLM-assisted SAST
|
|
5
5
|
Author: Brett Crawley
|
|
6
6
|
License-Expression: MIT
|
|
@@ -196,21 +196,27 @@ Known small gaps: [`docs/todo.md`](https://github.com/mimecast/src2sink/blob/mai
|
|
|
196
196
|
|
|
197
197
|
### Verifying a release
|
|
198
198
|
|
|
199
|
-
Releases
|
|
200
|
-
|
|
201
|
-
|
|
199
|
+
Releases carry signed build provenance tying each artefact to the source commit,
|
|
200
|
+
tag, and workflow run that produced it — so a file claiming to be src2sink can be
|
|
201
|
+
checked rather than trusted. From 1.0.3 the provenance is generated by an
|
|
202
|
+
isolated builder (**SLSA Build L3**); 1.0.2 is L2; 1.0.0 and 1.0.1 have none.
|
|
202
203
|
|
|
203
204
|
```sh
|
|
204
|
-
#
|
|
205
|
-
|
|
205
|
+
# SLSA provenance, attached to the GitHub release (L3)
|
|
206
|
+
slsa-verifier verify-artifact src2sink-1.0.3-py3-none-any.whl \
|
|
207
|
+
--provenance-path multiple.intoto.jsonl \
|
|
208
|
+
--source-uri github.com/mimecast/src2sink --source-tag v1.0.3
|
|
206
209
|
|
|
207
|
-
#
|
|
208
|
-
|
|
210
|
+
# GitHub attestation, for the same artefact
|
|
211
|
+
gh attestation verify src2sink-1.0.3-py3-none-any.whl --repo mimecast/src2sink
|
|
212
|
+
|
|
213
|
+
# installed from PyPI instead (PEP 740 attestation)
|
|
214
|
+
python -m pypi_attestations verify pypi --repo mimecast/src2sink src2sink-1.0.3-*.whl
|
|
209
215
|
```
|
|
210
216
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
217
|
+
What the claim does and does not cover is in
|
|
218
|
+
[`docs/slsa.md`](https://github.com/mimecast/src2sink/blob/main/docs/slsa.md) —
|
|
219
|
+
the Build track says nothing about dependencies or source trustworthiness.
|
|
214
220
|
|
|
215
221
|
> **Incremental behaviour:** each re-run compares the repo's current `git HEAD` SHA
|
|
216
222
|
> against the SHA stored in the existing per-repo JSON. Repos that haven't changed are
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|