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.
Files changed (124) hide show
  1. {src2sink-1.0.2/src2sink.egg-info → src2sink-1.0.3}/PKG-INFO +17 -11
  2. {src2sink-1.0.2 → src2sink-1.0.3}/README.md +16 -10
  3. {src2sink-1.0.2 → src2sink-1.0.3}/pyproject.toml +1 -1
  4. {src2sink-1.0.2 → src2sink-1.0.3/src2sink.egg-info}/PKG-INFO +17 -11
  5. {src2sink-1.0.2 → src2sink-1.0.3}/LICENSE +0 -0
  6. {src2sink-1.0.2 → src2sink-1.0.3}/setup.cfg +0 -0
  7. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/__init__.py +0 -0
  8. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/__init__.py +0 -0
  9. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/api_client_discovery.py +0 -0
  10. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/auth_cards.py +0 -0
  11. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/crypto_cards.py +0 -0
  12. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/data_stores.py +0 -0
  13. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/graphs.py +0 -0
  14. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/index_v2.py +0 -0
  15. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/library_source_map.py +0 -0
  16. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/openapi_discovery.py +0 -0
  17. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/openapi_edges.py +0 -0
  18. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/openapi_match.py +0 -0
  19. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/openapi_models.py +0 -0
  20. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/openapi_report.py +0 -0
  21. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/payload_producers.py +0 -0
  22. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/phase3.py +0 -0
  23. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/pii_cross_repo.py +0 -0
  24. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/pii_flow_v2.py +0 -0
  25. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/pii_lifecycle.py +0 -0
  26. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/pii_lifecycle_report.py +0 -0
  27. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/pii_touchpoint_collect.py +0 -0
  28. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/pii_touchpoint_utils.py +0 -0
  29. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/queues.py +0 -0
  30. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/ropa.py +0 -0
  31. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/service_call_collect.py +0 -0
  32. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/service_call_index.py +0 -0
  33. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/service_call_models.py +0 -0
  34. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/service_call_report.py +0 -0
  35. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/service_calls.py +0 -0
  36. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/taint_buckets.py +0 -0
  37. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/taint_catalogs.py +0 -0
  38. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/taint_writers.py +0 -0
  39. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/aggregators/traces_index.py +0 -0
  40. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/build_metabase_v2.py +0 -0
  41. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/constants.py +0 -0
  42. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/curate_internal_libraries.py +0 -0
  43. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/__init__.py +0 -0
  44. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/ast_walk.py +0 -0
  45. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/base.py +0 -0
  46. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/config.py +0 -0
  47. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/file_context.py +0 -0
  48. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/go.py +0 -0
  49. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/http_out.py +0 -0
  50. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/java.py +0 -0
  51. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/javascript.py +0 -0
  52. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/kotlin.py +0 -0
  53. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/node_factory.py +0 -0
  54. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/patterns.py +0 -0
  55. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/python_extractor.py +0 -0
  56. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/regex_extractors.py +0 -0
  57. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/ts_extractors.py +0 -0
  58. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/extractors/unified.py +0 -0
  59. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/graph_common.py +0 -0
  60. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/internal_groups.py +0 -0
  61. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/known_api_clients.py +0 -0
  62. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/library_taint_java.py +0 -0
  63. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/limits.py +0 -0
  64. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/models/__init__.py +0 -0
  65. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/models/auth_model.py +0 -0
  66. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/models/crypto_agility.py +0 -0
  67. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/models/pii_lifecycle.py +0 -0
  68. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/models/ropa.py +0 -0
  69. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/prescreen.py +0 -0
  70. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/py.typed +0 -0
  71. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/record_fleet_baseline.py +0 -0
  72. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/renderers/__init__.py +0 -0
  73. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/renderers/markdown.py +0 -0
  74. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/renderers/mermaid.py +0 -0
  75. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/repo_utils.py +0 -0
  76. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/safe_paths.py +0 -0
  77. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/sanitize.py +0 -0
  78. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/schema.py +0 -0
  79. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/trace.py +0 -0
  80. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/trace_batch.py +0 -0
  81. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink/vocabulary.py +0 -0
  82. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink.egg-info/SOURCES.txt +0 -0
  83. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink.egg-info/dependency_links.txt +0 -0
  84. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink.egg-info/entry_points.txt +0 -0
  85. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink.egg-info/requires.txt +0 -0
  86. {src2sink-1.0.2 → src2sink-1.0.3}/src2sink.egg-info/top_level.txt +0 -0
  87. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_aggregators_extra.py +0 -0
  88. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_api_client_discovery.py +0 -0
  89. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_build_internals.py +0 -0
  90. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_build_main.py +0 -0
  91. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_characterization.py +0 -0
  92. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_config_hygiene.py +0 -0
  93. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_curate.py +0 -0
  94. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_dependency_pinning.py +0 -0
  95. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_field_precision.py +0 -0
  96. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_graph_common.py +0 -0
  97. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_internal_groups.py +0 -0
  98. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_limits.py +0 -0
  99. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_module_imports.py +0 -0
  100. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_openapi.py +0 -0
  101. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_output_neutralisation.py +0 -0
  102. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase0_smoke.py +0 -0
  103. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase1_config.py +0 -0
  104. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase1_extractors.py +0 -0
  105. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase2_graphs.py +0 -0
  106. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase3_pii.py +0 -0
  107. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase4_aggregators.py +0 -0
  108. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase4_extractor_snapshots.py +0 -0
  109. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase4_fleet_regression.py +0 -0
  110. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase4_regression.py +0 -0
  111. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_phase4_taint_caps.py +0 -0
  112. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_post_phase4_backlog.py +0 -0
  113. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_prescreen.py +0 -0
  114. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_redos_bounds.py +0 -0
  115. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_renderers.py +0 -0
  116. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_repo_utils_helpers.py +0 -0
  117. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_run_manifest.py +0 -0
  118. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_sanitize.py +0 -0
  119. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_security_input_handling.py +0 -0
  120. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_source_map_fix.py +0 -0
  121. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_trace_batch.py +0 -0
  122. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_trace_render.py +0 -0
  123. {src2sink-1.0.2 → src2sink-1.0.3}/tests/test_zz_security_coverage_gate.py +0 -0
  124. {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.2
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 from 1.0.2 carry signed build provenance (SLSA Build L2) tying each
200
- artefact to the source commit, tag, and workflow run that produced it — so a file
201
- claiming to be src2sink can be checked rather than trusted:
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
- # downloaded from the GitHub release
205
- gh attestation verify src2sink-1.0.2-py3-none-any.whl --repo mimecast/src2sink
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
- # installed from PyPI (PEP 740 attestation)
208
- python -m pypi_attestations verify pypi --repo mimecast/src2sink src2sink-1.0.2-*.whl
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
- 1.0.0 and 1.0.1 predate this and have no provenance. What the claim does and does
212
- not cover — and the plan for Build L3 — is in
213
- [`docs/slsa.md`](https://github.com/mimecast/src2sink/blob/main/docs/slsa.md).
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 from 1.0.2 carry signed build provenance (SLSA Build L2) tying each
165
- artefact to the source commit, tag, and workflow run that produced it — so a file
166
- claiming to be src2sink can be checked rather than trusted:
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
- # downloaded from the GitHub release
170
- gh attestation verify src2sink-1.0.2-py3-none-any.whl --repo mimecast/src2sink
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
- # installed from PyPI (PEP 740 attestation)
173
- python -m pypi_attestations verify pypi --repo mimecast/src2sink src2sink-1.0.2-*.whl
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
- 1.0.0 and 1.0.1 predate this and have no provenance. What the claim does and does
177
- not cover — and the plan for Build L3 — is in
178
- [`docs/slsa.md`](https://github.com/mimecast/src2sink/blob/main/docs/slsa.md).
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
  [project]
2
2
  name = "src2sink"
3
- version = "1.0.2"
3
+ version = "1.0.3"
4
4
  description = "Cross-repository source-to-sink metabase for LLM-assisted SAST"
5
5
  authors = [{ name = "Brett Crawley" }]
6
6
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: src2sink
3
- Version: 1.0.2
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 from 1.0.2 carry signed build provenance (SLSA Build L2) tying each
200
- artefact to the source commit, tag, and workflow run that produced it — so a file
201
- claiming to be src2sink can be checked rather than trusted:
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
- # downloaded from the GitHub release
205
- gh attestation verify src2sink-1.0.2-py3-none-any.whl --repo mimecast/src2sink
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
- # installed from PyPI (PEP 740 attestation)
208
- python -m pypi_attestations verify pypi --repo mimecast/src2sink src2sink-1.0.2-*.whl
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
- 1.0.0 and 1.0.1 predate this and have no provenance. What the claim does and does
212
- not cover — and the plan for Build L3 — is in
213
- [`docs/slsa.md`](https://github.com/mimecast/src2sink/blob/main/docs/slsa.md).
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